全志H3啓動分析,移植主線UBOOT

全志H3啓動分析,移植主線UBOOT


參考資源

http://linux-sunxi.org/Main_Pagelinux

啓動流程

由於使用的是外擴SD卡,所以主要參考了這部份內容;Bootable SD card
SD卡Layout以下:工具

start sector size usage
0KB 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,再從其餘分區加載根文件系統,至此結束。code

編譯鏈

使用linaro工具鏈便可ip

uboot編譯

make CROSS_COMPILE=arm-linux-gnueabihf- <board_name>_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製做

  1. linux下 使用dd命令燒寫uboot至8k偏移處。
  2. 使用blockdev命令進行分區,具體可參見:Bootable SD card
  3. 將boot.cmd轉換爲uboot可識別的boot.scr,並見boot.scr放於FAT分區:
    mkimage -C none -A arm -T script -d boot.cmd boot.scr
  4. 將製做好的kernel和DTB放於FAT分區。
  5. 使用busybox構建根文件系統,或者直接使用第三方根文件系統,將此係統解壓至sd卡的其餘分區。
相關文章
相關標籤/搜索