uboot 是一段裸機(jī)代碼,它的實(shí)現(xiàn)非常復(fù)雜,主要是初始化一些硬件,部署整個計(jì)算機(jī)系統(tǒng),將內(nèi)核讀到內(nèi)存,根據(jù)環(huán)境變量去啟動內(nèi)核,并向內(nèi)核傳遞參數(shù)。它的目標(biāo)就是啟動內(nèi)核,內(nèi)核啟動后它的生命也隨之結(jié)束。 u-boot 是 SourceForge 上的開源項(xiàng)目,由一個人發(fā)起,然后由整個世界所有感興趣的人共同維護(hù)發(fā)展而來的一個 bootloader,bootloader 是用來引導(dǎo)和加載內(nèi)核,向內(nèi)核傳遞參數(shù)的,是內(nèi)核引導(dǎo)程序的統(tǒng)稱,bootloader 除了 u-boot 還有 bios,LilO,redboot,vivi 等。Uboot 的源碼存放路徑為“iTOP-STM32MP157 開發(fā)板光盤資料\04_TF-A、uboot 和內(nèi)核源碼\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”文件夾。 使用命令進(jìn)入 uboot 的源碼如下圖所示:cd u-boot-stm32mp-2020.01-r0/ ![]() 三個個文件分別為編譯的 makefile 文件和 EMMC 和 TF 卡編譯的源碼。 我們以 EMMC 源碼編譯為例(TF 卡的 uboot 鏡像編譯步驟相同),使用命令 cd emmc_u-boot-stm32mp-2020.01/ 進(jìn)入到對應(yīng)的源碼目錄下,如下圖所示: ![]() 然后使用命令“./create.sh”進(jìn)行編譯,如下圖所示: ![]() 編譯過程如下圖所示: ![]() 編譯完成如下圖所示: ![]() 編譯完成之后會在上一級目錄產(chǎn)生 build-trusted 目錄,用來存放編譯生成的文件。而我們所需要的文件為 u-boot.stm32 如下圖所示: ![]() 至此我們的 uboot 編譯就完成了。然后在 build-trusted 目錄下使用以下命令cp u-boot.stm32 /home/image/uboot/emmc_emmc_u-boot.stm32 來替換掉燒寫文件中關(guān)于 emmc 的 uboot 即可(每個人 image 的路徑都不同,要根據(jù)自己的情況來完善命令)。 ![]() 核心板參數(shù) 尺寸: 46mm*58mm CPU: STM32MP157A 主頻: 650M 內(nèi)存: 1G 存儲: 8G 工作電壓: 直流5V供電 系統(tǒng)支持: 流暢運(yùn)行最小Linux系統(tǒng)、Buildroot、QT5.12.10、ubuntu_base_20.04、Debian系統(tǒng) 引角擴(kuò)展: 引出腳多達(dá)240個,滿足用戶各類擴(kuò)展需求 底板參數(shù): 尺寸: 190mm*125mm POWER: 電直流電源輸入接口,12V/3A+電源輸入 SWITCH: 電源開關(guān) DIP: SWITCH 4位撥碼開關(guān) ADC電位器: 1路 SDIO接口: 1個 JTAG: 1個 CAMERA接口: 1個 CAN接口: 1路CAN User Key: 5個功能按鍵 MIC: 支持MIC輸入 PHONE: 支持耳機(jī)輸出 串口: 3路 USB Host: 2路 USB Host,支持USB2.0協(xié)議 TF Card: 1個標(biāo)準(zhǔn)TF卡接口 網(wǎng)口: 1路千兆以太網(wǎng)口 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/藍(lán)牙芯片: 1路 4G模組選配: 1個 六軸傳感器: 1個 蜂鳴器: 1個 紅外傳感器: 1個 光環(huán)境傳感器: 1個 溫濕度傳感器: 1個 SPDIF接口: SPDIF輸入、SPDIF輸出 |