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.

[参考译文] TMS320F28066:重新定义闪存的条目代码开始

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1234576/tms320f28066-redefine-the-entry-codestart-of-flash

器件型号:TMS320F28066

我的客户不使用 FlashA 区域、并将 Begin 段和引导加载程序代码放在 FlashB 区域中。 器件再次上电后、代码不会运行。 原因是什么?

--

谢谢、此致

耶鲁

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [报价 userid="514648" url="~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1234576/tms320f28066-redefine-the-entry-codestart-of-flash ]原因是什么?

    链接器脚本行中有一条被删除的线索:"用于"引导至闪存"引导加载程序模式。"

    遗憾的是、BEGIN 必须保持原样、因为该地址在器件中进行了硬编码。 它执行下面在手册中突出显示的功能

    应用程序代码可以移动到 FLASHB、但 BEGIN 必须保留在0x3F7FF6中。

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

    谢谢 Kier。

    1.如果将自己编写的引导加载程序代码放入区域 B、BEGIN 保留为0x3f7ff6。 所以我在升级代码时不能擦除闪存 A 区域。

    2.如果我在使用 JTAG 进行升级时不擦除 FlashA 区域,是否可以避免因升级过程中电源干扰导致的编程中断而导致 DSC 锁定的情况?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    1. 如果我将自己编写的引导加载程序代码放入区域 B、BEGIN 将保留在0x3f7ff6。 所以我升级代码时不能擦除闪存 A 区域吗?

    是的、你可以擦除闪存 A、但是 在复位你的器件前、你必须保留并用你的分支指令和代码地址来刷写程序0x3F766和0x3F767。 0x3F766处的分支指令只是一个指向任何位置的符号发布、但符号发布无法移动。

    2. 如果我在使用 JTAG 进行升级时不擦除闪存 A 区域,是否可以避免因升级过程中电源干扰导致编程中断而导致 DSC 锁定的情况?

    很抱歉、我不知道答案。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    2. 如果我在使用 JTAG 进行升级时不擦除闪存 A 区域,是否可以避免因升级过程中电源干扰导致编程中断而导致 DSC 锁定的情况?

    是的、扇区 A 确实包含 CSM 密码、避免擦除/编程此扇区将防止这些位置的任何意外损坏/锁定。

    如果我们正在寻找对这种可能性的最佳控制,我也建议尽可能不要住在 H 区。  虽然这里没有 CSM 密码、但闪存的拓扑结构是这样的:扇区 H 用作扇区 A 的平衡扇区

    最后、只要这些扇区的闪存过程没有中断、就不会出现问题、而这更是一个额外的安全步骤、以防闪存编程期间发生电源故障或中断。

    此致!

    Matthew