全志h3linux移植教程,全志H3启动分析,移植主线UBOOT
全志H3启动分析,移植主线UBOOT参考资源启动流程因为使用的是外扩SD卡,因此主要参考了这部分内容;Bootable SD cardSD卡Layout如下:startsectorsizeusage0KB08KB未使用,主要用于存放分区表8KB1632KBInit SPL40KB80-U-BootSD卡的起始地址处放的是分区表MBR(占用512B)或者GPT(更多),为了保证SD卡还能用于其他目的
全志H3启动分析,移植主线UBOOT
参考资源
启动流程
因为使用的是外扩SD卡,因此主要参考了这部分内容;Bootable SD card
SD卡Layout如下:
start
sector
size
usage0KB
0
8KB
未使用,主要用于存放分区表
8KB
16
32KB
Init SPL
40KB
80
-
U-Boot
SD卡的起始地址处放的是分区表MBR(占用512B)或者GPT(更多),为了保证SD卡还能用于其他目的,所以前8KB是不能用的;
8KB开始存放U-Boot-spl以及U-boot镜像;
后续未使用区域可以分成FAT分区 + 其他分区,FAT分区中存放linux kernel + DTB文件 + boot.scr,其他分区主要存放根文件系统,或者其他分区;
上边这些规定都是全志内部固化的流程,芯片上电后首先运行内部一段引导程序,然后按照一定的优先级去遍历emmc sd nand usb等看是否能引导程序,如果是SD/eMMC,则会在8KB的便宜除引导程序(uboot-spl),再引导uboot,uboot会从sd卡FAT分区内引导linux内核,解析boot.scr,获取bootcmd,再从其他分区加载根文件系统,至此结束。
编译链
使用linaro工具链即可
uboot编译
make CROSS_COMPILE=arm-linux-gnueabihf- _defconfig
make CROSS_COMPILE=arm-linux-gnueabihf- menuconfig
make CROSS_COMPILE=arm-linux-gnueabihf-
我的板子和orangepi plus类似,1GB DDR3+8GB emmc;但是不幸是ddr沒有走等长线,如果是用orangepi plus的配置,则linux会运行失败,需要修改ddr3的频率,降低频率即可,或者直接使用友善之臂 nano-pi的配置。
SD制作
linux下 使用dd命令烧写uboot至8k偏移处。
使用blockdev命令进行分区,具体可参见:Bootable SD card 。
将boot.cmd转换为uboot可识别的boot.scr,并见boot.scr放于FAT分区:
mkimage -C none -A arm -T script -d boot.cmd boot.scr
将制作好的kernel和DTB放于FAT分区。
使用busybox构建根文件系统,或者直接使用第三方根文件系统,将此系统解压至sd卡的其他分区。
来源:oschina
链接:https://my.oschina.net/u/4232364/blog/3134751
更多推荐
所有评论(0)