第八周-Tip

继续第七周-Tip中提到的nand flash上文件系统在断电重启时挂掉的问题。
(1)将ubi文件系统挂载为只读后没有根本解决问题,应用程序正常运行时断电重启文件系统出错的几率很小,但是还是出现错误的情况,有时候1000次都不出现,有时候肯能五六百次出现一次;如果在文件系统启动加载过程中断电重启,出错的几率大大增加,可能100次左右就会出现一次错误。
(2)文件系统改为只读不能解决问题,推测是文件系统改为只读后,用户不能写入,就不能操作nand flash,但是文件系统本身还是会写入,操作nand flash,应该是一些缓存中的状态或参数之类的同步。
(3)根本性解决问题的关键是运行过程中不要操作nand flash,这样根文件系统就需要运行在内存中,ramdisk和ramfs可以满足需求,选用了ramfs,因为ramfs的大小是自动变化的,比较满足需求。
(4)ramfs的具体实现就不介绍了,网上很多资料,ramfs将rootfs编译到内核中,移植遇到了一个问题,加载完设备树,内核自解压后,提示machine id不匹配,原因不是网上介绍的uboot和kernel中的machine ID不同导致的,因为修改为ramfs前是正常的。
(5)machine id不匹配是因为内核自解压后将设备树的镜像地址给覆盖掉了,导致内核找不到设备树了。uboot读写设备树镜像后,会重定向到一个新的地址,然后用r2将地址传递给内核,新的地址的计算跟内核的最大映射长度有关系,修改为ramfs后,内核变大了很多,所以需要修改内核的最大映射长度。
(6)最大映射长度这个修改差不多找了一天,网上各种搜,最后硬着头皮去看uboot和kernel代码中关于设备树的处理流程,越是用Linux,越是能体会到自己的浅薄,差的太远。
(7)除了静下心来深入学习提升自己别无他法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值