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.

[参考译文] TMS570LS3137:UNIFLASH 无法使用嵌入式 ECC 刷写应用

Guru**** 1969805 points
Other Parts Discussed in Thread: UNIFLASH, TMS570LC4357, TMS570LS3137
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/884136/tms570ls3137-uniflash-fails-flashing-application-with-embedded-ecc

器件型号:TMS570LS3137
主题中讨论的其他器件:UNIFLASHTMS570LC4357

亲爱的大家,我写信给你,是为了帮助你了解我的程序有什么问题。

如何解决该问题?

此致、谢谢

Silvano Battisti

问题:Uniflash 5.3 (但所有版本)无法刷写包含由链接器命令生成的 ECC 的应用程序。

我尝试下载一个包含闪存 ECC 的应用(无 uniflash auto_ECC)。

下载在验证 ECC 时失败(地址0xf0400000)

出什么问题了?

生成问题的步骤

  • 擦除芯片
  • 断电
  • 加电
  • 加载程序

请参阅随附的压缩 projecte2e.ti.com/.../4118.TestUniflash_5F00_R00.zip

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Silbvano、您好!

    如果使用链接器 cmd 来生成 ECC、则在将代码加载到闪存时:

    1. 必须  取消选中自动 ECC 生成
    2. 必须 取消选中程序加载前执行空白检查
    3. 闪存验证设置 必须 为"无"

    闪存组宽度为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 部分 无论如何都没有正确编程。

    Uniflash 日志:
    [28/2/2020 08:17:52] [Info] CortexR4:GEL 输出:由于系统复位、闪存@地址0x0的存储器映射设置
    [28/2/2020 08:17:54] [成功]程序加载已成功完成。
    [28/2/2020 08:17:57] [Info] CortexR4:GEL 输出:闪存@地址0x0的存储器映射设置
    [28/2/2020 08:18:12] [错误] CortexR4:文件加载器:验证失败:地址0xF0400000处的值不匹配请验证目标存储器和存储器映射。
    我如何才能超越?
    谢谢
    此致
    Silvano

      

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Silvano、您好!  

    正如我在上一篇帖子中所说、请不要进行文件验证。  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    王霍罗

    当然是的。 我的过程是:

    1) 1)擦除闪存  ->成功

    2) 2)目标电源关闭/电源打开

    3)加载映像而不进行任何验证 (“否”空白检查,  “无”验证)   ->成功

    4) 4)目标电源关闭/电源打开

    5)验证映像->错误

    那么、我的问题是: 删除上面的步骤4和5、 我如何才能获得程序文件中所包含的芯片闪存的证据?

    非常感谢

    此致

    Silvano Battisti

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    已检查链接器 cmd 文件。 您不会将.intvecs 映射到链接器 cmd 文件各段中的向量。  

    我在 uniflash 上执行了验证映像(通过链接器 cmd 生成的 ECC)的测试、它运行良好:

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的王先生:

    感谢你的答复。 非常感谢您的反馈。 很抱歉让你感到困扰。

    是的、您在右侧、矢量未包括在内。 这是一个非常虚拟的项目。 我对正在运行的项目并不感兴趣、而是对 我的最终应用程序感兴趣(具有相同的闪存问题)。  

    总之、我添加了链接命令文件中缺少的内容。 但结果不变:失败。

    我看到您 在 TMS570LC43系列上的测试正常。 这是一个虚拟测试项目吗? 如果这是一个虚拟项目、您可以将其发布给我、以便我可以尝试适应我的 TMS 系列吗? 如上文所述、我对正在运行的工程并不感兴趣、而是对 JTAG 使用 Uniflash 进行闪存的内容感兴趣。

    我的问题是 Uniflash 的下载会话配置中存在缺失或错误。

    再次感谢您的支持。

    此致

    Silvano Battisti

    PS:我已附加上次测试 projecte2e.ti.com/.../4186.TestUniflash_5F00_R02.zip

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您可以找到用于我的测试的项目(TMS570LC4357 CAN 引导加载程序):

    https://git.ti.com/hercules_examples

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的王先生:

    感谢您的示例项目。

    我构建 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

    同上。

    e2e.ti.com/.../3252.lc43.zip

    e2e.ti.com/.../2772.ls31.zip

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    看起来填充部分未编程。 您是否在 CCS 中看到了相同的问题?  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的王先生:

    是的。 填充部分未编程。  

    老实说、我只能欣赏填充部分的 ECC 部分、因为填充的是擦除值0xFF。

    再次感谢您的支持

    此致

    Silvano Battisti

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    我们需要 CCS 团队的帮助。 我不知道为什么有时未对填充的部分进行编程。  

x 出现错误。请重试或与管理员联系。