我的客户不使用 FlashA 区域、并将 Begin 段和引导加载程序代码放在 FlashB 区域中。 器件再次上电后、代码不会运行。 原因是什么?
--
谢谢、此致
耶鲁
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.
我的客户不使用 FlashA 区域、并将 Begin 段和引导加载程序代码放在 FlashB 区域中。 器件再次上电后、代码不会运行。 原因是什么?
--
谢谢、此致
耶鲁
链接器脚本行中有一条被删除的线索:"用于"引导至闪存"引导加载程序模式。"
遗憾的是、BEGIN 必须保持原样、因为该地址在器件中进行了硬编码。 它执行下面在手册中突出显示的功能
应用程序代码可以移动到 FLASHB、但 BEGIN 必须保留在0x3F7FF6中。
1. 如果我将自己编写的引导加载程序代码放入区域 B、BEGIN 将保留在0x3f7ff6。 所以我升级代码时不能擦除闪存 A 区域吗?
是的、你可以擦除闪存 A、但是 在复位你的器件前、你必须保留并用你的分支指令和代码地址来刷写程序0x3F766和0x3F767。 0x3F766处的分支指令只是一个指向任何位置的符号发布、但符号发布无法移动。
2. 如果我在使用 JTAG 进行升级时不擦除闪存 A 区域,是否可以避免因升级过程中电源干扰导致编程中断而导致 DSC 锁定的情况?
很抱歉、我不知道答案。
2. 如果我在使用 JTAG 进行升级时不擦除闪存 A 区域,是否可以避免因升级过程中电源干扰导致编程中断而导致 DSC 锁定的情况?
是的、扇区 A 确实包含 CSM 密码、避免擦除/编程此扇区将防止这些位置的任何意外损坏/锁定。
如果我们正在寻找对这种可能性的最佳控制,我也建议尽可能不要住在 H 区。 虽然这里没有 CSM 密码、但闪存的拓扑结构是这样的:扇区 H 用作扇区 A 的平衡扇区
最后、只要这些扇区的闪存过程没有中断、就不会出现问题、而这更是一个额外的安全步骤、以防闪存编程期间发生电源故障或中断。
此致!
Matthew