基于Yocto Project的嵌入式应用设计
摘要:Yocto Project是一个开源项目,可以在任意硬件上(如x86、x86-64、ARM、PPC、MIPS)为任意嵌入式设备构建自定义嵌入式Linux应用所需的模板、工具和资源,极大地简化了开发过程。本设计主要基于Yocto Project在嵌入式设备上轻松定制嵌入式Linux应用,并实现Yocto Project的定制过程。
关键词:Linux;Yocto Project;定制系统
引言
Linux作为嵌入式系统的主要工具,具有源代码开放、完全可定制、支持许多网络协议、服务器级别高、可靠性高等很多优点。但现有的嵌入式Linux市场开始分化,现有的选择包括半导体厂商提供的实例方案、嵌入式OSV提供商应用的嵌入式Linux产品、嵌入式产品开发商的自有方案和开源项目等。由于缺乏一致性,造成了嵌入式开发高昂的维护成本,不仅嵌入式开发缺乏足够的专业人员,而且开发过程存在安全漏洞问题。在Yocto Project项目中,可以使用许多高效的工具,从而轻松定制嵌入式Linux产品。
1 YoCto Proiect的原理和架构
Yocto Project是一个开源项目,由Linux Foundation主导并被嵌入式业界领导者所支持。Yocto Project与OpenEmbedded兼容,后者包括了许多开源项目的构建方法,可以作为Yocto Project的有效补充。Yocto Project提供基于社区测试的支持多种架构的镜像。Yocto Project的优点如下:具有高质量的构建系统,平等地支持所有主流的嵌入式架构(ARM、Power PC、MIPS、x86(32&64位)),紧密跟踪许多上游开源项目的最新发布版本,具有统一的Linux BSP格式和应用程序开发套件,还可轻松地实现从原型切换到商用嵌入式Linux产品。
Yocto Project架构中用户自定义层由用户根据需求定制,包括定制层、BSP(Board Support Package)层、特性层和核心元数据(CoreRe cipe)层。上层开源组建最常用的命令为BusyBox和Eglibc等。架构中应用的开发套件,由Poky构建系统生成交叉工具链,使用ADT installer来定制交叉开发环境,可以支持在目标系统和sysroot上的包管理架构,包括Eclipse/Anjuta集成开发环境的插件、调用安装好的交叉工具链,以及模板和调试工具。元数据准备好了由元工具(bitbake)解析、执行。元工具抽象构建一个软件过程中的fetch、unpack、patch、configu re、cornpile、packagc等任务;同时,元工具还负责按不同软件之间的依赖关系有序地执行编译。编译成功后,用户自定义的Yocto镜像就可以在嵌入式设备上使用。Yoto Project架构图如图1所示。
构建嵌入式系统是一个嵌入式Linux项目的核心,构建系统需要定义一组语义让开发者可以描述一个特定的构建任务,嵌入式系统负责交叉编译一个项目的整个过程,包括下载源代码、打上特定的补丁、配置、编译、安装,并将安装结果按指定格式打包。构建的嵌入式系统还要并发调度多个构建任务。好的构建系统决定了一个嵌入式Linux开发环境的效率和友好度。Yocto内核使用GIT进行源代码管理,内核功能被组织成小的集合,方便深入定制化并支持多种内核开发流程和管理技术。所使用的应用开发套件是由Poky构建系统生成的交叉工具链,使用ADT installer来定制交叉开发环境,支持在目标系统和sysroot上的包管理架构,包括RPM、DEB、IPK,支持Eclipse/Anjuta集成开发环境的插件,而且还可以使用Qemu作为模拟器,模拟器支持基于OpenGL的应用开发(QemuGL加速)。
(1)元数据Recipe
一份Recipe包括了一组元数据,而这些元数据则定义了与一个项目相关的构建信息:源代码的地址,项目相关的特定配置参数,如何编译、安装和打包数据。丰富的类文件有助于最大程度地重用元数据,由Profile决定选择哪些Recipe。Yocto Project包括了一些事例Profi le,一份完整工作的Recipe可能只需要3行元数据。
(2)元数据层
元数据可以相互层叠,以很低的维护成本来进行深层次的定制化,同时还可以增加新的项目,调整架构相关的编译标志,覆盖某个项目特定的配置选项。
开发者提供元数据(食谱或菜谱),食谱是由一种标记性的语言所写,由元工具(bitbake)解析、执行。每份食谱都是描述某个软件的“清单”,例如:源代码从哪里下载,需要哪些补丁文件,可能需要哪些特殊编译链接选项,打包时需要的特殊配置,依赖哪些其他软件等相关信息。元工具则抽象了构建一个软件过程中的fetch、unpack、patch、configure、compile、package等任务;同时,元工具还负责按不同软件之间的依赖关系有序地执行编译。
3 智能车载系统硬件设计
随着汽车电子的发展,智能车载系统越来越受到关注,智能车载系统通过信息的传递为车辆提供出行指引、安防
Linux Yocto Project 定制系统 相关文章:
- REDIce-Linux--灵活的实时Linux内核(11-12)
- linux文件系统基础(02-09)
- Linux标准趋向统一(11-12)
- linux基础技术(02-09)
- LINUX的目录树(02-09)
- 在Windows下启动Linux(02-09)