I am using the Ardiono IDE to directly cross-compile
code to the ESP8266. I am having trouble as I have run
out of memory. I am looking at the error and thinking
that the code I have written has over-filled the internal
instruction-ram of the xtensa CPU.
I get the error '.text' will not fit in region 'iram1_0_seg'
(in successful compilation just before I added the code
to cause this error I was being told that the sketch was
using 34% of the available program space - so clearly
this is not an out of flash memory issue)
Now, as I understand it, the ESP's 32 bit CPU can run
code out of its internal ram (which is parallel and fast)
or it can be told to run code out of the much slower, but
much larger, serial flash chip that is on the board - right?
I see a lot of compiler directives in the example code
that people have written that use the GCC command line
route. directives like
LOCAL void ICACHE_FLASH_ATTR some_function(int a, char*c)
I assume these directives tell the linker to put the code in
a place where it is run the serial-flash, and not the precious
and fast on-chip ram?
Is there a list of compiler directives and their associated purposes?
Do these compiler directives work in the Arduino IDE?
Thank you.