vivado
Huskar_Liu
这个作者很懒,什么都没留下…
展开
-
VIVADO SDK中驱动VDMA(standaloneOS)
生成的工程中,可以在BSP中找到VDMA的驱动代码。其中的xaxivdma.h是总的头文件,其中定义了各种参数,xaxivdma_hw.h是硬件相关的定义,定义了各个寄存器的offset,各个bit位的mask,并给出了各个基础宏的alias宏别名,以及各个基础宏拟函数的encapsulation,宏拟函数的再封装,形成宏拟函数别名。+++++++++++++++++++++++++++++++++++++++++++xaxivdma.h解析。...原创 2021-09-14 14:00:31 · 1752 阅读 · 0 评论 -
VIVADO SDK 中驱动VTC(standaloneOS)
生成的工程中,可以在BSP中找到XVTC的驱动代码。其中的xvtc.h是总的头文件,其中定义了各种参数,xvtc_hw.h是硬件相关的定义,定义了各个寄存器的offset,各个bit位的mask,并给出了各个基础宏的alias宏别名,以及各个基础宏拟函数的encapsulation,宏拟函数的再封装,形成宏拟函数别名。+++++++++++++++++++++++++++++++++++++++++++++++++++xvtc.h解析。1)XVTC_VMODE_*定义了各种VMODE对应的参数值原创 2021-09-10 15:16:35 · 1235 阅读 · 0 评论 -
VIVADO SDK 如何获取帮助(retarget hdf)
https://www.xilinx.com/html_docs/xilinx2019_1/SDK_Doc/index.html或者help->help content,找到自己需要了解的内容。++++++++++++++++++++++++++++++++++++++++++++++++++++++找到retargeting a BSP for a New Hardware Platform原创 2021-09-10 10:18:15 · 340 阅读 · 0 评论 -
VIVADO中关联ELF和BIT文件
FPGA程序固化下载流程:1、vivado中生成XXX.bit文件。2、Export Hardware platform,打开SDK\Tools\program FPGA,在software configuration项目下microblaze_0加载…\debug\XXX.elf。3、vivado下,打开tools/associate ELF files,在design sources/microbaze_0下加载…\debug\xxx.elf文件,4 vivado下,生成新的XXX.bit文件。原创 2021-08-25 10:36:10 · 6545 阅读 · 0 评论 -
VIVADO使用TCL建立工程
1(a).把工程保存成.tcl文件tcl: write_project_tcl c:/vivado_project/pro.tclgui: File->Project->Write tcl…,然后选择tcl路径即可。注意:最好把.tcl中列出的依赖文件(.v, .sdc, .wcfg等)拷贝到.tcl文件的目录下,然后在.tcl文件中修改这些文件的路径,这样整个工程就可以分发了,无需依赖原工程。1(b).用.tcl生成工程tcl命令:cd c:/vivado_projectsour原创 2021-08-12 10:00:09 · 6131 阅读 · 0 评论 -
sdk2019.1无法编译microblaze
win10下,用sdk2019.1编译microblaze时,出现error,createprocess,no such file ,经过研究发现,是gcc工具出了问题。2019.1使用的8.2.0,2018.3使用的7.3.1,均会出问题。但是使用2017.4或者2017.3,不会出问题,使用的是6.2.0。解决方法:懒人版:删除D:\Xilinx\SDK\2019.1\gnu\microblaze,整个文件夹。安装一个2017.3或者4,找到D:\Xilinx\SDK\2017.4\gnu原创 2021-06-23 17:05:38 · 1067 阅读 · 0 评论 -
vivado打开ip status
The Tools -> Report -> Report IP Status menu option was incorrectly removed in Vivado 2016.1.In order to generate the report, you can run the following Tcl command in the Tcl console:report_ip_status -name ip_status原创 2021-06-04 11:18:59 · 1440 阅读 · 0 评论 -
xsim不是内部或外部命令
运行仿真时,bat文件中的xsim无法启动,提示不是内部命令,解决办法,在环境变量中添加。path中,添加,D:\Xilinx\Vivado\2019.1\bin原创 2021-05-08 14:34:56 · 575 阅读 · 0 评论 -
vivado 和 modelsim联合仿真
1)打开一个vivado工程,2)原创 2021-04-15 12:02:57 · 1932 阅读 · 1 评论 -
zedboard第二十四课(standaloneOS , BSP DEVICE DRIVER ,API模块架构)
gpio,16intr,19timer, 30qspi, 34,35sdio, 40数据抽象,数据封装整合,常数数据化,符号化,函数内禁止使用硬数字,使用宏,最好使用结构体对象的成员,更好的是,使用API获取结构体对象的数据值。数据与函数分离,数据访问函数化,符号化,操作与控制分层,功能与操作分层,...原创 2020-06-01 17:45:50 · 339 阅读 · 1 评论 -
zedboard第二十三课(standalone, Event driven System , RTOS)
在standaloneOS的应用中,只有一个主线程,就是main函数。它是后台进程的入口函数。而各种中断服务函数ISR,就是前台进程的函数。我们知道,Callback是运行在前台的,而main是云心在后台的。这里,简单介绍前后台程序架构。front and rear stage,即前后台结构。front stage 负责的是event response。rear stage 负责的是task process。从这个角度讲,ISR是front stage,因为中断负责响应事件,具体的行为就是se原创 2020-05-11 00:01:10 · 356 阅读 · 0 评论 -
ZEDBOARD运行AMP总结
(1)参考XAPP1078,修改FSBL,加入DUMMY。修改FSBL,支持load多个elf,直到遇到标志LOAD地址后,停止load,并返回。之后运行SSBL。(2)参考UG1186,使用openAMP。在linux中支持RPMSG,使得linux在CPU0上面启动后,由linux加载CPU1所需要的elf,并由linux启动CPU1。(3)参考XAPP1079,下载repo,并放置到...原创 2019-04-26 20:55:45 · 1187 阅读 · 0 评论 -
zedboard第二十二课(standaloneOS,LWIP,协议栈分层,数据结构)
本例以LWIP为例,学习LWIP的数据结构。LWIP经过分层之后,每一层函数所需要使用的数据结构都是不同的。在硬件访问层,最关键的结构体是struct netif。struct netif { /** pointer to next in linked list */ struct netif *next; /** IP address configuration in net...原创 2020-05-06 23:02:00 · 344 阅读 · 0 评论 -
zedboard第二十一课(standaloneOS,LWIP,协议栈分层调用)
本例以LWIP为例,学习LWIP的设计思想和程序架构。先看看数据包是怎么被LWIP处理的。while (1) { if (TcpFastTmrFlag) { tcp_fasttmr(); TcpFastTmrFlag = 0; } if (TcpSlowTmrFlag) { tcp_slowtmr(); TcpSlowTmrFlag = 0; } x...原创 2020-05-06 20:36:42 · 862 阅读 · 0 评论 -
zedboard第二十课(Multi-Layer Data Processing)
协议栈是最常见的Multi-Layer Data Processing的程序架构。本例以LWIP为例,学习LWIP的设计思想和程序架构。首先要清楚,协议栈是如何运行的。协议栈不是由用户程序调用的。而是由中断ISR调用的。所以,协议栈是和用户APP复用CPU的。甚至协议栈的每个Layer都是复用CPU的,更甚至协议栈的每个Layer的每个Department都是复用CPU的。在一个Mult...原创 2020-05-06 11:31:35 · 264 阅读 · 0 评论 -
zedboard第十九课(standaloneOS,Interrupt专题,PL_PS中断)
GIC掌管整个中断系统原创 2020-05-03 14:07:45 · 418 阅读 · 0 评论 -
zedboard第十八课(standaloneOS,Interrupt专题,TIMER中断)
TIMER中断和GPIO中断,大体流程是一样的。在此不再赘述。原创 2020-05-03 10:32:55 · 343 阅读 · 0 评论 -
zedboard第十七课(standaloneOS,Interrupt专题,GPIO中断)
我们知道,GIC掌管整个中断系统,那么standaloneOS究竟又是怎么执行中断的呢?一切的起点,起始于vectors,位于standalone_v6_5/src/asm_vectors.S文件中。.section .vectors_vector_table: B _boot B Undefined B SVCHandler B PrefetchAbortHandler B Da...原创 2020-05-03 00:47:31 · 1496 阅读 · 0 评论 -
zedboard第十六课(弹琴法控制OLED的GPIO)
OLED驱动,最原始的方式就是,把OLED的引脚以S_AXI_GPIO的方式连到引脚上,这样,PL实现的功能最简单,时序由PS来生成。这是RAW_TIMING的方式。在RAW_TIMING的方式下,CPU用函数的形式,数节拍来生成时序,在特定的时机,控制GPIO,改变GPIO的状态,函数返回时,一段时序就结束了。一般成为“弹琴法”,就好像照着乐谱,按节奏弹奏钢琴一样。适合使用弹琴法的应用,必须...原创 2020-04-29 17:21:31 · 387 阅读 · 0 评论 -
zedboard第十五课(BSP, standalone OS)
standalone可以理解成一个小型的OS,它是BSP的核心部件。实现low_level的初始化和操作,其他外设的底层操作,都是基于standalone OS所提供的函数来实现的二次封装。Boot.S进行ASM级初始化,之后,会Handoff到main的入口。main是APP中的主函数。standaloneOS中,实现了基本操作。例如,sleep,read,write,print,xil_...原创 2020-04-26 13:32:01 · 885 阅读 · 0 评论 -
zedboard第十四课(SD卡,FAT32读写)
SDK的standalone已移植好了FatFs库(SDK中叫做xilffs),所以在BSP中添加xilffs库后就可以在程序中使用FatFs中各API来操作SD卡,该库支持FAT12, FAT16 FAT32 and exFAT文件系统(本例将SD卡格式化为FAT32)。打开BSP中的system.mss,可以修改BSP的配置信息。我们选中xilffs这个lib,并在左侧选项卡中,对这个li...原创 2020-04-24 18:31:26 · 1104 阅读 · 0 评论 -
zedboard第十三课(standalone,QSPI读写API)
D:\Xilinx\SDK\2017.4\data\embeddedsw\XilinxProcessorIPLib\drivers\qspips_v3_4\examples文件夹中,是一些standalone操作PS端的QSPI的例子。我们使用xqspips_g128_flash_example.c这个驱动样本。其实就是一个驱动模块了。其中的函数,是基于BSP进行二次封装后的一些操作函数,用来...原创 2020-04-24 16:16:39 · 435 阅读 · 0 评论 -
zedboard第十二课(DataMover)
生成AXI外设IP时,可以选择AXIS,就是STREAM接口了。STREAM接口,类似于FIFO。AXIS_MASTER,负责控制内部STREAMBUFFER的ReadPointer(RP)和WritePointer(WP),所以,AXIS上,不需要使用地址。对于AXIS_Slave,利用ready来相应,也就是告知master,当前数据已经被取走。对于AXIS_Master,利用vali...原创 2020-04-24 14:08:43 · 2197 阅读 · 0 评论 -
zedboard第十一课(XADC)
官方文档[1].Xilinx UG480: 7 Series FPGAs and Zynq-7000 AllProgrammable SoC XADC Dual 12-Bit 1 MSPS Analog-to-Digital Converter User Guide[2].Xilinx UG772: LogiCORE IP XADC Wizard User Guide[3].Xilinx P...原创 2020-04-23 22:05:25 · 1601 阅读 · 0 评论 -
zedboard第十课(FSBL裸跑,无DDR的应用)
运行裸FSBL,不要DDR,并且也不跳转到SSBL,即UBOOT。直接在FSBL中加入用户的应用程序的代码,这样,就可以在没有DDR的环境下,运行PS。但是限制条件是,FSBL不能超过192K,从而保证OCM可以容纳FSBL的运行。需要在FSBL的源代码中做相应的修改。首先,要去除DDR读写检查的代码。在main.c文件中。#if 0 Status = DDRInitCheck(); i...原创 2020-04-23 20:34:35 · 1115 阅读 · 1 评论 -
zedboard第九课(LWIP standalone)
standalone的BSP,提供了LWIP141的源代码。对于APP来说,只需要关注LWIP的API函数即可。NEWAPP中,LWIP ECHO SERVER这个工程样例,给我们搭建了使用LWIP的TCP服务的基本框架。我们基于这个框架进行情景分析。整个工程基于RAW API来编写,所以是单进程的,但是仍然需要中断系统的支持,因为接收数据包,需要外设中断,然后在中断ISR中进行处理。当外设...原创 2020-04-22 19:19:00 · 1097 阅读 · 0 评论 -
zedboard第八课(ISR,Callback,Timer,PS_PL_Interrupt, Dual_Core_Interrupt)
standalone,提供了各个模块的中断响应机制。风格和架构上,和linux接近,SOD设计思想。Struct Oriented Design,SOD可以理解为是OOD的雏形,或者是OOD在C语言框架下的变通方式。IRQ的使用,基于注册制的设计思想,如同linux中驱动的注册。实现方式,就是利用指针,标记所需的资源,例如struct或者function entry。先来看看整体框架。无...原创 2020-04-21 15:08:14 · 625 阅读 · 0 评论 -
zedboard第七课(IOMEM映射,将BRAM映射到AXI地址空间)
VGA的HSYNC和VSYNC,调整的是像素的位置,或者说,是framebuffer中的数据指针。Hsync,将数据指针复位到行首,Vsync,将数据指针复位到帧首。接收数据时,每一个时钟到来,数据指针会加一。如果没有HSYNC和VSYNC调整指针位置,将无法对像素数据实现定位映射。VGA驱动模块,分为几个部分来实现逻辑。第一部分,是控制逻辑生成,即HSYNC和VSYNC。用counter即...原创 2020-04-20 20:51:35 · 692 阅读 · 0 评论 -
zedboard第六课(基于reg通信的S_AXI)
基于REG传递数据的S_AXI外设,主要是在VIVADO生成的模板代码中,添加用户的逻辑代码。PS侧通过AXI向PL侧写寄存器时,写入的数据被存放在slv_reg[N:0]中。用户逻辑可以监测PS侧的AXI的写入操作,并生成需要的指示信号。例如:assign slv_reg_wren = axi_wready && S_AXI_WVALID && axi_aw...原创 2020-04-16 21:36:32 · 433 阅读 · 0 评论 -
zedboard第五课(MIO,EMIO,IRQ)
MIO是接PS侧的固定引脚,不用在XDC中约束。EMIO是PS侧扩展到PL侧的,如果PL侧要引出到PAD上,就需要在XDC中约束。PS侧将EMIO扩展到PL侧,是通过在BD中引出三组引脚实现的。分别是:tri_i_[N:0], 表示从PL侧传送给BD中的PS的信号。tri_o[N:0], 表示从BD中的PS,传送给PL侧的信号。tri_t[N:0],表示从BD中的PS,传送给PL侧的控...原创 2020-04-16 21:35:14 · 678 阅读 · 0 评论 -
zedboard第四课(VIO)
VIO这个IP,用于PL侧的开发,可以虚拟出输入和输出。用作调试时的模拟激励源。(数字常量的激励)原理上,基于JTAG通信,类似于PLC的运行机制。VIO内部,有一些寄存器,用于记录JTAG下发的InputProbe和OutputProbe的状态。输入到VIO的数据,显示方式可以是TEXT方式,也可以是LED方式。推荐用TEXT方式。反键切换显示方式。从VIO输出到其他逻辑模块的数据,显示方...原创 2020-04-16 21:31:17 · 209 阅读 · 0 评论 -
zedboard第三课(Create IP)
Create and Package IP ,本质上,就是把当前的TOP文件,抽象出一个Module。并且把所需要的所有文件,分别放在相对应的子文件夹中。并将所有的子文件打包成ZIP文件。当其他的project要用到这个IP时,就找到这个ZIP文件,抽取出其中所需的文件。它改变了用户的调用习惯,以前用户是自行管理子模块代码,并用手工例化的方式,使用verilog代码。代码需要用户自行管理版本,...原创 2020-04-16 21:30:14 · 354 阅读 · 0 评论 -
zedboard第二课(BlockDesign,SDK,BOOT.BIN)
BoardDesign时,MakeExternal命令,相当于一次实现了两个关联的命令,CreatePort和MakeConnect。如果使用了AXI总线,那么必须在AddressEditor中,对每个Endpoint进行地址关联。右键选择AssignAddress即可。注意:VIVADO里面,很多命令只能通过右键进行访问,而不能从主菜单中进行访问。Export Hardware是必须的,不...原创 2020-04-16 21:25:28 · 778 阅读 · 0 评论 -
zedboard第一课(BootMode)
如果是SD卡启动,那么MIO 6: set to GNDMIO 5: set to 3V3MIO 4: set to 3V3MIO 3: set to GNDMIO 2: set to GND如果是eMMC启动,那么MIO 6: set to GNDMIO 5: set to 3V3MIO 4: set to GNDMIO 3: set to GNDMIO 2: set to...原创 2020-04-16 21:21:51 · 725 阅读 · 0 评论 -
利用SDK生成bootbin
windows环境SDK打包 1 如果烧到SD卡,output format选BIN,如果是到FLASH,就选MCS。 2 add partition时,对于BL31,type要选择datafile,CPU选A530,注意这里要勾上ENABLE TRUST ZONE,EL选EL3. 3 添加fsbl,pmu,不多说 4 添加u-boot,也是要选择type为datafile,但是这里不能勾...原创 2018-06-27 12:56:55 · 2617 阅读 · 0 评论 -
VIVADO2017.4无法下载QSPI解决方案
QSPI FLASH 下载,分析说明。从官方的文档中,经过分析和实际操作,总结以下信息。(1)“指定fsbl”文件修改根据文档说明,从VIVADO 2017.3版本开始,Xilinx官方为了使Zynq-7000和Zynq UltraScale +实现流程相同,在QSPI FLASH使用上做了变化,即Zynq-7000编程flash需要“指定的fsbl”。这个fsbl用于初始化系统(主要是运行...原创 2019-03-21 19:24:34 · 4613 阅读 · 4 评论 -
命令行方式生成BOOT.BIN文件
命令行形式生成BOOT.BIN,一方面是不打算启动SDK的情况下生成,另一方面,是给生产人员或者非软件人员使用。需要如下必要工具和文件。(I)BOOTGEN.exe,这个从安装SDK的目录下拷贝出来。(II)makeboot.bat,这个用TXT编辑器编写。包含如下:bootgen -image GUI2.bif -o i boot.mcs -w onbootgen -image GU...原创 2019-03-26 10:30:26 · 3897 阅读 · 0 评论 -
zynq fsbl启动调试开关(vivado SDk)
在fsbl/src/fsbl_debug.h中添加#define FSBL_DEBUG_INFO打开fsbl中所有的调试信息,启动过程中会有各种调试信息打印出来,这样就会很容易知道启动具体卡在哪个位置。(打印的信息一般显示在串口工具如putty)...原创 2019-03-29 13:10:27 · 3418 阅读 · 1 评论 -
Vivado SDK下生成DTS
参考Xilinx Wiki上的一篇教程http://www.wiki.xilinx.com/Build+Device+Tree+Blob,我们可以轻松创建需要的设备树。首先下载device tree generator,安装到SDK直接下载压缩文件:https://github.com/Xilinx/device-tree-xlnx/releases将解压的device-tree-xlnx...原创 2019-04-09 11:19:18 · 2068 阅读 · 0 评论 -
SDK中设置静态链接
交叉编译环境以及开发板上-/bin/sh: ./hello: not found(使用arm-linux-gcc -static -o 来进行静态编译)chmod +x hello 执行./hello这时,报错:-/bin/sh: ./hello: not found 问题定位到动态链接库上 于是在主机上用arm-linux-gcc -static -o 来进行静态编译.然后将新产生...原创 2018-06-29 16:05:11 · 484 阅读 · 0 评论