In keil map file, I don't know all the title name's meaning. For example, what does the 'Idx' mean in Memory Map of the image section of map file?
What's the letter "E" in this section before Section Name?
Would be helpful to show an example.
Post as for source code, but omit step 3 (ie, leave 'Language' as 'Text'):
ARM or 8051?
Not seeing any attachment.
idx likely means index
E could mean external
Memory Map of the image
Image Entry point : 0x000000c1
Load Region LR_IROM1 (Base: 0x00000000, Size: 0x00003b48, Max: 0x00040000, ABSOLUTE)
Execution Region ER_IROM1 (Base: 0x00000000, Size: 0x00003aec, Max: 0x00040000, ABSOLUTE)
Base Addr Size Type Attr Idx E Section Name Object
0x00000000 0x000000c0 Data RO 7744 RESET startup_fm33a0xx.o
0x000000c0 0x00000008 Code RO 7795 * !!!main c_p.l(__main.o)
0x000000c8 0x0000003c Code RO 8005 !!!scatter c_p.l(__scatter.o)
0x00000104 0x0000001a Code RO 8007 !!handler_copy c_p.l(__scatter_copy.o)
0x0000011e 0x00000002 PAD
0x00000120 0x0000001c Code RO 8009 !!handler_zi c_p.l(__scatter_zi.o)
See the map file above, there is a star sign (*) under the name of E, before !!!main, you mean there is only one external?
Can you explain each section meaning? What's the function of the 'Idx' field? to locate the code position in the image?
Thanks very much!
Hmm, after a bit of searching in the manuals, Keil really don't seem to provide any documentation on this!
Have you tried searching at http://infocenter.arm.com/ ?
As Westonsupermare Pier, I would guess that Idx is short for "index" (it is a common abbreviation).
Looking at your example, and where the '*' appears, I would guess that the '*' in the 'E' column marks the Entry point?
I suspect the index refers to the symbol number in the .ELF (AXF) object file, as the symbols are packed into their own array/section. One could perhaps use FromELF to dump the symbols to confirm, or cross check assumptions made via the .MAP file. It would also reflect the entry point in the ELF header.
Generally when parsing these things with automated tools, you tend to extract the fields of interest (ie address, size, or whatever) and skip the less relevant fields.
The content of the .MAP files tends to provide data for Keil's developers to understand the mechanics of failure conditions and bugs.
I agree with you. When I see those two column for first time, my comprehansion as same as yours. But I just want a offical specification about this. But I searched a lot, and nothing I got. So I come here for some advice.
Got a shelf full of manuals from the SDT / ADS days. The ARMLINK manual wasn't much help
I try to pull information out of the ELF/AXF file, tends to be more strongly defined, for compatibility reasons. I think the .MAP file is considered a more transitory format, subject to change to suit the linker and architecture it is linking for. I build scripts to process them, and fix them when they break.
Thank you, you are so kind.
The linker manual describes the option --section_index_display, which controls the information displayed in the Idx field. The 'E' field is the entry point, as you pointed out. You can set another entry point using --entry=symbol. But even if you do, you'll get a '*' next to !!!main. The other columns are fairly well explained in the linker manual.
View all questions in Keil forum