2387372_zh-CN

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

2387372_zh-CN

2387372_zh-CN

调用 SDK 闪存 API,但 S32K144 的 D_Flash 中缺少一些数据

大家好:

我在我的项目(S32K144)中调用 SDK flash init API,然后调用 Flash erase 和 Flash write。然后我发现 Flash 中的一些数据变成了 0xFF。然后我尝试在 Flash 初始化和 Flash 擦除/写入之间添加延迟,然后数据就正常了。然后我尝试检查 while (!(FTFC->FSTAT & FTFC_FSTAT_CCIF_MASK)); 而不是使用延迟函数。但它还是失败了。所以,我想知道是否需要延迟一段时间,等待闪存模块在硬件层完成初始化。

BR

洛基

Re: Call SDK flash API and some data in D_Flash missing of S32K144

嗨@Loky ,

你使用的是哪个驱动程序版本?
不建议使用旧版 SDK 驱动程序;应改用 RTD 驱动程序。


Flash_Init 函数不会修改闪存内容。
擦除和写入功能已经在内部轮询 CCIF 标志,因此无需在应用程序代码中轮询它。
您观察到的现象可能与缓存或闪存预取缓冲区有关。请尝试禁用它们(PCCCR、OCMDR0),并检查问题是否仍然存在。


此致,

丹尼尔

Re: Call SDK flash API and some data in D_Flash missing of S32K144

嗨,丹尼尔:

Loky_0-1782824997442.jpeg

这是我们目前使用的SDK Flash驱动程序版本。我的同事告诉我,S32K144 只有 SDK Flash 驱动程序,没有 RTD 驱动程序。能否简要解释一下SDK驱动程序出了什么问题?如果您有S32K144 RTD驱动程序,能否分享给我?

我尝试了您提到的方法(禁用缓存),但没有成功。

当上电复位或低压检测RESET时,我会将一些信息记录到闪存中,并且同一扇区中还有一些其他数据。我将读取所有行业数据,更新信息并重写该行业相关内容。但我有一些新的发现。我发现读取闪存之前数据就已经是 0xFF 了。如果在执行擦除或写入指令时闪存意外断电,再次上电后,该扇区中的数据是否会变为 0xFF?我会继续调查这个问题,也许是我的软件出现了漏洞。

BR

洛基


Re: Call SDK flash API and some data in D_Flash missing of S32K144

嗨@Loky ,

该SDK是过时的软件。NXP 现在提供 RTD 驱动程序,其中也包括 Flash 驱动程序,包括 MCAL 层和与传统 SDK 等效的底层 IP 层。
您可以点击此处下载RTD软件包:

https://www.nxp.com/webapp/swlicensing/sso/downloadSoftware.sp?catid=SW32K1-RTD44-D

请确保您使用的是 RTD 发行说明中指定的兼容版本的 S32 Design Studio。


你是否也禁用了预取缓冲区?

OCMDR0 – 程序闪存预取缓冲区
OCMDR1 – 数据闪存预取缓冲区


如果在擦除或编程操作进行期间闪存意外断电,NXP 无法保证数据完整性。受影响的闪存内容将变为未定义状态,并且可能包含 ECC 错误。


考虑使用模拟 EEPROM 功能。

它是为此目的而优化的。

请参阅 AN11983 – 使用 S32K1xx EEPROM 功能

https://www.nxp.com/docs/en/application-note/AN11983.pdf

第五章 S32K1xx 电压骤降检测

第六章 S32K1xx 新快速写入模式


此致,

丹尼尔






Re: Call SDK flash API and some data in D_Flash missing of S32K144

嗨,丹尼尔:

谢谢你寄来的RTD包裹,我明天会查看。

我还没试过禁用预取缓冲区。你是说在擦除并写入闪存之前,我应该同时禁用缓存和预取吗?我也会试试。

是的,我今天确实遇到了一个无法纠正的 ECC 错误,它触发了硬故障。除了在设备通电后再次擦除该扇区之外,还有其他方法可以解决这个 ECC 问题吗?我认为这种方法不适用于我目前的软件设计。

谢谢你的建议。我将与同事们讨论模拟EEPROM。

BR

洛基

Re: Call SDK flash API and some data in D_Flash missing of S32K144

嗨,丹尼尔:

我很高兴地告诉大家,我们已经找到了根本原因,因为在断电期间 VCC-5v 不稳定,MCU 在低电压下反复 RESET,导致软件在初始化期间擦除闪存,但无法写入闪存。

BR

洛基

Tags (1)
No ratings
Version history
Last update:
‎07-05-2026 02:27 AM
Updated by: