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.
工具/软件:
尊敬的专家:
如果我们将闪存 API 程序放置在闪存组0中并对闪存组1执行编程和擦除操作、这是否会影响闪存组0中的数据、影响闪存组0的 ECC、或者影响闪存组0最后一个扇区(=15)中的数据?
此外、如果我们将闪存 API 程序放置在闪存组0的扇区1至3中、然后对闪存组0的扇区4至15执行编程和擦除操作、可能会出现哪些偶尔或不可避免的问题?
此致
螺栓
您好、
Unknown 说:如果我们将闪存 API 程序放置在闪存组0中并在闪存组1上执行编程和擦除操作、这是否会影响闪存组0中的数据、影响闪存组0的 ECC、或影响闪存组0最后一个扇区(=15)中的数据?
否、这不会对 BANK0产生任何影响。
此外、如果我们将闪存 API 程序放置在闪存组0的扇区1至3中、然后对闪存组0的扇区4至15执行编程和擦除操作、可能会出现哪些偶尔或不可避免的问题?
您不能在相同的存储库上执行读取和无线操作。 对于这种方法、您必须将代码从扇区1复制到 RAM 中、并从 RAM 执行代码。 您可以参考位于 C200ware 中的闪存 API 示例"flashapi_ex1_program_autoecc"。 有关更多详细信息、另请参阅 www.ti.com/.../spnu628文档。
此致、
Rajeshwary
嗨、Rajeshwary、
感谢您的答复。
如果我将函数Fapi_issueProgrammingCommand()
与Fapi_AutoEccGeneration
方法配合使用:
0xFFFF
(FMC 能否识别更新的值与擦除状态相同并跳过写入?)、是否可以稍后将其修改为0x0000
? 0xFFFF
值(例如0x1234
)、那么如果我连续写入相同的值(0x1234
)会发生什么情况? 是否会发生错误、或者 FMC 能否识别预期更新相同并跳过写入? 此致
螺栓
闪存擦除后、如果我写入0xFFFF
(FMC 能否识别更新的值与擦除状态相同并跳过写入?)、我以后是否可以将其修改为0x0000
?
不可以、它会触发 ECC 错误。
如果地址已被编程为非0xFFFF
值(例如0x1234
)、如果我连续写入相同的值()会发生什么情况0x1234
? 是否会发生错误、或者 FMC 能否识别预期更新相同并跳过写入?
针对64位对齐地址和相应的64位数据计算 ECC。 未提供的任何数据(在给定的64位对齐存储器内)都会被视为0xFFFF。 因此、如果您没有向所有 相应的地址写入相同的值、这种情况也会触发 ECC 错误。
此致、
Rajeshwary
嗨、 Rajeshwary、
感谢您的再次光临。
如果我总是将Fapi_issueProgrammingCommand()
该函数与该Fapi_AutoEccGeneration
方法结合使用、
闪存 API 程序在闪存组0中执行。 操作步骤遵循闪存 API 说明:Erase→Program→CheckFSM→GetFSMStatus→doVerify。
当执行闪存 API 来更新闪存中的数据时、我们会屏蔽其他中断插入并暂停看门狗超时。
但是、当我尝试更新0x91000~0x9111F
闪存组1扇区1中地址范围内的值时、偶尔会发现更新后整个范围的 ECC 值不正确。 具体来说、从开始的68个 ECC 值0x1082200
包含数据、但不正确。
在哪些情况下、闪存程序操作偶尔会导致写入的值与其 ECC 不匹配?
此致
螺栓
在哪些情况下闪存程序操作偶尔会导致写入的值与其 ECC 不匹配?
您是否在尝试更新相同的数据或一些不同的数据? ECC 值根据数据值而变化。
此致、
Rajeshwary
嗨、 Rajeshwary、
每当需要写入新数据时、我首先擦除整个扇区。 但是、将数据写入该扇区并重新引导 F280049后、它会跳转到 NMI_ISR。 经调查发现、这是整个区域的 ECC 不匹配问题。
使用 AutoECC 闪存操作方法时、我无法重现整个范围(0x91000~0x9111F)写入错误的问题。 我最多可以观察到12个字的错误、之后 FMC 状态机或数据验证过程会检测到错误并进行报告。
操作步骤遵循闪存 API 说明:Erase→Program→CheckFSM→GetFSMStatus→doVerify。
因此、我想问:按照 闪存 API 的描述步骤操作、 在什么情况下整个区域可能会被错误地写入、而不会在写入过程中触发错误?
此致
螺栓
最多可以看到12个字的错误、之后 FMC 状态机或数据验证过程检测到错误并报告。
在 12个字后的 doVerify 期间它是否失败?
此致、
Rajeshwary
嗨、Rajeshwary、
我目前遇到了一个问题、即使用闪存组0中的闪存 API 写入闪存组1中的特定扇区后、偶尔下电上电会导致该扇区整个写入地址范围的 ECC 验证失败。
但是、写入过程遵循闪存 API 中指定的正确步骤。
我无法持续重现整个闪存扇区 ECC 验证失败的问题。
使用下面的特殊写法,我只能得到12个字不能写之前,进一步的写成为不可能。
0xFFFF
。 0x1234
) 而不执行 Fapi_doVerify()
。 按照正确的闪存 API 步骤操作、在何种情况下可能会发生 整个区域 写入错误 而不会在写入过程中触发错误 ?
此致
螺栓
您好、
通常、FSM 会校正 SECDED 单错、并由触发 ECC 错误的 FSM 检测双错。
此致、
Rajeshwary