diff --git a/NEWS b/NEWS index b77df79..8b33feb 100644 --- a/NEWS +++ b/NEWS @@ -11,10 +11,11 @@ is due to the change of chx_sched interface, introduced for GNU/Linux emulation. This bug is fixed. ** New feature: sleep mode -New function chopstx_conf_idle is added to support core sleep. Use of -sleep by this feature requires careful preparation. Enabling sleep, a -board with no RESET pin cannot be debugged by JTAG/SWD. Setting of -DBGMCU_CR (0xE0042004) is required beforehand (default is zero). +New function chopstx_conf_idle is added to support sleep. Use of +sleep by this feature requires careful preparation. For example, +enabling sleep, a board with no RESET pin cannot be debugged by +JTAG/SWD. Setting of DBGMCU_CR (0xE0042004) is required beforehand +(default is zero). ** API change: chopstx_poll This is a kind of clarification. The third argument is now an array @@ -27,7 +28,7 @@ INTR_REQ_USB is now defined by usb_lld.h. Enumeration type of DEVICE_STATE now has USB_DEVICE_STATE_ prefix. ** USB driver change -USB suspend/resume is supported for STM32F103. +USB suspend and wakeup events are supported for STM32F103. * Major changes in Chopstx 1.5 diff --git a/example-led/stack-def.h b/example-led/stack-def.h new file mode 100644 index 0000000..90284f0 --- /dev/null +++ b/example-led/stack-def.h @@ -0,0 +1,53 @@ +#define MAIN_SIZE 0x0080 /* Idle+Exception handlers */ +#define SIZE_0 0x0100 /* Main program */ +#define SIZE_1 0x0100 /* first thread program */ +#define SIZE_2 0x0100 /* second thread program */ + +#if defined(STACK_MAIN) +/* + * The terminology of "main" is confusing in ARM architecture. + * Here, "main_base" is for exception handlers. + */ +/* Idle+Exception handlers */ +char __main_stack_end__[0] __attribute__ ((section(".main_stack"))); +char main_base[MAIN_SIZE] __attribute__ ((section(".main_stack"))); + +/* Main program */ +char __process0_stack_end__[0] __attribute__ ((section(".process_stack.0"))); +char process0_base[SIZE_0] __attribute__ ((section(".process_stack.0"))); +#endif + +/* First thread program */ +#if defined(STACK_PROCESS_1) +char process1_base[SIZE_1] __attribute__ ((section(".process_stack.1"))); +#endif + +/* Second thread program */ +#if defined(STACK_PROCESS_2) +char process2_base[SIZE_2] __attribute__ ((section(".process_stack.2"))); +#endif + +/* Third thread program */ +#if defined(STACK_PROCESS_3) +char process3_base[SIZE_3] __attribute__ ((section(".process_stack.3"))); +#endif + +/* Fourth thread program */ +#if defined(STACK_PROCESS_4) +char process4_base[SIZE_4] __attribute__ ((section(".process_stack.4"))); +#endif + +/* Fifth thread program */ +#if defined(STACK_PROCESS_5) +char process5_base[SIZE_5] __attribute__ ((section(".process_stack.5"))); +#endif + +/* Sixth thread program */ +#if defined(STACK_PROCESS_6) +char process6_base[SIZE_6] __attribute__ ((section(".process_stack.6"))); +#endif + +/* Seventh thread program */ +#if defined(STACK_PROCESS_7) +char process7_base[SIZE_7] __attribute__ ((section(".process_stack.7"))); +#endif