原创 Yocto Linux BSP7 新版本介绍

2024-11-12 10:33 417 3 3 分类: MCU/ 嵌入式

By Toradex胡珊逢

简介

Toradex 已经发布了适用于 Verdin/Apalis/Colibri 模块系列的 Linux BSP 7 版本,Yocto Project 升级到 scarthgap LTS 版本。文章将介绍新版本中的一些新特性和需要注意的地方,以及各类模块上 mainline/downstream 支持情况。


BSP 支持周期

Toradex 的 BSP 通常在发布后的第四年,该 BSP 进入 EOL 状态。中间会经历活跃的开发阶段和维护期阶段。伴随着 BSP 7 发布,在 2022 年发布的 BSP 6 相应进入了维护阶段,会根据需要不定期发布 BSP 6 的维护版本。而 BSP 7 则每个季度定期发布一个季度稳定版本,该版本可用于产品开发和量产用途。


对于不同版本的选择,如果是新项目开发,建议使用最新的月度或者季度发布,从而获得最长期的软件支持。季度发布经过 Toradex 更加详细的测试和审核,可用于量产。对已有的项目,可以优先继续使用原来的 BSP。Toradex 发布的软件和硬件,往往会尽最大努力保持兼容性。


mainline/downstream 支持

自从 BSP 5 开始,Toradex 已经开始在部分 Arm 模块上提供了 mainline 的支持。在最新的 BSP 7 中,所有 Arm 32 位处理器的模块均在使用了 mainline,这包括 Apalis iMX6、Colibri iMX6、Colibri iMX7、Colibri iMX6ULL,Verdin iMX8M Mini 在 BSP 7 上也正式提供 mainline 支持。其余的模块如 Apalis iMX8、Colibri iMX8X、Verdin iMX8MP、Verdin AM62 则继续使用来自 NXP 或者 TI 的 downstream 系统。Verdin iMX8MP 上除了 downstream 系统,还可以使用实验性的 upstream 系统。


BSP 7 新特性

下面是 BSP 7 中一些主要的更新和变化,可能和之前的 BSP 版本使用习惯会有所不同,在迁移到 BSP 7 需要注意。详细的变更说明请参考image issue tracker。


移除 X11 distro

在 BSP 7 已经不再支持基于 X11 的发布版本,但是在使用 wayland 的发布版本中默认包含的 xwayland 组件依旧提供对于依赖 X11 的应用支持。


Kernel config

在之前的 BSP 版本中,kernel config 采用内核源码中 toradex_defconfig 文件。例如 BSP 6 中 Verdin iMX8MP 内核 recipe linux-toradex_5.15-2.2.x.bb中 KBUILD_DEFCONFIG使用 toradex_defconfig。直接在内核源码中类似地使用 make toradex_defconfig命令进行配置。

KBUILD_DEFCONFIG:mx8-nxp-bsp ?= "toradex_defconfig"

从 BSP 7 开始,Toradex 采用 Yocto Project 中 configuration fragments方式配置内核。BSP 7 中 Verdin iMX8MP 内核 recipe linux-toradex_6.6-2.1.x.bb的 SRC_URI包含了 KCONFIG_REPO,而不再使用之前的 toradex_defconfig

SRC_URI = " \
  git://git.toradex.com/linux-toradex.git;protocol=https;\
  branch=${SRCBRANCH};name=machine \
  ${KCONFIG_REPO};protocol=https;type=kmeta;name=meta-toradex-bsp;\
  branch=main;destsuffix=${KMETA} \
  file://nxp-imx.cfg \
"

KCONFIG_REPO = "git://git.toradex.com/linux-toradex-kconfig.git"


linux-toradex-kconfig.git中有所有的模块的内核配置文件,例如用于 Verdin iMX8MP 的 verdin-imx8mp-standard.scc。该文件最终会使用 arm64.cfg和 base.cfg提供内核配置选项。

define KMACHINE verdin-imx8mp
define KARCH arm
define KTYPE standard

include cfg/base/base.scc
include cfg/arm64/arm64.scc


对于需要修改内核配置的用户,如果继续使用上面提到的 KBUILD_DEFCONFIG 指定默认配置文件,那么该配置文件则必须由用户自己提供。如果使用 configuration fragments 的方式,可以参考下面方法创建 cfg 文件来提供内核更改选项。


使用 configuration fragments


首先,参考 Toradex Yocto 编译页面配置编译环境。使用下面三个命令修改内核配置,并保存变更的配置内容。

bitbake linux-toradex -c kernel_configme -fbitbake linux-toradex -c menuconfigbitbake linux-toradex -c diffconfig

在 build/tmp/work/verdin_imx8mp-tdx-linux/linux-toradex/6.6.23+git 目录下可以看到 fragment.cfg。该文件包含了变更的配置内容。例如,我们添加了一块 INTEL 有线以太网卡的驱动 IGB,并作为内核模块添加进来。

# cat fragment.cfgCONFIG_LOCALVERSION_AUTO=yCONFIG_IGB=mCONFIG_IGB_HWMON=y# CONFIG_MXC_GPU_VIV is not set


将 fragment.cfg 复制到 layers/meta-toradex-nxp/recipes-kernel/linux/linux-toradex-6.6-2.0.x 文件夹中。在 linux-toradex_6.6-2.0.x.bb 的SRC_URI中添加file://fragment.cfg \

SRC_URI = " \  git://git.toradex.com/linux-toradex.git;protocol=https;\  branch=${SRCBRANCH};name=machine \  ${KCONFIG_REPO};protocol=https;type=kmeta;name=meta-toradex-bsp;\  branch=main;destsuffix=${KMETA} \  file://nxp-imx.cfg \  file://fragment.cfg \"

使用下面命令清理内核编译缓存后重新编译镜像。

MACHINE=verdin-imx8mp bitbake linux-toradex -c cleansstateMACHINE=verdin-imx8mp bitbake tdx-reference-minimal-image


烧录镜像后可以看到,igb 驱动已经添加到编译的镜像中。

root@verdin-imx8mp-07331018:~# zcat /proc/config.gz |grep IGB
CONFIG_IGB=m
CONFIG_IGB_HWMON=y
# CONFIG_IGBVF is not set
# CONFIG_HID_BIGBEN_FF is not set

root@verdin-imx8mp-07331018:~# find /lib/modules|grep igb.ko
/lib/modules/6.6.23-7.0.0-devel-g558ba3740880/kernel/
drivers/net/ethernet/intel/igb/igb.ko


离线内核源码配置


除了在 Yocto 环境中使用 configuration fragments 方式配置内核,有些时候往往是下载内核源码后,对其单独的配置和编译。但是 BSP 7 开始的内核源码中已经不再提供默认配置文件 toradex_defconfig。在编译前需要从 Toradex 的 Artifacts repo 下载相关模块的内核配置文件 kernel-config。该文件和 Toradex 的季度/月度发布版本编译使用同样的内核配置。例如 Verdin iMX8MP multimedia image v7.0.0+build.1 内核配置文件 kernel-config 位于 tdxref-oe-prod-frankfurt/scarthgap-7.x.y/release/1/verdin-imx8mp/tdx-xwayland/tdx-reference-multimedia-image/oedeploy/kernel-config


把 kernel-config 复制到内核源码目录 linux-toradex 下,并重命名为 .config 后使用 make olddefconfig命令进行配置。

$ cp kernel-config linux-toradex && cd linux-toradex$ mv kernel-config .config $ make olddefconfig


Kernel Cmdline 变量

通过 defargs, vidargs, setupargs向内核传递参数的方法在 BSP 7 已经不再使用。tdxargs继续保留,用户仍旧可以通过该变量向内核传递配置参数。在 Yocto 环境中,local.conf 文件中使用 APPEND可以在编译时,将需要的 command line 内核参数添加进来。

APPEND += " pci=nomsi"


在编译并烧录镜像后,可以看到 pci=nomsi已经传入内核 command line。

root@verdin-imx8mp-07331018:~# cat /proc/cmdlineroot=PARTUUID=e9e399c4-02 ro rootwait console=tty1 console=ttymxc2 pci=nomsi


总结

Toradex 采用现代软件开发方式,提供夜间 nightly/月度 monthly/季度 quarterly 发布版本,在确保软件质量的同时及时更新系统,为用户提供最新的技术、问题修复和性能改善。

作者: hai.qin_651820742, 来源:面包板社区

链接: https://mbb.eet-china.com/blog/uid-me-1864768.html

版权声明:本文为博主原创,未经本人允许,禁止转载!

文章评论1条评论)

登录后参与讨论

开发工匠 2024-11-17 16:55

写的好,学习和参考,很适用
相关推荐阅读
hai.qin_651820742 2024-11-29 15:29
基于 NXP iMX8QM 运行 QNX
By Toradex胡珊逢简介嵌入式领域的部分应用对安全、可靠、实时性有切实的需求,在诸多实现该需求的方案中,QNX 是经行业验证的选择。在 QNX SDP 8.0 上 BlackBerry 推出了 ...
hai.qin_651820742 2024-10-30 10:56
基于 NXP iMX8MP 平台简单测试 PySide6 应用
By Toradex秦海1). 简介Python binding 的 Qt GUI 库一直以来有两种,最初是由 Riverbank Computing 公司在 2000 年初发布,基于 Qt4 版本推...
hai.qin_651820742 2024-10-11 15:15
Verdin AM62使用CODESYS
By Toradex胡珊逢简介CODESYS 是基于 IEC 61131-3 的 PLC 开发工具,在工业控制、交通等领域中有着广泛的应用。文章将介绍如何在 Toradex 采用 TI AM62 So...
hai.qin_651820742 2024-09-18 18:07
Verdin AM62 引脚复用配置
By Toradex胡珊逢简介Verdin AM62 是 Toradex 基于 TI AM623/AM625 SoC 的 Arm 计算机模块。它最多提供 4 个 A53 和 1 个 M4F 处理器。这...
hai.qin_651820742 2024-09-18 17:48
TI AM62X Secure Boot 流程简述
By Toradex秦海1). 简介嵌入式设备对于网络安全的要求越来越高,而 Secure boot就是其中重要的一部分。 TI AM62X 处理器基于行业标准 X.509&nbs...
我要评论
1
3
关闭 站长推荐上一条 /2 下一条