修改时间 01-23-2021 11:56 PM
My old project is built by SDK 2018.3,I mark sure this project is right,because I have programed it to my FPGA and my FPGA works well。 Now i want to migrate it to Vitis 2020.2, but there are some problems when i import project in Vitis 2020.2。I can't solve it。thank you for helping me and giving me some advice。
简单说是从SDK迁移到Vitis 2020.2老是报错,心态崩了,求帮助。
01-27-2021 08:07 PM - 编辑日期 01-27-2021 08:08 PM
问题已经解决了,成功从2018.3迁移到了2020.2。Vivado那边没什么问题,需要将用到的系统IP更新下,自定义IP再更新下,重新连线即可。
在Vitis中遇到的问题很多,首先新建新工程,将原本的src中文件拷贝过去,编译报错:ff.h No such file or directory。
这是因为我代码中使用了库函数xilffs,但我的domin中没有包含此函数,需要在BSP setting中勾选上xilffs。
然后再编译,继续报错too few arguments to function "f_mkfs"。此函数的参数太少。这个是因为这个程序之前是参考xilffs V3.7的,但在Vitis的BSP中xilffs的版本为V4.4,其中的一些函数更新了,所以原本正确的代码报错了,我查看了新的函数定义,给新多出的两个函数一个赋值""即空指针,另一个赋值0。事实证明这样做是OK的。然后再编译,继续报错undefined reference to ‘cabs’,undefined reference to ‘cos’,...
显然是数学库没有并包含在编译路径中,解决办法是右击工程,选择Properties,打开属性设置,在C/C++ Build -> Setting -> Tool Settings -> Libraries中点击+号,写一个字母m,确定即可。这就将math库路径添加到了编译路径中。
再次编译通过。
下载到板上发现程序正常。
问题解决!
修改时间 01-25-2021 10:09 AM
首先2018.3到2020.2是非常大的一个版本跨越。你这样导入基本上是无法成功的。
而且你导入的内容中还包含硬件平台。2018.3中使用的是hdf,而2020.2中使用的是xsa。2个文件从格式和结构都区别很大,所以不可行。
你要做版本升级,首先要升级的你硬件平台,也就是要先把你2018.3的vivado工程,升级成2020.2的vivado工程,然后用新的xsa文件在vivtis中生成硬件平台。
接着你可以创建empty application,然后你可以导入source code(不是工程),再重新编译。
01-25-2021 11:22 AM - 编辑日期 01-25-2021 11:24 AM
你好,我最初就是按照你说的方法,先用Vivado2020.2升级硬件,并生成xsa文件,然后在Vitis中新建硬件平台,然后新建空应用工程,再把原来SDK中的src中的文件导入进去。
但编译会出错。报错信息如下图:
这个ff.h在硬件平台的zynq_fsbl这个domin中,它在生成硬件平台时自动生成。但报的错是找不到这个文件。
我的疑问是是不是要导入这几个src文件?,或者除了导入src外是否还要进行其它操作?。
谢谢回复!
修改时间 01-25-2021 01:55 PM
看你的截图,有2个domain,你在创建application的时候选择的是哪个domain?
zynq_fsbl的domain一般是创建FSBL的时候用的,应用程序一般用的是standalone的那个domain。ff.h对应的是哪个IP的驱动,你可以在standalone下确认一下。
另外你build的时候,是右击application编译,还是点击software system编译?
修改时间 01-25-2021 04:05 PM
你好,在创建好硬件平台后,新建应用工程时,虽然有两个domain,但zynq_fsbl这个domain没有显示,无法选择,只能选择standalone这个domain。这个不知道是Vitis的bug还是什么,从左边的Explorer也可以看到,这个zynq_fsbl的domain和standalone这个doamin目录层级不一样 。
这是第一个疑问。另一个是,当我给standalone添加了xiffs和xilsa这两个Library后,在编译,选中工程,右键bulid project编译,还是会报错但错误信息不同了
Debug目录下的markfile如上图所示,修改markfile文件会提示,markfile是派生的,是否确认修改。
最后一个error是说f_mkfs的参数太少,我检查了一下发现,f_mkfs是5个参数的,然后我检查了我SDK的xilffs这个library的版本发现是3.7,而Vitis中的xilffs版本为4.4,一些函数改变了,所以原本OK的代码开始报错了。我能否将xilffs切换成3.7版本的?如何操作呢?
两个疑问,谢谢!
修改时间 01-25-2021 04:14 PM
如果看不到的话,应该是你在创建平台的时候,有勾选generate boot components。所以那个domain是用作自动生成boot用的fsbl的。
版本的话应该没法回退,即使你把bsp里的source code都替换掉,很可能3.7版本下依赖的一些其他函数也会不一样。
修改时间 01-25-2021 05:01 PM
目前没有直接转换的这类工具,只能一点点改改看。
“有没有什么兼容版本的库?”
如果只是函数名称变化的话,你可以用重定义的方式试试。
01-27-2021 08:07 PM - 编辑日期 01-27-2021 08:08 PM
问题已经解决了,成功从2018.3迁移到了2020.2。Vivado那边没什么问题,需要将用到的系统IP更新下,自定义IP再更新下,重新连线即可。
在Vitis中遇到的问题很多,首先新建新工程,将原本的src中文件拷贝过去,编译报错:ff.h No such file or directory。
这是因为我代码中使用了库函数xilffs,但我的domin中没有包含此函数,需要在BSP setting中勾选上xilffs。
然后再编译,继续报错too few arguments to function "f_mkfs"。此函数的参数太少。这个是因为这个程序之前是参考xilffs V3.7的,但在Vitis的BSP中xilffs的版本为V4.4,其中的一些函数更新了,所以原本正确的代码报错了,我查看了新的函数定义,给新多出的两个函数一个赋值""即空指针,另一个赋值0。事实证明这样做是OK的。然后再编译,继续报错undefined reference to ‘cabs’,undefined reference to ‘cos’,...
显然是数学库没有并包含在编译路径中,解决办法是右击工程,选择Properties,打开属性设置,在C/C++ Build -> Setting -> Tool Settings -> Libraries中点击+号,写一个字母m,确定即可。这就将math库路径添加到了编译路径中。
再次编译通过。
下载到板上发现程序正常。
问题解决!