I'm locating a 32K variable in peripheral RAM with using this compiler/linker attribute:
__attribute__((section(".ARM.__at_0x20000000"))); //Locate in the ARM Peripheral RAM
I build the code with no errors and try to load it, The loader then says:
-----------------
Load "C:\\Users\\cordc_admin\\Documents\\Keil Projects\\Wavebuoy V5.1\\Objects\\wavebuoy_CORDC.axf" No Algorithm found for: 20000000H - 20000103H Partial Erase Done (areas with no algorithms skipped!) No Algorithm found for: 20000000H - 20000103H Partial Programming Done (areas with no algorithms skipped!) Partial Verify OK (areas with no algorithms skipped!) Application running ... Flash Load finished at 16:07:04
------------------
Which confuses me because it thinks it needs to program FLASH at that RAM address for the first 0x103 bytes. The memory map says this:
Load Region LR$$.ARM.__at_0x20000000 (Base: 0x20000000, Size: 0x00008000, Max: 0x00008000, ABSOLUTE, COMPRESSED[0x00000104]) Execution Region ER$$.ARM.__at_0x20000000 (Exec base: 0x20000000, Load base: 0x20000000, Size: 0x00008000, Max: 0x00008000, ABSOLUTE, UNINIT, COMPRESSED[0x00000104]) Exec Addr Load Addr Size Type Attr Idx E Section Name Object 0x20000000 COMPRESSED 0x00008000 Data RW 1360 .ARM.__at_0x20000000 spectral_processing_sophia_2.o
which indicates there is indeed a "Load Region" at those RAM addresses.
I have checked my Programming Algorithm definition in the ULINK Target Driver Setup, and FLASH is defined as on-chip FLASH
from 0x00000000 - 0x0007ffff for my 512K of ROM.
Can anyone explain this to me? Why does the loader think it needs to FLASH those 0x103 bytes in RAM?