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.

[参考译文] MSP430F5342:从未被擦除的固定地址函数出现问题

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/819052/msp430f5342-problem-with-fixed-address-function-that-never-been-erased

器件型号:MSP430F5342

您好、TI 专家、

假设我有一个名为 void TestMine (void)的功能

我通过修改 lnk430f5342.xcl 中的语句、将这个函数设定在固定地址上、这个地址在 MSP430F5342闪存中可能为0x14400。

该函数由 trickery 用作 OAD 引导加载程序。我可以确保闪存中没有可能被擦除的函数或常量数据。

但是,我仍然担心这个技巧。

,此函数在我们的产品发布后永远不会被替换。Beacuse 扮演 引导加载程序的角色。成功升级后,项目重置、我想知道其中是否有局部变量  

函数将由初始化操作(如  cstartup.s43?)复位,此函数使用的所有 RAM 都将被清除、并且不会与新的升级程序混淆?

第二,此函数使用   内在函数.h 中声明的__data20_read_char 和__data20_write_char 和__no_operation 等函数,升级后这些函数在闪存中的位置是否会更改?

将 TestMine 下载到闪存后,二进制文件是固定的,函数被调用具有固定地址,如果这些被调用函数'地址在升级后发生更改。这可能是一场灾难。

 

我能否将此技巧仅用于替换 引导加载程序的 RAM 和内在函数?提前感谢!

 

此致

 

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

    您好!

    您所接触的主题非常复杂。

    从顶层的角度来看、最好的方法可能是设置两个完全独立的项目、为单独段中的代码变量分配特定的存储器范围、一方面是器件、这应该始终保持不变、另一方面是器件、 这可能会随着时间的推移而更新。 当然、项目链接器命令文件中定义的资源不应重叠。 这是更简单的部分。

    最关键的部分是变量、这两个部分都应使用。 在这里、您还需要处理变量的固定分配。

    可能、根据您的描述、您正在考虑射频应用、并且希望将射频接口用于应用和固件更新用途、TI 提供的一个很好的示例是使用 CC430实现无线 FW 更新的应用报告。 这是一个不同的器件、但问题的核心和处理方式应该相同或非常相似。

    或者有一个用于 FRAM

    此外,通常自定义引导加载程序的实现可能会遇到类似的问题,因此另一个可能有用的信息来源是我们的主 BSL 登录页面

    希望这能为您提供一些有用的提示。

    此致

    Peter

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

    您好!

    我假设您的问题已得到充分回答、我将关闭该主题。

    此致

    Peter