diff --git a/radio/src/Makefile b/radio/src/Makefile index 6bbee36a9..47118c158 100644 --- a/radio/src/Makefile +++ b/radio/src/Makefile @@ -289,10 +289,6 @@ USB = JOYSTICK # NO - normal behaviour, show real channel values CHANNELS_MONITOR_INV_HIDE = NO -# Use newlib-nano -# Values = NO, YES -NANO = YES - #------- END BUILD OPTIONS --------------------------- # Define programs and commands. @@ -722,12 +718,6 @@ ifeq ($(PCB), TARANIS) EXTRABOARDSRC += targets/taranis/usbd_storage_msd.cpp endif - ifeq ($(NANO), YES) - # use newlib-nano for linking - NEWLIB_NANO_FLAGS = --specs=nano.specs -u _printf_float - CPPDEFS += -DNANO - endif - ifneq ($(LUA), NO) ifeq ($(LUA), YES) CPPDEFS += -DLUA_MODEL_SCRIPTS @@ -738,7 +728,6 @@ ifeq ($(PCB), TARANIS) LUASRC = lua/src/lapi.c lua/src/lcode.c lua/src/lctype.c lua/src/ldebug.c lua/src/ldo.c lua/src/ldump.c lua/src/lfunc.c lua/src/lgc.c lua/src/llex.c lua/src/lmem.c \ lua/src/lobject.c lua/src/lopcodes.c lua/src/lparser.c lua/src/lstate.c lua/src/lstring.c lua/src/ltable.c lua/src/ltm.c lua/src/lundump.c lua/src/lvm.c lua/src/lzio.c \ lua/src/lbaselib.c lua/src/linit.c lua/src/lmathlib.c lua/src/loadlib.c lua/src/lauxlib.c lua/src/ltablib.c lua/src/lcorolib.c lua/src/lbitlib.c - # lua/src/loslib.c lua/src/lstrlib.c lua/src/liolib.c lua/src/ldblib.c SRC += $(LUASRC) LUADEP = lua_exports.cpp endif @@ -1400,7 +1389,7 @@ OBJS = $(TMP:.s=.o) @echo @echo $(MSG_COMPILING) $@ $(CC) $(ARMCPPFLAGS) $< -o allsrc.o - $(CC) $(OBJS) allsrc.o -mcpu=cortex-m3 -mthumb -nostartfiles -lm -T$(LDSCRIPT) -Wl,-Map=$(TARGET).map,--cref,--no-warn-mismatch,--gc-sections $(NEWLIB_NANO_FLAGS) -o $@ + $(CC) $(OBJS) allsrc.o -mcpu=cortex-m3 -mthumb -nostartfiles -lm -T$(LDSCRIPT) -Wl,-Map=$(TARGET).map,--cref,--no-warn-mismatch,--gc-sections -o $@ endif # Target: clean project. diff --git a/radio/src/gui/view_statistics.cpp b/radio/src/gui/view_statistics.cpp index 38c206117..67966664c 100644 --- a/radio/src/gui/view_statistics.cpp +++ b/radio/src/gui/view_statistics.cpp @@ -215,13 +215,14 @@ void menuStatisticsDebug(uint8_t event) lcd_puts(lcdLastPos, MENU_DEBUG_Y_MIXMAX, "ms"); #endif -#if defined(PCBTARANIS) +#if 0 lcd_putsLeft(MENU_DEBUG_Y_STACK, STR_FREESTACKMINB); lcd_outdezAtt(MENU_DEBUG_COL1_OFS, MENU_DEBUG_Y_STACK, stack_free(255), UNSIGN|LEFT); lcd_puts(lcdLastPos, MENU_DEBUG_Y_STACK, "b"); #endif #if defined(PCBTARANIS) + lcd_putsLeft(MENU_DEBUG_Y_RTOS, STR_FREESTACKMINB); lcd_putsAtt(MENU_DEBUG_COL1_OFS, MENU_DEBUG_Y_RTOS+1, "[Main]", SMLSIZE); lcd_outdezAtt(lcdLastPos, MENU_DEBUG_Y_RTOS, stack_free(0), UNSIGN|LEFT); lcd_putsAtt(lcdLastPos+2, MENU_DEBUG_Y_RTOS+1, "[Mix]", SMLSIZE); diff --git a/radio/src/lua.cpp b/radio/src/lua.cpp index 498d06992..877a44273 100644 --- a/radio/src/lua.cpp +++ b/radio/src/lua.cpp @@ -1796,6 +1796,7 @@ void luaDoOneRunStandalone(uint8_t evt) TRACE("Script finished with status %d", scriptResult); standaloneScript.state = SCRIPT_NOFILE; luaState = INTERPRETER_RELOAD_PERMANENT_SCRIPTS; + return; } else if (luaDisplayStatistics) { lcd_hline(0, 7*FH-1, lcdLastPos+FW, ERASE); @@ -1919,22 +1920,24 @@ void luaDoOneRunPermanentScript(uint8_t evt, int i) void luaDoGc() { - PROTECT_LUA() { - lua_gc(L, LUA_GCSTEP /*LUA_GCCOLLECT*/, 0); // LUA_GCSTEP is enough + if (L) { + PROTECT_LUA() { + lua_gc(L, LUA_GCSTEP /*LUA_GCCOLLECT*/, 0); // LUA_GCSTEP is enough #if defined(SIMU) || defined(DEBUG) - static int lastgc = 0; - int gc = luaGetMemUsed(); - if (gc != lastgc) { - lastgc = gc; - TRACE("GC Use: %dbytes", gc); - } + static int lastgc = 0; + int gc = luaGetMemUsed(); + if (gc != lastgc) { + lastgc = gc; + TRACE("GC Use: %dbytes", gc); + } #endif + } + else { + // we disable Lua for the rest of the session + luaDisable(); + } + UNPROTECT_LUA(); } - else { - // we disable Lua for the rest of the session - luaDisable(); - } - UNPROTECT_LUA(); } void luaTask(uint8_t evt) diff --git a/radio/src/targets/sky9x/syscalls.c b/radio/src/targets/sky9x/syscalls.c index f8a1b2e02..98e270f65 100644 --- a/radio/src/targets/sky9x/syscalls.c +++ b/radio/src/targets/sky9x/syscalls.c @@ -46,7 +46,6 @@ #include #include #include -#include "debug.h" /*---------------------------------------------------------------------------- * Exported variables @@ -54,8 +53,10 @@ #undef errno extern int errno; -extern int _end; -extern int _main_stack_start; +extern int _end; +extern int _estack; + +#define RAM_END (unsigned char *)&_estack /*---------------------------------------------------------------------------- * Exported functions @@ -67,7 +68,7 @@ extern int _getpid ( void ) ; unsigned char *heap = (unsigned char *)&_end; extern caddr_t _sbrk(int nbytes) { - if (heap + nbytes < (unsigned char *)&_main_stack_start) { + if (heap + nbytes < RAM_END-4096) { unsigned char *prev_heap = heap; heap += nbytes; return (caddr_t) prev_heap; @@ -141,8 +142,9 @@ extern int _write( int file, char *ptr, int len ) extern void _exit( int status ) { - TRACE( "Exiting with status %d.\n", status ) ; - +#if defined(SIMU) + printf( "Exiting with status %d.\n", status ) ; +#endif for ( ; ; ) ; } diff --git a/radio/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/CMSIS/Device/ST/STM32F2xx/Source/Templates/gcc_ride7/startup_stm32f2xx.s b/radio/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/CMSIS/Device/ST/STM32F2xx/Source/Templates/gcc_ride7/startup_stm32f2xx.s index d6f050acc..65757dd85 100644 --- a/radio/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/CMSIS/Device/ST/STM32F2xx/Source/Templates/gcc_ride7/startup_stm32f2xx.s +++ b/radio/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/CMSIS/Device/ST/STM32F2xx/Source/Templates/gcc_ride7/startup_stm32f2xx.s @@ -98,23 +98,8 @@ LoopFillZerobss: ldr r3, = _ebss cmp r2, r3 bcc FillZerobss - -/*Paint Main Stack */ - ldr r2, = _main_stack_start -PaintMainStack: - movs r3, #0x55555555 - str r3, [r2], #4 -LoopPaintMainStack: - ldr r3, = _estack - cmp r2, r3 - bcc PaintMainStack - /* Call the clock system intitialization function.*/ bl SystemInit - -/* Call C++ constructors for static objects */ - bl __libc_init_array - /* Call the application's entry point.*/ bl main bx lr diff --git a/radio/src/targets/taranis/stm32_flash_bl.ld b/radio/src/targets/taranis/stm32_flash_bl.ld index c8616ea46..4ff28f4db 100644 --- a/radio/src/targets/taranis/stm32_flash_bl.ld +++ b/radio/src/targets/taranis/stm32_flash_bl.ld @@ -34,8 +34,6 @@ ENTRY(Reset_Handler) /* Highest address of the user mode stack */ _estack = 0x20020000; /* end of 128K SRAM */ -_main_stack_size = 0x1000; /*size of main stack*/ -_main_stack_start = _estack - _main_stack_size; /* Generate a link error if heap and stack don't fit into RAM */ _Min_Heap_Size = 0; /* required amount of heap */ diff --git a/radio/src/targets/taranis/stm32_ramBoot.ld b/radio/src/targets/taranis/stm32_ramBoot.ld index cd992dd54..c8204c5ec 100644 --- a/radio/src/targets/taranis/stm32_ramBoot.ld +++ b/radio/src/targets/taranis/stm32_ramBoot.ld @@ -21,8 +21,6 @@ ENTRY(Reset_Handler) /* Highest address of the user mode stack */ _estack = 0x20020000; /* end of 128K SRAM */ -_main_stack_size = 0x1000; /*size of main stack*/ -_main_stack_start = _estack - _main_stack_size; /* Generate a link error if heap and stack don't fit into RAM */ _Min_Heap_Size = 0; /* required amount of heap */ diff --git a/radio/src/tasks_arm.cpp b/radio/src/tasks_arm.cpp index 852e5ad7d..0c76c3cc4 100755 --- a/radio/src/tasks_arm.cpp +++ b/radio/src/tasks_arm.cpp @@ -99,7 +99,7 @@ uint32_t stack_free(uint32_t tid) stack = audioStack; size = AUDIO_STACK_SIZE; break; -#if defined(PCBTARANIS) && !defined(SIMU) +#if 0 // defined(PCBTARANIS) && !defined(SIMU) case 255: // main stack stack = (OS_STK *)&_main_stack_start;