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.

[参考译文] MSPM0C1104:如何配置闪存段

Guru**** 1821780 points
Other Parts Discussed in Thread: UNIFLASH
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1389443/mspm0c1104-how-to-configure-flash-sections

器件型号:MSPM0C1104
主题中讨论的其他器件:UNIFLASH

工具与软件:

尊敬的专家:

  我使用 CCS Theia 1.3.1并想从起始地址0x3C00保存用户数据、数据大小很小、只需写入几次、因此无需使用 EEPROM 方式、因此我 在  CCS Theia 中取消选中链接文件生成并将 device_linker.cmd 移动到工程路径、按如下所示将闪存长度更改为0x3C00:

小程序
  闪存      (Rx) :origin = 0x00000000、length = 0x00003C00
  SRAM       (RWX):origin = 0x20000000、length = 0x00000400
  BCR_CONFIG   (R) :origin = 0x41C00000、length = 0x00000080
}
如果我重新编译工程、则错误输出:
[84]makefile:165:目标"R2_frunk_switch_sensor_test.out"的配方失败
[85]"../device_linker.cmd"、第51行:错误#10099-D:程序无法放入可用存储器中、或者该段包含一个调用站点、该调用站点需要无法为此段生成 trampoline。 段".rodata"大小0x9b 的对齐放置失败。 可用存储器范围:
[86]闪存大小:0x3C00未使用:0x48最大空洞:0x48
[87]"../device_linker.cmd"、第49行:错误#10099-D:程序无法放入可用存储器中、或者该段包含一个调用站点、该调用站点需要无法为此段生成 trampoline。 对于段".cinit"大小0x53、进行对齐放置失败。 可用存储器范围:
[88]闪存大小:0x3C00未使用:0x38最大空洞:0x38
[89]ERROR #10010:链接期间遇到错误;未生成"R2_frunk_switch_sensor_test.out"
[90]tiarmclang:错误:tiarmlnk 命令失败、出现退出代码1 (使用-v 查看调用)
[91]gmake[1]:***[R2_frunk_switch_sensor_test.out]错误1.
[92]gmake[1]:由于错误、不会重制目标"辅助输出"。
[93]Undertale [编辑][93]Undertale
[94]gmake:***[all]错误2.
[95]****构建完成****
然后、我将 优化级别从2更改为0、错误消失了、所以我相信这是因为出纸槽超过了0x3C00、但实际上在映射文件中、大小仅为0x1e50、远离0x3C00、我不知道为什么?
另一个问题是、如果设置了0x3C00处的用户数据、但下一次在新刷写后、0x3C00中的数据将设置为0xff、我们是否可以将闪存范围限制为 advoid 此值? 希望我能得到帮助、谢谢。
法案
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    对于实际代码大小、我认为您可以在将代码放入 MCU 后得到准确的代码。 您可以扩展闪存范围并仔细检查它是否为0x1e50吗?

    对于您的第二个问题、请尝试以下操作:

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    嗨、EASON:

       我打开了错误的映射文件、它不是0x1e50而是0x3bd8、仍然不超过0x3c00、关于第二个问题、我想在 FW 新刷写后保留0x3c00中的用户数据、如何使用 UniFlash 来实现?

    香港特别行政区政府在香港特别行政区政府的工作、包括香港特别行政区
    TI ARM Clang 链接器 PC v3.2.1
    香港特别行政区政府在香港特别行政区政府的工作、包括香港特别行政区
    >>已链接至2024年7月19日16:30:11星期五

    输出文件名:
    入口点符号:"_c_int00_noargs"地址:000031d5


    存储器配置

    名称源长度已使用未使用属性填充
    --------------- --- --- --- --- ---
    闪存00000000 00003C00 00003bd8 00000028 R X
    SRAM 20000000 00000400 00000156 000002aa RW X
    bcr_config 41c00000 00000080 00000000 00000080 R


    段分配映射