引言
STM32MP135官方提供了内容详细的WiKi页面,帮助我们快速上手STM32 MPU的使用,对于实际开发需求,ST提供了以下三种不同种类的软件包资源供开发者使用,详情页:
👇👇👇
哪款 STM32MPU 嵌入式软件包更适合您的需求
👆👆👆
简单概括:
- Starter Package: 适合初次上手,直接烧录镜像,快速体验,可由Distribution Package生成
- Developer Package: 包含SDK及BSP源码,适合绝大多数开发场景,可由Distribution Package生成
- Distribution Package: 从0开始,使用官方Yocto构建完整的,可完全自定义的Linux发行版,以及入门包及开发包
今天来分享下Distribution Package的使用过程,从0开始构建出属于自己的适用于STM32MP135-DK的Linux发行版。这个过程虽然复杂繁琐耗时长,但是这个过程会使你清楚的了解到ST MPU的不同开发阶段使用到的代码、工具和镜像都是如何生成的,对整体框架有清晰的认知。
本文内容是作者参考官方WiKi教程构建Yocto文件系统并生成Satrter Package和Developer Package过程的记录及补充,方便爱好者们参考理解,动手能力强的建议直接去看官方文档:
👇👇👇
STM32MPU Distribution Package
👆👆👆
1.Linux环境
ST建议的是使用Ubuntu 22.04版本,详见👉PC prerequisites👈的4.1.1. Installing the virtual machine
章节,爱动手的自己安装Ubuntu,我使用的是👉Linux VM Image👈提供的适用于VMWare的Ubuntu镜像,下载后解压直接就启动了,ssh什么常用依赖也都配置好了,开箱即用了,不建议大家在安装Ubuntu这种小事上浪费时间。
2.配置代理
为了避免网络连通性造成的操作失败,建议配置好代理。
# 配置终端代理,自己修改好代理地址和端口
export https_proxy=http://192.168.100.124:7890
export http_proxy=http://192.168.100.124:7890
export all_proxy=socks5://192.168.100.124:7890
# 配置Git代理
git config --global http.proxy http://192.168.100.124:7890
git config --global https.proxy http://192.168.100.124:7890
# 配置好后检查一下网络状态
wget -q www.google.com && echo "Internet access over HTTP/HTTPS is OK !" || echo "No internet access over HTTP/HTTPS ! You might need to set up a proxy."
3.安装依赖
# 安装OpenEmbedded/Yocto需要的软件包
sudo apt-get update
sudo apt-get install gawk wget git git-lfs diffstat unzip texinfo gcc-multilib chrpath socat cpio python3 python3-pip python3-pexpect xz-utils debianutils iputils-ping python3-git python3-jinja2 libegl1-mesa libsdl1.2-dev pylint xterm bsdmainutils
sudo apt-get install libssl-dev libgmp-dev libmpc-dev lz4 zstd
# 安装Developer Package需要的软件包
sudo apt-get install build-essential libncurses-dev libncurses5 libyaml-dev libssl-dev
# 安装获取Distribution Package需要的repo环境
sudo apt install python-is-python3
sudo apt-get install repo
# 其他有用的工具
sudo apt-get install coreutils bsdmainutils sed curl bc lrzsz corkscrew cvs subversion mercurial nfs-common nfs-kernel-server libarchive-zip-perl dos2unix texi2html libxml2-utils
4.其他设置
# 默认情况下,Linux 系统允许最多 8 个 MMC 分区,需要将分区数量增加到 16 个
echo 'options mmc_block perdev_minors=16' > /tmp/mmc_block.conf
sudo mv /tmp/mmc_block.conf /etc/modprobe.d/mmc_block.conf
# 检查区域设置是否为"LANG=en-US.UTF-8"
locale
# 如果LANG的值不是"en-US.UTF-8",需要重新设置
sudo update-locale LANG=en_US.UTF-8
# 确保用户是否属于属于disk、tty、dialout和plugdev
groups
# 如果需要将用户添加到缺少的组中,可以使用:
sudo adduser $USER disk
sudo adduser $USER tty
sudo adduser $USER dialout
sudo adduser $USER plugdev
# 配置Git用户信息,自行修改
git config --global user.name "Your Name"
git config --global user.email "you@example.com"
5.获取源码并构建
# 创建源码存放路径
mkdir STM32MPU-Ecosystem-v5.1.0
cd STM32MPU-Ecosystem-v5.1.0
mkdir Distribution-Package
# 获取Distribution Package源码
cd Distribution-Package/
repo init -u https://github.com/STMicroelectronics/oe-manifest.git -b refs/tags/openstlinux-6.1-yocto-mickledore-mpu-v24.06.26
repo sync
# 初始化构建环境
DISTRO=openstlinux-weston MACHINE=stm32mp13-disco source layers/meta-st/scripts/envsetup.sh
# 开始构建
bitbake st-image-weston
接下来就是漫长的等待…
由于编译时间较长,本文持续更新,后面将会介绍发行包的使用
9月15日继续更新,整个构建过程还算顺利,其实是在9月11日编译完成的,用时加起来大概6小时。
期间由于网络不稳定经历过几次拉取源码失败的情况,重新执行bitbake命令基本都能解决。
6.生成Developer Package
经过前面的构建步骤之后我们可以在build-openstlinuxweston-stm32mp13-disco/tmp-glibc/deploy/images/stm32mp13-disco
路径找到生成的系统镜像,也就是Starter Package,可直接打包分发给其他开发人员用于板级功能评估使用。除此之外在研发过程中为满足其他开发人员对源码进行修改,需要生成Developer Package并分发。
如果是在新的Shell中完成接下来的工作,你需要在Yocto源码路径下重新运行环境设置脚本。
DISTRO=openstlinux-weston MACHINE=stm32mp13-disco source layers/meta-st/scripts/envsetup.sh
官方文档指出需要修改build-<distro>-<machine>/conf/local.conf
文件,将ST_ARCHIVER_ENABLE = "1"
添加进去,这里我们修改的文件是build-openstlinuxweston-stm32mp13-disco/conf/local.conf
,这里直接把302行的注释去掉就好了。
一切修改均已完成且准备就绪后,使用以下指令构建最新的系统镜像及开发时使用的源码包。
bitbake st-image-weston --runall=deploy_archives
这个过程很快,大概5分钟左右,所有任务完成后,会在:
build-openstlinuxweston-stm32mp13-disco/tmp-glibc/deploy/images/stm32mp13-disco
路径下生成新的Starter Package
build-openstlinuxweston-stm32mp13-disco/tmp-glibc/deploy/sources/arm-ostl-linux-gnueabi
路径下生成Developer Package
7.总结
- 第一次使用
bitbake st-image-weston
命令后就已经在build-openstlinuxweston-stm32mp13-disco/tmp-glibc/deploy/images/stm32mp13-disco
路径下构建出了系统镜像,也就是Starter Package。 - 接下来介绍了向开发人员提供Developer Package源码包,需要修改
conf/local.conf
文件中的ST_ARCHIVER_ENABLE
字段的值为1后,使用bitbake st-image-weston --runall=deploy_archives
命令会在对应路径下生成对应的Developer Package,ST在这里指出:
“deploy_archives”参数通常不是必需的,但如果没有它,在某些情况下档案就无法完全生成(因此最好默认添加它)
- 此时可以对
build-openstlinuxweston-stm32mp13-disco/tmp-glibc/deploy/sources/arm-ostl-linux-gnueabi
路径下生成Developer Package进行打包,分发给开发者使用。