# CMSIS Reference Function Documentation

## _start

void _start()

Initialize the application data and start execution with main.

Should be called from the reset vector.

Location: rsl15_start.h:125

Return

None

Assumptions

The symbols data_init, data_start, data_end, bss_start, bss_end, and stack_limit are defined when the application is linked.

Assumptions

The symbol flash_layout exists, and is an array of structures containing the start, end, and FLASH_Type* of all the banks of flash, in ascending memory address order, that the data region could be present in.

Example Code for _start
// Initialize static application data _start();

## _sbrk

int8_t * _sbrk(int increment)

Increment (or decrement) the top of the heap.

Location: rsl15_start.h:138

Parameters

Direction | Name | Description
--- | --- | ---
in | increment | Increment to be applied to the top of the heap

Return

The prior value of the heap top (points to the base of the newly allocated data if the heap was incremented); returns -1 if the function was unable to allocate the requested memory

Assumptions

The symbols Heap_Begin, Heap_Limit are defined when the application is linked.

Example Code for _sbrk
// Initialize the heap with no increment _sbrk(0);

## SystemInit

void SystemInit()

Initializes the system by clearing and disabling interrupts, updating the SystemCoreClock variable and updating flash timing registers based on the read SYS_CLK.

Location: system_rsl15.h:81

Example Code for SystemInit
// Setup the system core clock variable SystemInit();

## SystemCoreClockUpdate

void SystemCoreClockUpdate()

Reads system registers to determine the current system clock frequency, update the SystemCoreClock variable and update the flash timing registers accordingly.

Location: system_rsl15.h:115

Example Code for SystemCoreClockUpdate
// Update the declared system clock (SYSCLK) frequency // used by the Arm Cortex-M3 firmware SystemCoreClockUpdate();