全志h3linux移植教程,全志H3启动分析,移植主线UBOOT
全志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
總結
以上是生活随笔為你收集整理的全志h3linux移植教程,全志H3启动分析,移植主线UBOOT的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: tl-wn821n无线网卡驱动 linu
- 下一篇: linux export_symbol