fmql入门之对标zynq差异(1)

在看官方的入门教程(APPN101),发现软件不同带来的操作差异还是有一些的,记录一下在调试/移植代码过程中的问题。

芯片型号

zynq7020clg484-2

fmql20s484m

第一个大坑就是芯片型号带来的,找了几天问题都没找到原因。后来看了一下官方jfmql20型号的操作,修改了一下型号,就可行了:

在Procise端调试PS,因为用到EMIO,所以需要烧写来自vivado的bit,但是一直Program失败。

后来发现是在新建procise工程时芯片型号选择错误:不能选择芯片上写的fmql20s484m,而要选择fmql20s484!!!!虽然它识别出的芯片型号是jgmql20(但这不影响烧写bit)

就emmmm。。。。

PL打补丁

对于PL端的烧写和调试,首先需要给vivado打补丁(只要是用到了PL端的资源,就要对vivado打补丁!!)

虽然推荐vivado2018版本,但是目前用的2015版本还可以。不知道后续会不会有什么影响。

此外,vivado操作也有一些改变:

要对所有(所有的!!)的IP进行以上3个步骤的操作。其中,第二个步骤需要选择:

然后在constraints后就可以Generate Bitstream。

AXI

用到AXI的话,需要vivado下bit gen,然后打开SDK,在system.hdf查看AXI相应的地址(!!)。

然后new project(因为IAR要用到bsp中的一些驱动文件,如果要移植程序的话)。

添加驱动文件

.c和.h

(仅GPIO配置)

不出意外地报错了:

https://wenku.baidu.com/view/63eda3f20166f5335a8102d276a20029bc646343.html?_wkts_=1715238989457&bdQuery=Error%5BLi005%5D%3A+no+definition+for+%22XGpio_DisCreteWrite%22+%5Breferenced+from+D%3A%5CHe

IAR 解决 Error[Li005]: no definition for...._iar编译中no definition for-CSDN博客 

IAR相关问题_error while running linker-CSDN博客 

请教 IAR 下出现“Error while running Linker ” 这个问题的原因 (amobbs.com 阿莫电子技术论坛) 

然后就是根据网上内容的各种配置:

 

USE_STDPERIPH_DRIVER

头文件中添加以下:

#ifdef __cplusplus
extern "C" {
#endif

//。。。

#ifdef __cplusplus
}
#endif

都不行。

果然是却函数定义(xil_assert.h中声明了,但是没有.c文件)

我以为只是Add gpio文件夹下的.c和.h就行,结果看官方例程模板:

好家伙。。。这个问题我花了两天。。。

然后就报别的错了:

Fatal Error[Pe1696]: cannot open source file "xpseudo_asm_iccarm.h" 

D:\...\SDK\design_1_platform\FM_QL_bsp\pl\include\xpseudo_asm.h

官方例程中pl下的include文件夹中有 ,但是自己的pl下却没有。

(为什么?vivado生成的SDK bsp包的驱动文件不一样?)

拷贝到include下面后报了别的错:

在xgpio_l.h中修改:

//#include "xil_io.h"
#include "fmsh_common_io.h"

#define XGpio_In32(addr) FMSH_ReadReg(addr, 0x0)

#define XGpio_Out32(addr,data) FMSH_WriteReg(addr, 0x0, data)

然后Rebuild All

终于没报错了!!!撒花!!!!

接下来要考虑的是,如何把自己现有的vivado工程导入到IAR里(xgpio头文件等与上述文件并不相同)e.g:

xgpio.h           <-->             xgpio_ps.h

反思

发现自己不够踏实。

不会看error。每次一遇到error就烦,想着“为什么不能像别人一样顺顺利利“,”为什么模板就没有错”等等。然后一遇到error就上网搜(这并没有错),而忽略了自己对error的理解。

比如像今天的"no definition of ...",有两种原因:

1.没有添加相应的头文件(.c / .h)

2.添加了但是工程没有识别

我就想当然的认为不是1(太过自信,认为已经添加了所有需要的头文件),然后一直在网上找2.

结果反而是很简单的错误。

包括芯片型号设置也是。(虽然并没有想到居然和芯片表面刻的不一致)

很多时候出的问题,是很简单的,很基础的,但是很细致的,需要静下心,沉下心,踏踏实实的从最简单的地方排查。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值