自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Huskar_Liu的博客

Xilinx,Zynq,Vivado,petaLinux

  • 博客(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

smpte sdi k7.zip

smpte sdi k7.zip

2021-06-10

cameralink_v2.0_cn.pdf

cameralink_v2.0_cn.pdf

2021-06-09

ZEDBOARD上linux下OLED驱动代码

ZEDBOARD上linux下OLED驱动代码,基于DEVICE TREE 实现的驱动代码,使用时,需要根据需要,来修改DTB

2020-04-25

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除