uboot 是一段裸機代碼,它的實現非常復雜,主要是初始化一些硬件,部署整個計算機系統,將內核讀到內存,根據環境變量去啟動內核,并向內核傳遞參數。它的目標就是啟動內核,內核啟動后它的生命也隨之結束。 u-boot 是 SourceForge 上的開源項目,由一個人發起,然后由整個世界所有感興趣的人共同維護發展而來的一個 bootloader,bootloader 是用來引導和加載內核,向內核傳遞參數的,是內核引導程序的統稱,bootloader 除了 u-boot 還有 bios,LilO,redboot,vivi 等。Uboot 的源碼存放路徑為“iTOP-STM32MP157 開發板光盤資料\04_TF-A、uboot 和內核源碼\uboot”,如下圖所示: ![]() Uboot 源碼的編譯器和編譯 TF-A 的編譯器相同為 gcc-arm-10.3-2021.07-x86_64-arm-none-linux-gnueabihf。將源碼拷貝源碼到“/home/topeet”目錄下,使用如下命令解壓:tar -vxf u-boot-stm32mp-2020.01-r0_20210817.tar.gz(注意,日期后綴名可能會更新)解壓源碼壓縮包,解壓完成之后得到“u-boot-stm32mp-2020.01-r0”文件夾。 使用命令進入 uboot 的源碼如下圖所示:cd u-boot-stm32mp-2020.01-r0/ ![]() 三個個文件分別為編譯的 makefile 文件和 EMMC 和 TF 卡編譯的源碼。 我們以 EMMC 源碼編譯為例(TF 卡的 uboot 鏡像編譯步驟相同),使用命令 cd emmc_u-boot-stm32mp-2020.01/ 進入到對應的源碼目錄下,如下圖所示: ![]() 然后使用命令“./create.sh”進行編譯,如下圖所示: ![]() 編譯過程如下圖所示: ![]() 編譯完成如下圖所示: ![]() 編譯完成之后會在上一級目錄產生 build-trusted 目錄,用來存放編譯生成的文件。而我們所需要的文件為 u-boot.stm32 如下圖所示: ![]() 至此我們的 uboot 編譯就完成了。然后在 build-trusted 目錄下使用以下命令cp u-boot.stm32 /home/image/uboot/emmc_emmc_u-boot.stm32 來替換掉燒寫文件中關于 emmc 的 uboot 即可(每個人 image 的路徑都不同,要根據自己的情況來完善命令)。 ![]() 核心板參數 尺寸: 46mm*58mm CPU: STM32MP157A 主頻: 650M 內存: 1G 存儲: 8G 工作電壓: 直流5V供電 系統支持: 流暢運行最小Linux系統、Buildroot、QT5.12.10、ubuntu_base_20.04、Debian系統 引角擴展: 引出腳多達240個,滿足用戶各類擴展需求 底板參數: 尺寸: 190mm*125mm POWER: 電直流電源輸入接口,12V/3A+電源輸入 SWITCH: 電源開關 DIP: SWITCH 4位撥碼開關 ADC電位器: 1路 SDIO接口: 1個 JTAG: 1個 CAMERA接口: 1個 CAN接口: 1路CAN User Key: 5個功能按鍵 MIC: 支持MIC輸入 PHONE: 支持耳機輸出 串口: 3路 USB Host: 2路 USB Host,支持USB2.0協議 TF Card: 1個標準TF卡接口 網口: 1路千兆以太網口 LED: 3個(1個電源指示燈,2個可控LED) HDMI接口: 1路 LCD接口: 1路LVDS9(HDMI口輸出LVDS信號),1路RGB USB OTG: 2路 USB OTG2.0 RTC: 1個 RS485接口: 1路 WIFI/藍牙芯片: 1路 4G模組選配: 1個 六軸傳感器: 1個 蜂鳴器: 1個 紅外傳感器: 1個 光環境傳感器: 1個 溫濕度傳感器: 1個 SPDIF接口: SPDIF輸入、SPDIF輸出 |