• <li id="00i08"><input id="00i08"></input></li>
  • <sup id="00i08"><tbody id="00i08"></tbody></sup>
    <abbr id="00i08"></abbr>
  • 新聞中心

    EEPW首頁 > 嵌入式系統 > 設計應用 > 米爾STM32MP25x開發板Bring Up培訓課程(二)

    米爾STM32MP25x開發板Bring Up培訓課程(二)

    作者: 時間:2025-02-28 來源:EEPW 收藏

    1.概述

    本文引用地址:http://www.czjhyjcfj.com/article/202502/467457.htm

    本文將以 MYIR 的 MYC-LD25X 核心模塊及MYD-LD25X開發平臺為例,講解如何使用 STM32CubeMX 來實現Developer package最小系統和外設資源的配置。

    1740739336754273.png

    2.修改設備樹(接上一期)

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

    我們可以看到生成的設備樹文件如下

    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.dtsi

    4 directories, 13 files

    以上的設備樹已經配置了大部分內容的工程,但是工程是還無法全部啟動,我們需要先把設備樹同步到相應的BSP代碼中。

    stm32mp25x-BringUp-bsp.tar.gz已拷貝并解壓到虛擬機:/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.11

    19 directories, 13 files

    1740739363610804.png

    在“虛擬機設置”選項中設置完成后, 啟動虛擬機執行如下命令進行掛載:

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

    sudo 密碼為:123456      

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

    /home/myir/目錄為我這邊虛擬機的目錄,實際目錄以自己本機為準。

    tf-a設備樹軟鏈接:

    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設備樹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/

    1740739393535431.png

    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設備樹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設備樹軟鏈接:

    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設備樹軟鏈接:

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

    2.1.配置和編譯TF-A

    需要手動添加 TF-A 階段的串口配置的 user code. 使用文本編輯工具打開生成的 打開 TF-A 設備樹(BringupCA35DeviceTreeBringuptf-astm32mp257d-bringup-mx.dts)

    添加頭文件

    /* USER CODE BEGIN includes */

    #include "stm32mp25xf.dtsi"

    #include "stm32mp25-pinctrl.dtsi"

    /* USER CODE END includes */

    在”USER CODE BEGIN root”位置添加”chosen”和”aliases”節點:

    /* 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 */

    };

    使用文本編輯工具打開生成的 打開 TF-A 設備樹(BringupCA35DeviceTreeBringuptf-astm32mp257d-bringup-mx-fw-config.dts)

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

    /*      st-mem-firewall {

                    bl31_context: bl31-context@81ff0000 {

                            reg = <0x0 0x81ff0000 0x0 0x10000>;

                            st,protreg = <RISAFPROT(RISAF_REG_ID(7), 0, 0, 0, RIF_NSEC, RIF_ENC_DIS, RIF_BREN_EN)>;

                    };

                    op_tee: op-tee@82000000 {

                            reg = <0x0 0x82000000 0x0 0x2000000>;

                            st,protreg = <RISAFPROT(RISAF_REG_ID(8), 0, 0, 0, RIF_NSEC, RIF_ENC_DIS, RIF_BREN_EN)>;

                    };

            };

    */

    新增如下內容:

            /* 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 = <RISAFPROT(RISAF_REG_ID(7), RIF_CID0_BF|RIF_CID1_BF, RIF_CID0_BF|RIF_CID1_BF, 0, RIF_SEC, RIF_ENC_DIS, RIF_BREN_EN)>;

                    };

                    op_tee: op-tee@82000000 {

                        reg = <0x0 0x82000000 0x0 0x2000000>;

                        st,protreg = <RISAFPROT(RISAF_REG_ID(8), RIF_CID0_BF|RIF_CID1_BF, RIF_CID0_BF|RIF_CID1_BF, 0, RIF_SEC, RIF_ENC_DIS, RIF_BREN_EN)>;

                    };

            };

            /* USER CODE END root */

    以上已完成配置,就可以進行TF-A的單獨編譯。

    myir@myir-vm: cd /home/myir/stm32mp25x-BringUp-bsp/myir-st-tfa/tf-a-myir

    myir@myir-vm:~/stm32mp25x-BringUp-bsp/myir-st-tfa/tf-a-myir$ source /opt/st/myd-ld25x/4.2.4-snapshot/environment-setup-cortexa35-ostl-linux

    myir@myir-vm:~/stm32mp25x-BringUp-bsp/myir-st-tfa/tf-a-myir$ export FIP_DEPLOYDIR_ROOT=../../FIP_artifacts

    myir@myir-vm:~/stm32mp25x-BringUp-bsp/myir-st-tfa/tf-a-myir$ export FWDDR_DIR=../../stm32mp-ddr-phy-A2022.11-r0/stm32mp-ddr-phy-A2022.11

    myir@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單獨編譯的命令存放在/home/myir/stm32mp25x-BringUp-bsp/myir-st-tfa/tf-a-myir/build.sh

    編譯完成:


    上一頁 1 2 下一頁

    關鍵詞: 米爾 STM32MP25

    評論


    相關推薦

    技術專區

    關閉
    主站蜘蛛池模板: 准格尔旗| 育儿| 云梦县| 乳源| 普宁市| 淮安市| 扶风县| 清河县| 通城县| 青铜峡市| 乌海市| 章丘市| 开化县| 佛山市| 合山市| 宜阳县| 如东县| 元阳县| 灵川县| 沾化县| 武邑县| 孙吴县| 额敏县| 枣强县| 彩票| 都安| 九江市| 宝丰县| 嘉峪关市| 平罗县| 鸡东县| 承德县| 石景山区| 甘南县| 盖州市| 重庆市| 水富县| 西丰县| 花莲市| 沈阳市| 龙山县|