admin 管理员组

文章数量: 887021


2023年12月17日发(作者:html表单边框样式)

利用PetaLinux构建系统初始化服务

丁彦、张秀梅、刘凡

1.南京濠暻通讯科技有限公司 江苏南京 211111

2.南京熊猫汉达科技有限公司 江苏南京 210001

摘要:在使用Xilinx公司的异构FPGA器件进行嵌入式系统开发时,Xilinx公司推荐使用PetaLinux工具,而PetaLinux是基于yocto构建的顶层工具,许多开发者无法深入了解其内部运行机制,未能进行灵活的开发。本文通过在系统启动中初始化网卡配置,添加FTP服务,阐述如何利用PetaLinux工具进行系统初始化服务的快速构建。

关键词:PetaLinux;系统初始化;根文件系统;网卡初始配置;FTP

引言:自Xilinx公司推出异构FPGA器件后,将原本分离的嵌入式系统开发和FPGA开发融合到了一起,开发工程师们面对更为复杂的开发环境,为了加速开发Xilinx公司提供了PetaLinux工具。PetaLinux封装了一层用户接口进行配置、编译、下载等,致使开发者未能深入了解底层的工作机制,不能随心所欲的对软件进行修改,导致构建系统的灵活性不足。本文通过在系统启动过程中初始化网卡配置添加和FTP服务这两个具体实例,阐述如何利用PetaLinux工具加速根文件系统的构建。

1.利用petalinux工具加速开发

嵌入式系统已经应用到我们日常生活的方方面面,种类繁多的硬件不可避免地带来了软件适用性的负担,进行嵌入式系统的开发涉及到:引导加载程序、内核、设备驱动、软件生命周期管理、应用软件管理等多方面,构建和维护嵌入式操作系统不是简单的任务。对一个完整的可操作系统来说,它通常需要数百到数千个软件包。开发者很多时候搞不清软件包之间的依赖关系,因此一些开发软件成为项目开发的有效工具。

[1]122

目前常用的开发软件有Yocto、Buildroot、OpenEmbedded等,PetaLinux是Xilinx公司强烈推荐使用的工具。PetaLinux 是一种嵌入式 Linux 软件开发套件 (SDK),主要用于赛灵思 FPGA 基片上系统设计。PetaLinux SDK 是一种赛灵思开发工具,含有构建、开发、测试和部署嵌入式 Linux 系统所需的所有功能。[2]PetaLinux 构建在Yocto项目的顶层,可与 Xilinx 硬件设计工具配合使用,目的是简化Xilinx异构FPGA器件的系统开发复杂度,提升设计生产力。

2.根文件系统的内涵

2.1.根文件系统

根文件系统也是一种文件系统,那什么是文件系统?文件系统是对一个存储设备上的数据和元数据进行组织的机制。简单的说,文件系统将存储介质上的二进制数据组织成一定的格式,方便用户进行读、写、查找、删除,从用户的视角看,用户与操作系统进行交互的主要形式是文件,而文件系统负责组织和管理各种文件。根文件系统之所以称之为“根”,由于它是内核启动时所挂载(mount)的第一个文件系统,内核代码的映像文件保存在根文件系统中,系统引导启动程序会在根文件系统挂载之后从中把一些初始化脚本和服务加载到内存中去运行。根文件系统挂载之后,才可以继续挂载其它的文件系统。

2.2.系统初始化

Bootload进行板级初始化,加载linux内核进入内存,将控制权转移给内核,内核挂载根文件系统。系统在根文件系统中找到init程序并执行它,init程序寻找他的配置文件/etc/inittab,并开始执行其中的脚本,这些脚本是一些shell命令的组合,用来执行下面一些命令,如加载所需的模块、装载SWAP、初始化网络、装在fstab中列出的所有驱动器等。若系统不能从指定设备上挂载根文件系统,则系统会出错而退出启动。根据系统所要运行的应用程序,所需要的初始化配置文件通常都放在/etc目录下。

3.使用petalinux构建网卡初始配置

[3]

在ubuntu系统中,/etc/network/interfaces文件是网络基本参数的配置文件,系统启动后会根据文件内容配置IP地址,MAC地址,网关等网络参数。但使用petalinux工具创建的根文件系统使用的是INITRAMFS类型文件系统,断电之后无法保存,所以无法直接修改/etc/network/interfaces。

最为灵活的解决办法是我们在构建根文件系统时,使用自己编辑的/network/interfaces配置文件。首先,自己编辑一个配置文件,分别配置两个以太网口:eth0和eth1。eth0使用两个IP地址:一个静态IP地址(用于调试),一个由DHCP分配的动态IP地址。eth1使用一个由DHCP分配的动态IP地址。配置文件的关键内容如下:

图 1 网络配置文件关键内容

其次,在项目中的meta-user layer创建init-ifupdown用于存放文件刚才创建的配置文件,在shell中运行命令:

$mkdir-p ${PROJ}/project-spec/meta-user/recipes-core/init-ifupdown/files

接着,在/init-ifupdown文件夹下创建init_ifupdown_%.bbappend文件,关键内容故如下:

图 2网络配置bbappend文件关键内容

完成以上文件创建后,重新编译工程,生成新的根文件系统,系统启动后实现网卡预期初的始配置。

4.使用petalinux构建FTP服务

文件传送协议FTP(File Transfer Protocol)是互联网上使用的最广泛的文件传送协议。FTP的主要功能是减少或消除在不同操作系统下处理文件的不兼容性。使用FTP服务可以方便的在服务器与客户端之间传送文件,即使是在不同的操作系统之间。以往制作根文件系统通常使用busybox这个软件。BusyBox是一个集成了大量的Linux命令(如ls、mv、ifconfig 等命令)和工具的软件。BusyBox为各种小型的或者嵌入式系统提供了一个比较完整的工具集。借助BusyBox进行配置和编译,可以方便的构建一个嵌入Linux平台所需要的根文件系统。而本文使用petalinux开发,其中包含busybox,不用再单独移植busybox配置FTP服务,直接在根文件系统中构建超级服务inetd守护进程,它可以监听FTP、telnet等网络请求来调用相应的服务进程来处理连接请求。

运行petalinux-config -c rootfs,配置根文件系统,选中busybox-inetd配置项,编译出镜像下载至目标板上运行。打开/etc/文件,如果FTP服务配置中由“-w”选项,如下:

FTP stream tcp nowait root FTPd FTPd -w /run/media/mmcblk0p2

则客户端不能向服务器端upload文件,即客户端没有写入功能,提示如下:

ftpd: invalid option -- ’w’。

[5][4]

远程主机关闭连接。

这是petalinux工具的一个bug,想要解决这个问题,可以按如下方式进行:首先需要配置busybox具有写入功能,配置petalinux-config -c busybox ->

Networking utilities -> FTPd -> [*] Enable -w option。还需要在配置文件中开启写入权限,在

${PetalinuxFolder}/componets/yocto/source/aarch64/layers/meta-petalinux/recipes-core/busybox/busybox/

文件中添加“CONFIG_FEATURE_FTPD_WRITE=y”,如下图所示:

图 3 配置FTPd支持写入功能

重新生成镜像文件既能支持客户端写入。位于

${PetalinuxProject}/project-spec/meta-plnx-generated/recipes-core/busybox/files下的文件,是系统启动后/etc/文件,可以修改这个文件生成想要的配置,例如指定FTP读写文件夹,如下图:

图 4 进行/etc/配置

按照上述配置重新构建根文件系统,系统启动后即可提供FTP服务。

5.结束语

PetaLinux 是一套直接构建在Yocto项目顶层的定制工具,本质上讲PetaLinux还是属于Yocto,但Yocto的使用难度较大,Xilinx通过提供PetaLinux工具,简化了开发流程,使开发者不必再费力的学习Yocto开发。对入门新手或者熟练的开发者来说,PetaLinux都是一个值得推荐的选择。通过本文的应用举例看出,对于高级的应用来说,在定制开发方面PetaLinux有很大的灵活性,仍然需要开发者在实践中不断地学习探索,提高开发水平。

参考文献:

[1][美] Rudolf 著,胥峰 译. 嵌入式Linux系统开发 基于Yocto Project[M]. 北京:机械工业出版社,2018.

[2] Xilinx. PetaLinux工具文档参考指南UG1144[OL]. Xilinx官网,2019-5.

[3]徐虹. 操作系统实验指导:基于Linux内核[M]. 北京:清华大学出版社,2016-8.

[4]谢希仁. 计算机网络[M]. 北京:电子工业出版社,2017-1.

[5]韦东山. 嵌入式Linux应用完全开发手册[M]. 北京:人民邮电出版社,2008-8.


本文标签: 开发 配置 系统 进行 工具