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

news/2025/1/16 5:52:26/

在看官方的入门教程(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.

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

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

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


http://www.ppmy.cn/news/1458759.html

相关文章

MinimogWP WordPress 主题下载——优雅至上,功能无限

无论你是个人博客写手、创意工作者还是企业站点的管理员&#xff0c;MinimogWP 都将成为你在 WordPress 平台上的理想之选。以其优雅、灵活和功能丰富而闻名&#xff0c;MinimogWP 不仅提供了令人惊叹的外观&#xff0c;还为你的网站带来了无限的创作和定制可能性。 无与伦比的…

【ROMA核心特性数据、服务、消息、设备集成及统一运维】

1、数据集成 FDI旨在解决多种数据源的快速灵活集成能力&#xff0c;您可以在任意时间、任意地点、任意系统之间实现实时数据订阅和定时增量数据迁移。 &#xff08;1&#xff09;数据集成任务的生命周期管理 &#xff08;2&#xff09;FDI支持修改数据集成任务的信息、查看数…

初学者必知:ARM与单片机的区别

在开始前我有一些资料&#xff0c;是我根据网友给的问题精心整理了一份「ARM的资料从专业入门到高级教程」&#xff0c; 点个关注在评论区回复“888”之后私信回复“888”&#xff0c;全部无偿共享给大家&#xff01;&#xff01;&#xff01;ARM和单片机之间有许多区别&#…

Docker与Harbor:构建企业级私有Docker镜像仓库

目录 引言 一、本地私有仓库 &#xff08;一&#xff09;基本概述 &#xff08;二&#xff09;搭建本地私有仓库 1.下载registry镜像 2.启动容器 3.上传本地镜像 4.客户端下载镜像 二、Harbor简介 &#xff08;一&#xff09;什么是 Harbor &#xff08;二&#xff…

太速科技-FMC377_双AD9361 射频收发模块

FMC377_双AD9361 射频收发模块 FEATURES&#xff1a; ◆ Coverage from 70M ~ 6GHz RF ◆ Flexible rate 12 bit ADC/DAC ◆ Fully-coherent 4x4 MIMO capability, TDD/FDD ◆ RF ports: 50Ω Matched ◆ support both internal reference and exter…

Vue2——前端笔记

Vue 一、Vue核心1.1、vue简介1.2、初始vue1.3、模板语法1.4、数据绑定1.5、el与data的两种写法1.6、MVVM模型1.7、Vue中的数据代理1.7.1、Object.defineProperty() 理解1.7.2、Vue中的数据代理 1.8、事件处理1.8.1、事件的基本用法1.8.2、事件修饰符1.8.3、键盘事件 1.9、计算属…

Qt窗口及QWidget类详解

QtWidgets 模块及窗口基本概念 QWidget 类是所有用户界面对象的基类,QWidget 及其子类是开发桌面应用的核心,这些类都位于 QtWidgets 模块内,注意:QtWidgets 是模块,QWidget 是类(少一个字母 t 和最后的 s)。 部件或窗口部件:Qt 把建立用户界面的元素称为窗口部件(widg…

Java Jackson-jr 库使用介绍

介绍 Jackson-jr 是一个轻量级的Java JSON 处理库。这个库被设计用来替代 Jackson 的复杂性。对比 Jackson 的复杂 API&#xff0c;Jackson-jr 的启动速度更快&#xff0c;包大小更小。 虽然Jackson databind&#xff08;如ObjectMapper&#xff09;是通用数据绑定的良好选择…