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.
亲爱的大家,我写信给你,是为了帮助你了解我的程序有什么问题。
如何解决该问题?
此致、谢谢
Silvano Battisti
问题:Uniflash 5.3 (但所有版本)无法刷写包含由链接器命令生成的 ECC 的应用程序。
我尝试下载一个包含闪存 ECC 的应用(无 uniflash auto_ECC)。
下载在验证 ECC 时失败(地址0xf0400000)
出什么问题了?
生成问题的步骤
请参阅随附的压缩 projecte2e.ti.com/.../4118.TestUniflash_5F00_R00.zip
Silbvano、您好!
如果使用链接器 cmd 来生成 ECC、则在将代码加载到闪存时:
闪存组宽度为144位宽、包括128个数据位和16个 ECC 位。 在标准读取模式或流水线读取模式下、一次读取128位数据和16位 ECC。
如果启用了"自动 ECC 生成"、CCS 加载程序将为每128位数据生成16位 ECC、并将这些144位数据一次编程到闪存中。
如果使用链接器生成 ECC、则在链接阶段使用 obj 文件生成 ECC 数据、并将 ECC 数据放入 out 文件中。 加载数据时、加载器将首先对整个数据段进行编程、然后对 ECC 段进行编程。 如果启用了数据验证、则写入的数据(加上16位 ECC)将每128位写操作回读一次以进行验证、但此时 ECC 数据尚未编程。 因此将生成 ECC 错误、并且错误引脚也将被置位。
尊敬的王先生:
感谢您的重播。
使用建议的设置、下载会运行、但之后 "验证映像"失败。 它可以缝合 ECC 部分 无论如何都没有正确编程。
Silvano、您好!
正如我在上一篇帖子中所说、请不要进行文件验证。
王霍罗
当然是的。 我的过程是:
1) 1)擦除闪存 ->成功
2) 2)目标电源关闭/电源打开
3)加载映像而不进行任何验证 (“否”空白检查, “无”验证) ->成功
4) 4)目标电源关闭/电源打开
5)验证映像->错误
那么、我的问题是: 删除上面的步骤4和5、 我如何才能获得程序文件中所包含的芯片闪存的证据?
非常感谢
此致
Silvano Battisti
尊敬的王先生:
感谢你的答复。 非常感谢您的反馈。 很抱歉让你感到困扰。
是的、您在右侧、矢量未包括在内。 这是一个非常虚拟的项目。 我对正在运行的项目并不感兴趣、而是对 我的最终应用程序感兴趣(具有相同的闪存问题)。
总之、我添加了链接命令文件中缺少的内容。 但结果不变:失败。
我看到您 在 TMS570LC43系列上的测试正常。 这是一个虚拟测试项目吗? 如果这是一个虚拟项目、您可以将其发布给我、以便我可以尝试适应我的 TMS 系列吗? 如上文所述、我对正在运行的工程并不感兴趣、而是对 JTAG 使用 Uniflash 进行闪存的内容感兴趣。
我的问题是 Uniflash 的下载会话配置中存在缺失或错误。
再次感谢您的支持。
此致
Silvano Battisti
PS:我已附加上次测试 projecte2e.ti.com/.../4186.TestUniflash_5F00_R02.zip
您可以找到用于我的测试的项目(TMS570LC4357 CAN 引导加载程序):
尊敬的王先生:
感谢您的示例项目。
我构建 ls31_CAN_boot 应用程序。 我 有这个问题。 此外、我还尝试构建 lc43_CAN_boot 应用程序(在命令 链接文件中调整闪存大小后)。 我再次遇到了这个问题。
请注意、故障发生在"原始"设备上。 您必须擦除微闪存、关闭电源、打开电源、然后加载应用程序。 再次下载应用程序(在已编程的器件上)时、不会触发该问题。
解决问题的步骤:
1) 1)擦除闪存 ->成功
2) 2)关闭电源
3) 3)上电
4)加载应用程序、无需任何验证->成功
5)验证应用程序->失败
6) 6)在没有任何验证的情况下加载应用程序->成功
7)验证应用程序->成功
请注意、我的 CPU 是 TMS570LS3137
您能帮助我了解发生了什么情况吗?
非常感谢
此致
Silvano Battisti
您好!
您能否转储0xF0400E9A 和0x000074D0 (LC4357器件)以及0xF0401358和0x00009AC0 (LS3137)上失败且成功验证的内存内容?
我在 LC43x launchpad 上进行了测试、但我没有用于 LS3137的电路板。
尊敬的王先生:
非常感谢您的支持
此致
Silvano Battisti
查看附加的文件:
LC43.zip 包含 ELF 程序、 ECC 组0的整个转储失败、整个 ECC 组0的转储成功、程序转储限制为0x10000字节。
LS31.zip 包含 ELF 程序、 ECC 组0的整个转储失败、整个 ECC 组0的转储成功、程序转储限制为0x10000字节。
此处是验证故障地址0xF0400E9A 处的 ECC 差异、包括相应的程序 闪存地址。
-> ECC 原点偏移量0xE9A
->相应的程序偏移= 0xE9A * 8 = 0x74D0
在 "原始"编程时、ECC 在编程地址的末尾被写入。 即、uniflash 停止对组0"填充"区域的 ECC 进行编程。
此处是验证故障地址0xF040135B 处的 ECC 差异、包括相应的程序 闪存地址。
-> ECC 原点偏移量0x135B
->相应的程序偏移= 0x135B * 8 = 0x9AD8
同上。
您好!
看起来填充部分未编程。 您是否在 CCS 中看到了相同的问题?
尊敬的王先生:
是的。 填充部分未编程。
老实说、我只能欣赏填充部分的 ECC 部分、因为填充的是擦除值0xFF。
再次感谢您的支持
此致
Silvano Battisti
您好!
我们需要 CCS 团队的帮助。 我不知道为什么有时未对填充的部分进行编程。