前言
应用程序的编写,主要有两种方法。可以通过在终端中petalinux-create新建一个app,然后在里面编写,最后通过petalinux-build进行编译,但是这样会造成时间很长,并且调试起来会比较麻烦。这种方式适合编译一些比较小的app并且希望加入到文件系统里面的情况。在调试的阶段我推荐用下面的一种方式来进行开发应用程序,就是通过SDK来开发应用程序。这种开发方式的前提是可以通过网络远程登录到开发板上,如果不行,退而求其次通过串口登录到开发板也可以,但是会稍微麻烦,就需要通过某种方式将编译的可执行文件放到系统文件里面,可以是U盘,或者直接通过串口传输。
step1.远程登录目标板
首先将目标板跟PC保证在同一个网段下,我这里是192.168.31.8是PC,192.168.31.14是目标板,在ubuntu虚拟机下通过执行
ssh root@192.168.31.14
进行登录,再输入yes,然后输入你的目标板的登录密码,这里是root。
成功登录之后就可以远程操作目标板了。
注意:这里有可能下次登陆的时候出现以下的情况:
这时候可以将图片中红线的的地方复制下来在终端上输入,然后在正常登录就可以了。
step2.安装SDK,新建工程
确保登上去之后,我们需要在ubuntu下面安装SDK 2018.2具体的安装教程可以参考网上其他教程。安装完成之后打开SDK,指定一个workspace。
依次点击file->new->application project
按照如图所示设置app:
注意:这里的Linux System Root的路径是这样得到的。在之前的步骤中生成在petalinux的工程中,会用到petalinux-build来编译工程,在编译完成之后,就会的到image.ub。确保工程可以正常编译的情况下,通过执行:
petalinux-build --sdk
编译整个工程,编译完成之后,在执行:
petalinux-package --sysroot
后就可以在image.ub的目录下找到sysroot文件夹,这个文件夹就是上边路径的那个sysroot文件夹,再按照那个路径进行配置。
另外一个LinuxToolchain路径是安装petalinux2018.2的路径,如上图配置即可。
step3.编译工程
配置完成之后点击next,选择helloworld 在选择完成,就可以看到在SDK中新建的一个工程。完成之后会发现出现了许多的错误:
这是因为还没有设置连接导致的,通过右击工程,选择properties,在根据下图进行修改:
Linker FGlags就是之前填写的sysroot的路径,点击OK再编译就没有错误了。
编译生成的二进制文件在左侧的Binaries下面这个elf文件:
step4.在目标板上运行
编译完成之后如果想试验下,可以在ubuntu终端上先登录到目标板,然后通过执行:
scp wang@192.168.31.8:/home/wang/workspace/my_first_linux_app/Debug/my_first_linux_app.elf .
这样就把可执行文件拷贝到目标板了,在目标板上通过执行:
./my_first_linux_app.elf
可以看到执行成功了:
step5.单步调试,断点调试,debug
如果需要单步调试或者断点调试的话,要通过TCF-AGENT实现,首先在工程上右击,选择debug as->debug configration
显示连接成功即可
然后点击debug进入到debug的界面,之后就可以设置断点以及单步调试了。
总结
到这里就所有在应用程序开发之前的准备工作都已经做好了,总的来说就是通过SDK编写app,然后在板子上执行,观察效果,这个流程。
这里要说明几个需要注意的地方:
1.在每次修改完petalinux的文件系统,比如说增加文件,增加库等等,都需要重新执行petalinux-build --sdk 以及petalinux-package --sysroot来生成对应的sysroot,然后在你的app中引用这个路径,如果不重新生成,在编译的时候会说找不到库的链接。
2.编译sysroot会相对来说耗费很长时间,请耐心等待,这个跟网络也有一定的关系。
联系方式:839089604@qq.com