版权声明:本文为CSDN博主「黄铚聪」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/huangzhicong3/article/details/120711070
Vitis AI:编译PetaLinux 踩坑汇总
最近开发的项目要用到zcu106,之前没怎么接触过嵌入式开发,结果在配置的过程中踩了不少坑,这里做个记录,也希望能给其他人做个参考。
磨刀不误砍柴工,朋友们在开始前建议大致了解下petalinux,b站有个系列的视频可以快速过一遍:视频
Petalinux下载和安装
petalinux只能在ubuntu 系统安装,安装包能够直接在官网下载,这里有个坑:petalinux的版本和vitis/vivado的版本需要保持一致,否则使用起来会有问题,我用的都是2019.2版本,可以直接在官网下载。
安装的话参考官网的指南就行,注意指南有英文版和中文版,中文版的版本会低一些(估计是翻译的原因):
这一步的安装比较简单,我在安装的时候没出现问题,需要注意的是petalinux指定了系统版本,在安装之前最好先检查下,不要有太大的偏差(我的电脑是Ubuntu18.0.4.4,2019.2版本petalinux推荐的是Ubuntu18.0.4.2,虽然有一点偏差,但最后也没发现什么问题)
2019.2 版本的petalinux对OS的需求:
Petalinux的使用
安装完毕,此时一般可以正常使用petalinux工具了。
在使用的过程中,我发现petalinux-build非常不稳定,时不时出现卡死的情况,搞来搞去非常耗费时间,原因在于:petalinux在编译系统的过程中,需要从网络上下载一些软件包,而这些包很多来自国外网站(罪魁祸首github),所以在编译的时候很容易遇到网络不稳定、连接超时的情况。
为了缓解这种情况,xilinx也提供了一个软件库sstate-cache,有一些常见的软件包,配置好后可以直接从本地拷过来安装,不用每次都等待下载,可以提高build的速度和稳定性,此处强烈推荐看下这个大佬的博客: 整合Xilinx PetaLinux工程编译和Open Source U- Boot/Linux编译
上面博客里讲了很多加速编译的tips,本人比较偷懒,只按照4.1和4.2进行了配置,但是效果已经非常让我满意
如果你是新手的话,可以跟我一样只配置这点即可。
Petalinux 错误和解决方法
前面说到Petalinux会自动从网络上下载需要的软件包,你有想过是怎么下载过来的吗??
Yocto
万恶的是Yocto本身不提供软件包的下载,而是给你提供一个下载链接,链接到五花八门的网站,同时帮你写好解压缩、设置、编译的脚本,这些脚本的后缀为 .bb(bitbake的缩写)
类似于这样的文件:
Petalinux编译遇到的错误
我在编译过程中一直失败的是两个库,glog和bind,经过查看petalinux提供的bb文件,发现glog使用的版本是0.3.5, bind使用的是bind9.11.3,。
其中,bind(bind9)一直提示configure失败:
ERROR: This autoconf log indicates errors, it looked at host include and/or library paths while determining system capabilities.
ERROR: Function failed: do_qa_configure
另一个报错的包是glog,在do_fetch阶段一直提示找不到软件包,分析了原因,glog 的软件包是从git上clone下来的,然后petalinux自带的glog.bb文件中切换的分支v35找不到。
看了各种各样的博客,都没有找到办法解决问题。
而这两个包的报错直接导致无法正常编译。
问题的解决
血的经验:当某个版本的软件configure或编译失败的时候,请优先尝试更换低版本的软件包。
在各种徒劳的尝试过后,我决定:这个版本不行,换个版本试试。
但是与之而来的是另一个问题,怎么才能正确更换版本呢?
前面提到,软件包的下载依赖于petalinux提供的一系列 .bb文件,因此更换版本需要从这个文件入手。
下面的网站非常有用:
http://git.yoctoproject.org/cgit.cgi/poky/
这个网站的用途是提供了各种版本、各种软件的 .bb 文件,也就是说你只要从这个网站上下载你
需要的软件和需要的版本,替换掉petalinux自带的版本就行。
我从网站找到了bind其他版本的 ** .bb** 文件
再找到petalinux 存放bind.bb 的目录
{$petalinux}/components/yocto/source/aarch64/layers/core/meta/recipes-connectivity/bind/
把原有的bind文件夹备份后替换掉,再次petalinux-build,就能顺利通过了:)
同理,对glog也进行同样的操作,当前版本无法正常配置的话,下载另一个版本即可。
另外,在搜索的过程中还找到一个网站:https://patchwork.openembedded.org/,可以下载到修复bb文件的补丁patch,但是总体来说还是更换版本最直接、最简单。
DPU运行效果展示
根据官方提供的dpu配置流程,在zcu106开发板上搭建了DPU和系统镜像
下面是运行的可视化效果:
1. 分割算法(视频)
2. 路面监控video分析(视频)
3. 姿态检测(视频)
4. resnet50(图片)