部件号:*** >
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.
部件号:*** >
已尝试加载 customer_secure_sample_image、并收到以下错误:
CORTEX_M0P: Unable to determine target status after 20 attempts CORTEX_M0P: Failed to remove the debug state from the target before disconnecting. There may still be breakpoint op-codes embedded in program memory. It is recommended that you reset the emulator before you connect and reload your program before you continue debugging
然后尝试加载之前已成功加载并运行的程序、并得到以下错误:
CORTEX_M0P: Error connecting to the target: (Error -614 @ 0x0) The target indicates there is an error condition from a previous SWD request. Clear the error the condition, and try the SWD request again. (Emulation package 20.0.0.3178)
可能导致这些错误的原因是什么?
谢谢!
吊车
尊敬的 Crane:
如果是、它似乎是从重置处理程序直接调用的、无需再通过 CSC、也没有图像标头。
是的。 此图像示例在经过验证后从 CSC 示例跳转到其他示例。 并且工程中没有标头。 项目构建完成后、CCS 将通过 python 脚本来附加一个图片 Tailer、其中包含图片版本、签名、图像后的哈希信息。
至于遇到的错误、无法直接运行此映像示例、因为它是使用起始地址 0x4800 构建的。 程序将始终从 0x0000 开始、因此您需要在启动时将 CSC 放置到跳转到映像。 当 MCU 被锁定时、您可以按照 MSPM0 MCU 开发指南(修订版 F)的 6.1 解锁 MCU 中的指导操作
此致、
Pengfei
感谢 您的支持!
您能否帮助确认以下陈述、看看我的理解是否正确?
这意味着需要构建 4 个映像:
1. CSC 位于 0x00000
2. 0x40000 处的 CSC
3、将在 0x4800 处生成应用程序映像、并将其与映像放在一起
4、将在 0x44800 处生成应用程序映像,并将标头与映像放在一起
CSC 应能够 在编程后立即进行编程并启动、而应用程序只能 进行编程、在编程后无法立即运行。
通过这种方式、customer_secure_code 和 customer_secure_sample_image 的示例可以正常运行、对吧?
对 customer_secure_code (CSC) 进行编程需要首先擦除非主器件、因为它需要将数据写入闪存中的此部分。 那么每次对更新的 CSC 进行编程时、都需要恢复出厂设置、对吗?
对 customer_secure_sample_image 进行编程时、会遇到以下问题。 原因可能是什么?
但是、当将 customer_secure_sample_image .out 文件编程到闪存时、该文件无法在 CCS 上运行、也无法在 UniFlash 上运行。 但是、成功编程到 UniFlash 上的闪存后、无法读回存储器以在 UniFlash 上进行验证。 错误如下所示:
谢谢!
吊车
CSC 在编程后应能够立即进行编程并启动、而应用程序只能进行 编程、在编程后无法立即运行。
是的。 但是、如果运行 CSC 程序时相应的闪存地址中不存在应用程序、CSC 将无法通过映像验证、也无法在 CSC 程序本身中暂停。
并且编程 customer_secure_code (CSC) 需要首先擦除 NON-MAIN、因为它需要将数据写入闪存中的此部分、对吗? 那么每次对更新的 CSC 进行编程时、都需要恢复出厂设置、对吗?
是的、您回答正确。
对于遇到的问题、可能是由以下原因引起的:将 CSC 示例映像程序编程到 MCU 后、程序将自动以 0x0000 地址启动、在此地址中找不到程序、因此会弹出一些错误。 我可以申请我的私人关系船、我可以向您发送有关如何使用这些示例进行测试的指导。
还不错 感谢 Pengfei 确认这些。
我有点害怕关于擦除非主存储器可能会损坏 MCU 的警告、因为我手中只有一个板、并且该板在加拿大尚不可用。 我尝试充分理解在擦除非主存储器时发生的错误会使 MCU 砖化、因此可以尝试避免所有这些错误。 我得到了这样 的结果:在中间断电、中断的擦除过程、错误地修改它并且在没有编程的情况下擦除它可能会导致这个结果。
那么我的问题是:恢复出厂设置的命令不是只用于擦除非主存储器而不对其进行编程吗? 修改它具体指的是什么? 还有其他任何可能使我可能错过的 MCU 砖化的东西?
为了澄清、对应用程序进行编程后读回闪存时、会发生最后一个 POST 中的错误(尝试读回以验证是否正确对其进行了编程)。
不管怎样、好友请求会被发送。
此致、
吊车
尊敬的 Crane:
那么我的问题是:恢复出厂设置的命令是否只是为了在不对非主存储器进行编程的情况下擦除它? 修改它具体指的是什么? 我可能会错过的其他任何可能使 MCU 砖化的东西?
恢复出厂设置会擦除 NONMAIN 存储器、然后向其写入默认值。 实际上、 对于 MSPM0G3519 的所有 NONMAIN 定义、您可以查看 1.6 NONMAIN G351x_G151x 寄存器 MSPM0 G 系列 80MHz 微控制器技术参考手册(修订版 B)。 其中的内容将在 MCU 引导阶段使用、如果其中的信息配置不正确、MCU 可能会引导失败、无法转至主闪存程序。