Tool/software:
What does attr column in .map file mean? What does RWIX mean? I assume that corresponding memory range has read, write, i??? and execute access. What does I stand for? Enabling/Disabling automatic MPU configuration changes behaviour of the code (The write accesses to FRAM2 memory doesn't modify the values in FRAM2, when MPU is enabled, because I haven't set up the MPU properly yet) but the attr column is still full of RWIX.
MEMORY CONFIGURATION name origin length used unused attr fill ---------------------- -------- --------- -------- -------- ---- -------- SFR 00000000 00000010 00000000 00000010 RWIX PERIPHERALS_8BIT 00000010 000000f0 00000000 000000f0 RWIX PERIPHERALS_16BIT 00000100 00000100 00000000 00000100 RWIX INFOD 00001800 00000080 00000000 00000080 RWIX INFOC 00001880 00000080 00000000 00000080 RWIX INFOB 00001900 00000080 00000000 00000080 RWIX INFOA 00001980 00000080 00000000 00000080 RWIX RAM 00001c00 00000800 00000594 0000026c RWIX FRAM 00004400 0000bb80 0000a1d5 000019ab RWIX JTAGSIGNATURE 0000ff80 00000004 00000004 00000000 RWIX ffff BSLSIGNATURE 0000ff84 00000004 00000004 00000000 RWIX ffff IPESIGNATURE 0000ff88 00000008 00000008 00000000 RWIX ffff ...
They could mean nothing. At best they are hints to the program loader. Which could mean something in a Linux environment. GCC for the MSP430 of course uses the .elf format which includes such things. But a quick comparison of the .map output and what readelf thinks of what the linker put into its output shows differences. See also ELF sections.
Where can I see how compiler has handled MPU configuration when "Enable Memory Protection Unit (MPU)" is checked and "Let compiler handle ..." is selected? By how compiled has handled, I mean the range and access rights. Because attr column doesn't indicate it as it turns out.
I still couldn't find a place where complier or linker reports the ranges of segments for MPU. But it is possible to find them by viewing registers in debug session or one can read the linker file to find them out.
I also couldn't find where compiler or linker reports the access rights for the MPU segments but according to the linker file, there is a default/hardcoded configuration. When IPE is not enabled, Info segment is r--, Segment 1 is rw-, Segment 2 is r--, Segment 3 is r-x.
**Attention** This is a public forum