1 內核源碼的編譯 kernel 的源碼路徑為“iTOP-STM32MP157 開發板光盤資料\04_TF-A、uboot 和內核源碼\kernel”,如下圖所示(日期可能會有變化,使用最新日期即可): ![]() kernel 源碼的編譯器和編譯 uboot 與 TF-A 的編譯器相同,都為 gcc-arm-10.3-2021.07-x86_64-arm-nonelinux-gnueabihf。 將“ ”源碼拷貝源碼到“/home/topeet”目錄下,使用如下命令 tar -vxf linux-5.4.31_20210817.tar.gz 解壓源碼壓縮包,得到“linux-5.4.31”文件夾,使用如下命令 cd linux-5.4.31/ 進入該文件夾,如下圖所示。 ![]() 使用命令”./create.sh”來進行編譯,編譯過程如下圖示所示: ![]() 編譯完成如下圖所示: ![]() 如下圖所示,在“output”目錄下,編譯生成了“uImage”kernel 鏡像。 ![]() 如下圖所示,在“output/dts/”目錄下生成設備樹文件“****.dtb”。 ![]() 如上圖所示,這七個設備樹文件是我們所需要的,分別對應七個不同的屏幕。編譯完成以后,我們需要制作對應的鏡像,這樣才能使用 STM32CubeProgrammer 工具燒寫進開發板。 而我們通過燒寫軟件燒寫的鏡像為 bootfs.ext4,存放路徑為“output”目錄下,如下圖所示 ![]() bootfs.ext4 鏡像之中存放的就是我們 uImage 和 dtb 設備樹文件,大家可以自行掛載來進行查看。 至此我們的內核設備樹鏡就制作完成了,然后只需要將我們制作的 bootfs.ext4 替代 image 燒寫目錄下的 bootfs.ext4 文件然后進行燒寫即可。 2 驅動模塊的使用 由于一些驅動的依賴特性,一些驅動并不能直接編譯進內核,或者編譯進內核之后并不能掛載成功。所以就需要我們進行手動掛載,以下為不能是在內核中不能成功掛載的模塊: ![]() 我們都存放在了“output/ko”路徑下,每個模塊的原始路徑如下圖所示: ![]() 迅為iTOP-STM32MP157開發板: ![]() 核心板參數 尺寸: 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輸出 |