我有一个基于rocko分支的工作的Yocto构建系统,该系统正在为基于ARM的目标板生成镜像。该板上的芯片之一是一个小型的,基于ARM的微 Controller ,与主CPU分离。它需要加载我必须构建的固件镜像。
制定配方来构建该微 Controller 固件很容易。它需要一个ARM交叉编译器,然后需要一些特殊的编译器选项来控制代码生成(用于cortex-m4 + thumb等)。问题是,如果我设置一个普通的菜谱,它将假定我正在为目标ARM体系结构构建某种东西,这是另一种类型的ARM,需要不同的代码生成选项。我当然可以使固件Makefile覆盖为目标系统提供的交叉编译环境,并使Makefile仅生成二进制固件镜像。
但这将产生一个标称用于目标ARM体系结构的软件包,但其中包含一个二进制blob,该二进制blob旨在被闪存到目标板上的芯片上。
所以我的问题是,我应该如何为将要在与yocto最终使用的机器完全不同的架构上执行的固件制定配方?
似乎我需要创建一个专门为微 Controller 构建的配方,因此在某种程度上与正常目标配方不同。
最佳答案
Multiconfig可能会帮助您。用例之一是您要为包含FPGA和ARM内核的电路板构建镜像,这在某种程度上类似于您的用例。
引用release notes of morty (2.2),它是在这里引入的:
我还没有尝试过,但是关于rocko的文档在这里:https://www.yoctoproject.org/docs/2.4/mega-manual/mega-manual.html#platdev-building-targets-with-multiple-configurations
您基本上定义了两个机器配置文件,在BBMULTICONFIG
变量中定义它们,并在需要时以multiconfig:<configuration>:
前缀为目标运行bitbake。
关于yocto - 使用Yocto构建固件的最佳实践,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51089677/