This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

MSP430FR5969: What does attr column in .map file mean?

Part Number: MSP430FR5969


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.

  • According to here, "I" means that memory range can be initialized.

  • 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