ZYNQ系列(四) 将文件打包进文件系统
ZYNQ系列(四) 将文件打包进文件系统第一章 Petalinux创建工程第二章 Petalinux-config配置说明第三章 QSPI自启动工程第四章 将文件打包进文件系统文章目录ZYNQ系列(四) 将文件打包进文件系统前言一、创建应用文件工程二、rootfs配置三、myapp.bb文件解读总结前言linux开发过程中,都会涉及交叉编译app程序,zynq提供SDK软件进行编译,但一般情况下都
ZYNQ系列(四) 将文件打包进文件系统
第一章 Petalinux创建工程
第二章 Petalinux-config配置说明
第三章 QSPI自启动工程
第四章 将文件打包进文件系统
文章目录
前言
linux开发过程中,都会涉及交叉编译app程序,zynq提供SDK软件进行编译,但一般情况下都是使用虚拟机进行交叉编译,使用虚拟机交叉编译的情况下,将编译后的app打包进zynq的文件系统成为了一个问题。
解决这个问题有很多办法,这里提供2种办法:
- 通过tftp,将app程序放入上一章提到的spiflash中。(这种办法不做介绍了,网上太多tftp)
- 将app程序直接打包进zynq的rootfs中。(本章内容介绍的就是这种方法)
不仅仅是app程序,任何文件都可通过此方式放入文件系统。
一、创建应用文件工程
1. 确保已经有预编译的app
2. 使用以下命令创建应用程序
$ petalinux-create -t apps --template install --name myapp --enable
3. 进入新创建的应用工程目录
$ cd <plnx-proj-root>/project-spec/meta-user/recipes-apps/myapp/files/
4. 删除现有的myapp app,并将预建的myapp复制到myapp/files目录下
$ rm myapp
$ cp <path-to-prebuilt-app> ./
二、rootfs配置
可以通过以下命令配置是否将应用文件工程编译至rootfs
$ petalinux-config -c rootfs
选择apps —> 下的自己刚建立的模块即可。
三、 编译
$ petalinux-build -c rootfs
$ petalinux-build
四、myapp.bb文件解读
1 #
2 # This file is the myapp recipe.
3 #
4
5 SUMMARY = "Simple myapp application"
6 SECTION = "PETALINUX/apps"
7 LICENSE = "MIT"
8 LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302"
9
10 SRC_URI = "file://myapp \
11 "
12
13 S = "${WORKDIR}"
14
15 do_install() {
16 install -d ${D}${bindir}/myapp
17 install -m 0755 ${S}/myapp ${D}${bindir}/myapp
18 }
前9行默认。
第10行,将file/myapp文件放入 SRC_URI中。
第13行,S变量就是目前应用工程的目录
第15-18行,do_install函数作用就是在zynq的rootfs中创建个myapp文件夹,并将myapp文件放入该文件夹下。
其中${D}为rootfs的根目录,即’‘\’目录。
${bindir} 为/usr/bin目录
其他已知目录
${sysconfdir}为 /etc目录
想把文件放入其他目录 使用${D}/xxx即可。
如果想增加其他文件
- 首先将文件放入file目录下,更改本行内容为,youfile为要添加的文件
SRC_URI = "file://myapp \
file://youfile \
"
- 更改do_install内容
do_install() {
install -d ${D}${bindir}/myapp
install -d ${D}${bindir}/youfile
install -m 0755 ${S}/myapp ${D}${bindir}/myapp
install -m 0755 ${S}/youfile ${D}${bindir}/myapp
}
特殊情况说明
若添加的app程序需要用到QT的库,需要配置中打开关于QT的,否则会出现找不到库的错误。
$ petalinux-config -c rootfs
Filesystem Packages --->
misc --->
qtbase --->
[*] qtbase
// qt
[*] qtbase-plugins // qt 相关插件
其他动态库是否需要额外配置暂不清楚。
总结
使用此方法即可将文件打包进rootfs中,可以通过解压rootfs.tar.gz 查看文件系统的具体内容。
tar -vxf <plnx-proj-root>/project-spec/image/linux/rootfs.tar.gz
该方法只能一个文件一个文件的进行添加、打包,无法打包整个文件夹,需要打包大量文件的慎用。
更多推荐
所有评论(0)