nandflash什么刷写
发布网友
发布时间:2022-04-26 23:07
我来回答
共1个回答
热心网友
时间:2022-06-19 18:38
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程序,只更新系统,则不会进行擦写操作。