您现在的位置是:首页 > 汽车

如何在MIPS平台上使用Yocto设备定制的嵌入式系统Linux

2022-08-25 02:04:09

Wi - Fi路由器、数码相机和电视有一些共同点,而这些共同点无形中带来了一些优势。在这些设备上运行的软件很有可能是高度定制的针对嵌入式系统的Linux。若要使用OS用作特定的任务,或优化工作流,那么,最理想的便是运行定制版Linux。

本文将简要阐述设计师如何使用Yocto开源基础设备,在MIPS平台上定制嵌入式Linux发行版——使设计师能聚焦于产品本身,而不是创建定制发行版带来的复杂性。

?

有很多方法可以创建定制嵌入式Linux发行版。首先,获取所需的软件库和开源软件包——这些可以轻松地在网上找到并下载。之后,则必须手动交叉编译并整合。为简化这个乏味的过程,有许多工具和框架可以用来协助开发人员。

最广为人知及成功的案例便是Yocto Project。ImaginaTIon一直致力于使用MIPS处理器进行定制。且这些建立在可用于MIPS的工具和软件上。

不过,在我们详细阐述MIPS定制Yocto时,有必要先对Yocto Project进行简要介绍。

Yocto Project简介

为描述Yocto Project,我们可以引述网站上的

“Yocto Project提供了一个开源的、高质量的基础设备和工具,以帮助开发人员创建自己的定制Linux发行版,用于任何硬件架构及跨多个细分市场。Yocto Project旨在为开发人员提供一个良好的开端。Yocto Project还有其他一些项目,包括Poky构建系统、Autobuilder自动构建和测试系统及嵌入式GLIBC(EGLIBC)C库。”

或者,可以观看以下视频来了解:

?

对于那些熟悉Buildroot发布环境的人而言,Yocto是另一个框架,支持更多的功能,如更多的存储包等。所以,它要更加全面。

内部结构

Yocto分为三个主要的层次(还有其他层,但本文不作描述)。每一层的内容和配置由称作“recipes”的元数据定义。

以下是三个主要层:
基础层(开放嵌入式内核,OE-Core):这是在嵌入式Linux发行版中很常见的内核软件集合。例如BusyBox。软件可以在单一的可执行文件中提供一些定制的Unix工具。

设备层:这一层增加了设备/开发板特定的元数据,如内核补丁、内核配置、引导装载程序等。
软件层:这一层添加了一个特定的软件集,如Gnome、XFCE、NodeJS等。

基础层OE-Core有创建功能齐全的嵌入式Linux发行版的元数据,且是基于Yocto框架任何发行版所需的内核。可以使用配置文件来添加更多的层。一旦这些层和元数据被配置,Bitbake创建工具便会解析这些元数据和配置文件,以进行下载和编译,由此创建发行版。

Yocto的起点是什么?

Yocto是一个全面的框架,支持包容和配置许多不同的工具和系统,但却没有具体的着手点。不过,Yocto可以提供了一个Linux发行版的参考Poky,它能提供很好的起点。Poky为无外设系统提供配置文件“core-image-minimal” 以及具有图像使用接口(GUI)的版本“core-image-sato”。

正是由于这些,产品开发人员只要关注产品的软件需要集成的元数据,其余的基础设备则由Yocto提供。

例如,我有一款含UI的软件系统,使用QT框架编写。我可以使用core-image-sato作为参考点,创建嵌入式Linux发行版。我将获取QT软件层,添加路径至我的配置文件中。同时,为我的软件应用程序编写一个定制的元数据,描述对QT的依赖性。Bitbake将理解及解析配置文件,并使用QT和我的定制软件,创建一个core-image-sato分布。有了这些配置文件和元数据,就有了嵌入式Linux发行版,且其支持基于软件UI的QT。

MIPS的定位

历史上看,MIPS已经作为OE-Core层的一部分,包含在Yocto中。最近,ImaginaTIon扩展了这个支持,在2016年10月发行的Yocto2.2中,添加了新的MIPS R6指令集架构至OE-Core层。ImaginaTIon还创建了“meta-img”,即在GitHub上可用的设备层。这一层为不同的MIPS平台和QEMU添加了设备配置文件,包括?Creator Ci40、 MIPSfpga、SEAD-3 和Rhino Labs SDNA-7130 (UTM-8)。

使用Poky和meta-img层,我们就能很容易地建立一个基于系统的QEMU,启动运行并获得MIPS提示符。

以下是操作演练:
$ git clone git://git.yoctoproject.org/poky -b morty
$ cd poky
$ git clone https://github.com/MIPS/meta-img.git -b morty
$ source oe-init-build-env
(this will change the current directory to the build one. That is OK)
$ bitbake-layers add-layer ../meta-img
$ MACHINE=qemumips32r2el bitbake core-image-minimal

在接入互联网连接快速运行的设备中,这个过程耗时2小时。
完成上述操作以后,你将在tmp/images/deploy/qemumips32r2el中找到内核和根。

Yocto还可以编辑QEMU仿真器,提供带有正确参数且简单的脚本来运行。

使用 $ ../scripts/runqemu tmp/deploy/images/qemumips32r2el/ nographic
login: root 运行 qemu
(使用Ctrl-a X退出QEMU)