Petalinux BSP使用中的问题及注意事项(持续更新)

来源:互联网 发布:Windows的tmp路径 编辑:程序博客网 时间:2024/06/07 23:05

相比从Xilinx官方网站上下载的u-boot源码包、linux源码包、设备树文件夹制作BSP的方式,Petalinux工具直接制作BSP有很大的改动。

1、之前应用程序是采用交叉编译链Xilinx ARM GNU/Linux Toolchain,使用Petalinux工具制作的BSP运行应用程序需要使用交叉编译链Xilinx ARM v7 GNU/Linux Toolchain

虽然差别不大,但是如果不进行改变会导致运行应用程序提示No such file or directory 的错误。

2、之前没有测试过pthread_exit()函数的运行情况,不过我模糊记得是可以运行,没有问题的。后面有时间再验证一下。但是使用Petalinux工具制作的BSP竟然说需要安装额外的库(也就是libgcc_s.so.1),查了一下,发现/lib与/usr/lib下果然都没有这个库。但是需要注意的是以这个名称命名的库版本众多。不是随便哪个就可以用的。我是到Xilinx SDK安装目录下搜索这个库,发现也不止一个,但是显然我很需要的是D:\Xilinx\SDK\2016.4\gnu\aarch32\nt\gcc-arm-linux-gnueabi\arm-linux-gnueabihf\lib下面的那个。把他拷贝到新BSP的文件系统的/lib目录下就可以了。


3、抱歉,我不是一个对技术感兴趣的人,对于科研项目中遇到的问题我总是用一些野路子去解决,有时候虽然解决了,但是自己也不知道原因何在,这叫做不知其所以然。就像2中所提到的,其实根本不正规。我们应该使用petalinux-config -c rootfs命令来配置linux文件系统中到底需要哪些库,我看了一下,居然有sqlite的库,这样很多库我们都不需要单独移植了,省了很多事,只需要在配置的时候将他们打上“*”号,编译进文件系统。就像libgcc_s.so.1这个库也有选项,我是选上了libgcc-xilinx和libgcc-xilinx-dev两个库,并且为了保险起见,我还修改了/home/bjut/petalinuxproject/bsp2017-zc702/project-spec/configs目录下的rootfs_config文件(后来经我验证,其实不需要修改),搜索和pthread相关的配置设置为“=y”,表示也编译进文件系统。


4、关于petalinux使用操作指南(UG1144),我不得不说里面有一些错误。但这次不是因为它本身的错误,我想让linux不输入密码自动登录,也就是PetaLinux Auto Login,参考UG1144,步骤都是对的,可编译一开始总是报错,错在EXTRA_IMAGE_FEATURES=”debug-tweaks”这条命令。原因是我是直接在PDF文件中将这条指令复制到了配置文件,其实应该手动输入,因为直接复制过去会有一些你看不到的编码错误。就像我们有时候使用IDE编写程序,经常会有一些空格造成编译失败,差不多一个道理。

我是添加在文档末的一个位置:

# Extra settings from environment:
MACHINE = "zynq-generic"
EXTRA_IMAGE_FEATURES="debug-tweaks"
UNINATIVE_CHECKSUM[x86_64] = '73acee29ce60a6c6385717d570e9f2b4f1aae7bb8fefddff8c0498161a1a8960'
include conf/plnxtool.conf


5、关于petalinux u-boot启动的时候BOOTP boardcast时间太长的问题,我一开始不知道居然可以直接用CTRL+C中断。后来我还是在u-boot配置中,也就是一开始使用petalinux-config命令的时候,将u-boot的IP地址设置为不自动获取,使用默认的192.168.0.10.(不要设置MAC地址随机获得,编译容易出错,我不知道什么原因。我目前是在设备树中指定MAC地址,这样会导致导致使用该BSP的所有主板的MAC地址相同,但暂时对我没有什么影响。)其他的选项都不需要修改。



6、目前看来像我这样已经做出一个版本的BSP,后面如果想要重新复用,在此基础上修改,主要涉及到/home/bjut/petalinuxproject/bsp2017-zc702/project-spec/meta-user目录下所有用户自己的配置。主要需要注意的是/home/bjut/petalinuxproject/bsp2017-zc702/project-spec/meta-user/recipes-kernel/linux目录下linux-xlnx_%.bbappend文件中补丁文件的路径和linux内核配置文件的路径。默认是没有补丁文件路径的,需要自己添加。(如果补丁文件以及内核配置项可以复用最好,直接复制过来,什么都不需要更改。)
注意:/home/bjut/petalinuxproject/bsp2017-zc702/project-spec/meta-user/recipes-apps下的应用工程需要新建,否则不会写入文件系统的编译配置。新建之后可以随意替换应用程序主文件夹下所有文件。


7、还有重要的一点就是设备树的修改。最好能够找到设备树的修改规则,找到对应开发板的官方样例设备树文件,进行对照修改。需要选择官方Peatlinux BSP工程,如果没有DTS文件,需要自己反编译DTB文件。


一些petalinux指令:

//新建petalinux工程
petalinux-create --type project --template zynq --name <PROJECT_NAME>
cd <plnx-proj-root>
petalinux-config --get-hw-description=<path-which-contains-hardwaredescription-file>

//创建petalinux Application
cd <plnx-proj-root>
petalinux-create -t apps --name lteconnect --enable
petalinux-create -t apps --name startup --enable

//local-mac-address = [00 0a 35 00 1e 53];

生成BOOT.BIN文件
petalinux-package --boot --fsbl <FSBL image> --fpga <FPGA bitstream> --u-boot


快速重启petalinux系统的指令为reboot -nf。如果没有加上-n的选项,有时候会重启失败。


Petalinux 中可以使用的时间服务器:(可以在petalinux BSP编译的时候配置文件系统的编译设置项,将ntpdate功能编译进去,默认只有rdate)

rdate -s -p time.nist.gov

rdate -s -p time.nist.gov

(-p和-s一起使用时只有-p生效,所以在进行实际时间设置的时候只使用-s选项)


0 0