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

2024-01-19

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

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

但这将产生一个名义上用于目标 ARM 架构的包,但其中包含一个旨在闪存到目标板上芯片上的二进制 blob。

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

看来我需要创建一个专门为微控制器构建的配方,因此在某些方面与正常的目标配方有所不同。


多重配置可能会帮助你。用例之一是您想要为由 FPGA 和 ARM 内核组成的板构建映像,这在某种程度上与您的用例类似。

引用莫蒂发行说明 (2.2) https://lists.yoctoproject.org/pipermail/yocto-announce/2016-November/000101.html,那里有介绍:

对多配置构建的基本支持。例如,这可以一次构建多于一台机器,如果您的主板上有两个独立的 SoC,每个 SoC 都有自己的操作系统,但您希望在同一构建中同时针对这两个机器,这可能会很有用。

我还没有尝试过,但是 rocko 的文档在这里:https://www.yoctoproject.org/docs/2.4/mega-manual/mega-manual.html#platdev-building-targets-with-multiple-configurations https://www.yoctoproject.org/docs/2.4/mega-manual/mega-manual.html#platdev-building-targets-with-multiple-configurations

您基本上定义了两个机器配置文件,将它们定义在BBMULTICONFIG变量并运行 bitbakemulticonfig:<configuration>:需要时目标的前缀。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Yocto 构建固件的最佳实践 的相关文章

随机推荐

  • 打开第3层,map.on('moveend',..):区分用户交互和map.setCenter()调用

    我正在为 GIS 应用程序实现 OL 并希望在用户滚动地图时添加 20 秒的超时 之后 GPS 自动跟踪功能应恢复 为此 我正在利用 map on moveend move func 侦听器 问题是它无法区分用户滚动还是位置更改来自map
  • 根据视口大小销毁并初始化 Owl Carousel 2

    我读过很多有关此问题的讨论 但没有一个为我解决这个问题 我正在使用 enquire js 来执行我的视口条件 我的代码如下 var slider home farms slider sliderOptions items 1 animate
  • MPI - Bsend 用法

    当我想在异步发送之后释放资源时 MPI Bsend 好吗 这会吗 MPI Bsend array 0 delete array 阻止我删除我想要发送的内存 问题是 当适当的recv打开时 数组可能已经被删除 UPD void RectMPI
  • 在 .NET 对象上设置“可为空”属性

    我有一些 NET 互操作代码 我在其中设法加载对象并读取属性 但是在设置对象的属性时遇到问题 以下是 Delphi 代码的相关部分 uses mscorlib TLB Winapi ActiveX type Irrelevant parts
  • 选择带有“over partition by”的案例

    正确的语法是什么 或者是否可以在 select 中使用 case 并在其中进行分区 使用SQL Server 2012 a unique id b a string xf c values d values e values select
  • 使用 Qualifier 和 InjectionPoint 作为 @HttpParam 在 CDI/WELD 中实现 @RequestParam

    玻璃鱼错误 INFO Initializing Mojarra 2 1 6 SNAPSHOT 20111206 for context NNTPjsf INFO WEB0671 Loading application NNTPjsf at
  • PHP图像上传-重命名而不丢失扩展名?

    我目前有 file name HTTP POST FILES uid name random digit rand 0000 9999 new file name random digit file name path uploads im
  • Xcode“使用未声明的标识符”

    我知道很多人问这个问题 但所有答案都是特定的应用程序 所以我不明白如何为我的应用程序工作 tableData NSArray arrayWithObjects Chocolate Brownie Mushroom Risotto nil N
  • 使用 jQuery 发送新的 ajax 请求之前添加延迟

    我有一个指向 html 页面的链接列表 ul li a href assets data item1 html Item 1 a li li a href assets data item2 html Item 2 a li li a hr
  • 签名 APK:失败 [INSTALL_FAILED_DEXOPT].. 已更新

    生成的 app release apk 在我的设备上不起作用 但 app debug apk 工作正常 Update 转到我的应用程序的先前版本后 in my MainActivity我有这个字符串 public class MainAct
  • 获取codeigniter中复选框的多个值

    我目前正在做一个项目 我有一个复选框 用户将在其中选择公司提供的服务类型 当我尝试在控制器中发布所选的服务 例如检查了 2 个服务 时 我只获得一项服务 问题是如何获取复选框中的多个值 注意 我还尝试在控制器中使用 foreach 但收到一
  • GitHub:限制对特定分支的访问[重复]

    这个问题在这里已经有答案了 有没有办法限制对存储库中某些分支的访问 我们有生产和主分支 有时会因流氓推送而变得混乱 Not with GitHub in the same repo as opposed to local repos whi
  • 错误:启动 my_project docker 设置时,池与此地址空间上的其他池重叠

    我正在尝试设置 docker 但收到以下错误 错误 池与此地址空间上的其他池重叠 请问我应该怎么解决呢 您能否向我们提供您运行的命令以及您的docker compose yml请归档 您遇到的错误表明您存在网络地址冲突 要检查您是否可以运行
  • GitHub Actions:仅针对某些拉取请求基础分支运行步骤

    我已经在 GitHub Actions 上工作了一段时间了 我们已经制定了指定的工作流程 工作流程是用 yaml 编写的 我正在尝试放一些if的条件为github ref并且 yaml 的该块在运行时被跳过 这意味着 如果针对 X 分支提出
  • 如何从循环内正确修改Python循环的迭代器

    我基本上需要的是检查列表中的每个元素 如果符合某些条件 我想将其从列表中删除 比如说 list a b c d e 我基本上想写 原则上而不是我尝试实现的实际代码 如果列表中的元素是 b 或 c 则将其从列表中删除并获取下一个 But fo
  • 将 SVG 转换为 png 或其他?

    由于在 iPython 笔记本中显示 SVG 文件的内容非常容易 是否还有一种方法 也很简单 来获取我们在 png 文件或其他文件中看到的内容 from IPython display import SVG SVG filename ima
  • sonar-plugin-api 4.5.2 的 Javadoc

    为了开发我自己的SonarQube插件 我正在搜索sonar plugin api 4 5 2的javadoc api 但我在互联网上没有找到它 对于 3 x x 版本 maven 还下载了 jar 的源代码 因此我能够从中生成 javad
  • SWI Prolog 中的 Python pickling 等效吗?

    我有一个 Prolog 程序 我正在对所有达到一定长度的字符串进行强力搜索 我正在检查哪些字符串与特定模式匹配 不断添加模式 直到希望找到一组涵盖所有字符串的模式 我想将哪些存储到与我的任何模式都不匹配的文件中 这样当我添加新模式时 我只需
  • mprotect() 的替代方法

    mprotect 系统调用保护页边界内的内存区域 int mprotect void addr size t len int prot Here len应该是页面大小的倍数 有没有办法只保护几个连续的地址 这些地址不与页边界对齐 即len
  • 使用 Yocto 构建固件的最佳实践

    我有一个基于 rocko 分支的工作 Yocto 构建系统 该系统正在为基于 ARM 的目标板生成图像 该板上的芯片之一是一个基于 ARM 的小型微控制器 与主 CPU 分离 它需要加载我必须构建的固件映像 制定构建此微控制器固件的方法很容