为什么选择Yocto Project
如果您正在开发嵌入式或物联网设备,那么肯定会面对一个挑战:如何为这些设备定制Linux系统发行版?构建和维护操作系统不是简单的任务,它通常包含如下几个重要方面:
引导程序(Bootloader):引导程序是第一个软件,负责初始化硬件,加载内核到内存,然后启动内核。
内核:Linux Kernel,操作系统的核心。负责管理系统硬件资源:主要是内存和设备管理,以及通过它的应用程序编程接口向其他软件提供硬件抽象。
设备驱动:他们是内核的一部分,通过系统调用向应用程序提供对硬件的访问。
文件系统:也是内核的一部分,在Linux系统中:一切皆文件,系统把每个硬件都看成是一个文件,通常称为设备文件,这样用户就可以用读写文件的方式实现对硬件的访问。
应用软件管理:应用软件和库组成了系统软件的大部分,一个完整的操作系统通常有数百到数千个软件包。
Linux和大量开源软件包都是构建Linux系统发行版的重要组成部分,然而搞清楚这些不同软件包之间的依赖和不兼容性是个很大的困难。这个时候Yocto Project很可能成为您产品或开发需求的有效解决方案,它是一个开源协作项目,具有如下特点:
Yocto Project适用于任何架构。无论是芯片还是ODM供应商都编写了支持性的BSP,或者如果您有自定义芯片,您可以按照YP的规格创建BSP。Yocto Project支持Intel,ARM,MIPS,AMD,PPC等
大多数ODM,OSV和芯片供应商提供SDK,BSP和其他支持结构,以便与Yocto Project一起使用。
它专为受限制的嵌入式和物联网设备需求而设计。Yocto Project的设计使您只需根据需要添加所需内容或包,而无需删除和减少默认分发。Yocto Project提供了一个示例嵌入式发行版(Poky),以帮助您快速入门。
Yocto Project提供全面的工具链功能。此工具链已经过Yocto社区在各种架构和平台上的测试。
Yocto Project遵循严格的发布计划,在所有受支持的版本中包含安全补丁。最新的2个版本支持CVE(常见漏洞和风险)问题。
Yocto Project概述
Yocto Project是一个开源协作项目,可帮助开发人员为嵌入式产品创建基于Linux的定制系统,而不管硬件架构如何。该项目提供了一套灵活的工具和空间,全球的嵌入式开发人员可以共享技术,软件堆栈,配置和最佳实践,可用于为嵌入式设备创建定制的Linux映像。
从历史上看,该项目是从OpenEmbedded Project开始的,并且与OpenEmbedded Project一起工作,OpenEmbedded Project是构建系统和一些元数据的派生地。
Yocto Project结合,维护和验证了三个关键的开发元素。
一组集成工具,使嵌入式Linux成功运行,包括自动构建和测试工具,板级支持和许可证合规流程,以及基于Linux的自定义嵌入式操作系统的组件信息
参考嵌入式发行版(称为Poky)
OpenEmbedded构建系统,与OpenEmbedded Project共同维护
Yocto Project,Poky和OpenEmbedded互相之间的关系如下图所示:
Poky参考嵌入式操作系统实际上是一个有效的构建示例,它将构建一个小型嵌入式操作系统,使用的是它内置的构建系统(BitBake构建引擎和OpenEmbedded-Core核心构建系统元数据)。
层(layer)模型-定制的关键
Yocto Project有一个嵌入式和IoT Linux创建的开发模型,它将其与其他简单的构建系统区分开来。它被称为层(layer)模型:本质上,层是组织进文件和目录结构的元数据(配置文件,菜谱等)集合。
使用不同的图层在逻辑上分隔构建中的信息。例如,您可以拥有BSP层,GUI层,发行版配置,中间件或应用程序。将整个构建放在一个层中会限制并使未来的定制和重用变得复杂。另一方面,将信息隔离到层中有助于简化将来的定制和重用。尽可能使用芯片供应商提供的BSP层。
Yocto Project术语
术语描述
追加文件(append file)
追加文件扩展现有的菜谱。BitBake逐字追加该文件内容到对应菜谱,追加文件使用bbappend后缀
BitBake
作为OpenEmbedded构建系统中的构建引擎,BitBake是任务执行器和调度器。类似于我们熟悉的Make构建引擎
板级支持包(BSP)
板级支持包中的二进制,代码和其他支持数据使一个特定的操作系统运行在特定的目标硬件系统上
类(class)
类提供封装和基本继承机制,是可以在多个菜谱中使用的元数据文件。BitBake类文件使用bbclass后缀
配置文件(conf)
包含变量的全局定义,用户定义的变量和硬件配置信息的文件
镜像
用于加载到设备上的Linux发行版的二进制形式。通常包括bootloader,内核和根文件系统
层(layer)
其实也就是组织进目录和文件的元数据(配置文件,菜谱等)集合。层允许您合并相关元数据以自定义构建和扩展,并隔离多个体系结构构建的信息
元数据(metadata)
元数据包括类,菜谱,配置文件和引用构建指令本身的其他信息,以及用于控制构建内容并影响构建方式的数据。OpenEmbedded Core是一组重要的经过验证的元数据
OpenEmbedded Core
oe-core是由基础菜谱,类和配置文件组成的元数据
包(package)
包是软件包,其中包含可执行的二进制文件,库,文档,配置信息和其他文件Yocto项目还使用术语“包”来表示用于建立各自的软件包的菜谱和其他元数据
Poky
基本级功能参考发行版,Poky用于验证Yocto项目,它也是定制的良好起点,另外Poky是oe-core之上的集成层
菜谱(recipe)
最常见的元数据形式,类似于我们熟悉的Makefile文件。菜谱将包含用于构建包的设置和任务(指令)的列表,然后用于构建二进制映像。菜谱描述了获取源代码的位置以及要应用的补丁。菜谱描述了库或其他配方的依赖关系,以及配置和编译选项。菜谱使用bb文件后缀
可扩展软件开发工具包(ESDK)
面向应用程序开发人员的自定义SDK,允许他们将库和编程更改合并到映像中,以使其代码可供其他应用程序开发人员使用
联系客服