- 博客(17)
- 资源 (3)
- 收藏
- 关注
原创 zedboard第十六课(弹琴法控制OLED的GPIO)
OLED驱动,最原始的方式就是,把OLED的引脚以S_AXI_GPIO的方式连到引脚上,这样,PL实现的功能最简单,时序由PS来生成。这是RAW_TIMING的方式。在RAW_TIMING的方式下,CPU用函数的形式,数节拍来生成时序,在特定的时机,控制GPIO,改变GPIO的状态,函数返回时,一段时序就结束了。一般成为“弹琴法”,就好像照着乐谱,按节奏弹奏钢琴一样。适合使用弹琴法的应用,必须...
2020-04-29 17:21:31 387
原创 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
原创 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 1105
原创 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
原创 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 2198
原创 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
原创 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
原创 关于xilinx的CCIO(续)
CCIO 到各种时钟缓冲器(BUFR,BUFG,BUFMR,MMCM等等)之间,存在时钟专用布线。但是GPIO到这些BUF,是没有时钟专用布线的。这些GPIO只能连接到Fabric,如果程序中配置了GPIO输入的信号作为时钟使用,那么只能通过GPIO->Fabric->BUFG来实现。此时,我们要加上熟悉的CLOCK_DEDICATED_ROUTE=FALSE。同时我们也知道,Fabr...
2020-04-22 12:04:53 934
原创 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
原创 zedboard第七课(IOMEM映射,将BRAM映射到AXI地址空间)
VGA的HSYNC和VSYNC,调整的是像素的位置,或者说,是framebuffer中的数据指针。Hsync,将数据指针复位到行首,Vsync,将数据指针复位到帧首。接收数据时,每一个时钟到来,数据指针会加一。如果没有HSYNC和VSYNC调整指针位置,将无法对像素数据实现定位映射。VGA驱动模块,分为几个部分来实现逻辑。第一部分,是控制逻辑生成,即HSYNC和VSYNC。用counter即...
2020-04-20 20:51:35 692
原创 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
原创 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 680
原创 zedboard第四课(VIO)
VIO这个IP,用于PL侧的开发,可以虚拟出输入和输出。用作调试时的模拟激励源。(数字常量的激励)原理上,基于JTAG通信,类似于PLC的运行机制。VIO内部,有一些寄存器,用于记录JTAG下发的InputProbe和OutputProbe的状态。输入到VIO的数据,显示方式可以是TEXT方式,也可以是LED方式。推荐用TEXT方式。反键切换显示方式。从VIO输出到其他逻辑模块的数据,显示方...
2020-04-16 21:31:17 209
原创 zedboard第三课(Create IP)
Create and Package IP ,本质上,就是把当前的TOP文件,抽象出一个Module。并且把所需要的所有文件,分别放在相对应的子文件夹中。并将所有的子文件打包成ZIP文件。当其他的project要用到这个IP时,就找到这个ZIP文件,抽取出其中所需的文件。它改变了用户的调用习惯,以前用户是自行管理子模块代码,并用手工例化的方式,使用verilog代码。代码需要用户自行管理版本,...
2020-04-16 21:30:14 354
原创 zedboard第二课(BlockDesign,SDK,BOOT.BIN)
BoardDesign时,MakeExternal命令,相当于一次实现了两个关联的命令,CreatePort和MakeConnect。如果使用了AXI总线,那么必须在AddressEditor中,对每个Endpoint进行地址关联。右键选择AssignAddress即可。注意:VIVADO里面,很多命令只能通过右键进行访问,而不能从主菜单中进行访问。Export Hardware是必须的,不...
2020-04-16 21:25:28 778
原创 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
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人