diff --git a/firmware/filesystem/execute.c b/firmware/filesystem/execute.c index 391b071..7546e74 100644 --- a/firmware/filesystem/execute.c +++ b/firmware/filesystem/execute.c @@ -53,7 +53,7 @@ uint8_t execute_file (const char * fname){ data = (uint32_t*)dst; len = readbytes/4; - if( readbytes & 0xF ){ + if( readbytes & 0xF || readbytes <= 0x10){ lcdClear(); lcdPrint("!size"); lcdRefresh(); diff --git a/firmware/l0dable/ram.ld b/firmware/l0dable/ram.ld index bc62075..87e4f7a 100644 --- a/firmware/l0dable/ram.ld +++ b/firmware/l0dable/ram.ld @@ -30,19 +30,12 @@ SECTIONS *(vtable) *(.data*) _edata = .; - } > sram - - /* zero initialized data */ - .bss : - { - _bss = .; + /* force zero initialized data to be present*/ *(.bss*) *(COMMON) _ebss = .; } > sram - + end = .; - /* For GDB compatibility we decrease the top with 16 bytes */ - stack_entry = sram_top - 16; } diff --git a/firmware/main.c b/firmware/main.c index ba7fc40..9b02c7c 100644 --- a/firmware/main.c +++ b/firmware/main.c @@ -7,7 +7,28 @@ #include "lcd/render.h" #include "filesystem/ff.h" -__attribute__ ((used, section("crp"))) const uint32_t the_crp=0x87654321; + +#ifdef CRP1 +#define CRP_VALUE 0x12345678 // CRP1 +#endif + +#ifdef CRP2 +#define CRP_VALUE 0x87654321 // CRP2 +#endif + +#ifdef CRP3 +#define CRP_VALUE 0x43218765 // CRP3 +#endif + +#ifdef NO_ISP +#define CRP_VALUE 0x4e697370 // NO_ISP +#endif + +#ifndef CRP_VALUE +#define CRP_VALUE 0x0 // ANY non-magic value disables CRP +#endif + +__attribute__ ((used, section("crp"))) const uint32_t the_crp=CRP_VALUE; /**************************************************************************/