0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

STM32MP25x開(kāi)發(fā)板Bring Up培訓(xùn)課程(中)

米爾電子 ? 2025-02-20 08:06 ? 次閱讀
7a66352c-ef1e-11ef-9434-92fbcf53809c.jpg

米爾基于STM32MP257核心板及開(kāi)發(fā)板

2.修改設(shè)備樹(shù)

查看生成的Bring up工程空文件的設(shè)備樹(shù),CA35的設(shè)備樹(shù)文件夾,其他的是M33核的工程資料。

我們可以看到生成的設(shè)備樹(shù)文件如下:

myir@myir-vm:/mnt/hgfs/ShareWorkspace/stm32mp25x-bringup/Bringup/CA35/DeviceTree/Bringup$ tree -l.├── kernel│ ├── stm32mp257d-bringup-mx.dts│ └── stm32mp257d-bringup-mx-resmem.dtsi├── optee-os│ ├── stm32mp257d-bringup-mx.dts│ ├── stm32mp257d-bringup-mx-rcc.dtsi│ ├── stm32mp257d-bringup-mx-resmem.dtsi│ └── stm32mp257d-bringup-mx-rif.dtsi├── tf-a│ ├── stm32mp257d-bringup-mx.dts│ ├── stm32mp257d-bringup-mx-fw-config.dts│ ├── stm32mp257d-bringup-mx-rcc.dtsi│ └── stm32mp25-mx.dtsi└── u-boot├── stm32mp257d-bringup-mx.dts├── stm32mp257d-bringup-mx-resmem.dtsi└── stm32mp257d-bringup-mx-u-boot.dtsi4 directories, 13 files

以上的設(shè)備樹(shù)已經(jīng)配置了大部分內(nèi)容的工程,但是工程是還無(wú)法全部啟動(dòng),我們需要先把設(shè)備樹(shù)同步到相應(yīng)的BSP代碼中。

stm32mp25x-BringUp-bsp.tar.gz已拷貝并解壓到虛擬機(jī):/home/myir。

注:windows和ubuntu之間目錄共享

myir@myir-vm:~/stm32mp25x-BringUp-bsp$ tree -L 2.├── Bringup│ ├── Bringup.ioc│ ├── CA35│ ├── CM33│ ├── Common│ └── Drivers├── build├── FIP_artifacts│ ├── arm-trusted-firmware│ ├── fip│ ├── flash-all.sh│ ├── FlashLayout_emmc_stm32mp25x-bringup-mx.tsv│ ├── flash.sh│ ├── optee│ └── u-boot├── myir-st-optee│ ├── fiptool-stm32mp│ ├── Makefile.sdk│ ├── myir-st-external-dt│ ├── myir-st-optee│ └── README├── myir-st-tfa│ ├── fiptool-stm32mp│ ├── Makefile.sdk│ └── tf-a-myir├── myir-st-uboot│ ├── fiptool-stm32mp│ ├── Makefile.sdk│ └── u-boot-myir└── stm32mp-ddr-phy-A2022.11-r0├── README.HOW_TO.txt└── stm32mp-ddr-phy-A2022.1119 directories, 13 files

7a82782c-ef1e-11ef-9434-92fbcf53809c.png

在“虛擬機(jī)設(shè)置”選項(xiàng)中設(shè)置完成后, 啟動(dòng)虛擬機(jī)執(zhí)行如下命令進(jìn)行掛載:

myir@myir-vm# sudo vmhgfs-fuse .host:/ /mnt/hgfs -o allow_other

sudo 密碼為:123456

在虛擬機(jī)的/mnt/hgfs目錄下已經(jīng)成功掛載上共享的目錄,如未掛載上,可以重新啟動(dòng)下虛擬機(jī)。

/home/myir/目錄為我這邊虛擬機(jī)的目錄,實(shí)際目錄以自己本機(jī)為準(zhǔn)。

tf-a設(shè)備樹(shù)軟鏈接:

myir@myir-vm:/mnt/hgfs/ShareWorkspace# ln -s /mnt/hgfs/ShareWorkspace/Bringup/CA35/DeviceTree/bringup/tf-a/* /home/myir/stm32mp25x-BringUp-bsp/myir-st-tfa/tf-a-myir/fdts/

Optee-os設(shè)備樹(shù)stm32mp257d-bringup-mx.dts和stm32mp257d-bringup-mx-rcc.dtsi軟鏈接:

myir@myir-vm:/mnt/hgfs/ShareWorkspace# ln -s /mnt/hgfs/ShareWorkspace/Bringup/CA35/DeviceTree/bringup/optee-os/stm32mp257d-bringup-mx.dts /home/myir/stm32mp25x-BringUp-bsp/myir-st-optee/myir-st-optee/core/arch/arm/dts/root@myir-vm:/mnt/hgfs/ShareWorkspace# ln -s /mnt/hgfs/ShareWorkspace/Bringup/CA35/DeviceTree/bringup/optee-os/stm32mp257d-bringup-mx-rcc.dtsi /home/myir/stm32mp25x-BringUp-bsp/myir-st-optee/myir-st-optee/core/arch/arm/dts/

Optee-os設(shè)備樹(shù)stm32mp257d-bringup-mx-resmem.dtsi和stm32mp257d-bringup-mx-rif.dtsi直接使用SourceCode壓縮包Optee-os目錄中的文件,可通過(guò)軟鏈接或者拷貝的方式放到stm32mp25x-BringUp-bsp/myir-st-optee/myir-st-optee/core/arch/arm/dts/目錄下。

Uboot設(shè)備樹(shù)軟鏈接:

myir@myir-vm:/mnt/hgfs/ShareWorkspace# ln -s /mnt/hgfs/ShareWorkspace/Bringup/CA35/DeviceTree/bringup/u-boot/* /home/myir/stm32mp25x-BringUp-bsp/myir-st-uboot/u-boot-myir/arch/arm/dts/

Kernel設(shè)備樹(shù)軟鏈接:

Note:STM32CubeMX的規(guī)則是先生成Kernel的dts,然后將生成的dts文件拷貝到u-boot目錄下,也就是說(shuō)u-boot的設(shè)備樹(shù)stm32mp257d-bringup-mx.dts是從kernel目錄拷貝過(guò)來(lái)的,所以在U-Boot階段修改設(shè)備樹(shù),添加User code時(shí),請(qǐng)同步修改kernel的設(shè)備樹(shù)或者將修改好的設(shè)備樹(shù)拷貝到Kernel目錄,防止下次使用CubeMX生成設(shè)備樹(shù)的時(shí)候,u-boot部分的修改被kernel未修改的設(shè)備樹(shù)覆蓋。

2.1.配置和編譯TF-A

需要手動(dòng)添加TF-A階段的串口配置的user code.使用文本編輯工具打開(kāi)生成的 打開(kāi) TF-A 設(shè)備樹(shù)(Bringup\CA35\DeviceTree\Bringup\tf-a\stm32mp257d-bringup-mx.dts)

添加頭文件

/*USERCODEBEGINincludes*/#include"stm32mp25xf.dtsi"#include"stm32mp25-pinctrl.dtsi"/*USERCODEENDincludes*/

在“USER CODE BEGIN root”位置添加“chosen”和“aliases”節(jié)點(diǎn):

/* USER CODE BEGIN root */aliases {serial0 = &usart2;};chosen {stdout-path = "serial0:115200n8";};/* USER CODE END root */

增加PMIC配置

&i2c7{pinctrl-names = "default";pinctrl-0 = <&i2c7_pins_mx>;status = "okay";/* USER CODE BEGIN i2c7 */pmic2: stpmic@33 {compatible = "st,stpmic2";reg = <0x33>;status = "okay";regulators {compatible = "st,stpmic2-regulators";vddcpu: buck1 {regulator-name = "vddcpu";regulator-min-microvolt = <800000>;regulator-max-microvolt = <910000>;regulator-always-on;};vddcore: buck2 {regulator-name = "vddcore";regulator-min-microvolt = <820000>;regulator-max-microvolt = <820000>;regulator-always-on;};vddgpu: buck3 {regulator-name = "vddgpu";regulator-min-microvolt = <800000>;regulator-max-microvolt = <900000>;regulator-always-on;};vddio_pmic: buck4 {regulator-name = "vddio_pmic";regulator-min-microvolt = <3300000>;regulator-max-microvolt = <3300000>;regulator-always-on;};v1v8: buck5 {regulator-name = "v1v8";regulator-min-microvolt = <1800000>;regulator-max-microvolt = <1800000>;regulator-always-on;};vdd2_ddr: buck6 {regulator-name = "vdd2_ddr";regulator-min-microvolt = <1100000>;regulator-max-microvolt = <1100000>;};v3v3: buck7 {regulator-name = "v3v3";regulator-min-microvolt = <3300000>;regulator-max-microvolt = <3300000>;regulator-always-on;};vdda1v8_aon: ldo1 {regulator-name = "vdda1v8_aon";regulator-min-microvolt = <1800000>;regulator-max-microvolt = <1800000>;regulator-always-on;};vdd_emmc: ldo2 {regulator-name = "vdd_emmc";regulator-min-microvolt = <3300000>;regulator-max-microvolt = <3300000>;regulator-always-on;};vdd1_ddr: ldo3 {regulator-name = "vdd1_ddr";regulator-min-microvolt = <1800000>;regulator-max-microvolt = <1800000>;regulator-enable-ramp-delay = <1000>;};vdd3v3_usb: ldo4 {regulator-name = "vdd3v3_usb";regulator-min-microvolt = <3300000>;regulator-max-microvolt = <3300000>;regulator-always-on;};v5v_hdmi: ldo5 {regulator-name = "v5v_hdmi";regulator-min-microvolt = <2000000>;regulator-max-microvolt = <2000000>;};vdd_sdcard: ldo7 {regulator-name = "vdd_sdcard";regulator-min-microvolt = <3300000>;regulator-max-microvolt = <3300000>;regulator-always-on;};vddio_sdcard: ldo8 {regulator-name = "vddio_sdcard";st,regulator-bypass-microvolt = <3300000>;regulator-min-microvolt = <3300000>;regulator-max-microvolt = <3300000>;regulator-always-on;};};};/* USER CODE END i2c7 */};&ddr{status = "okay";/* USER CODE BEGIN ddr */vdd1-supply = <&vdd1_ddr>;vdd2-supply = <&vdd2_ddr>;vddq-supply = <&vdd2_ddr>;/* USER CODE END ddr */};

使用文本編輯工具打開(kāi)生成的 打開(kāi)TF-A設(shè)備樹(shù)(Bringup\CA35\DeviceTree\Bringup\tf-a\stm32mp257d-bringup-mx-fw-config.dts)

本次配置不涉及防火墻內(nèi)容,因此屏蔽如下內(nèi)容:

/* st-mem-firewall {bl31_context: bl31-context@81ff0000 {reg = <0x0 0x81ff0000 0x0 0x10000>;st,protreg = ;};op_tee: op-tee@82000000 {reg = <0x0 0x82000000 0x0 0x2000000>;st,protreg = ;};};*/

新增如下內(nèi)容:

/* USER CODE BEGIN root */dtb-registry {soc_fw-config {load-address = <0x0 0x81fc0000>;max-size = <0x40000>;};tos_fw {load-address = <0x0 0x82000000>;max-size = <0x2000000>;};};st-mem-firewall {bl31_context: bl31-context@81fc0000 {reg = <0x0 0x81fc0000 0x0 0x40000>;st,protreg = ;};op_tee: op-tee@82000000 {reg = <0x0 0x82000000 0x0 0x2000000>;st,protreg = ;};};/* USER CODE END root */

以上已完成配置,就可以進(jìn)行TF-A的單獨(dú)編譯。

myir@myir-vm: cd /home/myir/stm32mp25x-BringUp-bsp/myir-st-tfa/tf-a-myirmyir@myir-vm:~/stm32mp25x-BringUp-bsp/myir-st-tfa/tf-a-myir$ source /opt/st/myd-ld25x/4.2.4-snapshot/environment-setup-cortexa35-ostl-linuxmyir@myir-vm:~/stm32mp25x-BringUp-bsp/myir-st-tfa/tf-a-myir$ export FIP_DEPLOYDIR_ROOT=../../FIP_artifactsmyir@myir-vm:~/stm32mp25x-BringUp-bsp/myir-st-tfa/tf-a-myir$ export FWDDR_DIR=../../stm32mp-ddr-phy-A2022.11-r0/stm32mp-ddr-phy-A2022.11myir@myir-vm:~/stm32mp25x-BringUp-bsp/myir-st-tfa/tf-a-myir$ make -f $PWD/../Makefile.sdk DEPLOYDIR=$FIP_DEPLOYDIR_ROOT/arm-trusted-firmware TF_A_CONFIG="optee-emmc usb" TF_A_DEVICETREE=stm32mp257d-bringup-mx ELF_DEBUG_ENABLE='1' stm32 metadata

注:已將上述TF-A單獨(dú)編譯的命令存放在/home/myir/stm32mp25x-BringUp-bsp/myir-st-tfa/tf-a-myir/build.sh

編譯完成:

7aa623d0-ef1e-11ef-9434-92fbcf53809c.png

2.2.配置與編譯Optee-OS

現(xiàn)在進(jìn)行OP-TEE的配置編譯,首先需要在設(shè)備樹(shù)中添加串口UART以及PWR相關(guān)的配置:

串口部分配置:

在之前STM32CubeMX配置串口的過(guò)程中,UART的配置是沒(méi)辦法在OP-TEE中使能的,也就是說(shuō)OP-TEE的設(shè)備樹(shù)中沒(méi)有任何關(guān)于串口的配置,包括UART節(jié)點(diǎn)以及引腳,這些都需要我們手動(dòng)添加上去:

(Bringup\CA35\DeviceTree\Bringup\optee-os\stm32mp257d-bringup-mx.dts)

/* USER CODE BEGIN includes */#include "stm32mp25-pinctrl.dtsi"#include #include #include #include #include #include "stm32mp25xf.dtsi"/* USER CODE END includes */

/* USER CODE BEGIN root */aliases {serial0 = &usart2;};chosen {stdout-path = "serial0:115200n8";};
shadow-prov {compatible="st,provisioning";hconf1_prov{ nvmem-cells = <&hconf1_otp>;st,shadow-value=<0x00008DB6>;};};

/* USER CODE END root */&rcc{status = "okay";/* USER CODE BEGIN rcc */st,c1msrd = <2>;st,clk_opp {st,ck_cpu1 {cfg_1 {hz = <1000000000>;st,clksrc = <0>;st,pll = <&pll1_cfg_1000Mhz>;};cfg_2 {hz = <600000000>;st,clksrc = <0>;st,pll = <&pll2_cfg_600Mhz>;};};};/* USER CODE END rcc */};

添加pin腳定義

/* USER CODE BEGIN addons */&usart2 {pinctrl-names = "default";pinctrl-0 = <&usart2_pins_a>;status = "okay";};/* USER CODE BEGIN addons */

使用是PMIC,那么VDD_CPU的配置需要包含在PMIC中,所以同樣的建議copytf-a里的配置,增加到I2C7的設(shè)備樹(shù)里。

&i2c7{status = "okay";/* USER CODE BEGIN i2c7 */pinctrl-names = "default", "sleep";pinctrl-0 = <&i2c7_pins_a>;pinctrl-1 = <&i2c7_sleep_pins_a>;

i2c-scl-rising-time-ns = <185>;i2c-scl-falling-time-ns = <20>;clock-frequency = <400000>;#address-cells = <1>;#size-cells = <0>;pmic2: stpmic2@33 {compatible = "st,stpmic2";reg = <0x33>;st,wakeup-pin-number = <1>;st,pmic-it-id = ;st,notif-it-id = <0 1>;

status = "okay"; regulators {compatible = "st,stpmic2-regulators";ldo1-supply = <&vddio_pmic>;vddcpu: buck1 {regulator-name = "vddcpu";regulator-min-microvolt = <800000>;regulator-max-microvolt = <910000>;regulator-always-on;st,pwrctrl-sel = <2>;

st,pwrctrl-enable;default {regulator-off-in-suspend;};lplv {regulator-off-in-suspend;};standby {regulator-off-in-suspend;};

off {regulator-off-in-suspend;};};vddcore: buck2 {regulator-name = "vddcore";regulator-min-microvolt = <820000>;regulator-max-microvolt = <820000>;regulator-always-on;st,pwrctrl-sel = <1>;

st,pwrctrl-enable;default {regulator-on-in-suspend;regulator-suspend-microvolt = <820000>;};lplv {regulator-on-in-suspend;regulator-suspend-microvolt = <670000>;};

standby {regulator-off-in-suspend;};off {regulator-off-in-suspend;};};

vddgpu_pmic: buck3 {regulator-name = "vddgpu_pmic";regulator-min-microvolt = <800000>;regulator-max-microvolt = <900000>;regulator-over-current-protection;};vddio_pmic: buck4 {regulator-name = "vddio_pmic";regulator-min-microvolt = <3300000>;regulator-max-microvolt = <3300000>;

regulator-always-on;st,mask-reset;st,pwrctrl-sel = <1>;st,pwrctrl-enable;default {regulator-on-in-suspend;regulator-suspend-microvolt = <3300000>;};lplv {regulator-on-in-suspend;regulator-suspend-microvolt = <3300000>;};standby {regulator-on-in-suspend;regulator-suspend-microvolt = <3300000>;};

off {/* ToDo: switch to LP */regulator-on-in-suspend;regulator-suspend-microvolt = <3300000>;};};v1v8: buck5 {regulator-name = "v1v8";regulator-min-microvolt = <1800000>;regulator-max-microvolt = <1800000>;regulator-always-on;st,pwrctrl-sel = <1>;st,pwrctrl-enable;default {regulator-on-in-suspend;regulator-suspend-microvolt = <1800000>;};lplv {regulator-on-in-suspend;regulator-suspend-microvolt = <1800000>;};standby {regulator-off-in-suspend;};off {regulator-off-in-suspend;};};

vdd2_ddr: buck6 {regulator-name = "vdd2_ddr";regulator-min-microvolt = <1100000>;regulator-max-microvolt = <1100000>;regulator-always-on;//regulator-pull-down;st,pwrctrl-sel = <1>;st,pwrctrl-enable;default {regulator-on-in-suspend;regulator-suspend-microvolt = <1100000>;};lplv {regulator-on-in-suspend;regulator-suspend-microvolt = <1100000>;};standby {regulator-on-in-suspend;regulator-suspend-microvolt = <1100000>;};off {regulator-off-in-suspend;};};v3v3: buck7 {regulator-name = "v3v3";regulator-min-microvolt = <3300000>;

regulator-max-microvolt = <3300000>;regulator-always-on;regulator-over-current-protection;st,pwrctrl-sel = <1>;st,pwrctrl-enable;default {regulator-on-in-suspend;regulator-suspend-microvolt = <3300000>;};

lplv {regulator-on-in-suspend;regulator-suspend-microvolt = <3300000>;};standby {regulator-off-in-suspend;};off {regulator-off-in-suspend;};};vdda1v8_aon: ldo1 {regulator-name = "vdda1v8_aon";regulator-min-microvolt = <1800000>;regulator-max-microvolt = <1800000>;regulator-always-on;st,alternate-input-source;st,mask-reset;};vdd_emmc: ldo2 {regulator-name = "vdd_emmc";regulator-min-microvolt = <3300000>;regulator-max-microvolt = <3300000>;regulator-over-current-protection;st,pwrctrl-sel = <3>;st,pwrctrl-reset;};vdd1_ddr: ldo3 {regulator-name = "vdd1_ddr";regulator-min-microvolt = <1800000>;regulator-max-microvolt = <1800000>;regulator-always-on;st,pwrctrl-sel = <1>;st,pwrctrl-enable;default {regulator-on-in-suspend;regulator-suspend-microvolt = <1800000>;};lplv {regulator-on-in-suspend;regulator-suspend-microvolt = <1800000>;};

standby {regulator-on-in-suspend;regulator-suspend-microvolt = <1800000>;};off {regulator-off-in-suspend;};};

vdd3v3_usb: ldo4 {regulator-name = "vdd3v3_usb";regulator-min-microvolt = <3300000>;regulator-max-microvolt = <3300000>;regulator-always-on;regulator-over-current-protection;};v5v_hdmi: ldo5 {regulator-name = "v5v_hdmi";regulator-min-microvolt = <5000000>;regulator-max-microvolt = <5000000>;st,regulator-bypass-microvolt = <5000000>;st,pwrctrl-sel = <0>;st,pwrctrl-enable;};

v5v_vconn: ldo6 {regulator-name = "v5v_vconn";regulator-min-microvolt = <5000000>;regulator-max-microvolt = <5000000>;regulator-always-on;st,regulator-bypass-microvolt = <5000000>;st,pwrctrl-sel = <0>;st,pwrctrl-reset;};vdd_sdcard: ldo7 {regulator-name = "vdd_sdcard";regulator-min-microvolt = <3300000>;regulator-max-microvolt = <3300000>;regulator-over-current-protection;st,regulator-bypass-microvolt = <3300000>;st,pwrctrl-sel = <3>;st,pwrctrl-reset;};vddio_sdcard: ldo8 {regulator-name = "vddio_sdcard";regulator-min-microvolt = <3300000>;regulator-max-microvolt = <3300000>;regulator-over-current-protection;st,regulator-bypass-microvolt = <3300000>;st,pwrctrl-sel = <3>;

st,pwrctrl-reset;};vref_ddr: refddr {regulator-name = "vref_ddr";regulator-always-on;st,pwrctrl-sel = <1>;st,pwrctrl-enable;default {regulator-on-in-suspend;};lplv {regulator-on-in-suspend;};standby {regulator-on-in-suspend;};off {regulator-off-in-suspend;};};};};};/* USER CODE END i2c7 */};

增加CPU電源配置

/* USER CODE BEGIN addons */&pwr {pinctrl-names = "default";pinctrl-0 = <&wakeup_pins>;status = "okay";vdd33ucpd: vdd33ucpd {status = "okay";regulator-min-microvolt = <3300000>;regulator-max-microvolt = <3300000>;vdd33ucpd-supply = <&vdd3v3_usb>;regulator-always-on;};vdda18adc: vdda18adc {status = "okay";regulator-min-microvolt = <1800000>;regulator-max-microvolt = <1800000>;vdda18adc-supply = <&v1v8>;regulator-always-on;};vddgpu: vddgpu {status = "okay";vddgpu-supply = <&vddgpu_pmic>;};vddio1: vddio1 {status = "okay";regulator-min-microvolt = <3300000>;regulator-max-microvolt = <3300000>;vddio1-supply = <&vddio_sdcard>;};vddio2: vddio2 {status = "okay";vddio2-supply = <&v1v8>;regulator-always-on;};vddio3: vddio3 {status = "okay";vddio3-supply = <&vddio_pmic>;regulator-always-on;};vddio4: vddio4 {status = "okay";vddio4-supply = <&vddio_pmic>;regulator-always-on;};vddio: vddio {status = "okay";vdd-supply = <&vddio_pmic>;};};&cpu0 {cpu-supply = <&vddcpu>;};&scmi_regu {scmi_vddcore: voltd-vddcore {reg = ;voltd-supply = <&vddcore>;};scmi_v1v8: voltd-v1v8 {reg = ;voltd-supply = <&v1v8>;};scmi_v3v3: voltd-v3v3 {reg = ;voltd-supply = <&v3v3>;};scmi_vdd_emmc: voltd-vdd-emmc {reg = ;voltd-supply = <&vdd_emmc>;};scmi_vdd3v3_usb: voltd-vdd3v3-usb {reg = ;voltd-supply = <&vdd3v3_usb>;};scmi_vdd_sdcard: voltd-vdd_sdcard {reg = ;voltd-supply = <&vdd_sdcard>;};};/* USER CODE END addons */

/* USER CODE BEGIN addons */&risaf2 {status = "disabled";};&risaf5 {status = "disabled";};&rtc {status = "okay";};&tamp {wakeup-source;wakeup-parent = <&exti2>;st,tamp-passive-precharge = <2>;st,tamp-passive-nb-sample = <4>;st,tamp-passive-sample-clk-div = <16384>;/* Tamper button */tamp_button: tamp-passive@1 {status = "disabled";reg = ;pinctrl-0 = <&tamp_in1_pin_a>;st,tamp-mode = ;};};/* USER CODE END addons */

在上一章節(jié)中提到stm32mp257d-bringup-mx-resmem.dtsi和stm32mp257d-bringup-mx-rif.dtsi直接使用SourceCode壓縮包Optee-os目錄中的文件,如果還未拷貝,需要將其通過(guò)軟鏈接或者拷貝的方式放到stm32mp25x-BringUp-bsp/myir-st-optee/myir-st-optee/core/arch/arm/dts/目錄下。

編譯Optee

myir@myir-vm: cd /home/myir/stm32mp25x-BringUp-bsp/myir-st-optee/myir-st-opteemyir@myir-vm:~/stm32mp25x-BringUp-bsp/myir-st-optee/myir-st-optee$ source /opt/st/myd-ld25x/4.2.4-snapshot/environment-setup-cortexa35-ostl-linuxmyir@myir-vm:~/stm32mp25x-BringUp-bsp/myir-st-optee/myir-st-optee$ export FIP_DEPLOYDIR_ROOT=../../FIP_artifactsmyir@myir-vm:~/stm32mp25x-BringUp-bsp/myir-st-optee/myir-st-optee$ export FWDDR_DIR=../../stm32mp-ddr-phy-A2022.11-r0/stm32mp-ddr-phy-A2022.11myir@myir-vm:~/stm32mp25x-BringUp-bsp/myir-st-optee/myir-st-optee$ make -f $PWD/../Makefile.sdk DEPLOYDIR=$FIP_DEPLOYDIR_ROOT/optee CFG_EMBED_DTB_SOURCE_FILE=stm32mp257d-bringup-mx optee

注:已將上述Optee單獨(dú)編譯的命令存放在/home/myir/stm32mp25x-BringUp-bsp/myir-st-optee/myir-st-optee/build.sh

可以看到已經(jīng)生成了bin文件

7abaf1d4-ef1e-11ef-9434-92fbcf53809c.png

7ae04182-ef1e-11ef-9434-92fbcf53809c.png

2.3.配置和編譯Uboot

已同樣的方式進(jìn)行手動(dòng)添加uboot的設(shè)備樹(shù)的一些配置,使用編輯工具打開(kāi)uboot下的(Bringup\CA35\DeviceTree\Bringup\u-boot\stm32mp257d-bringup-mx.dts)

/* USER CODE BEGIN root */aliases {serial0 = &usart2;};chosen {stdout-path = "serial0:115200n8";};/* USER CODE END root */

需要增加eMMC的配置

&sdmmc2{pinctrl-names = "default", "opendrain", "sleep";pinctrl-0 = <&sdmmc2_pins_mx>;pinctrl-1 = <&sdmmc2_opendrain_pins_mx>;pinctrl-2 = <&sdmmc2_sleep_pins_mx>;status = "okay"; /* USER CODE BEGIN sdmmc2 */non-removable;no-sd;no-sdio;st,neg-edge;bus-width = <8>;vmmc-supply = <&scmi_vdd_emmc>;vqmmc-supply = <&scmi_vddio2>;mmc-ddr-1_8v;mmc-hs200-1_8v; /* USER CODE END sdmmc2 */};

添加USB配置,后續(xù)用于刷機(jī)

/* USER CODE BEGIN addons */&usb2_phy1{status = "okay";/* USER CODE BEGIN usb2_phy1 */vdd33-supply = <&scmi_vdd3v3_usb>;/* USER CODE END usb2_phy1 */};&usb2_phy2{status = "okay";/* USER CODE BEGIN usb2_phy2 */vdd33-supply = <&scmi_vdd3v3_usb>;/* USER CODE END usb2_phy2 */};&usb3dr{status = "okay";/* USER CODE BEGIN usb3dr */dwc3: usb@48300000 {maximum-speed = "high-speed";usb-role-switch;port {dwc3_ep: endpoint {remote-endpoint = <&typec_ep>;};};};/* USER CODE END usb3dr */};&usbh{status = "okay";/* USER CODE BEGIN usbh */usbh_ehci: usb@482f0000 {#address-cells = <1>;#size-cells = <0>;/* onboard HUB */hub@1 {compatible = "usb424,2514";reg = <1>;vdd-supply = <&scmi_v3v3>;};};usbh_ohci: usb@482e0000 {status = "disabled";};/* USER CODE END usbh */};&scmi_regu {scmi_vddio1: regulator@0 {regulator-min-microvolt = <1800000>;regulator-max-microvolt = <3300000>;};scmi_vddcore: regulator@11 {reg = ;regulator-name = "vddcore";};scmi_v1v8: regulator@14 {reg = ;regulator-name = "v1v8";};scmi_v3v3: regulator@16 {reg = ;regulator-name = "v3v3";};scmi_vdd_emmc: regulator@18 {reg = ;regulator-name = "vdd_emmc";};scmi_vdd3v3_usb: regulator@20 {reg = ;regulator-name = "vdd3v3_usb";};scmi_vdd_sdcard: regulator@23 {reg = ;regulator-name = "vdd_sdcard";};};&mlahb {intc_rpmsg: interrupt-controller@1 {compatible = "rpmsg,intc";reg = <1 0>;#interrupt-cells = <1>;interrupt-controller;};i2c_rpmsg: i2c@2 {compatible = "rpmsg,i2c-controller";reg = <2 0>;rpmsg,dev-id = "rpmsg_i2c";#address-cells = <1>;#size-cells = <0>;status = "okay";typec@35 {compatible = "st,stm32mp25-typec";reg = <0x35>;interrupts-extended = <&intc_rpmsg 0>;status = "okay";connector {compatible = "usb-c-connector";label = "USB-C";port {typec_ep: endpoint {remote-endpoint = <&dwc3_ep>;};};};};};};/* USER CODE END addons */

使用編輯工具打開(kāi)uboot下的(Bringup\CA35\DeviceTree\Bringup\u-boot\stm32mp257d-bringup-mx-u-boot.dtsi)

/* USER CODE BEGIN addons */&dwc3 {dr_mode = "peripheral";/delete-node/ port;};&i2c_rpmsg {/delete-node/ typec@35;};&usart2 {u-boot,dm-pre-reloc;};&usart2_pins_mx {u-boot,dm-pre-reloc;pins1 {u-boot,dm-pre-reloc;};pins2 {u-boot,dm-pre-reloc;};};/* USER CODE END addons */

PMIC配置與tf-a一樣,這里略寫(xiě)。

修改完成后,編譯U-Boot

myir@myir-vm:~$ cd stm32mp25x-BringUp-bsp/myir-st-uboot/u-boot-myirmyir@myir-vm:~/stm32mp25x-BringUp-bsp/myir-st-uboot/u-boot-myir$ source /opt/st/myd-ld25x/4.2.4-snapshot/environment-setup-cortexa35-ostl-linuxmyir@myir-vm:~/stm32mp25x-BringUp-bsp/myir-st-uboot/u-boot-myir$ export FIP_DEPLOYDIR_ROOT=../../FIP_artifactsmyir@myir-vm:~/stm32mp25x-BringUp-bsp/myir-st-uboot/u-boot-myir$ export FWDDR_DIR=../../stm32mp-ddr-phy-A2022.11-r0/stm32mp-ddr-phy-A2022.11myir@myir-vm:~/stm32mp25x-BringUp-bsp/myir-st-uboot/u-boot-myir$ make -f $PWD/../Makefile.sdk DEPLOYDIR=../../FIP_artifacts/u-boot UBOOT_CONFIG=default UBOOT_DEFCONFIG=stm32mp25_defconfig UBOOT_BINARY=u-boot.dtb DEVICETREE=stm32mp257d-bringup-mx FIP_CONFIG="optee-emmc" all

注:已將上述uboot單獨(dú)編譯的命令存放在/home/myir/stm32mp25x-BringUp-bsp/myir-st-uboot/u-boot-myir/build.sh

編譯完成后生成fip文件在定義的FIP_artifacts文件夾下,如下圖所示:

7af6fe68-ef1e-11ef-9434-92fbcf53809c.png

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • STM32
    +關(guān)注

    關(guān)注

    2277

    文章

    10951

    瀏覽量

    359230
  • 開(kāi)發(fā)板
    +關(guān)注

    關(guān)注

    25

    文章

    5220

    瀏覽量

    99181
  • 核心板
    +關(guān)注

    關(guān)注

    5

    文章

    1053

    瀏覽量

    30183
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    ST官方基于米爾STM32MP135開(kāi)發(fā)板培訓(xùn)課程(一)

    本文將以Myirtech的MYD-YF13X以及STM32MP135F-DK為例,講解如何使用STM32CubeMX結(jié)合Developer package實(shí)現(xiàn)最小系統(tǒng)啟動(dòng)。 ? ? 1.開(kāi)發(fā)
    的頭像 發(fā)表于 07-27 19:34 ?1125次閱讀
    ST官方基于米爾<b class='flag-5'>STM32MP</b>135<b class='flag-5'>開(kāi)發(fā)板</b><b class='flag-5'>培訓(xùn)</b><b class='flag-5'>課程</b>(一)

    STM32也能輕松跑Linux了 !STM32MP135開(kāi)發(fā)板評(píng)測(cè)

    STM32MP系列處理器又上了一個(gè)新的臺(tái)階。最近,收到了一套米爾基于STM32MP135核心開(kāi)發(fā)板,首次接觸STM32MPx處理器,體驗(yàn)
    的頭像 發(fā)表于 07-31 22:09 ?2777次閱讀
    <b class='flag-5'>STM32</b>也能輕松跑Linux了 !<b class='flag-5'>STM32MP</b>135<b class='flag-5'>開(kāi)發(fā)板</b>評(píng)測(cè)

    【米爾-STM32MP135開(kāi)發(fā)板-入門級(jí)MPU試用】初識(shí)功能強(qiáng)大的米爾-STM32MP135開(kāi)發(fā)板培訓(xùn)課程

    今天收到功能強(qiáng)大的米爾-STM32MP135開(kāi)發(fā)板,給大家做個(gè)開(kāi)發(fā)板介紹,最后有官方培訓(xùn)課程鏈接,希望能在大家
    發(fā)表于 09-04 22:16

    stm32開(kāi)發(fā)板開(kāi)發(fā)板原理圖

    stm32開(kāi)發(fā)板開(kāi)發(fā)板原理圖。
    發(fā)表于 12-21 15:38 ?64次下載

    迅為STM32MP157開(kāi)發(fā)板使用手冊(cè)更新啦

    迅為STM32MP157開(kāi)發(fā)板使用手冊(cè)更新啦
    的頭像 發(fā)表于 03-24 16:33 ?1530次閱讀
    迅為<b class='flag-5'>STM32MP</b>157<b class='flag-5'>開(kāi)發(fā)板</b>使用手冊(cè)更新啦

    迅為STM32MP157開(kāi)發(fā)板入門教程之外設(shè)功能驗(yàn)證

    迅為STM32MP157開(kāi)發(fā)板入門教程之外設(shè)功能驗(yàn)證
    的頭像 發(fā)表于 02-23 14:12 ?1518次閱讀
    迅為<b class='flag-5'>STM32MP</b>157<b class='flag-5'>開(kāi)發(fā)板</b>入門教程之外設(shè)功能驗(yàn)證

    【迅為】iTOP-STM32MP157開(kāi)發(fā)板重磅發(fā)布

    【迅為】iTOP-STM32MP157開(kāi)發(fā)板重磅發(fā)布
    的頭像 發(fā)表于 02-15 11:34 ?1005次閱讀
    【迅為】iTOP-<b class='flag-5'>STM32MP</b>157<b class='flag-5'>開(kāi)發(fā)板</b>重磅發(fā)布

    STM32MP157開(kāi)發(fā)板評(píng)測(cè):華清遠(yuǎn)見(jiàn)FS-MP1A開(kāi)發(fā)板初體驗(yàn)!

    華清遠(yuǎn)見(jiàn)FS-MP1A開(kāi)發(fā)板使用(STM32MP1開(kāi)發(fā))1.1FS_MP1A硬件資源介紹FS-MP
    的頭像 發(fā)表于 10-12 18:21 ?3637次閱讀
    <b class='flag-5'>STM32MP</b>157<b class='flag-5'>開(kāi)發(fā)板</b>評(píng)測(cè):華清遠(yuǎn)見(jiàn)FS-<b class='flag-5'>MP</b>1A<b class='flag-5'>開(kāi)發(fā)板</b>初體驗(yàn)!

    ST官方基于米爾STM32MP135開(kāi)發(fā)板培訓(xùn)課程(一)

    本文將以Myirtech的MYD-YF13X以及STM32MP135F-DK為例,講解如何使用STM32CubeMX結(jié)合Developerpackage實(shí)現(xiàn)最小系統(tǒng)啟動(dòng)。1.開(kāi)發(fā)準(zhǔn)備1
    的頭像 發(fā)表于 07-31 22:08 ?777次閱讀
    ST官方基于米爾<b class='flag-5'>STM32MP</b>135<b class='flag-5'>開(kāi)發(fā)板</b><b class='flag-5'>培訓(xùn)</b><b class='flag-5'>課程</b>(一)

    ST官方基于米爾STM32MP135開(kāi)發(fā)板培訓(xùn)課程(二)

    本文將以Myirtech的MYD-YF13X以及STM32MP135F-DK為例,接上篇培訓(xùn)課程繼續(xù)講解如何使用STM32CubeMX結(jié)合D
    的頭像 發(fā)表于 08-03 08:01 ?2495次閱讀
    ST官方基于米爾<b class='flag-5'>STM32MP</b>135<b class='flag-5'>開(kāi)發(fā)板</b><b class='flag-5'>培訓(xùn)</b><b class='flag-5'>課程</b>(二)

    STM32 Linux開(kāi)發(fā)板推薦 ,入門進(jìn)階必備!

    推薦一款適合入門進(jìn)階學(xué)習(xí)的Linux開(kāi)發(fā)板:華清遠(yuǎn)見(jiàn)FS-MP1A開(kāi)發(fā)板STM32MP157開(kāi)發(fā)板
    發(fā)表于 10-22 09:22 ?1次下載

    ST×米爾STM32MP25x線下培訓(xùn)會(huì)

    STM32MP257D是ST推出的搭載了雙核Cortex-A35@1.5GHz和Cortex-M33@400MHz的微處理器。米爾電子基于STM32MP257D推出了MYD-LD25X開(kāi)發(fā)板
    的頭像 發(fā)表于 12-06 01:00 ?414次閱讀
    ST×米爾<b class='flag-5'>STM32MP25x</b>線下<b class='flag-5'>培訓(xùn)</b>會(huì)

    ST×米爾STM32MP25x線下培訓(xùn)會(huì)倒計(jì)時(shí)12天

    STM32MP257D是ST推出的搭載了雙核Cortex-A35@1.5GHz和Cortex-M33@400MHz的微處理器。米爾電子基于STM32MP257D推出了MYD-LD25X開(kāi)發(fā)板
    的頭像 發(fā)表于 12-26 08:04 ?247次閱讀
    ST×米爾<b class='flag-5'>STM32MP25x</b>線下<b class='flag-5'>培訓(xùn)</b>會(huì)倒計(jì)時(shí)12天

    STM32MP25x開(kāi)發(fā)板Bring Up培訓(xùn)課程(下)

    STM32MP25x開(kāi)發(fā)板BringUp培訓(xùn)課程(上)STM32MP25x開(kāi)發(fā)板BringUp
    的頭像 發(fā)表于 02-27 08:03 ?272次閱讀
    <b class='flag-5'>STM32MP25x</b><b class='flag-5'>開(kāi)發(fā)板</b><b class='flag-5'>Bring</b> <b class='flag-5'>Up</b><b class='flag-5'>培訓(xùn)</b><b class='flag-5'>課程</b>(下)

    ST×米爾STM32MP25x高階實(shí)戰(zhàn)培訓(xùn)會(huì)

    STM32MP25x是ST推出的搭載了雙核Cortex-A35@1.5GHz和Cortex-M33@400MHz的微處理器。米爾電子基于STM32MP25x推出了MYD-LD25X開(kāi)發(fā)板
    的頭像 發(fā)表于 03-13 08:04 ?51次閱讀
    ST×米爾<b class='flag-5'>STM32MP25x</b>高階實(shí)戰(zhàn)<b class='flag-5'>培訓(xùn)</b>會(huì)

    電子發(fā)燒友

    中國(guó)電子工程師最喜歡的網(wǎng)站

    • 2931785位工程師會(huì)員交流學(xué)習(xí)
    • 獲取您個(gè)性化的科技前沿技術(shù)信息
    • 參加活動(dòng)獲取豐厚的禮品