烧录 uboot
Linux主线Kernel
buildroot文件系统
到 全志v3s;参考往期内容;
一、 准备烧录文件
- uboot编译后的产物:
u-boot-sunxi-with-spl.bin
; - linux内核编译后的产物:
arch/arm/boot/zImage
和arch/arm/boot/dts/sun8i-v3s-licheepi-zero.dtb
; - buildroot根文件系统编译后的产物:
output/images/rootfs.tar
;
将4个文件放在一个文件夹下 如 v0.1
二、 将根文件系统生成jffs2.img
使用使用各种文件系统生成工具生成的文件系统文件一般都类似是: rootfs.tar
的压缩包文件,这个是无法没有办法适应nor flash的需要使用转换的工具软件转成类似jffs2.img
的文件。
安装 jffs2 文件系统制作工具
1 | sudo apt-get install mtd-utils |
解压rootfs文件系统
1 | mkdir rootfs |
使用命令生成:
这里使用的是16M的flash所以-p
后面需要填的值即文件系统的空间为:16M-1M-64K-4M=0xAF 0000
1 | mkfs.jffs2 -s 0x100 -e 0x10000 -p 0xAF0000 -d rootfs/ -o jffs2.img |
-s
页大小0x100 即:256Byte (可选选项)-e
块大小0x10000 即:64KByte (可选选项)-p
十六进制表示输出的文件大小即文件系统的大小-d
要做成img的源文件夹- jffs2分区总空间0xAF0000 即:10MB 又 960KB
- jffs2.img是生成的文件系统镜像。
生成后
1 | -rw-r--r-- 1 gongyu gongyu 5.0M 5月 15 21:37 jffs2.img |
三、 打包二进制包:flashimg.bin
- 第一步: 生成一个空文件名字为flashimg.bin,大小是32MB或者是16MB
- 第二步: 将uboot添加到文件开头
- 第三步: 将dtb放到1M偏移处
- 第四步: 将kernel放到1M+64K偏移处
- 第五步: 将rootfs放到1M+64K+4M偏移处
偏移大小是seek,单位是KB。
16M Flash 打包脚本
1 |
|
32M Flash 打包脚本
1 | !/bin/sh |
将对应的打包脚本命名并指定运行权限
1 | vim bin.sh |
烧录bin到 v3s
1 | gongyu@gongyu-VirtualBox:~/Lichee_Pi/v1.1$ sudo sunxi-fel -p spiflash-write 0 flashimg.bin |
烧录成功后重新重新上电板子 打开串口即可
1 | sudo minicom -s # 配置串口 |
运行结果如下
1 | Welcome to minicom 2.7 |