迅為iTOP-STM32MP157開發板編譯U-Boot
uboot 是一段裸機程式碼,它的實現非常複雜,主要是初始化一些硬體,部署整個計算機系統,將核心讀到記憶體,根據環境變數去啟動核心,並向核心傳遞引數。它的目標就是啟動核心,核心啟動後它的生命也隨之結束。
u-boot 是 SourceForge 上的開源專案,由一個人發起,然後由整個世界所有感興趣的人共同維護髮展而來的一個 bootloader,bootloader 是用來引導和載入核心,向核心傳遞引數的,是核心載入程式的統稱,bootloader 除了 u-boot 還有 bios,LilO,redboot,vivi 等。Uboot 的原始碼存放路徑為“iTOP-STM32MP157 開發板光碟資料\04_TF-A、uboot 和核心原始碼\uboot”,如下圖所示:
<ignore_js_op>
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/
<ignore_js_op>
三個個檔案分別為編譯的 makefile 檔案和 EMMC 和 TF 卡編譯的原始碼。
我們以 EMMC 原始碼編譯為例(TF 卡的 uboot 映象編譯步驟相同),使用命令
cd emmc_u-boot-stm32mp-2020.01/
進入到對應的原始碼目錄下,如下圖所示:
<ignore_js_op>
然後使用命令“./create.sh”進行編譯,如下圖所示:
<ignore_js_op>
編譯過程如下圖所示:
<ignore_js_op>
編譯完成如下圖所示:
<ignore_js_op>
編譯完成之後會在上一級目錄產生 build-trusted 目錄,用來存放編譯生成的檔案。而我們所需要的檔案為 u-boot.stm32 如下圖所示:
<ignore_js_op>
至此我們的 uboot 編譯就完成了。然後在 build-trusted 目錄下使用以下命令cp u-boot.stm32 /home/image/uboot/emmc_emmc_u-boot.stm32
來替換掉燒寫檔案中關於 emmc 的 uboot 即可(每個人 image 的路徑都不同,要根據自己的情況來完善命令)。
<ignore_js_op>
核心板引數
尺寸: 46mm*58mm
CPU: STM32MP157A
主頻: 650M
記憶體: 1G
儲存: 8G
工作
系統支援: 流暢執行最小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路
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個
SPDIF介面: SPDIF輸入、SPDIF輸出