英飞凌
直播中

卓侨汉

9年用户 1156经验值
擅长:MEMS/传感技术
私信 关注

使用.cmm闪存初始SW借助Trace32 SW脚本,数据无法从高速缓存内存读取特定扇区的数据,为什么?

1. 我们将使用 .cmm 闪存初始 SW 借助 Trace32 SW 脚本。
2.初始 SW 将使用 INIT SW 闪存驱动器闪存 APP SW。
完成上述步骤后,我们需要读取 APP 数据。 对于某个扇区,我们无法从高速缓存地址读取数据。 但通过非缓存地址,我们可以从同一地址读取数据,而且在复位(任何复位)后,我们可以同时从两个地址(缓存地址和非缓存地址)读取数据。
例如:0x80014000 是出现上述问题的扇区。
在步骤 1  2 之后,从该地址(0x80014000)读取的数据为零。 当我使用解缓存地址(0xA0014000)时,读取的是原始数据。

请问有谁能帮我解决这个问题,为什么只有那个扇区在使用缓存地址读取数据时出现问题?

            

回帖(1)

胡秋阳

2024-6-3 16:33:11
根据您提供的信息,这个问题可能是由于缓存不一致导致的。以下是一些可能的原因和解决方案:

1. 缓存未同步:在进行闪存操作时,需要确保缓存与闪存中的数据保持同步。在执行闪存操作之前,可以尝试使用缓存同步命令(如 Cache_Sync 或类似命令)来确保缓存与闪存中的数据一致。

2. 缓存未启用:请检查您的系统是否启用了缓存。如果缓存未启用,您可能需要在初始化过程中启用缓存。

3. 缓存配置错误:请检查您的缓存配置是否正确。确保缓存大小、行大小和关联性设置正确。

4. 闪存操作未完成:在执行闪存操作时,请确保操作已经完成。您可以使用 Trace32 SW 脚本检查闪存操作的状态。

5. 闪存损坏:如果上述方法都无法解决问题,可能是闪存本身存在问题。您可以尝试使用其他扇区或更换闪存芯片来排除这个问题。

6. 软件错误:请检查您的 Trace32 SW 脚本和初始化代码是否存在错误。确保所有操作都按照预期执行。

为了解决这个问题,您可以尝试以下步骤:

1. 确保缓存同步:在读取或写入闪存之前,使用缓存同步命令确保缓存与闪存中的数据一致。

2. 检查缓存配置:确保缓存已启用,并且配置正确。

3. 检查闪存操作状态:使用 Trace32 SW 脚本检查闪存操作是否已经完成。

4. 排除硬件问题:尝试使用其他扇区或更换闪存芯片来排除硬件问题。

5. 检查软件代码:仔细检查您的 Trace32 SW 脚本和初始化代码,确保所有操作都按照预期执行。

希望这些建议能帮助您解决问题。如果问题仍然存在,请提供更多详细信息,以便我们能够更好地帮助您。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分