首页 > 解决方案 > 使用 Yocto 为裸金属板构建自定义 BSP 层

问题描述

我正在开发一个基于 Yocto Krogoth 版本的嵌入式应用程序,以在 Nitrogen6x 板上运行。我已按照此链接中提到的步骤进行操作。我已经成功创建了 Linux 发行版和 Yocto SDK 来在氮气板上开发和运行我的应用程序。我用来设置构建环境的目标机器是:

MACHINE=nitrogen6x

现在,我们进入了一个阶段,我们将创建一个自定义板(基于相同的 i.Mx.6)。真正的处理器芯片尚未确定,但它将基于 iMx6。

假设我们假设最终的定制板也使用与我目前用于开发的 Nitrogen6x 板相同的处理器芯片。我是否需要在CUSTOM BSP layer现有的 Yocto Repos 中添加任何其他内容以支持我收到的新定制板,或者我为 Nitrogen6x 评估板创建的现有 Yocto 层和构建环境也适用于我的定制板?

我是否需要向板供应商询问有关他为支持任何外围设备和 GPIO 线等所做的自定义硬件更改的任何具体信息。

如果我从硬件供应商那里收到一块裸机定制板,除了原理图和引脚映射等,我不打算提供任何最小 BSP 封装,我必须考虑的主要事项是什么?

我在 Yocto 文档中阅读了有关创建自定义 BSP 层的信息。但是当我开始考虑定制板(它不像 Nitrogen6x、wandboard、Raspberry Pi 等,它在 Yocto、BSP 社区中得到广泛支持)时,我脑海中还有很多其他的事情并不清楚。

编辑 1 例如,我通过为 Yocto 框架创建发行版的 Yocto 构建设置环境指定一个机器名称,为 Nitrogen6x 板构建了一个 Linux 发行版。我运行以下说明:

$ MACHINE=nitrogen6x source ./setup-environment build
$ bitbake core-image-sato

我在上面步骤中提到的机器nitrogen6x只是一个看起来像这样的配置文件。这个文件,主要提到了这些东西:

到目前为止,我的理解是,在上面的列表中,除了自定义板的突出显示之外,其他所有内容都保持不变。我对以下几点正确吗?

Kernel Device Trees:我可能必须根据原理图和其他硬件信息为我的自定义板创建自定义设备树文件。是否有任何参考或文档可供我参考以创建我自己的.dts文件。

BSP:我期待我目前用于 Nitrogen 板的 BSP 层可能兼容并且也适用于定制板,因为它将基于 iMx6 平台制作。这是我必须努力获得提示的部分?硬件供应商是否会给我们提供一套最少的软件来检查板子的启动情况并提示我们,或者我是否需要让它在裸金属板上工作。

感谢您的任何帮助,您可以提供。

标签: linuxembeddedyoctobsp

解决方案


我强烈建议您创建一个新层以处理您的新自定义设备。它将允许您正确地将设备和机器配置与远程存储库分离。我不知道如何计划管理交付/版本,但我建议您使用repo. 您会在 NXP 文档中找到许多信息。

到目前为止,我的理解是,在上面的列表中,除了自定义板的突出显示之外,其他所有内容都保持不变。我对以下几点正确吗?

我们不知道您对定制设备的真正期望是什么。因此,该机器配置可以满足您的要求,但也可能需要调整。因为去年就推出了新的机器覆盖new machine override,我其实还不熟悉。但它允许您通过在local.conf. 根据您的local.conf,您将从linux-boundarylinux-fslcrecipes 编译内核。

内核设备树:我可能需要根据原理图和其他硬件信息为我的自定义板创建自定义设备树文件。是否有任何参考或文档可供我参考以创建我自己的 .dts 文件。

您可以添加任意数量dts的内容KERNEL_DEVICETREE= 您必须拥有自己的内容。它存在很多关于 dts 的信息。按照此链接进行第一次介绍。

您将不得不在目录下创建自己的设备树(例如 customboard-imx6.dts)/arch/arm/boot/dts/。您还可以在开发过程中将其包含在您的源代码中。

BSP:我期待我目前用于 Nitrogen 板的 BSP 层可能兼容并且也适用于定制板,因为它将基于 iMx6 平台制作。这是我必须努力获得提示的部分?

如果是,您打算如何管理资源?


推荐阅读