正点原子STM32MP135移植遇到的问题

环境

Ubuntu24.04(6.8.0-36-generic)

MP1-DEV-SRC 5.1.0(en.SOURCES-stm32mp1-openstlinux-6.1-yocto-mickledore-mpu-v24.06.26.tar.gz)

MP1-DEV-x86 5.1.0(en.SDK-x86_64-stm32mp1-openstlinux-6.1-yocto-mickledore-mpu-v24.06.26.tar.gz)

目录

一、准备

 1.SDK下载

2.环境搭建

2.1安装

2.2使用

二、TF-A移植

1.make: ../Makefile.sdk: 没有那个文件或目录make: *** 没有规则可制作目标“../Makefile.sdk”。 停止。

2.[ERROR][PARAMETER] You MUST specify a valid directory which contains the binaries for FIP generation

3.更改电源描述数量

4.[ERROR] some files are not present, please provide it or change the paremeters

三、optee移植

1.core/arch/arm/dts/stm32mp131.dtsi:590.24-632.6: ERROR (phandle_references): /soc/etzpc@5c007000/adc@48004000: Reference to non-existent node or label "vdd_adc"

1.1第一个方案将vdd_adc修改为vdd

 1.2另一个方案,在根节点下加上vdd_adv的描述

2.cp: 对 '/home/herrian/linux/stm32mp1-openstlinux-6.1-yocto-mickledore-mpu-v24.06.26/sources/arm-ostl-linux-gnueabi/optee-os-stm32mp-3.19.0-stm32mp-r2-r0/optee-os-stm32mp-3.19.0-stm32mp-r2/../build/sstm32mp135-atk/core/tee-header_v2.bin' 调用 stat 失败: 没有那个文件或目录

四、u-boot移植

1.修改Makefile.sdk

 2.FIP_artifacts/u-boot文件夹下没有生成stm32mp135-atk相关文件

1.1 修改Makefile.sdk

 1.2修改stm32mp13_defconfig

 3.报错

 4.FIP_artifacts/fip文件夹下没有生成stm32mp135-atk相关文件

 五、烧录

1.STM32CubeProgrammer USB显示No DFU detected

1.1检查STM32CubeProgrammer是否正确安装

1.2安装usb驱动

1.3允许通过基本命令连接到usb端口

 2.烧录脚本

 3.mmc device 1 not found

 4.stm32-usbphyc usbphyc@5a006000: Can't get phy-supply regulator

 六、内核移植


一、准备

(一)正点原子STM32MP135移植——准备1

 1.SDK下载

输入命令:lscpu

 

 即可看见架构:x86_64

根据架构选择合适的SDK

ARMv7 = armv7l = ARM
x86_64 = x64 = amd64

2.环境搭建

2.1安装

SDK压缩包解压后文件夹下有个.sh文件,安装它,询问事项可以都按回车默认

./st-image-weston-openstlinux-weston-stm32mp1-x86_64-toolchain-4.2.4-openstlinux-6.1-yocto-mickledore-mpu-v24.06.26.sh

安装好后有一个路径,就是环境变量所在的路径

2.2使用

在使用交叉编译器前一定要使能环境变量

source /opt/st/stm32mp1/4.2.4-openstlinux-6.1-yocto-mickledore-mpu-v24.06.26/environment-setup-cortexa7t2hf-neon-vfpv4-ostl-linux-gnueabi

查看gcc版本

arm-ostl-linux-gnueabi-gcc --version

 

二、TF-A移植

(二)正点原子STM32MP135移植——TF-A移植

1.make: ../Makefile.sdk: 没有那个文件或目录
make: *** 没有规则可制作目标“../Makefile.sdk”。 停止。

 查看终端打开的位置

 使用的命令

make -f ../Makefile.sdk all

 即此目录下的上级目录没有Makefile.sdk,检查是否终端所在目录有误

2.[ERROR][PARAMETER] You MUST specify a valid directory which contains the binaries for FIP generation

export FIP_DEPLOYDIR_ROOT=$PWD/../../FIP_artifacts

检查使用此命令时终端所在目录的上两级目录里是否有FIP_artifacts文件夹

若没有则创建,或者输入正确的FIP_artifacts路径

3.更改电源描述数量

即根节点下的电源有几个+1

4.[ERROR] some files are not present, please provide it or change the paremeters

等optee和u-boot都编译好了就没有错误了

三、optee移植

(三)正点原子STM32MP135移植——optee移植

1.core/arch/arm/dts/stm32mp131.dtsi:590.24-632.6: ERROR (phandle_references): /soc/etzpc@5c007000/adc@48004000: Reference to non-existent node or label "vdd_adc"

打开stm32mp135-atk.dts文件

1.1第一个方案将vdd_adc修改为vdd

&adc_2 {

        vdda-supply = <&vdd>;

        vref-supply = <&vdd>;

        status = "okay";

        adc2: adc@0 {

                status = "okay";

                channel@15 {

                        reg = <15>;

                        label = "vbat";

                };

        };

};

 1.2另一个方案,在根节点下加上vdd_adc的描述

vdd_adc: vdd_adc {
        compatible = "regulator-fixed";
        regulator-name = "vdd_adc";
        regulator-min-microvolt = <3300000>;
        regulator-max-microvolt = <3300000>;
        regulator-off-in-suspend;
        regulator-always-on;
    };

2.cp: 对 '/home/herrian/linux/stm32mp1-openstlinux-6.1-yocto-mickledore-mpu-v24.06.26/sources/arm-ostl-linux-gnueabi/optee-os-stm32mp-3.19.0-stm32mp-r2-r0/optee-os-stm32mp-3.19.0-stm32mp-r2/../build/sstm32mp135-atk/core/tee-header_v2.bin' 调用 stat 失败: 没有那个文件或目录

检查Makefile.sdk里的设备树是否写错

CFG_EMBED_DTB_SOURCE_FILE ?= stm32mp135-atk

四、u-boot移植

(四)正点原子STM32MP135移植——u-boot移植

1.修改Makefile.sdk

DEPLOYDIR ?= $(SRC_PATH)/../../FIP_artifacts/u-boot

 //第11行,后续设备树修改也可以改这

UBOOT_DEVICETREE ?= stm32mp135f-dk

 2.FIP_artifacts/u-boot文件夹下没有生成stm32mp135-atk相关文件

1.1 修改Makefile.sdk

 UBOOT_DEVICETREE ?= stm32mp135-atk

UBOOT_DEVICETREE_stm32mp13_defconfig ?= stm32mp135-atk

 1.2修改stm32mp13_defconfig

CONFIG_DEFAULT_DEVICE_TREE="stm32mp135-atk"

 3.报错

方案一:打开stm32mp135-atk.dts,删除这些标签所在的节点

方案二:对照stm32mp135f-dk.dts和stm32mp13-pinctrl.dtsi修改stm32mp135-atk.dts和stm32mp13-pinctrl-atk.dtsi,添加上描述

 4.FIP_artifacts/fip文件夹下没有生成stm32mp135-atk相关文件

 我也不知道为什么fip文件只有在tf目录下才能生成

cd ../../tf-a-stm32mp-v2.8.15-stm32mp-r2-r0/tf-a-stm32mp-v2.8.15-stm32mp-r2/

make -f ../Makefile.sdk all

 

 五、烧录

1.STM32CubeProgrammer USB显示No DFU detected

安装STM32CubeProgrammer

1.1检查STM32CubeProgrammer是否正确安装

将STM32CubeProgrammer安装目录下的bin文件添加到PATH环境变量

export PATH=$HOME/STMicroelectronics/STM32Cube/STM32CubeProgrammer/bin:$PATH

 STM32_Programmer_CLI --h

1.2安装usb驱动

sudo apt-get install libusb-1.0-0

1.3允许通过基本命令连接到usb端口

将安装目录下的Drivers/rules拷贝到/etc/udev/rules.d

 cd $HOME/STMicroelectronics/STM32Cube/STM32CubeProgrammer/Drivers/rules/

sudo cp *.* /etc/udev/rules.d/

 2.烧录脚本

脚本每行最后的文件要根据具体生成文件进行更改,建议在终端打开,才能保证使用TAB空开

 #Opt    Id    Name    Type    IP    Offset    Binary
-    0x01    fsbl1-boot    Binary    none    0x0    arm-trusted-firmware/tf-a-stm32mp135-atk-usb.stm32
-    0x03    fip-boot    FIP    none    0x0    fip/fip-stm32mp135-atk-optee-emmc.bin
P    0x04    fsbl1    Binary    mmc1    boot1    arm-trusted-firmware/tf-a-stm32mp135-atk-optee-emmc.stm32
P    0x05    fsbl2    Binary    mmc1    boot2    arm-trusted-firmware/tf-a-stm32mp135-atk-optee-emmc.stm32
P    0x06    metadata1    Binary    mmc1    0x00080000    arm-trusted-firmware/metadata.bin
P    0x07    metadata2    Binary    mmc1    0x00100000    arm-trusted-firmware/metadata.bin
P    0x08    fip-a    FIP    mmc1    0x00180000    fip/fip-stm32mp135-atk-optee-emmc.bin
PED    0x09    fip-b    FIP    mmc1    0x00580000    none
PED    0x0A    u-boot-env    Binary    mmc1    0x00980000    none

 3.mmc device 1 not found

修改u-boot文件夹下的stm32mp135-atk-u-boot.dtsi

&sdmmc2 {

        status = "okay";

};

 4.stm32-usbphyc usbphyc@5a006000: Can't get phy-supply regulator

修改u-boot下的stm32mp135-atk.dts

vdd_usb: vdd_usb {

        u-boot,dm-pre-reloc;

        compatible = "regulator-fixed";

        regulator-name = "vdd_usb";

        regulator-min-microvolt = <3300000>;

        regulator-max-microvolt = <3300000>;

        regulator-off-in-suspend;

        regulator-always-on;

};

 六、内核移植

(六)正点原子STM32MP135移植——内核移植

setenv ipaddr 192.168.1.3

setenv eth0addr 00:01:02:03:04:05

setenv netmask 255.255.255.0

setenv gateway 192.168.1.1

setenv serverip 192.168.1.134

saveenv

验证网络是否设置好,ping一下电脑

ping 192.168.1.134

 

 用tftp和nfs启动内核

setenv bootcmd 'tftp c2000000 uImage;tftp c4000000 stm32mp135-atk.dtb;bootm c2000000 - c4000000'

setenv bootargs 'console=ttySTM0,115200 root=/dev/nfs nfsroot=192.168.1.134:/home/herrian/linux/nfs/rootfs,proto=tcp,v4,rw rootwait ip=192.168.1.3:192.168.1.134:192.168.1.1:255.255.255.0::eth0:off'

saveenv

boot

  • 17
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值