amlogic 某个芯片系统的nand flash刷写及uboot更新流程

step1:由于按键组合为更新模式,首先挂载SD卡

step2:在卡里搜索文件u-boot-aml-ucl.bin是否存在,如果存在,进入step3,否则进入step6

step3: 擦写(scrub)整个flash(nand_erase_nand()函数), 包括OOB区,也就是有可能把本来保存在flash里的厂商提供的坏块标志刷掉。擦写的过程中,如果发现擦写失败(失败检测标志推断为判>断erase fail的管脚,这里需确认),那么就运行aml_nand_block_markbad(),把坏快标志写到数据结构体aml_chip->block_status里。这个结构体为内核申请的一块非易失性空间(可能为sram,也可>能是flash里的第一个扇区,要确认)。

step4:把u-boot-aml-ucl.bin刷写到flash里,并且把启动配置(env)也写到flash里

step5: 软复位系统,重启

step6: 跑flash里的uboot程序

step7:在卡里寻找uImage_recovery,进入kernel恢复模式

step8: kernel恢复模式会根据卡里的更新脚本(factory_update_param.aml )或根据手动操作重新刷写系统等操作

        由上可知,该系统方案的nand flash的坏块管理是用非易失性内存数据结构保留坏块信息的方式。当更新系统时,如果需要更新uboot程序,则会进行flash的全面擦写及坏块表的全面更新,如果不需要更新
uboot程序,只更新系统,则不会进行擦写操作。



你可能感兴趣的:(数据结构,脚本,Flash)