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.
大家好、我在 TMS570上遇到了闪存编程问题。
下载包含 ECC 的映像文件时、自动 ECC 被禁用、验证将失败进入包含 ECC 的闪存组0xf0407FF0。
仅当我执行以下步骤时才会发生此问题:
1 -整个闪存被擦除、Uniflash 时我按下"擦除闪存"按钮
2 -关闭然后打开 TMS570LS3137
3-下一个'Load Image'将验证 ECC 故障转移到背面0xf0407ff0
如果我在不关闭的情况下执行相同的操作、则不会发生错误、编程成功。
如果取消整个闪存、为什么 Uniflash 会出错、否则后续编程会正确进行?
感谢您的支持
Davide
您好!
程序闪存的 ECC 空间为0xF040_0000 +偏移。 如果您只加载程序并使用自动 ECC 选项、会发生什么情况?
如果我使用 AutoECC 选项、我没问题、ECC 组7已正确编程、但 ECC 内容不同。 如果我们在程序前设置黑色复选选项、则第一次失败、但第二次成功。 我们尝试使用 ELF 文件和二进制文件。 对于我们来说、UniFlash 存在第一次对组7进行编程的错误。
谢谢
Davide
您好、Davide、
编程闪存空间来自 0x0000_0000至0x00FF_FFFF
程序闪存的 ECC 空间为 0xF04_0000至 0xF04F_FFFF
EEPROM (组7)为 :0xF0200000 ~ 0xF03FFFFF
EEPROM (组7) ECC: 0xF0100000 ~ 0xF013FFFF
我的理解是、您将代码加载到编程闪存、而不是 EEPROM (组7)。
您好报价、
否、否则它将永远不起作用。 在我的链接器文件的以下部分:
存储器
{
/*闪存3Mib*/
引导程序(X):origin=0x00000000 length=0x00000020
代码1_FLASH (RX):origin=0x00000020 length=0x00047FE0 vfill=0xFFFFFFFF
代码2_FLASH (RX):origin=0x00048000 length=0x00138000 vfill=0xFFFFFFFF
/* ECC 区域*/
ecc_vectors (R):origin=0xF0400000 length=0x000004 ecc={input_range=vectors、algorithm、fill=true}
ECC_CODE1_FLASH (R):origin=0xF0400004 length=0x008FFC ECC={input_range=CODE1_FLASH、算法=算法、fill = true}
ECC_CODE2_FLASH (R):origin=0xF0409000 length=0x027000 ECC={input_range=CODE2_FLASH、算法=算法、fill = true}
…………
问题是在 TMS570LS3137为 Virgin 之后(整个闪存填充为0xff)、UniFlash 写入和检查 ECC_CODE1_FLASH 的唯一时间。
所有后续编程都成功。 这很奇怪。
Davide
您好、 Davide、
如果使用链接器 cmd 来生成 ECC、则在将代码加载到闪存时:
1. 必须取消选中自动 ECC 生成
2. 在必须取消选中程序加载之前执行空白检查
3.闪存验证设置必须为“无”
您好 QJ、
1. 必须 取消选中"Auto ECC Generation (自动 ECC 生成) "-->" OK (确定)"
2. 在 必须取消选中程序加载之前执行空白检查 -->确定
3.闪存验证设置 必须 为“无” -->否, 设置为“验证”。 为什么我无法验证、如何确保正确写入闪存?
我重复一遍、验证仅在 TMS570LS3137 是 Virgin 之后的第一次失败 (整个闪存用0xff 填充)。
谢谢
Davide
您好、Davide、
闪存组宽度为144位宽、包括128个数据位和16个 ECC 位。 在标准读取模式或流水线读取模式下、一次读取128位数据和16位 ECC。
如果启用了"自动 ECC 生成"、CCS 加载程序将为每128位数据生成16位 ECC、并将这些144位数据一次编程到闪存中。
如果使用链接器生成 ECC、则在链接阶段使用 obj 文件生成 ECC 数据、并将 ECC 数据放入 out 文件中。 加载数据时、加载器将首先对整个数据段进行编程、然后对 ECC 段进行编程。 如果启用了数据验证、则写入的数据(加上16位 ECC)将每128位写操作回读一次以进行验证、但此时 ECC 数据尚未编程。 因此将生成 ECC 错误、并且错误引脚也将被置位。