Docker下为STM32MP1平台编译Yocto Linux系统

STM32MP1平台是ST推出的微处理器,分为两类型号,STM32MP13x和STM32MP15x。

Docker下为STM32MP1平台编译Yocto Linux系统
STM32MP13x系列功能框图

STM32MP13x系列型号的功能区别:

  • STM32MP131: Single Cortex-A7 core
  • STM32MP133: STM32MP131 + 2x CAN, ETH2(GMAC), ADC1
  • STM32MP135: STM32MP133 + DCMIPP, LTDC

STM32MP15x系列型号的功能区别:

  • STM32MP157: Dual Cortex-A7 cores, Cortex-M4 core @ 209 MHz, 3D GPU, DSI display interface and CAN FD
  • STM32MP153: Dual Cortex-A7 cores, Cortex-M4 core @ 209 MHz and CAN FD
  • STM32MP151: Single Cortex-A7 core, Cortex-M4 core @ 209 MHz

ST为STM32MP1平台提供的构建系统方案是Yocto,开发者可以根据自己的需求,实现最大化对系统的定制或设置功能。由于Yocto对编译主机的环境要求ubuntu1804版本,对开发者带来了一些麻烦:

  • 开发系统需要Ubuntu1804版本,开发者需要安装虚拟机软件来为Yocto单独配置编译系统
  • 使用Yocto构建系统的过程中会下载目标系统依赖的所有软件包,部分软件包下载失败,导致编译被卡在下载阶段
  • 使用Yocto构建系统时,第一次构建会建立缓存,近5000多个软件包,花费的时间比较长

针对以上开发中带来的各种问题,我们提出了以下的解决方法:

  1. 使用Docker虚拟化软件,我们定制了容器的镜像,安装了必备的开发工具软件包。方便开发者在各类Linux系统下直接编译Yocto,降低对主系统的干扰
  2. 我们预先下载了ST Yocto构建中需要的软件包,存放在downloads目录下,大部分软件包并不需要修改,所以开发者直接使用即可,其他没有包含软件包的会继续下载,但也是少数部分了
  3. 我们把第一次编译的环境目录也打包出来,这样可以最大程度缩减编译时间

编译中需要的文件包

ST Yocto代码 https://tmp.link/f/6443af7c154d4

Docker的Ubuntu1804镜像 https://tmp.link/f/6443b204336ed

Yocto编译时的downloads目录 https://tmp.link/f/64425547d0f45

Yocto编译的缓存sstate-cache目录 https://tmp.link/f/6443adc02b65e

Docker编译Yocto步骤

导入ubuntu1804镜像

docker load -i i2som-ubuntu1804-yocto.tar.gz

准备Yocto代码和缓存目录

tar xvf stm32mp1-yocto-kirkstone-V4.1.0.tar.gz
tar xvf stm32mp1-yocto-kirkstone-dldir-V4.1.0.tar.gz -C stm32mp1-yocto-kirkstone-V4.1.0
tar xvf stm32mp1-yocto-kirkstone-sstatedir-V4.1.0.tar.gz -C stm32mp1-yocto-kirkstone-V4.1.0

ls stm32mp1-yocto-kirkstone-V4.1.0
downloads  layers  sstate-cache

初始化Yocto配置和配置Yocto缓存目录

DISTRO=openstlinux-weston MACHINE=stm32mp13-disco source layers/meta-st/scripts/envsetup.sh

vi conf/local.conf
DL_DIR ?= "${TOPDIR}/../downloads"
SSTATE_DIR ?= "${TOPDIR}/../sstate-cache"
CONNECTIVITY_CHECK_URIS = "http://www.baidu.com"

编译Yocto

bitbake st-image-weston

等待进度条跑完后,编译就完成了,tmp-glibc/deploy/images/stm32mp13-disco/目录下是编译好的镜像文件。

相关新闻

联系我们

029-89197679

技术咨询:support@i2som.tech

商务合作:market@i2som.tech

工作时间:周一至周五,9:30-18:30,节假日休息