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.

[参考译文] MSPM0L1106:闪存保留

Guru**** 2457760 points
Other Parts Discussed in Thread: MSPM0L1106, SYSCONFIG, UNIFLASH

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1482510/mspm0l1106-flash-memory-reservation

器件型号:MSPM0L1106
主题中讨论的其他器件: SysConfigUNIFLASH

工具与软件:

大家好、团队成员:

在 MSPM0L1106中、它具有64KB 闪存。 固件代码大小已经超过40KB。

是否可以保留1KB 闪存(0x7C00至0x7FFF)用于数据存储器、并且此区域中不会生成程序代码?

谢谢。

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

    是、您可以修改.cmd 文件以定义具有特定闪存区域的段。

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

    尊敬的 Yuhao:

    感谢您的支持。

    我在我的项目文件夹 device_linker.cmd 中的目录下找到一个.cmd 文件、 \Debug\syscfg\。 似乎是从 CCS 生成的文件。 我应该在哪里修改它?

    AlanC。

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

    尊敬的 Yuhao:

    此外、我提议的修改如下。 这会导致闪存出现任何重叠错误吗?

    小程序

    Flash (RX):origin = 0x00000000、length = 0x0000FFF8
    Sram (rwx): origin = 0x20000000, length = 0x00001000
    BCR_CONFIG (R):origin = 0x41C00000、length = 0x00000080
    BSL_CONFIG (R):origin = 0x41C00100、length = 0x00000080
    FLASH_DATA (R):origin = 0x00007C00、length = 0x00000400  <<- added
    }

    (备注:.cmd 文件在编译后恢复为原始格式。)

    AlanC。

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

    若要手动修改 cmd 文件、首先需要将 cmd 文件复制到工程。 然后、请在 SysConfig 中禁用 cmd 生成。

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

    尊敬的 Yuhao:

    更改后、出现了预期的重叠误差。 您可以建议如何修改.cmd 文件吗?

    AlanC。

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

    请注意、闪存区域不应有任何覆盖层。 例如,FLASH  (RX): origin = 0x0000000000000000, length = 0x0000FFF8,意味着它包含从0x0000到0xFFF8的闪存。  

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

    尊敬的 Yuhao:

    是的、我理解。 这就是我创建此 TT 的原因。

    我想知道如何防止在此期间特定存储器处生成代码、例如在本例中跳过1K 数据的0x7C00。

    AlanC。  

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

    您需要定义闪存的两个部分、一个是针对0x0000-0x6bff 的 FLASH1、另一个是针对 0x8000 -的 FLASH2 ...因此  将跳过具有1K 数据的0x7C00

    那么您需要将段定义为  

      .text  : palign (8){}> FLASH1 | FLASH2.

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

    尊敬的 Yuhao:

    我按照您的建议修改了 cmd 文件、如下所示、但编译仍然存在错误。

      e2e.ti.com/.../ErrorOutput.txt
    我还将所有标记为"flash"的位置修改为"flash | FLASH2"、错误仍然存在。 是否需要进行任何其他修改?

    AlanC。

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

    根据  10.5.5. SECTIONS 指令—TI Arm Clang 编译器工具用户指南、您需要使用>>而不是>。 请删除 palign (8)。 我想您只能修改.text、并将其他人保留为默认值。 下面是我的测试、我为仅使用的.text 创建了 FLASH1和 FLASH2。

    下面是另一种不同的方法。

    1. 创建不同的".text"并分别将不同的功能放入其中。 以下是示例代码。
      1. e2e.ti.com/.../2112.Attritube_5F00_memoryAllocation_5F00_C.zip
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Yuhao:

    感谢您的支持。 我按如下方式修改了.cmd 文件、但产生了相同的错误。

    我还尝试了您提供的项目 Attritube_memoryAllocation_c. 但是、无法在编译工程时附加错误。

    e2e.ti.com/.../Attritube_5F00_memoryAllocation_5F00_C_5F00_Err.txt

    AlanC。

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

    不需要在 cmd 文件的各个部分中使用>>而不是>。

    这里是我的测试代码作为参考。 我把.text 部分放在 FLASH1 | FLASH2的'.text  :{}>> FLASH1 | FLASH2'

    e2e.ti.com/.../issue_5F00_cmd_5F00_file_5F00_modification.zip

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

    尊敬的赵宇浩:

    感谢您的支持。 最终、我可以编译我的代码。 但我仍然对它有疑问。 我制作了2个版本如下。

    左侧是使用代码进行编译的调试示例。 但是、它现在会在"flash"部分中留下一些未使用的空间。 后来、当代码量增加时、可能会导致编译错误。 我试着将闪存和 FLASH1组合在一起、创建了右侧图。 选择正确的版本后、会出现如下所示的编译错误。

    是否可以将闪存和 FLASH1组合在一起?如何组合?

    e2e.ti.com/.../CombinedErr.txt

    AlanC。

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

    尊敬的赵宇浩:

    很抱歉地告诉您、UniFlash 在通过 BSL 下载固件期间报告了错误、如下所示。


    在我修改 cmd 文件后,通过添加 palign (8)到行".text : palign (8){}>> FLASH1 | FLASH2",这将导致编译错误。 它是否能够克服这个问题?

    e2e.ti.com/.../palign_5F00_err.txt

    AlanC。

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

    若要检查内存分配、请使用"View"-"Memory Allocation"