STM32MP157构建OpenSTLinux的QT镜像和SDK

发布者:superstar10最新更新时间:2025-02-28 来源: elecfans关键字:SDK 手机看文章 扫描二维码
随时随地手机看文章


编译成功后在目录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

[1] [2] [3] [4] [5]
关键字:SDK 引用地址:STM32MP157构建OpenSTLinux的QT镜像和SDK

上一篇:STM32MP157系统移植(TF-A,U-Boot,Linux)
下一篇:STM32MP157移植Qt5.12.10

推荐阅读最新更新时间:2026-02-28 05:45

基于STM32MP157的Linux操作系统移植—系统镜像烧写
FS-MP1A支持通过STM32CubeProgrammer工具镜像的烧录,此外还支持通过BootLoader下的ums工具配合ubuntu操作系统进行单个镜像更新,通过使用tftp下载方式进行镜像的验证,以及使用scp方式来更新Linux内核与设备树。 STM32CubeProgrammer烧写方式 1、调整拨码开关 在开发板上电之前我们需要先将开发板的拨码开关拨到【000】位置。 2、硬件接线 在使用USB方式烧写镜像时,需要借助USB mini线来进行数据传输,此外还可以通过串口终端来监视烧写过程。 3、调试串口配置 在烧写过程中可以通过调试串口来监控烧写过程,串口调试可以借助XSHELL来进行相关调试。 开启x
[单片机]
详解机器视觉软件开发SDK
其实很简单,SDK 就是 Software Development Kit 的缩写,中文意思就是“软件开发工具包”。 这是一个覆盖面相当广泛的名词,可以这么说:辅助开发某一类软件的相关文档、范例和工具的集合都可以叫做“SDK”。具体到我们这个系列教程,我们后面只讨论广义 SDK 的一个子集——即开发 Windows 平台下的应用程序所使用的 SDK。 呵呵,其实上面只是说了一个 SDK 大概的概念而已,理解什么是 SDK 真有这么容易吗? 恐怕没这么简单!为了解释什么是 SDK 我们不得不引入 API、动态链接库、导入库等等概念。^_^,不要怕,也就是几个新的名词而已,其实学习新知识就是在学习新名词、新概念和新术语。
[嵌入式]
S5PV210 | Linux SDK开发及说明
1.参考 1.S5PV210- - hello,123456 - 博客园 (cnblogs.com) 2.5.ARM裸机_1234567890@world的博客-CSDN博客 3.6.Linux驱动及内核开发_1234567890@world的博客-CSDN博客 4.x210bv3s: ARM Cortex-A8 (s5pv210)的开发与学习 硬件版本:(九鼎)X210BV3S 20160513 5.x210bv3s · GitCode 6.movi命令(do_movi函数的源码分析)_movi指令_天糊土的博客-CSDN博客 7.(4条消息) linux内核nfs挂载文件系统崩溃-20220112-服务
[单片机]
S5PV210 | Linux <font color='red'>SDK</font>开发及说明
Nordic 宣布 nRF Connect SDK 支持谷歌的 Find My Device网络和未知跟踪器警报功能
与谷歌的合作使 Nordic 能够在 nRF Connect SDK 中嵌入开发人员软件,以构建与安卓移动设备兼容的谷歌Find My Device和未知跟踪器警报服务 挪威奥斯陆 – 2024年4月10日 – 全球领先的低功耗无线连接解决方案供应商Nordic Semiconductor今天宣布与谷歌合作,在nRF Connect SDK(软件开发工具包)中嵌入对谷歌 Find My Device网络和未知跟踪器警报功能的支持。Nordic 宣布这一消息的同时,谷歌也正式宣布了使用安卓移动设备进行本地低功耗蓝牙(Bluetooth LE)追踪的技术。该SDK支持与Find My Device和未知跟踪器警报功能现已同步
[网络通信]
Nordic 宣布 nRF Connect <font color='red'>SDK</font> 支持谷歌的 Find My Device网络和未知跟踪器警报功能
Cadence 推出面向硅设计的全新 Neo NPU IP 和 NeuroWeave SDK,加速设备端和边缘 AI 性能及效率
• Neo NPU 可有效地处理来自任何主处理器的负载,单核可从 8 GOPS 扩展到 80 TOPS,多核可扩展到数百 TOPS • AI IP 可提供业界领先的 AI 性能和能效比,实现最佳 PPA 结果和性价比 • 面向广泛的设备端和边缘应用,包括智能传感器、物联网、音频/视觉、耳戴/可穿戴设备、移动视觉/语音 AI、AR/VR 和 ADAS • 全面、通用的 NeuroWeave SDK 可通过广泛的 Cadence AI 和 Tensilica IP 解决方案满足所有目标市场的需求 中国上海,2023 年 9 月 20 日 —— 楷登电子(美国 Cadence 公司)近日宣布,推出新一代 AI IP
[嵌入式]
Cadence 推出面向硅设计的全新 Neo NPU IP 和 NeuroWeave <font color='red'>SDK</font>,加速设备端和边缘 AI 性能及效率
恩智浦Premium Radar SDK——现可供客户量产
自恩智浦2022年4月首次发布Premium Radar SDK以来,有20多家客户已开始对其先进雷达算法进行评估,以用于干扰抑制、高级MIMO处理和角分辨率增强 。 恩智浦Premium Radar SDK——通过高级处理改进汽车雷达应用 抑制雷达干扰 雷达技术在汽车上的应用越来越广泛,也越来越重要。它实现了自动紧急制动、盲点检测等安全功能,可达到NCAP五星级标准。因此,配备雷达系统的汽车越来越多,每辆汽车携带的雷达传感器数量也在增加,对雷达干扰的担忧也日益增多。大多数传感器的发射频段在77GHz,可能会限制甚至损害彼此的功能。恩智浦Premium Radar SDK通过在多个域应用高级处理来解决这些
[网络通信]
恩智浦Premium Radar <font color='red'>SDK</font>——现可供客户量产
SDK 与API 在视频环境中的区别
API是一个应用程序编程接口,本质上是一组可用于连接两个软件的指令和标准。您还可以将它们视为构成程序核心语言的库,因此API 是一种更开箱即用的工具,您可以使用它们让一个软件与另一个软件合作。 SDK是一个软件开发工具包,其中包括一组开发工具,程序员可用于创建应用程序或基于现有应用程序进行构建。一个(或多个)可以打包为SDK 的一部分,以及其他组件,如运行时、编译器等。简而言之,API是一个服务接口,SDK是一组用于特定目的的工具。 这些是广泛的定义,但本文将了解SDK 与API 在视频环境中的区别意味着什么。 SDK与API:快速隐喻 想象一下乐高套装这样的场景:你有两个预先建造的城堡,一个是你的软件平台,另一个是其
[嵌入式]
赛昉科技发布并开源基于Yocto的昉·天枢Linux SDK
在上周刚举办的RISC-V Summit 2021上, 赛昉科技 作为 RISC-V软硬件 生态的领导者,宣布其自主研发基于RISC-V的64 位CPU Core IP“昉·天枢”正式交付客户。这款产品是迄今为止性能最佳的 RISC-V CPU 内核 IP。它采用最全的RISC-V指令集,包括RV64GC、位操作扩展(B)、用户级中断(N)、向量扩展V(Vector)V1.0与管理程序扩展H(Hypervisor),非常适合高性能计算。 继昉·天枢正式交付之后,周一(12月13日) 赛昉科技 在RVspace开源社区上发布了基于Yocto项目的“StarFive Dubhe Linux 软件开发套件 (SDK)”并且该SDK在
[嵌入式]
赛昉科技发布并开源基于Yocto的昉·天枢Linux <font color='red'>SDK</font>
小广播
最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

厂商技术中心

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

 
机器人开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2026 EEWORLD.com.cn, Inc. All rights reserved