米爾STM32MP25x開發(fā)板Bring Up培訓(xùn)課程(二)
1. 概述
本文將以 MYIR 的 MYC-LD25X 核心模塊及MYD-LD25X開發(fā)平臺(tái)為例,講解如何使用 STM32CubeMX 來實(shí)現(xiàn)Developer package最小系統(tǒng)和外設(shè)資源的配置。
2. 修改設(shè)備樹(接上一期)
查看生成的Bring up工程空文件的設(shè)備樹,CA35的設(shè)備樹文件夾,其他的是M33核的工程資料。
我們可以看到生成的設(shè)備樹文件如下
以上的設(shè)備樹已經(jīng)配置了大部分內(nèi)容的工程,但是工程是還無法全部啟動(dòng),我們需要先把設(shè)備樹同步到相應(yīng)的BSP代碼中。
stm32mp25x-BringUp-bsp.tar.gz已拷貝并解壓到虛擬機(jī):/home/myir。
注:windows和ubuntu之間目錄共享
在“虛擬機(jī)設(shè)置”選項(xiàng)中設(shè)置完成后, 啟動(dòng)虛擬機(jī)執(zhí)行如下命令進(jìn)行掛載:
sudo 密碼為:123456
在虛擬機(jī)的/mnt/hgfs目錄下已經(jīng)成功掛載上共享的目錄,如未掛載上,可以重新啟動(dòng)下虛擬機(jī)。
/home/myir/目錄為我這邊虛擬機(jī)的目錄,實(shí)際目錄以自己本機(jī)為準(zhǔn)。
tf-a設(shè)備樹軟鏈接:
Optee-os設(shè)備樹stm32mp257d-bringup-mx.dts和stm32mp257d-bringup-mx-rcc.dtsi軟鏈接:
Optee-os設(shè)備樹stm32mp257d-bringup-mx-resmem.dtsi和stm32mp257d-bringup-mx-rif.dtsi直接使用SourceCode壓縮包Optee-os目錄中的文件,可通過軟鏈接或者拷貝的方式放到stm32mp25x-BringUp-bsp/myir-st-optee/myir-st-optee/core/arch/arm/dts/目錄下。
Uboot設(shè)備樹軟鏈接:
Kernel設(shè)備樹軟鏈接:
Note: STM32CubeMX 的規(guī)則是先生成 Kernel 的 dts, 然后將生成的 dts 文件拷貝到 u-boot 目錄下,也就是說 u-boot 的設(shè)備樹 stm32mp257d-bringup-mx.dts 是從 kernel 目錄拷貝過來的,所以在 U-Boot 階段修改設(shè)備樹,添加 User code 時(shí),請(qǐng)同步修改 kernel 的設(shè)備樹或者將修改好的設(shè)備樹拷貝到 Kernel 目錄,防止下次使用 CubeMX 生成設(shè)備樹的時(shí)候,u-boot 部分的修改被 kernel 未修改的設(shè)備樹覆蓋。
2.1. 配置和編譯TF-A
需要手動(dòng)添加 TF-A 階段的串口配置的 user code. 使用文本編輯工具打開生成的 打開 TF-A 設(shè)備樹(Bringup\CA35\DeviceTree\Bringup\tf-a\stm32mp257d-bringup-mx.dts)
添加頭文件
在”USER CODE BEGIN root”位置添加”chosen”和”aliases”節(jié)點(diǎn):
增加PMIC配置
使用文本編輯工具打開生成的 打開 TF-A 設(shè)備樹(Bringup\CA35\DeviceTree\Bringup\tf-a\stm32mp257d-bringup-mx-fw-config.dts)
本次配置不涉及防火墻內(nèi)容,因此屏蔽如下內(nèi)容:
新增如下內(nèi)容:
以上已完成配置,就可以進(jìn)行TF-A的單獨(dú)編譯。
注:已將上述TF-A單獨(dú)編譯的命令存放在/home/myir/stm32mp25x-BringUp-bsp/myir-st-tfa/tf-a-myir/build.sh
編譯完成:
2.2. 配置與編譯Optee-OS
現(xiàn)在進(jìn)行OP-TEE的配置編譯,首先需要在設(shè)備樹中添加串口 UART 以及 PWR 相關(guān)的配置:
串口部分配置:
在之前 STM32CubeMX 配置串口的過程中,UART 的配置是沒辦法在 OP-TEE 中使能的,也就是說 OP-TEE 的設(shè)備樹中沒有任何關(guān)于串口的配置,包括 UART 節(jié)點(diǎn)以及引腳,這些都需 要我們手動(dòng)添加上去:
(Bringup\CA35\DeviceTree\Bringup\optee-os\stm32mp257d-bringup-mx.dts)
添加pin腳定義
使用是 PMIC,那么 VDD_CPU 的配置需要包含在 PMIC 中,所以同樣的建議 copy tf-a里的配置,增加到I2C7的設(shè)備樹里。
增加CPU電源配置
在上一章節(jié)中提到stm32mp257d-bringup-mx-resmem.dtsi 和 stm32mp257d-bringup-mx-rif.dtsi 直接使用 SourceCode 壓縮包 Optee-os 目錄中的文件,如果還未拷貝,需要將其通過軟鏈接或者拷貝的方式放到stm32mp25x-BringUp-bsp/myir-st-optee/myir-st-optee/core/arch/arm/dts/目錄下。
編譯 Optee
注:已將上述Optee單獨(dú)編譯的命令存放在/home/myir/stm32mp25x-BringUp-bsp/myir-st-optee/myir-st-optee/build.sh
可以看到已經(jīng)生成了bin文件
2.3. 配置和編譯Uboot
已同樣的方式進(jìn)行手動(dòng)添加uboot的設(shè)備樹的一些配置,使用編輯工具打開uboot下的(Bringup\CA35\DeviceTree\Bringup\u-boot\stm32mp257d-bringup-mx.dts)
需要增加eMMC的配置
添加USB配置,后續(xù)用于刷機(jī)
使用編輯工具打開uboot下的(Bringup\CA35\DeviceTree\Bringup\u-boot\stm32mp257d-bringup-mx-u-boot.dtsi)
PMIC配置與tf-a一樣,這里略寫。
修改完成后,編譯 U-Boot
注:已將上述uboot單獨(dú)編譯的命令存放在/home/myir/stm32mp25x-BringUp-bsp/myir-st-uboot/u-boot-myir/build.sh
編譯完成后生成fip文件在定義的FIP_artifacts文件夾下,如下圖所示: