Dianshao Docs
Toggle Dark/Light/Auto mode Toggle Dark/Light/Auto mode Toggle Dark/Light/Auto mode

底层开发

1. 说明

正如快速开始章节所说,由于嵌入式 Linux 项目会使用各种各样的芯片和外设,无法归纳和总结成一套固定的程序。因此颠勺目前不提供如下 Yocto 开发的支持:

  1. u-boot 包开发
  2. 内核包开发
  3. 驱动包开发
  4. rauc 适配开发
  5. machine 配置文件
  6. distro 配置文件

对于开发嵌入式 Linux 项目来说,所有的底层工作 90% 以上是移植。通常来说,开发人员的主要工作是根据需求修改 u-boot 和内核 config 文件并编译,增加额外驱动,修改设备树。 Yocto 提供了丰富的底层软件包,用户一般只需要根据需求做少量的改动即可完成,降低移植难度,后续例程中会简单介绍颠勺项目如何进行底层移植。

2. u-boot

  • 对于常用芯片,可以使用 openembedded-core/meta/recipes-bsp/u-boot 包,该包使用的是 u-boot 官方仓库。也可以使用芯片厂商提供的元数据层中的 u-boot 包,例如 imx 系列芯片,可以使用 u-boot-imx

  • 通常用户只需要修改 config 文件,增加 dts 文件即可,无需过多修改即可完成移植

  • 如果需要打补丁也很简单,具体方式请参考 yocto 文档,本文不再赘述

3. kernel

  • 同 u-boot 一样,通常只需修改 config 文件,增加 dts 文件即可,无需过多修改即可完成移植

4. 额外驱动

  • 如果你需要增加内核中没有的驱动,Yocto 也提供了方法添加用户驱动,并可使其开机自动加载,具体方法请参考 yocto 文档

5. rauc 适配开发

  • 由于嵌入式 Linux 终端可能使用的存储方法多样,如 nand nor sd emmc 等,且使用的文件系统也不相同,因此需要根据需求增加 rauc bbappend 适配。具体方法请参考 rauc 官方文档。如果你不需要使用 rauc 升级,那可以跳过此步。

6. machine conf

  • 通常,主流芯片厂商和开发板均已提供较为完善的 machine conf, 用户只需根据需求少量修改 machine conf 文件即可

  • 用户也可自己开发 machine conf, 具体方式请参考 yocto 官方文档

7. distro conf

  • 颠勺会默认创建 distro conf, 使用 systemd 作为启动方式,使用 rauc 进行升级

  • 你也可以根据需求在默认配置上增加,也可以自己新建配置文件并使用,具体方法参考 yocto 官方文档

8. 总结

  • 总的来说,该部分开发需要开发人员掌握 yocto 开发框架和嵌入式 Linux 底层移植开发知识,因此需要经验丰富的开发人员完成该部分工作。我也尝试过归纳总结成一段程序,但是真的很难实现。

  • 由于 yocto 框架的复用性层级之间的解耦做的很好,底层开发者只需关心与硬件平台适配即可,因此一个专职底层开发人员可以配合很多具体项目。例如公司常用芯片一般也就三四种,底层开发人员只需完成针对这几种芯片的底层移植开发,以及根据实际项目需求修改外设相关部分,就可以支撑几十上百个实际项目