单片机/MCU论坛
直播中

吴凡

10年用户 921经验值
擅长:48674
私信 关注

扇区擦除后,许多PFLASH位不会被擦除是怎么回事?

令我惊讶的是,一个扇区在擦除后没有完全设置为 0x00。
在所有可能的扇区中,许多单独的位仍设置为逻辑 1。
ifxFlash_eraseVerifySector () 表示擦除成功。
擦除后,我还可以用 0x00 覆盖受影响的位。

如果我现在想计算扇区上空的 CRC32 以检查其中的固件,那么就会出现一个问题,那就是 pFlash 中的这些设定位是否永久保持在 “1”,或者它们是在过一会儿还是在更高的温度下翻转。

用户手册中给出的信息相互矛盾:
aurixtc3xx_ts_part1_v2.5.1.pdf 第 349 页,共 2155 页
6.2.1 闪存操作条款擦除 :
Flash 单元格的已擦除状态在逻辑上为 “0”。

aurixtc3xx_ts_part1_v2.5.1.pdf 第 380 页,共 2155 页
6.5.2.2. 3 命令序列定义——验证已擦除的页面: >
由于 PFLASH 具有安全 ECC,因此无法通过直接读取来检查 PFLASH 中是否有 “0” 个内容。


现在什么是正确的 ,更重要的是:为什么擦除后各个位没有设置为 0x00?




                                                                                                                                                                                                                                                                                                                                                                                                        
                                                        

回帖(1)

贾桂林

2024-1-30 17:41:59
这个情况可能是由于扇区擦除操作并非实时更新所有位的状态而导致的。在某些情况下,特定位可能需要更长的时间才能完全擦除,尤其是在高温或高湿环境中。

用户手册中提到闪存单元在擦除后处于已擦除状态,但并没有明确说明所有单元的每个位都会被设置为0。这意味着某些位可能仍然保留为逻辑1。

您可以使用0x00覆盖受影响的位来确保它们被正确设置为0。然后,您可以使用CRC32计算扇区上空的值来检查其中的固件。根据手册中的描述,这些已擦除的位应该保持在逻辑0状态,但是由于上述原因,我们无法保证它们会永久保持在该状态。

建议您在对这些闪存位的状态有特殊要求的情况下,与闪存芯片的制造商或供应商联系,以获取更具体和准确的信息。
举报

更多回帖

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