nandwrite 是Linux中用于向NAND FLash设备写入数据的工具,属于mtd-utils软件包的一部分。其通常用于嵌入式系统开发或修复MTD设备。
命令格式
nandwrite [OPTION] MTD_DEVICE [INPUT_FILE|-]
-
MTD_DEVICE:目标NAND设备(如 /dev/mtd0 )
-
INPUT_FILE:要写入的数据文件(若未通过–input指定,默认从标准输入读取)
选项详解
|
选项 |
全称 |
作用 |
|---|---|---|
| -a | --autoplace | Use auto OOB layout |
| -m | --markbad | Mark blocks bad if write fails |
| -n | --noecc | Write without ecc |
| -N | --noskipbad | Write without bad block skipping |
| -o | --oob | Input contains oob data |
| -O | --onlyoob | Input contains oob data and only write the oob part |
| -s addr | --start=addr | Set output start address (default is 0) |
| -p | --pad | Pad writes to page size |
| -b | --blockalign=1|2|4 | Set multiple of eraseblocks to align to |
| --input-skip=length | Skip |length| bytes of the input file | |
| --input-size=length | Only read |length| bytes of the input file | |
| -q | --quiet | Don't display progress messages |
| -h | --help | Display this help and exit |
| --version | Output version information and exit |
注意事项
- 页对齐要求
NAND的写入操作必须要按页对齐。偏移量(-s)和数据长度需要满足此条件,否则会失败;
- OOB数据的重要性
如果原始映像包含OOB数据,写入时必须使用(-o)参数,否则会破坏ECC信息,导致数据不可读;
- 禁用ECC的风险
(-n)选择仅用于特殊场景(如恢复虽坏的固件)。支持写入时避免使用,否则可能导致设备无法读取数据;
- 填充选项(-p)
当输入文件的大小不足NAND块整数倍时,自动补充0xFF(擦除后的bit状态),避免写入残留数据;
使用示例
- 写入包含OOB数据的完整映像
nandwrite -o /dev/mtd0 firmware.img
- 从偏移量0x10000处开始写入,并跳过坏块
nandwrite -s 0x10000 -b /dev/mtd1 data.bin
1万+

被折叠的 条评论
为什么被折叠?



