在做一个内核和根文件系统升级的项目,没有头绪,有没有大神指导下,这是我毕业前入职的第一个任务。急!
要求就算升级失败也可以从原来的内核和根文件系统启动。
我现在的想法是:nand flash准备两块区域,一块烧正在用的,每次系统受到升级指令就把内核和根文件系统烧到nand flash的另一块内存区,然后传递消息给uboot,uboot更改启动地址。
uboot定义一个变量,升级时每次启动uboot都自动加1,到等于3了就放弃升级,直接启动旧的版
------解决方案--------------------
我的就是这样做的:
以内核为例,开两个分区存内核
在uboot和内核共用一个很小的文件系统,内核挂载次文件系统,操作升级标志位,uboot在读取出标志位来判断。