Browse Source

Teach Lua LTR about ESP32 drom0 location.

This fixes the rather unexpected Fatal Exception(9) crashes when executing
something as trivial as "=type(4)". Also ensured the #if/#else structure
will complain loudly next time we port to a new board.
Johny Mattsson 7 years ago
parent
commit
79671aa526
1 changed files with 8 additions and 21 deletions
  1. 8 21
      app/lua/compiler.h

+ 8 - 21
app/lua/compiler.h

@@ -1,37 +1,24 @@
 /**
  * define start/end address of ro data.
- * different compiler with different implementation.
  */
 
 #ifndef __COMPILER_H__
 #define __COMPILER_H__
 
-#if defined(__CC_ARM)       // armcc
+#if defined(__ESP8266__)
 
-//#warning "Please check scatter file to ensure rodata is in ER_IROM1 region."
-
-/* symbols reference to the scatter file */
-extern char Image$$ER_IROM1$$Base;
-extern char Image$$ER_IROM1$$Limit;
-
-#define RODATA_START_ADDRESS        (&Image$$ER_IROM1$$Base)
-#define RODATA_END_ADDRESS          (&Image$$ER_IROM1$$Limit)
-
-#elif defined(__GNUC__)     // gcc
-
-//#warning "Please check linker script to ensure rodata is between _stext and _etext."
-
-/* symbols defined in linker script */
-// extern char _rodata_start;
-// extern char _rodata_end;
 extern char _irom0_text_start;
 extern char _irom0_text_end;
-// modify linker script to ensure rodata and rodata1 is between _rodata_start and _rodata_end.
-// #define RODATA_START_ADDRESS        (&_rodata_start)
-// #define RODATA_END_ADDRESS          (&_rodata_end)
 #define RODATA_START_ADDRESS        (&_irom0_text_start)
 #define RODATA_END_ADDRESS          (&_irom0_text_end)
 
+#elif defined(__ESP32__)
+
+extern char _drom0_text_start;
+extern char _drom0_text_end;
+#define RODATA_START_ADDRESS        (&_drom0_text_start)
+#define RODATA_END_ADDRESS          (&_drom0_text_end)
+
 #else                       // other compilers
 
 /* Firstly, modify rodata's start/end address. Then, comment the line below */