Buenas noches Santiago,
claramente estoy (muy) oxidado en el tema, pero en el sentido de mi mensaje anterior, tal vez el intercambio de mensajes te hace ver algo de otra manera y se te ocurre una idea de lo que pueda estar sucediendo.
Desempolvé un viejo proyecto. Yo uso MCUXpresso y el proyecto sería un
managed linker script por parte del IDE, pero
seguro que tenés las mismas definiciones salvo por la RAM externa que había definido para la CIAA-NXP:
Para hacer un poco de pie, fui al archivo donde tenía incluido "cr_section_macros.h" y puse arbitrariamente:
__RODATA(Flash2) uint8_t flash2data[0x40000] = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};
compiló con el warning setting incorrect section attributes for .rodata.$Flash2 supongo que por no usar const para un RO y la salida del linker (-print-memory-usage) fue la siguiente:
Memory region Used Size Region Size %age Used
MFlashA512: 317528 B 512 KB 60.56%
MFlashB512: 256 KB 512 KB 50.00%
RamLoc32: 32152 B 32 KB 98.12%
RamLoc40: 40 KB 40 KB 100.00%
RamAHB32: 32 KB 32 KB 100.00%
RamAHB16: 8 KB 16 KB 50.00%
RamAHB_ETB16: 2 KB 16 KB 12.50%
RAM_EXT: 0 GB 8 MB 0.00%
y consecuentemente en el *.map:
.text_Flash2 0x000000001b000000 0x40000
FILL mask 0xff
*(.text_Flash2*)
*(.text_MFlashB512*)
*(.text.$Flash2*)
*(.text.$MFlashB512*)
*(.rodata.$Flash2*)
.rodata.$Flash2
0x000000001b000000 0x40000 ./project/src/bsp/bsp.o
0x000000001b000000 flash2data
*(.rodata.$MFlashB512*)
Por alguna razón que me elude a esta hora y con lo fuera de tema que estoy, agregarle const hace desaparecer al símbolo... no lo mueve a otra sección simplemente deja de aparecer en el map. Será porque lo optimiza? Sin embargo le agregué un breve código que hace uso de flash2data como precaución...
Volviendo al tema, sería interesante ver qué salidas genera el gcc después de compilar. Ya sea el uso de secciones de memoria o buscar el/los símbolo/s que estás ubicando en Flash2 dentro del *.map. En una de esas da un indicio de qué puede estar pasando o descarta un problema en el binario.
Saludos!