查看文件存放地址

  • print打印uboot的环境变量
  • 查看bootargs看内核和文件系统存放位置(存放大小可以修改,修改后便宜地址发生改变)

    bootargs=mem=64M console=ttyAMA0,115200 root=/dev/mtdblock2 rootfstype=jffs2 rw mtdparts=hi_sfc:512K(boot),3072K(kernel),6144K(rootfs) coherent_pool=4M
  • 参数解释

    • mem=64M:内核可用物理内存限制为 64MB;你板子 DDR 总内存就是 64M,内核不会占用超出。
    • console=ttyAMA0,115200:串口调试终端
    • root=/dev/mtdblock2:根文件系统挂载设备:mtdblockX 是 MTD 分区块设备,mtdblock2 = 第三个分区(下标从 0 开始
    • rootfstype=jffs2:根文件系统格式为 JFFS2 闪存文件系统,适配 SPI Flash,支持掉电读写
    • rw:根文件系统以读写模式挂载;不加就是只读 ro,无法修改文件。
    • mtdparts=hi_sfc:512K(boot),3072K(kernel),6144K(rootfs):SPI Flash 分区表定义

烧写kernel

#挂载FLASH,后面可以接数字指定FLASH
sf probe 0

# 通过tftp把内核下载到内存0x42000000(uImage将zImage和dtb文件打包在一起的)
tftp 0x82000000 uImage

# 擦除kernel分区整块空间(起始位置:512*1024)
sf erase 0x80000 0x300000

# 将内存镜像写入flash对应偏移(内存地址 偏移地址 文件大小)
sf write 0x82000000 0x80000 ${filesize}
下载到内存如果不烧写也可以直接执行启动命令,直接bootm 0x82000000启动内核

烧写根文件系统

#挂载FLASH,后面可以接数字指定FLASH(挂载一次之后也可以不需要)
sf probe 0

# 通过tftp把根文件系统下载到内存0x42000000
tftp 0x82000000 rootfs_hi3519v101_64k.jffs2

# 擦除rootfs分区整块空间(起始位置:512*1024 + 3072 * 1024)
sf erase 0x380000 0x600000

# 将内存镜像写入flash对应偏移(内存地址 偏移地址 文件大小)
sf write 0x82000000 0x380000 ${filesize}
烧写根文件系统需要注意FLASH的扇区大小,不匹配的话会刷报错
cat /proc/mtd erasesize就是扇区大小(00010000 64K)
dev: size erasesize name
mtd0: 00080000 00010000 "boot"
mtd1: 00300000 00010000 "kernel"
mtd2: 00580000 00010000 "rootfs"
mtd3: 00700000 00010000 "userdata"