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.
This commit is contained in:
parent
b3e8eddf14
commit
79671aa526
|
@ -1,37 +1,24 @@
|
||||||
/**
|
/**
|
||||||
* define start/end address of ro data.
|
* define start/end address of ro data.
|
||||||
* different compiler with different implementation.
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef __COMPILER_H__
|
#ifndef __COMPILER_H__
|
||||||
#define __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_start;
|
||||||
extern char _irom0_text_end;
|
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_START_ADDRESS (&_irom0_text_start)
|
||||||
#define RODATA_END_ADDRESS (&_irom0_text_end)
|
#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
|
#else // other compilers
|
||||||
|
|
||||||
/* Firstly, modify rodata's start/end address. Then, comment the line below */
|
/* Firstly, modify rodata's start/end address. Then, comment the line below */
|
||||||
|
|
Loading…
Reference in New Issue