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.
工具与软件:
.map 文件中的 attr 列意味着什么? RWIX 的含义是什么? 我假设相应的存储器范围具有 READ、WRITE、I??? 并执行访问。 我代表什么? 启用/禁用自动 MPU 配置会更改代码的行为(当启用 MPU 时、对 FRAM2存储器的写访问不会修改 FRAM2中的值、因为我尚未正确设置 MPU)、但 attr 列仍然填满 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 ...
它们可能没有任何意义。 它们至多是程序加载器的提示。 这在 Linux 环境中可能意味着什么。 当然、MSP430的 GCC 使用.elf 格式、其中包含此类内容。 但快速比较.map 输出与 readelf 对链接器输出内容的看法便会发现不同。 另请参见 ELF 部分。
在哪里可以看到、在选中"Enable Memory Protection Unit (MPU)"和"Let compiler handle ..."时、编译器是如何处理 MPU 配置的? 说到编译的处理方式、我指的是范围和访问权限。 因为 "ATTR"列并没有在结果上表示它。
根据 这里、"i"是指可以初始化存储器范围。
我仍然找不到编译器或连接器报告 MPU 段范围的位置。 但可以 通过在调试会话中查看寄存器来查找它们、也可以读取链接器文件以查找它们。
我也找不到编译器或链接器报告 MPU 段访问权限的位置、但根据链接器文件、有一个默认/硬编码配置。 未启用 IPE 时、信息段 为 r-、段1为 rw-、段2为 r-、段3为 r-x