Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Fork of mbed-rtos by
Diff: rtx/RTX_CM_lib.h
- Revision:
- 12:58b30ac3f00e
- Parent:
- 10:fcb1f103f7a1
- Child:
- 13:869ef732a8a2
--- a/rtx/RTX_CM_lib.h Tue Apr 30 10:51:19 2013 +0000 +++ b/rtx/RTX_CM_lib.h Thu May 30 17:08:58 2013 +0100 @@ -198,8 +198,6 @@ extern int main (void); osThreadDef_t os_thread_def_main = {(os_pthread)main, osPriorityNormal, 0, NULL}; -#if defined (__CC_ARM) - // This define should be probably moved to the CMSIS layer #ifdef TARGET_LPC1768 #define INITIAL_SP (0x10008000UL) @@ -210,16 +208,28 @@ #elif TARGET_KL25Z #define INITIAL_SP (0x20003000UL) +#elif TARGET_LPC4088 +#define INITIAL_SP (0x10010000UL) + #endif -extern unsigned char Image$$RW_IRAM1$$ZI$$Limit[]; +#ifdef __CC_ARM +extern unsigned char Image$$RW_IRAM1$$ZI$$Limit[]; +#define HEAP_START (Image$$RW_IRAM1$$ZI$$Limit) +#elif defined(__GNUC__) +extern unsigned char __HeapLimit[]; +#define HEAP_START (__HeapLimit) +#endif void set_main_stack(void) { + // That is the bottom of the main stack block: no collision detection + os_thread_def_main.stack_pointer = HEAP_START; + // Leave OS_SCHEDULERSTKSIZE words for the scheduler and interrupts - os_thread_def_main.stack_pointer = Image$$RW_IRAM1$$ZI$$Limit; - os_thread_def_main.stacksize = (INITIAL_SP - (unsigned int)Image$$RW_IRAM1$$ZI$$Limit) - (OS_SCHEDULERSTKSIZE * 4); + os_thread_def_main.stacksize = (INITIAL_SP - (unsigned int)HEAP_START) - (OS_SCHEDULERSTKSIZE * 4); } +#if defined (__CC_ARM) #ifdef __MICROLIB void _main_init (void) __attribute__((section(".ARM.Collect$$$$000000FF"))); void _main_init (void) { @@ -313,6 +323,7 @@ __libc_init_array (); osKernelInitialize(); + set_main_stack(); osThreadCreate(&os_thread_def_main, NULL); osKernelStart(); for (;;); @@ -334,6 +345,7 @@ "mov r0,r4\n" "mov r1,r5\n" "bl osKernelInitialize\n" + "bl set_main_stack\n" "ldr r0,=os_thread_def_main\n" "movs r1,#0\n" "bl osThreadCreate\n"