工具/软件:Linux
大家好
我的定制板使用 Macronix MX30LF1GE8AB nand 闪存、具有128MiB、SLC、页面大小= 2048、OOB 大小= 64
和其他信息:
页面大小 2048b
OOB 大小 64b
擦除大小 为131072b
子页大小 512b
选项 0x4000000c
BBT 选项 0x8000
现在、我想在用户空间升级固件、因此我编写如下代码:
fd = open ("/dev/mtdN、O_RDWR|O_sync);
assert (//* open check */);
do{
do_erase (fd、0x20000);//擦除128k */
do{
wlen =写入(fd、buf+offser、1k);
fsync (FD);
}while (//*运行128次*/);
}while (//*所有固件大小*/);
但是、当写入126倍的 Nand 闪存写入时、假设只输入1个字节的数据线、
但我的代码显示有1k 字节数据、
日志显示如下:
用户空间:wlen 返回1024字节
驱动程序:NAND 驱动程序操作:NAND_WRITE 1字节 NAND:尝试写入非页对齐数据
USER_SPACE 写入返回1k、但驱动程序仅显示1字节数据写入
我的 rootfs 格式是 ubifs,所以我使用 fsync ()来同步它!
请~我的位置