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.

[参考译文] TMS570LC4357:将 Fapi_AutoEccGeneration 与 Fapi_issueProgrammingCommand()一起使用似乎是基于0xFFFFFFFF 生成 ECC 数据,而不是我在中编程的数据

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/719877/tms570lc4357-using-fapi_autoeccgeneration-with-fapi_issueprogrammingcommand-seems-to-generate-ecc-data-based-on-0xffffffff-not-what-i-programmed-in

器件型号:TMS570LC4357

我成功地擦除(通过实验)了闪存、但我注意到、不同数据的给定区域的 ECC 闪存数据似乎与由链接器(TI 推荐的 vfill、ECC 部分等)生成的数据相同、这是所有 FS 的数据。 我知道 ECC 计算基于地址和数据。

fapiStatus = fapi_issueProgrammingCommand ((uint32_t *) startProgAddr、(uint8_t *) pData、(uint8_t)字节、(uint8_t *) 0、(uint8_t) 0、 Fapi_AutoEccGeneration);

startProgAddr = 0x300000

pData = 0x8000e3b (基于堆栈的 var)

字节= 16

用户闪存0x300000显示:0x11111111 0x22222222 0x333333 0x44444444

ECC 闪存0xf0460000显示:0x0997FFFF

链接器生成的 S 记录显示: S325F046000009979806851B148A801E118F0C929D038F111E80039D920C069897098A141B85B4

相同的0x0997! 我已刷写了具有相同结果的较大区域。 0x300000是64位边界。 我还尝试将 ECC 缓冲区指向与闪存数据相同的地址、结果相同。

我缺少什么?

谢谢。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    地址0x300000处的值0x11111111、0x2222222的正确 ECC 为0x09。 该位置处的0xFFFFFFFF、0xFFFFFFFF 恰好是相同的 ECC 值。 请记住、您正在将1.8e19值编码为256个值。 存在很多混叠。 尝试更改一个位、例如0x111110、0x22222222。 地址0x300000处该数据的 ECC 为0xEA。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    谢谢。 我刚刚随机挑选了一些价值观、而没有太多的思考。 我更改了一些值、数据已更改。