编译前准备
orangepi lite sdk资料下载:
资料下载地址:http://www.orangepi.cn/downloadresourcescn/
rootfs 版本下载:busybox-1.33.2.tar
交叉编译工具:gcc-arm-9.2-2019.12-x86_64-arm-none-linux-gnueabihf.tar.xz
1,安装交叉编译工具,具体方法请百度。
2,编译u-boot
解压u-boot-orangepi-2020.04.zip压缩包,进入目录u-boot-orangepi-2020.04/,终端执行命令,如下:
1,make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabihf- orangepi_lite_defconfig
2,make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabihf- uboot
3,编译内核,编译命令如下:
1,make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabihf- sunxi_defconfig //编译配置
2,make ARCH=arm LOADADDR=0x30008000 CROSS_COMPILE=arm-none-linux-gnueabihf- zImage -j4 //编译内核镜像
3,make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabihf- dtbs //编译设备树文件
4,make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabihf- modules //编译内核模块
遇到缺库的问题:yum install openssl-devel
上述编译生成的烧写固件主要有:
1,u-boot-sunxi-with-spl.bin (u-boot烧写固件)
2,zImage (kernel 烧写固件)
3,sun8i-h3-orangepi-lite.dtb
3 烧录u-boot 和 内核
准备一张8G以上内存的sd 卡
1,将sdk分为两个区,第一个分区为fat32格式,第二个分区为ext4格式,具体方法自行百度
2,使用dd命令将uboot 写入sd卡中,然后将内核和sun8i-h3-orangepi-lite.dtb 放入第一个分区
3,将文件系统放入第二个分区
准备好上述操作后,将sd 卡插入H3,重新上电,系统自动加载
使用串口设置引导内核文件系统命令,如下:
1,setenv bootcmd "fatload mmc 0:1 0x42000000 zImage;fatload mmc 0:1 0x43000000 sun8i-h3-orangepi-lite.dtb;bootz 0x42000000 - 0x43000000"
2,setenv bootargs "root=/dev/mmcblk0p2 rootwait rw init=/linuxrc rootfstype=ext4,console=ttyS0,115200"
3,env save
4,reset
启动命令 若不加 rootwait 会找不到文件系统,个人猜测可能是内核sd卡驱动还没起来就找文件系统,找不到分区所致