写在前面
本文主要介绍了关于zynq的linux应用程序的开发,主要介绍了三种工程应用程序开发的方法,以及三种进行传输应用程序进行板卡验证的方法。
linux应用程序开发
Windows下建立linux工程
Ubuntu下的XSDK,在Windows下使用Xsdk基本大同小异,所以在该工程Windows下进行建立工程,打开sdk软件,然后进行新建项目。
配置文件路径和项目名称,所使用的OS平台选择linux,点击next,
可以选择空工程或者选择helloworld模板工程,这里可以默认模板工程进行建立,点击finish完成创建。 出现helloworld的文件表示工程创建完成。
Ubuntu下使用petalinux建立工程
进入到petalinux工程路径下,运行创建app工程命令:
petalinux-create -t apps -n linuxdemo --template c
上述命令表示建立一个工程名为linuxdemo,c 的模板工程。
执行完成后在终端中返回工程路径。
在上述文件夹中可以找到源文件,可以对源文件进行编写代码增加功能。
完成代码编写后,进行编译工程,使用build命令:
petalinux-build -c linuxdemo -x do_compile
上述命令表示对linuxdemo工程进行编译。
在下面路径下可以找到我们的编译后的可执行文件,
build/tmp/work/cortexa9hf-neon-xilinx-linux-gnueabi/linuxdemo/1.0-r0/
编译完成后可以远程拷贝执行文件到板卡上。
使用交叉编译进行工程开发
首先依旧是完成源代码的编写,这里就复制了模板工程里的helloworld的c文件,然后进行交叉编译。在petalinux工程目录下新建一个文件夹,将c文件拷贝到该文件夹下。
在Ubuntu的终端中,输入arm后点击两次tab键会出现和arm相关的交叉编译的工具,输入
arm-linux-gnueabihf-gcc linuxdemo.c -o demo
编译后输出了默认文件名,可以对输出文件进行指定命名。这里我指定命名为了demo,输出的可执行文件可以使用上面的几种方式在开发板上进行运行。
程序功能验证的途径方法
使用FileZilla传输访问
打开FileZilla,新建站点,
将elf文件复制到home/root路径下,
修改文件权限,使得elf可执行。
chmod a+x zynqlinux.elf
此时在终端中运行该程序将会打印hello world。
使用sdk进行DEBUG
对于linux的程序在sdk中也可以进行debug,在target TCF Agent,进行建立连接,双击 Linux Agent 。
修改主机地址,端口默认,连接前可以进行测试连接,
点击测试按钮,可看到测试成功建立连接。
关闭当前界面,再点击OK,即可建立连接。
右键项目名进行launch debug,
可以看到成功进入debug界面,方法和裸核开发类似。
scp命令进行远程拷贝
通过scp命令进行远程拷贝,将可执行文件从Ubuntu系统拷贝到开发板根文件系统。
在终端中输入下面指令 :
scp linuxdemo root@192.168.1.55:/home/root
提示是否继续输入yes,并输入root密码。可见传输已经完成,在板卡的linux系统上可以看到已经传输来的可执行文件:
挂载NFS网络文件系统
NFS网络文件系统:可以通过网络的方式进行远程挂载mount
在Ubuntu系统下搭建NFS文件系统,将可执行文件拷贝到NFS文件系统目录下,在开发板这端通过mount命令将Ubuntu系统的NFS文件系统挂载到开发板根文件系统目录下,这样就可以在开发板这端去访问到远程Ubuntu系统下的nfs文件系统,就可以直接运行可执行文件。
之前已经完成了NFS文件系统的搭建,先创建一个nfs目录,然后将可执行文件拷贝到之前的nfs目录下:
mkdir -p ~/server/nfs
终端中输入:
cp -a linuxdemo ~/server/nfs/
在开发板这端通过mount命令去挂载Ubuntu系统的NFS文件系统。
mount -t nfs -o nolock 192.168.1.128:/home/vuko/server/nfs /mnt
|