Hi, I am working with Keil MDK- ARM IDE, and I am looking for information on the the linker generated modules and symbols that are included in the .map file. The target system consists of a Cortex-M3 LM3S6965 with 256kB flash and 64kB SRAM.
I want detail information on Region$$Table$$Base and Region$$Table$$Limit symbols. i.e. What is the purpose of Region$$Table$$Base and Region$$Table$$Limit? How are these symbols used by the startup code.
In my application, there are two structures that are stored in Flash. These structures are mapped before the Region$$Table$$Base and Region$$Table$$Limit symbols. While I am writing any data to these structures the entire 1KB of flash is erased, data are also gets stored but then after my system gets hang.
my .map file is:
stMapper 0x00007e78 Data 5238 modbus_mapper.o(.constdata) stModbus_ROM 0x000092f0 Data 3080 modbus_parameter.o(.constdata) Region$$Table$$Base 0x0000a188 Number 0 anon$$obj.o(Region$$Table) Region$$Table$$Limit 0x0000a1a8 Number 0 anon$$obj.o(Region$$Table)
so is there any solution to take Region$$Table$$Base and Region$$Table$$Limit symbols above stMapper and stModbus_ROM structures?
Please help urgently...
Regards, Urvi
Thanx Westonsupermare Pier, the problem was actually in my .sct file. I have updated my scatter file as:
LR_IROM1 0x00000000 0x0001E800 { ; load region size_region ER_IROM1 0x00000000 0x0001D000 { ; load address = execution address *.o (RESET, +First) *(InRoot$$Sections) .ANY (+RO) } RW_IRAM1 0x20000000 0x0000FFF0 { ; RW data .ANY (+RW +ZI) } RW_IRAM2 0x2000FFFC 0x00000004 { .ANY (+RW +ZI) } MAPPER_CONFIG_DATA 0x0001C400 FIXED 0x00001800 { Modbus_Mapper.o (.constdata) } }
LR_IROM2 0x0001DC00 0x00001000 { ER_IROM2 0x0001DC00 0x00001000 { ; load address = execution address Modbus_Parameter.o (.constdata) } }
so now my updated .map file is like:
Region$$Table$$Base 0x000077b4 Number 0 anon$$obj.o(Region$$Table) Region$$Table$$Limit 0x000077d4 Number 0 anon$$obj.o(Region$$Table) stMapper 0x0001c400 Data 5238 modbus_mapper.o(.constdata) stModbus_ROM 0x0001dc00 Data 3080 modbus_parameter.o(.constdata)
& now its working correctly.....