编译成功后在目录workspace/sources/u-boot-stm32mp/oe-workdir/deploy-u-boot-stm32mp下就是编译出的固件。然后执行如下命令部署:
$ bitbake u-boot-stm32mp -c deploy
部署后在/openstlinux-5.4-dunfell-mp1-21-12-22/build-openstlinuxweston-stm32mp1/tmp-glibc/deploy/images/stm32mp1/bootloader目录下可以看到更新固件。
4.3 修改Linux
首先执行如下命令进行初始化:
$ devtool modify virtual/kernel
提示如下所示:
NOTE: Starting bitbake server...
NOTE: Reconnecting to bitbake server...
NOTE: Retrying server connection (#1)...
NOTE: Started PRServer with DBfile: /home/admin/samba/stm32mp157/Distribution-Package/openstlinux-5.4-dunfell-mp1-21-12-22/build-openstlinuxweston-stm32mp1/cache/prserv.sqlite3, IP: 127.0.0.1, PORT: 33507, PID: 1054423
Loading cache: 100% |############################################| Time: 0:00:01
Loaded 3748 entries from dependency cache.
Parsing recipes: 100% |##########################################| Time: 0:00:01
Parsing of 2546 .bb files complete (2543 cached, 3 parsed). 3751 targets, 107 skipped, 0 masked, 0 errors.
INFO: Mapping virtual/kernel to linux-stm32mp
NOTE: Resolving any missing task queue dependencies
Build Configuration:
BB_VERSION = '1.46.0'
BUILD_SYS = 'x86_64-linux'
NATIVELSBSTRING = 'universal'
TARGET_SYS = 'arm-ostl-linux-gnueabi'
MACHINE = 'stm32mp1'
DISTRO = 'openstlinux-weston'
DISTRO_VERSION = '3.1.11-snapshot-20220512'
TUNE_FEATURES = 'arm vfp cortexa7 neon vfpv4 thumb callconvention-hard'
TARGET_FPU = 'hard'
DISTRO_CODENAME = 'dunfell'
ACCEPT_EULA_stm32mp1 = '1'
GCCVERSION = '9.%'
PREFERRED_PROVIDER_virtual/kernel = 'linux-stm32mp'
meta-python
meta-oe
meta-gnome
meta-initramfs
meta-multimedia
meta-networking
meta-webserver
meta-filesystems
meta-perl = 'HEAD:2e7e98cd0cb82db214b13224c71134b9335a719b'
meta-st-stm32mp = 'HEAD:bd643ba8654010628fbcf093666fe3d184a9df34'
meta-qt5 = 'HEAD:b4d24d70aca75791902df5cd59a4f4a54aa4a125'
meta-st-openstlinux = 'HEAD:2dc988821b19d2eb75cfad4d543b674cdadd77bb'
meta = 'HEAD:c7d2281eb6cda9c1637c20b3540b142073bca235'
workspace = ' Initialising tasks: 100% |#######################################| Time: 0:00:05 Sstate summary: Wanted 0 Found 0 Missed 0 Current 22 (0% match, 100% complete) NOTE: Executing Tasks NOTE: Tasks Summary: Attempted 102 tasks of which 99 didn't need to be rerun and all succeeded. NOTE: Writing buildhistory NOTE: Writing buildhistory took: 2 seconds INFO: Adding local source files to srctree... INFO: Source tree extracted to /home/admin/samba/stm32mp157/Distribution-Package/openstlinux-5.4-dunfell-mp1-21-12-22/build-openstlinuxweston-stm32mp1/workspace/sources/linux-stm32mp INFO: Recipe linux-stm32mp now set up to build from /home/admin/samba/stm32mp157/Distribution-Package/openstlinux-5.4-dunfell-mp1-21-12-22/build-openstlinuxweston-stm32mp1/workspace/sources/linux-stm32mp 命令执行完成后进入目录workspace/sources/linux-stm32mp对linux源码进行修改,参考STM32MP157系统移植(TF-A,U-Boot,Linux)文章的LINUX移植部分。 如果需要执行menuconfig对内核配置进行更改则执行如下命令: $ bitbake virtual/kernel -c menuconfig 修改完成后执行如下命令进行编译: # devtool build linux-stm32mp # bitbake linux-stm32mp -c deploy $ bitbake virtual/kernel -C compile 编译完成后在/openstlinux-5.4-dunfell-mp1-21-12-22/build-openstlinuxweston-stm32mp1/tmp-glibc/deploy/images/stm32mp1/kernel目录下可以看到新的固件。 上面命令会执行configure、compile、package、deploy等一系列命令,比较耗时间,如果只是想单纯编译可以执行如下命令: $ bitbake virtual/kernel -c compile 编译后固件在openstlinux-5.4-dunfell-mp1-21-12-22/build-openstlinuxweston-stm32mp1/workspace/sources/linux-stm32mp/oe-workdir/build目录。 最后,将这些固件更新到开发板后就可以搭配编译出来的带Qt的文件系统进行验证3D-GPU等功能了。 五、补充 5.1 关于SDMMC3 The SDMMC instances are ordered by address in the device tree arch/arm/boot/dts/stm32mp151.dtsi file: sdmmc3: sdmmc@48004000 { ... sdmmc1: sdmmc@58005000 { ... sdmmc2: sdmmc@58007000 { By default, in OpenSTLinux distribution, sdmmc3 is disabled so the sdmmc1 (SD card on Evaluation boards and Discovery kits) and sdmmc2 (eMMC on Evaluation boards and Wifi on Discovery kits) are respectively aliased to mmc0 and mmc1. If you enable sdmmc3, it will take the mmc0 alias and the aliases above will shift, so don't forget to update the Linux kernel boot command accordingly! For instance, 'root=/dev/mmcblk0p6' will become 'root=/dev/mmcblk1p6' to mount the rootfs from the sdmmc1 (SD card) when sdmmc3 is enabled. STM32MP157拥有三个SDMMC接口,在芯片中的内存映射地址如下: Peripheral Boundary address Size (Bytes) SDMMC1 0x58005000 - 0x58005FFF 4 KB SDMMC2 0x58007000 - 0x58007FFF 4 KB SDMMC3 0x48004000 - 0x480043FF 1 KB 根据地址分配可知它们的初始化顺序是SDMMC3 --> SDMMC1 --> SDMMC2。 三个接口都启用后在Linux中对应的操作文件如下: SDMMC1 SDMMC2 SDMMC3 /dev/mmcblk1 /dev/mmcblk2 /dev/mmcblk0 我手上的开发板对这3个接口分配如下: SDMMC1 SDMMC2 SDMMC3 SD卡 EMMC WIFI 在Linux设备树中启用sdmmc3接口前后sd卡和emmc设备号的变化如下: 设备 设备号(不使用SDMMC3) 设备号(使用SDMMC3) SD卡 mmc0 mmc1 EMMC mmc1 mmc2 st提供的yocto源码中没有使用sdmmc3,所以启用了sdmmc3接口后需要修改一些配置文件,系统启动后才能正常挂载文件系统。需要修改如下几个文件: mount-partitions.sh OpenSTLinux源码中的位置:openstlinux-5.4-dunfell-mp1-21-12-22/layers/meta-st/meta-st-openstlinux/recipes-core/systemd/systemd-mount-partitions/mount-partitions.sh 烧录后在文件系统中的位置:/sbin/mount-partitions.sh 修改后内容如下,主要增加了mmcblk2的内容: #!/bin/sh - #=============================================================================== # # FILE: mount-partitions.sh # # USAGE: ./mount-partitions.sh [start|stop] # # DESCRIPTION: mount partitions # ORGANIZATION: STMicroelectronics # COPYRIGHT: Copyright (C) 2018, STMicroelectronics - All Rights Reserved # CREATED: 01/09/2018 13:36 # REVISION: --- #=============================================================================== MOUNT_PARTITIONS_LIST='' get_type() { local __resultvar=$1 ROOT_TYPE='unknown' if [ -f /usr/bin/findmnt ]; then ROOT_DEVICE=$(findmnt --noheadings --output=SOURCE / | cut -d'[' -f1) case $ROOT_DEVICE in ubi*) ROOT_TYPE='nand' ;; /dev/mmcblk0*) ROOT_TYPE='sdmmc' ;; /dev/mmcblk1*) ROOT_TYPE='mmc' ;; /dev/mmcblk2*) ROOT_TYPE='mmc' ;; /dev/disk/by-*) LINK=$(/usr/bin/readlink $ROOT_DEVICE | tr '/' ' ' | tr '.' ' ' | sed 's/ //g') case $LINK in ubi*) ROOT_TYPE='nand' ;; mmcblk0*) ROOT_TYPE='sdmmc' ;; mmcblk1*) ROOT_TYPE='mmc' ;; mmcblk2*) ROOT_TYPE='mmc' ;; esac ;; esac else if [ `cat /proc/cmdline | sed 's/.*mmcblk0.*/mmcblk0/' ` == 'mmcblk0' ]; then ROOT_TYPE='sdmmc' elif [ `cat /proc/cmdline | sed 's/.*mmcblk1.*/mmcblk1/' ` == 'mmcblk1' ]; then ROOT_TYPE='mmc' elif [ `cat /proc/cmdline | sed 's/.*mmcblk2.*/mmcblk2/' ` == 'mmcblk2' ]; then ROOT_TYPE='mmc' elif [ `cat /proc/cmdline | sed 's/.*ubi0.*/ubi0/' ` == 'ubi0' ]; then ROOT_TYPE='nand' fi fi eval $__resultvar=''$ROOT_TYPE'' } found_devices() { local __resultvar=$1 local __resultopt=$2 local _type=$3 local _search=$4 local _device='unknown' local _option=' ' case $_type in nand) local ubi_volumes=$(ls -1 -d /sys/class/ubi/ubi0_*) for f in $ubi_volumes; do if [ -r $f/name ]; then cat $f/name | grep -sq '^${_search}' if [ '$?' -eq 0 ]; then
上一篇:STM32MP157系统移植(TF-A,U-Boot,Linux)
下一篇:STM32MP157移植Qt5.12.10
推荐阅读最新更新时间:2026-02-28 05:45
- L7806A 光控制器稳压器的典型应用 (Vo(min) = Vxx+VBE)
- MC33071DR2G 高输入阻抗差分放大器的典型应用
- LTC3834EFE 演示板,单路 5A 低静态电流降压 DC/DC 转换器
- DC679A,LT3463EDD 双路输出转换器演示板,Vin = 2.7V 至 6V,+/- 20Vout,2 个电路,Iout = 5mA 至 9mA 或 7mA 至 13mA
- LTC2625IGN-1 八通道 12 位轨至轨 DAC 的典型应用电路
- AM6TW-2407DZ ±7.2V 6 瓦单输出 DC-DC 转换器的典型应用
- LTC2980IY 16 通道 PMBU 电源系统管理器的典型应用电路
- EP4CE6F17C8AD原理图+PCB板.zip
- ADP2138CB-1.0EVALZ,ADP2138 评估板,800 mA,输出电压 1 V,3 MHz 降压稳压器
- DC1783A-G,用于 LTC2377CMS-18、18 位、500 ksps、31MHz 低功率、低噪声模数转换器的演示板



rt1020 播放sd卡音频文件
智能机械臂
非常经典的关于LLC的杨波博士论文
LTC6253HMS-7#TRPBF
ASM10DTBD-S664






京公网安备 11010802033920号