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.

[参考译文] 编译器/TMS320F28035:为了保持 CSM 设置、将对代码启动的执行重新连接到固定位置

Guru**** 2534260 points
Other Parts Discussed in Thread: TMS320F28035

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/605714/compiler-tms320f28035-remappinging-codestart-to-fixed-location-in-order-to-preserve-csm-settings

器件型号:TMS320F28035

工具/软件:TI C/C++编译器

我们将使用 TMS320F28035中的代码安全模块。  我们希望将安全编程与应用程序编程分开;例如、使用相同的应用程序.hex 文件对不安全或受保护的器件进行编程(提供所需的密码)。 在 F28035中、安全密码和零块位于闪存扇区 A 中。 为了保留 CSM 安全参数、我们愿意保留整个扇区 A、但是"引导至闪存"矢量也位于扇区 A 中的固定地址(0x3F7FF6)

在我们的项目中、我们将包含"DSP2803x_CodeStartBranch.asm"文件。  编译工程时、会使用"DSP2803x_CodeStartBranch.obj"代码的地址对"引导至闪存"矢量位置进行编程。  该代码位于.text 段中、其地址可能会因应用程序的大小而异。

是否有任何方法可以将 "DSP2803x_CodeStartBranch.obj"放置在固定位置、以便该矢量对任何应用都有效?

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

    大家好、Toby Lou、

    如果我理解正确、我认为您可以通过在应用代码中的固定地址定义一个新的2字段来实现这一点、以保持 CodeStartBranch。 例如、这可能位于地址0x3F4000、闪存扇区 B 的起始位置

    然后、您编写一个新的汇编文件以设置从0x3F7FF6到_code_start 的分支、如下所示:

    .def  _entrypoint     ;条目标签:放置在0x3F4000处

    .ref  _code_start    ;应用程序代码中的起始地址

    .sect "entryaddr"

    入口点(_P):

    LB _CODE_START;在应用程序中长分支到代码起始点

    将此"entryaddr"段映射到0x3F7FF6、其中之前为"_code_start"。

    entryaddr:>开始页= 0

    然后、在链接器文件的存储器部分中创建一个名为该段的新段、以保存新分支:

    第0页:

    BEGIN2:origin = 0x3F4000、length = 0x000002 //闪存扇区 B 的起始:*

    并在链接器文件的 SECTIONS 部分映射"codestart"段:

    codestart:> BEGIN2,page = 0 /*固定条目地址*/

    显然、您必须将闪存 B 存储器的起始地址和长度改变2个字、以便为新分支腾出空间。

    FLASHB:origin = 0x3F4002,length = 0x001FFE

    这样、PC 将始终从0x3F7FF6跳转到应用程序闪存中的相同地址(本示例中为0x3F4000)、并且引导矢量的变化将滚动到应用程序代码中。 您构建应用程序代码以将 CodeStartBranch 链接到0x3F4000、而不是0x3F7FF6。

    我希望这会有某种意义。 正如我说过的、我可能对您的要求没有完全的理解、否则、您可以尝试一下、并告诉我它是否适合您?  谢谢。

    此致、

    Richard

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

    Richard -

    这正是我想要的。 我必须 将符号引用从"_code_start"更改为"code_start"、但除此之外、它效果非常好!

    谢谢!!!
    Toby