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.

[参考译文] MSPM0L1306:generated.txt 文件有两个地址。

Guru**** 2513185 points
Other Parts Discussed in Thread: MSPM0L1306

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1549044/mspm0l1306-the-generated-txt-file-has-two-addresses

器件型号:MSPM0L1306


工具/软件:

编译 MSPM0 代码时、为什么生成的 the.txt 文件具有两个地址? 有两个地址将影响升级软件包的 CRC 校验结果。 如何设置 CCS、使编译生成的 the.txt 文件只有一个地址?

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

    您好 Kitto、

    请检查您是在代码中还是在配置中设置了两个闪存区域。 例如、您可以从 0x0 编写一个器件代码、然后从 0x2140 开始将另一个器件代码写入区域。 否则、您将不会获得此类 ti txt 文件。

    要再次确认、您可以检查 device_linker.cmd 文件查看存储器区域配置、

    然后、请确认您以正确的方法生成 ti txt 文件:“Properties"->"Arm Hex“ Hex utility"->"Enable“ utility"->"Enable "“ " Arm“ Arm Hex“ Hex Utility“->"--drag_swrap=off"。“。</s>“ 然后点击“Output Format Options“->选择 ti txt

    您可以找到一个要测试的 SDK 演示、可能会发现您可以获取一个普通的 ti txt 文件。

    此致、

    Janz  

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

    My Settings 应该正确、但它可能会生成包含两个地址的 a.txt 文件。 还有什么原因可能是这样做的原因?


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

    您好 Kitto、

    这似乎很奇怪。 在您的应用代码中、您是否有任何操作、例如将一些器件代码写入闪存中的任何固定地址? 然后、请尝试导入一个 SDK 演示代码并通过相同的方法生成 txt 文件、并检查文件是否正常。  

    此致、

    Janz

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

    1. SDK 示例选择输出 txt、编译时不会生成包含两个地址的 txt。
    2.我没有在闪存中用指定的地址写代码。 只有当代码大小在特定范围内时、编译才会生成两个地址。 例如、在删除或添加代码后、不会再次生成两个地址。 是否有任何可优化生成的 TXT 文件的设置选项?

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

    嗨、Kitto、

    根据上面显示的 device_linker.cmd 文件、闪存长度设置不正确。  它应该是 0x0000FFF8。

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

    感谢您的答复。
    1. flash_size 用于限制此引导加载程序的大小。 即使在修改为 0x0000FFF8 后、仍会生成两个地址。
    2. fill=0XFFFFFFFF 可以解决生成两个地址的问题、但最后未使用的地址也被填充。 只能填充中间未使用的地址吗?

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

    您好 Kitto、

    您能否将您的项目发送给我们、我们可以在我们这边进行检查、

    此致、

    Janz Bai

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

    好的、您似乎在使用“辅助“闪存 BSL、而不是使用器件中包含的 ROM BSL、对吗?

    如果是、您的 BSL 位于位置 0x0000.0000 - 0x0000.2C00、并且闪存的其余部分保留用于应用程序、是吗?

    参考 SDK 示例“secondary_bsl_uart_LP_MSPM0L1306_nortos_ticlang",“,如果、如果您按如下所示修改此链接器脚本文件、则*。txt 输出文件将用 0xFFFFFFFF 填充所有未使用的闪存位置(请参阅随附的.txt 文件)

    MEMORY
    {
    	FLASH_SBSL_INTVEC(RWX)  :	 org = 0x00001000,      len = 0x00000040, FILL = 0xFFFFFFFF
    	FLASH_SBSL_START(RWX)   :	 org = 0x00001040,      len = 0x00000040, FILL = 0xFFFFFFFF
    	FLASH_SBSL(RWX)   		:	 org = 0x00001080,      len = 0x00001F80, FILL = 0xFFFFFFFF
    
        SRAM(RW)				:    org = 0x20000000,      len = 0x00001000,
    
        BCR_CFG		 		    : 	 org = 0x41C00000,      len = 0x00000080,
        BSL_CFG				    : 	 org = 0x41C00100,      len = 0x00000080,
        FACTORY_CFG		  		: 	 org = 0x41C40000,      len = 0x00000200,
    }

    e2e.ti.com/.../secondary_5F00_bsl_5F00_uart_5F00_LP_5F00_MSPM0L1306_5F00_nortos_5F00_ticlang.txt

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

    尊敬的 Janz:
      请帮助检查该调试代码。 在我们其他 TI 工程的代码中、代码大小发生更改后偶尔也会生成两个地址、而不仅仅是在此调试代码中。
    e2e.ti.com/.../mspm0l1306_5F00_bootloader.zip

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

    您好 Kitto、

    我检查了您的代码。 我发现发送器件看起来像矢量表格式。 然后我从代码中删除 SCB->VTOR = app_addr、然后我发现不会有第二个地址。 所以我怀疑这个 操作矢量表地址的代码“SCB->VTOR = app_addr “会导致生成两个地址、我认为编译器在构建此代码时会执行一些操作。

    我想知道客户是否担心这有两个地址、我认为这不会影响客户应用程序代码功能。

    此致、  

    Janz Bai

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

    尊敬的 Janz:
     删除 SCB->VTOR = APP_addr 并将数组长度从 256 更改为 512、 第二个地址也将出现。


    这将影响 CRC 校验功能、因为将 txt 写入闪存后、空白部分将用 0xFF 填充、从而导致为 txt 计算的 CRC 校验结果与为闪存计算的结果不一致。

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

    嗨、Kitto、

    查看项目的*。map 文件。  有很多信息可以帮助跟踪您在输出文件中看到的内容/原因。

    例如、查看.map 文件、在.text 段中、ro 的末尾似乎是 0x00002114、程序的常数放置在.BSL 存储器部分的 0x00002120 中。

    当我没有注释 SCB->VTOR 时、您可以看到 ro 以 0x00002114 结尾、.BSL 存储器段放置在 0x00002120。

    当我注释掉 SCB->VTOR 时、是的、地址略有不同、但您可以看到 ro .text 段后面的.txt 存储器部分放置在 0x00002140、这是仍出现在.txt 文件中的地址。

    您也看到了这个吗?