CYBT343026 擦除FLASH 不成功

公告

大中华汽车电子生态圈社区并入开发者社区- 更多资讯点击此

Tip / 登入 to post questions, reply, level up, and achieve exciting badges. Know more

cross mob
CaLi_4592466
Level 4
Level 4
25 replies posted 10 replies posted 5 replies posted

在测试过程中遇到擦除flash 不成功的现象。

测试步骤如下:
1.fw_upgrade_erase_mem 擦除 从0x42000 擦除 4K地址
2.fw_upgrade_write_mem向 0x42000的地址 写入 55 aa 00 00 00 1d 0 1b 14 5 1b 8 21 24 4 0 0 0 14 9d 0 0 0 b 97 0 0 0 13 97 0 0 0 c 96 e9
3. fw_upgrade_erase_mem 擦除 从0x42000 擦除 4K地址

4.fw_upgrade_write_mem向 0x42000的地址 写入 55 aa 00 00 00 13 3 11 14 5 1b 8 29 17 2 0 0 0 c 96 0 0 0 14 9a 00 CE

5.fw_upgrade_read_mem从 0x42000的地址 读取的数据 是55 aa 00 00 00 01d 1b 14 5 1b 8 21 24 4 0 0 0 14 9d 0 0 0 b 97 0 0 0 13 97 0 0 0 c 96 00
问题是 为什么读取出来的数据是 2步骤写入的数据?

擦除的函数fw_upgrade_erase_mem 并没有返回值代表成功或者失败。并且在2,4的步骤中,fw_upgrade_write_mem写入的函数都已经返回了成功写入flash的字数。

怎么样来判断真正的擦除成功?或者写入成功?另外需要什么特殊注意事项?

ps: 写入的数据为HEX

问题比较紧急!!!麻烦帮忙查看,谢谢!!!

0 点赞
2 回复数
Owen_Zhang123
Moderator
Moderator
Moderator
5 questions asked 500 solutions authored 250 sign-ins

是否可以分享一个可以复现问题的测试工程?

0 点赞

这个问题在实际测试过程中遇到的。我现在这边再在复现的测试工程。但是,发现另一个问题。
测试条件如下:

设备A 没有 外围IIC RTC 的芯片。

设备B 有外围的IIC RTC的芯片。

由于RTC 的问题,没有办法解决,我们现在外围挂载了IIC RTC的IC芯片。

测试flash 用了同样的程序。出现的问题如下:

wiced_hal_i2c_init(WICED_I2C_SDA_I2S_DOUT_PCM_OUT_SCL_I2S_DIN_PCM_IN); IIC 初始化函数。

设备A 初始化了 IIC ,会每秒 读取RTC的时间,并且每秒 对FLASH的地址 0x42000 进行写入12345678 并且 读取 。

1. 我们发现 设备 A ,写入前先擦除了4K,然后调用的写入的接口返回都是有正确值,接口返回的值正常,我们会判断 写入成功。 但是最终我们读取地址0x42000的数据都是FFFFF,读取函数也是返回正常的,并不是我们写入的0x42000

2. 设备B 是能够正常读取,目前没有遇到问题。

结论:设备IIC的初始化后,如果读取失败,会影响FLASH的读写。重现概率100%。

为什么IIC的读取会影响到FLASH的读取?

另外FLASH的擦除失败是 设备B上出现的,我现在担心 IIC的读取繁忙时,也会影响到flash的擦除写入?因为我们现在外围有3个IIC 外围设备,有G-Sensor, Pulse-sensor , RTC IC的设备,我们现在有100ms的读取数据的 应用,是否是因为IIC 读取太忙,导致了FLASH擦除的失败?

0 点赞