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.
我在现场有一个 TMS320F2810器件。 我们使用另一个微控制器通过 UART 将数据传输到 TMS320F2810进行了现场升级。 它完成升级、然后重新启动。 新应用程序启动后、我们看到发送给我们的消息很少、但稍后我们发现器件完全无法正常工作。 当我们让器件检查时、我们连接了 JTAG 并看到闪存中的几个数据段丢失。 此外、0x3E8000内的.boot 段丢失、因此器件不会在该段之后启动。 我们无法确定导致此部分数据丢失的原因。 我们也感到困惑的是、为什么它在升级后启动、并将几条消息发送回、然后停止工作。 是否有任何闪存内容可以被擦除的想法?
您好!
[引用 userid="314821" URL"~/support/microcontrollers/c2000/f/c2000-microcontrollers-forum/986636/tms320f2810-tms320f2810-flash-error 时]当我们让器件检查连接 JTAG 时、发现闪存中的几个数据段丢失。 [/报价]当您说段缺失时、您意味着它们处于擦除状态(即存储器读取0xFFFF)? 缺失数据的"部分"是否与器件数据表中定义的闪存扇区相匹配? 请注意、闪存 API 擦除函数将擦除整个扇区、这就是我提出要求的原因。
F281x 闪存 API 库是否存储在器件上?
最棒的
Kevin
尊敬的 Kevin:
缺少段我意味着它们处于擦除状态(0xFFFF)我们在编译中检查了每个扇区和.map 文件以比较数据。 从0x3e8000开始、整个.boot 段为0xFFFF。 出现 codestart.asm 的0x003f7ff6具有0xFFFF。 只有 .text 段只有0x740个位置填充数据、其余位置为0xFFFF。
闪存库位于 *** 中、以确保闪存从 RAM 运行。
最大的问题是、升级后、它开始执行几个函数以发回消息、然后在某个时间后失败。 在多次硬复位之后、它没有启动、因此我们使用硬件并使用 JTAG 进行检查、并看到这些已擦除的部分。 我们不知道它是如何被擦除的。
在应用程序运行时、指向 *** 的 PC 是否有可能启动另一个升级?
谢谢、此致、
Aviinaash S
您好 Aviinaash。
现在很难说出到底发生了什么。
复位后、下面哪些闪存扇区 A 至 E 处于完全擦除状态(全部为0xFFFF)? 您还可以检查从0x3F7FF8开始的密码值吗?
最棒的
Kevin
尊敬的 Kevin:
我们当前未使用 CSM、这些位置默认为0xFFFF。 即使是带有 codestartbranch.asm 的0x3F7FF6的位置也会填充0xFFFF。
扇区 C 中来自位置0x003F8046的数据很少、而在从0x3E8080开始的 Sectore E 中、数据最多为0x740位置的数据全部为0xFFFF。
我们仍然无法确定、 如果升级过程中出现问题、我希望升级模块不会出现问题。 但在这种情况下、升级后它确实重新启动、我们能够在发送的消息中看到正确的升级版本号。 但是5分钟后没有更多消息、当我们检查硬件时、内存的大部分已被擦除。
谢谢、此致、
Aviinaash S
Aviinaash、
我将在本主题中接管 Kevin 的工作。 我从上面假设这是一个来自您现场的隔离式返回(即没有其他器件显示此结果)、但需要确保。
虽然不是正常行为、器件本来可以调用闪存 API 擦除函数、这将导致上述结果。 再说一次、除非器件的行为不符合规格、否则通常不会发生这种情况。
在下载新映像后是否检查代码以验证代码是否正确、然后重新编程闪存。 我这里的意思是、通过升级过程、我们知道在闪存内容开始擦除之前、闪存内容是好的?
当您看到代码段转至0xFFFF 时、您能评论它是整个扇区为0xFFFF 还是一部分。
最棒的
Matthew