Reuse the startup stack for the dynamic heap.

Once scheduling has started, the startup stack is no longer usable, control can
never return to that stack. So bump up the heap end in the first task that runs
after scheduling has started. This gives back about 1k.
This commit is contained in:
Our Air Quality 2017-12-14 07:42:22 +11:00
parent 89c6c410ff
commit 724bf797b1

View file

@ -339,10 +339,16 @@ void sdk_wdt_init(void) {
sdk_pp_soft_wdt_init(); sdk_pp_soft_wdt_init();
} }
extern void *xPortSupervisorStackPointer;
// .irom0.text+0x474 // .irom0.text+0x474
void sdk_user_init_task(void *params) { void sdk_user_init_task(void *params) {
int phy_ver, pp_ver; int phy_ver, pp_ver;
/* The start up stack is not used after scheduling has started, so all of
* the top area of RAM which was stack can be used for the dynamic heap. */
xPortSupervisorStackPointer = (void *)0x40000000;
sdk_ets_timer_init(); sdk_ets_timer_init();
printf("\nESP-Open-SDK ver: %s compiled @ %s %s\n", OS_VERSION_STR, __DATE__, __TIME__); printf("\nESP-Open-SDK ver: %s compiled @ %s %s\n", OS_VERSION_STR, __DATE__, __TIME__);
phy_ver = RTCMEM_BACKUP[RTCMEM_BACKUP_PHY_VER] >> 16; phy_ver = RTCMEM_BACKUP[RTCMEM_BACKUP_PHY_VER] >> 16;