使用Yocto构建固件的最佳实践

OzB*_*dit 5 bitbake yocto

我有一个基于rocko分支的Yocto构建系统,该系统为基于ARM的目标板生成图像.该主板上的一个芯片是一个基于ARM的小型微控制器,它与主CPU分开.它需要加载我必须构建的固件映像.

制作这种微控制器固件的配方很容易.它需要ARM交叉编译器,然后需要一些特殊的编译器选项来控制代码生成(对于cortex-m4 + thumb等).问题是,如果我设置一个正常的配方,它将假设我正在为目标ARM体系结构构建一些东西,这是一种需要不同代码生成选项的不同类型的ARM.我当然可以让固件Makefile覆盖为目标系统提供的交叉编译环境,并让Makefile只生成二进制固件映像.

但这将导致一个名义上用于目标ARM架构的封装,但其中包含一个二进制blob,用于闪存到目标板上的芯片上.

所以我的问题是,我应该如何制作一个固件的配方,该固件将在完全不同的架构上执行,而机器是yocto最终构建的?

看起来我需要创建专门为微控制器构建的配方,因此在某种程度上与正常的目标配方不同.

ɛIc*_*ↄIз 2

您需要创建一个bbclass,它将为您更改必要的变量,并在您的配方中继承它。让我们以nativesdk.bbclass为例。您的 newarch.bbclass 文件将类似于:

CLASSOVERRIDE = "class-newarch"
PACKAGE_ARCH = "newarch"
PACKAGE_ARCHS += "newarch"
TARGET_ARCH = "newarch"
TARGET_CC_ARCH = "newarch"
TARGET_LD_ARCH = "newarch"
TARGET_AS_ARCH = "newarch"
TARGET_CPPFLAGS = "..."
TARGET_CFLAGS = "..."
TARGET_CXXFLAGS = "..."
TARGET_LDFLAGS = "..."
CPPFLAGS = "..."
CFLAGS = "..."
CXXFLAGS = "..."
LDFLAGS = "..."
Run Code Online (Sandbox Code Playgroud)