ARM技术论坛
直播中

海电烧

未满1年用户 3经验值
擅长:可编程逻辑 MEMS/传感技术 嵌入式技术 制造/封装 存储技术 EDA/IC设计 处理器/DSP 接口/总线/驱动 控制/MCU
私信 关注
[问答]

主控平台在从SLC nand加载uboot和kernel时, 能否做错误bit的检测和数据搬移?

假如使用的UBI文件系统, 那错误bit的检测和数据搬移一般是在UBI层处理. 但是UBI是kernel的一部分吧? 我的理解是需要把kernel加载完UBI里面的机制才能生效. 那如何保证uboot和kernel部分的数据完整性呢? 上电完成后再读一遍uboot 和kernel来检测数据翻转bit, 看是否达到了数据搬移的标准?

已退回1积分

回帖(1)

李鸿

2024-5-8 17:49:26
在从SLC NAND加载uboot和kernel时,确实可以进行错误bit的检测和数据搬移。这通常通过NAND Flash的ECC(错误校正码)功能来实现。ECC可以检测并纠正一定数量的错误bit,从而确保数据的完整性。

关于您提到的UBI文件系统,它确实是内核的一部分,用于管理NAND Flash上的存储空间。在加载kernel之前,uboot需要确保kernel的完整性。以下是一些可能的方法:

1. 使用ECC:如前所述,NAND Flash通常具有内置的ECC功能,可以在读取数据时检测并纠正错误bit。

2. 读取验证:在加载uboot和kernel之前,可以设计uboot在上电后再次读取NAND Flash上的数据,进行完整性检查。如果检测到错误,可以尝试从其他块或页面读取数据,或者使用数据搬移技术将错误数据移动到好的块或页面上。

3. 校验和或签名:在烧录uboot和kernel时,可以计算它们的校验和或签名,并将其存储在NAND Flash的某个位置。在加载uboot和kernel之前,uboot可以读取这些值并与实际加载的数据进行比较,以确保数据的完整性。

4. 使用外部存储器:如果NAND Flash的可靠性不足以满足需求,可以考虑使用外部存储器(如Nor Flash或外部NAND Flash)来存储uboot和kernel。这些存储器通常具有更高的可靠性和更低的错误率。

5. 使用冗余技术:在设计uboot和kernel时,可以考虑使用冗余技术,如镜像或奇偶校验,以提高数据的可靠性。

总之,在加载uboot和kernel时,可以通过多种方法确保数据的完整性。这些方法可以单独使用,也可以组合使用,以提高系统的可靠性和容错能力。
举报

更多回帖

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