×
嵌入式开发 > 详情

基于Yocto Project的嵌入式应用设计

发布时间:2020-07-13 发布时间:
|

摘要: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所示。



2 构建嵌入式系统
构建嵌入式系统是一个嵌入式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 智能车载系统硬件设计
随着汽车电子的发展,智能车载系统越来越受到关注,智能车载系统通过信息的传递为车辆提供出行指引、安防、救援、远程故障诊断等服务。远程信息服务(Telematics)即通信网络为安装在车上的资讯系统平台提供的多样化的信息服务。TelematicS系统可分为车前座系统、车后座系统,以及车况诊断系统。
其中,车前座系统提供的服务包括通信、导航、行车安全监视、联网资讯、路况、天气等;车后座系统的服务包括在线下载影音资讯、在线网络游戏等;车况诊断系统的服务包括保养通知、车况预警等。目前,在车载智能系统中有日产的Carwings、通用公司的Onstar、丰田公司的G-BOOK、一汽奔腾公司的D-Partner以及荣威公司的inKanet等。其中,OnStar是以安防为主的Telematics服务,G—Book是以资讯及娱乐为主的Telematics服务。




『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
智能化系统工程设计中的若干技术问题