iT邦幫忙

2024 iThome 鐵人賽

DAY 13
0
佛心分享-SideProject30

門外漢的嵌入式地獄系列 第 13

Day 13 。初入嵌入式開發- Uboot說明 (一)

  • 分享至 

  • xImage
  •  

簡介

Linux 系統要啟動一定需要一個 bootloader , 當晶片上電後會先運行這一段 bootloader 程式 , 這段bootloader 會先初始化 DDR(RAM)等等的外部設備 , 之後會將 Linux Kernel 從 Flash ( 也就是ROM ) [ NAND , NOR Flash , EMMC , 等等 ] 複製到 DDR (RAM) 當中 , 最後才會啟動 Kernel。

https://ithelp.ithome.com.tw/upload/images/20240806/20146325OffUvS5oN4.png

BootLoader 與 Linux Kernel 的關係 像是 BIOS 與 Windows之間的關係

有 uboot 原碼後需要編譯後才可以用

檔案說明

在uboot 的arm架構資料夾當中(./arch/arm) 有非常多的 mach-xxx資料夾 , 原因是因為有很多廠商會有自己的改動 ,所以有非常多的 mach-xxx 去符合這些板子。

想要看有哪些板子被支援 , 我們可以透過 configs 資料夾底下的各種 xxx_degconfig 來看。

https://ithelp.ithome.com.tw/upload/images/20240806/20146325cIsLaJxXRh.png

uboot 檔案架構

之前爬文的時候再CSDN上看到一個挺清楚的圖片如下
https://ithelp.ithome.com.tw/upload/images/20240806/20146325FrnYbLo3kP.png

類型 名字 描述 備註
資料夾 api API 函數 uboot 自帶
資料夾 arch 與架構有關的程式 uboot 自帶
資料夾 board 不同開發版的自訂程式 uboot 自帶
資料夾 cmd 命令相關 uboot 自帶
資料夾 common 通用代碼 uboot 自帶
資料夾 configs 配置文件 uboot 自帶
資料夾 disk 磁碟分區相關程式 uboot 自帶
資料夾 doc 文檔 uboot 自帶
資料夾 drivers 驅動代碼 uboot 自帶
資料夾 dts 設備樹 uboot 自帶
資料夾 examples 範例 uboot 自帶
資料夾 fs 文件系統 uboot 自帶
資料夾 include Header 檔 uboot 自帶
資料夾 lib Lib 檔 uboot 自帶
資料夾 Licenses 許可證 uboot 自帶
資料夾 net 網路相關程式 uboot 自帶
資料夾 post 上電自檢程式 uboot 自帶
資料夾 scripts 腳本相關文件 uboot 自帶
資料夾 test 測試程式 uboot 自帶
資料夾 tools 工具文件夾 uboot 自帶
檔案 . config 配置文件 編譯所產生的
檔案 .gitignore git 文件 編譯所產生的
檔案 . uboot . xxx . dmd (一系列的) 用於保存一些指令 編譯所產生的
檔案 config . mk MakeFile 的調用文件 編譯所產生的
檔案 Makefile 主要 MakeFile uboot 自帶
檔案 MAKEALL 用於編譯 uboot的腳本 uboot 自帶
檔案 System.map 系統 mapping 文件 編譯出來的
檔案 u-boot 編譯出來的 uboot 文件 編譯出來的
檔案 u-boot.xxx 生成的uboot 相關文件
包括 u-boot.bin , u-boot.imx 編譯出來的

編譯後產生的檔案

成功編譯之後,就會在U-Boot 原始碼的根目錄下產生多個可執行二進位檔案以及編譯過程文件,這些檔案都是u-boot.xxx 的命名方式。這些檔案由一些列名為.xxx.cmd 的檔案生成,.xxx.cmd 這些檔案都是由編譯系統產生的用於處理最終的可執行程式的。

  • u-boot: 這個文件是編譯後產生的ELF 格式的U-Boot 鏡像文件,後續的文件都是由它產生的!由.u-boot.cmd 這個命令腳本產生。
  • u-boot-nodtb.bin: 這檔案是使用編譯工具鏈的objcopy 工具從u-boot 這個檔案中提取來的,它只包含可執行的二進位程式碼。就是把u-boot 這個檔案中對於執行不需要的節區刪除後剩餘的僅執行需要的部分。由.u-boot-nodtb.bin.cmd 這個命令腳本產生。
  • u-boot.bin: 就是把u-boot-nodtb.bin 重新命名得到的。由.u-boot.bin.cmd 這個命令腳本產生。
  • u-boot-dtb.bin: 在u-boot-nodtb.bin 後面拼接上設備樹後形成的檔案。由.u-boot-dtb.bin.cmd 這個命令腳本產生。
  • u-boot.img: 在u-boot-nodtb.bin 後面拼接上設備樹後形成的檔案。由.u-boot.img.cmd 這個命令腳本產生。
  • u-boot-nodtb.img: 由.u-boot-nodtb.bin.cmd 這個指令腳本產生。
  • u-boot-dtb.img: 由.u-boot.img.cmd 這個指令腳本產生。
  • u-boot.srec: S-Record 格式的鏡像檔。由.u-boot.srec.cmd 這個指令腳本產生。
  • u-boot.sym: 編譯過程中的符號檔。由.u-boot.sym.cmd 這個命令腳本產生。
  • u-boot.lds: 編譯使用的連結腳本檔。由.u-boot.lds.cmd 這個命令腳本產生。
  • u-boot.map: 編譯的記憶體映射檔。

上一篇
Day 12 。初入嵌入式開發-Optee說明
下一篇
Day 14 。初入嵌入式開發- Uboot說明 (二)
系列文
門外漢的嵌入式地獄30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言