flash_eraseall擦除之后flashcp烧写失败(ubifs文件系统)

问题:在内核环境下进行flash擦除烧写操作的时候发现重启之后分区内容虽然擦除了,但是没有烧写上,需要再次执行擦除和烧写之后重启才能烧写成功。

原因分析:之后发现只要所擦除的分区已经在内核状态下挂载上了,执行擦除烧写操作就会烧写失败。(启动根文件系统已经把分区挂在上了)

执行命令:

擦除要烧写的分区:
flash_eraseall  /dev/mtd5
nandwrite烧写(先擦除烧写的分区):
./nandwrite -a /dev/mtd5 data.img
flashcp烧写到分区:
./flashcp -v data.img /dev/mtd5

问题解决:

#(PS:在内核中烧写文件到flash,需要先取消挂载所要烧写的分区,若分区已挂载直接执行"擦除"之后"烧写"会导致烧写失败)
#(执行flash_eraseall之前可以使用 cat proc/mtd 查看所要擦除的分区)
flash_eraseall擦除之后flashcp烧写失败(ubifs文件系统)_第1张图片

方法1:在内核中 
取消挂载分区(eg:umount /data)----> flash_eraseall  /dev/mtd5  -----> ./nandwrite -a /dev/mtd5 data.img(或  ./flashcp -v data.img /dev/mtd5)
方法2:在内核中 
flash_eraseall  /dev/mtd5  ----> reboot  ---> flash_eraseall  /dev/mtd5  -----> ./nandwrite -a /dev/mtd5 data.img(或  ./flashcp -v data.img /dev/mtd5)
flash_eraseall擦除之后flashcp烧写失败(ubifs文件系统)_第2张图片

 编译mtd-utils(使用uclibc编译):https://blog.csdn.net/weixin_43615992/article/details/126619408?csdn_share_tail=%7B%22type%22%3A%22blog%22%2C%22rType%22%3A%22article%22%2C%22rId%22%3A%22126619408%22%2C%22source%22%3A%22weixin_43615992%22%7D

你可能感兴趣的:(嵌入式相关,数据库,开发语言,c语言)