主题中讨论的其他器件:UNIFLASH
您好、专家。
CCS:版本:11.1.0.00011
UniFlash:版本: 8.1.0.4135
我有以下问题。 我需要使用生成的.hex 来刷写 MCU (请注意、使用任何其他文件格式都不是讨论事项)
项目中的一些背景知识:
我们根据需要将程序存储器分为三个分区、而 CCS 并未提供实现这一目标的方法。 闪存的一部分分配给启动有效应用程序的启动器、其他两个部分为可以驻留在任何应用分区中的实际应用程序分配空间。
现在、话虽如此、我们需要在十六进制文件中包含区域1的 DCSM OTP 值、这样、一旦我们刷写 MCU、它就会保留这些值、我们无需手动执行该操作、这在生产中非常不方便。
我已经尝试通过 UniFlash 刷写 MCU、但在使用包含 DCSM OTP 存储器部分的文件时、它无法正常工作。 不包含此内容的十六进制文件可以正常工作、但如果没有 DCSM 设置、MCU 将无法工作、因为默认情况下、它不会从闪存引导。
以下是我们.hex 文件的开头部分、
:020000040007F3 :20800000FFFF1FFFFFFFFFFFFFFF1FFFFFFFFFFFFFFF1FFFFFFFFFFFFFFF5AFFFFFF5AFF6A :20801000FFFFFB7FFFFF7FFFFFFF4BFFFFFF3FFFFFFF9FFFFFFF0FFFFF03FFFFFFFFFFFF34 :020000040008F2 :2000000000480784000000000000000000000000D00600C8081C8F05D22E86A940C4FFED98 :2000100000F876228F05D20E18C4FFFD761A02177640C6798F45D2088F05D232CCC500037C :2000200088A9CCC4000280A9AAA90EA8FF5A92AB900327A992A7CAA688A92BAAA9A90FA61C :20003000611276228F05D20E18C4FFFE761A020C7640C679AAA99000910376480719020B63
前三行对应于 DCMS OTP 区域1地址(0x78000)、如果没有 DCSM 设置、MCU 将不工作、因为默认情况下它不从闪存引导。
以下是 DCSM 设置:
这些设置与十六进制文件中的部分设置相同。
在我第一次尝试刷写 MCU 之前、我读取存储器、得到以下结果:
闪存会失败、因为我将在下文中显示、但我再次以如下方式读取内存:
因此、DCSM 地址上的部分值发生了更改、但刷写过程中断、原因我不知道。
以下是我在不同尝试使用 UniFlash 进行刷写时遇到的错误:
如前所述、如果我使用的 hex 文件不包含 DCSM 的内容(本例中的前三行)、则使用 UniFlash 刷写 MCU 是可行的、但这些设置是必要的、以便 MCU 从闪存引导。 过去、我使用了.out 文件、该文件似乎通过项目中包含的 asm 和 cmd 文件的正确 DCSM 设置为 MCU 刷写、但这对我们不起作用、因为我们在项目的不同部分中分配了多个应用 步骤。 为了解决此问题、我必须使用包含 Launcher 和应用程序的十六进制文件重新刷写 MCU、但我提到这对于生产来说非常方便。
那么、我的问题是、如何在十六进制文件中包含 DCSM OTP ZONE1的正确设置、以便与 UniFlash 配合使用? 我缺少什么?
我真的很感激任何帮助。