Toolchain
使用linaro的工具链,因为新版uboot要求gcc版本根得上时代,下载GCC 7.1下载地址
解压,并编译/etc/profile
将环境变量添加进去
安装dtc编译器
apt-get install device-tree-compiler
uboot
编译
1 2 3 4 5 |
git clone git://git.denx.de/u-boot.git git checkout v2016.01 # or whatever is latest make CROSS_COMPILE=arm-linux-gnueabihf- orangepi_pc_defconfig make CROSS_COMPILE=arm-linux-gnueabihf- -j8 |
编译生成 u-boot-sunxi-with-spl.bin 文件
orangepi_pc_defconfig
是H3的默认配置文件
编译内核
1 2 3 4 5 6 |
git clone git://github.com/linux-sunxi/linux-sunxi.git -b sunxi-next --depth=1 make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- sunxi_defconfig make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- menuconfig # 使能需要的模块及其他功能 make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- zImage dtbs -j8 |
最后生成 zImage 以及 dtb文件
rootfs
先不弄这个
烧写(SD)
SD卡分区,注我设备上sd是sdb,在其他机器不一样,别照抄,硬盘数据丢了匆怪
用fdisk将SD分为两个ext3格式分区,第一个分区10M 其余为第二个分区
1 2 3 4 5 6 7 8 |
fdisk -u=sectors /dev/sdb # 先按p查看分区表,如果有按 d+表序号 删除它 #接下来按n(new)创建新分区 #再按p 主分区,再接下来应该看得懂 #创建好两个分区后按 w写入分区并退出.接下来格式化分区 mkfs .ext3 /dev/sd[a~z][0~9] # 收工 |
烧写
1 2 3 4 5 6 7 8 9 |
#需要注意SD卡的分区, 偏移8K表示跳过分区表 sudo dd if=u-boot-sunxi-with-spl.bin of=/dev/sdb bs=1024 seek=8 #拷贝 zImage xxx.dtb到第一个分区 # 启动命令 setenv bootargs console=ttyS0,115200 root=/dev/mmcblk0p2 rootwait panic=10 load mmc 0:1 0x43000000 xxx.dtb load mmc 0:1 0x42000000 zImage bootz 0x42000000 - 0x43000000 |
zzw 2019/01/10 12:11
你好,我想问下偏移8K表示跳过分区表,这8K是那里定义的?