博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
zcu106 固化_xilinx zcu106 vcu demo
阅读量:6501 次
发布时间:2019-06-24

本文共 3153 字,大约阅读时间需要 10 分钟。

board:zcu106

tool: vivado 2019.2   vitis 2019.2   petalinux 2019.2

doc:PG252 UG1209

zcu106_hdmitx

想demo一个简单的例子,编解码SD卡上的数据,在PC上验证是否成功

逻辑设计:

vivado 2019.2

新建工程(采用zcu106模板)

添加PS:ZYNQ UltraScale+ MPSoC (Run Block Automation),可以将zcu106默认的一些器件都自动配置好,这一步不要忘

添加VCU:ZYNQ UltraScale+ VCU (Run Block Automation)

PG252 Ch12 Design Flow Steps (P149)可以大概参考一下,可是照着做好像不行。

VCU有6个AXI接口

S_AXI_LITE:APU主,VCU从,用于APU访问配置VCU寄存器

M_AXI_ENC0,M_AXI_ENC1,M_AXI_DEC0,M_AXI_DEC1,M_AXI_MCU(32bit 其余128bit):VCU主,system memory从,VCU从memory取video数据和MCU软件

还有vcu_resetn 复位 vcu_host_interrupt 中断 还有AXI要连接一个时钟信号,已经整个vcu有一个参考时钟 pll_ref_clk

上面这些对外管脚都要连接到APU上。

ff46a7cd6580c5a8a04759cd752730f0.png

4.配置 Zynq UltraScale+ MPSoC

使能 AXI slave interfaces, clocking, 和PL-PS interrupt

c9bb0d43cf34728a09ac3046097d8370.png 

20253b816ea3d630b365de2899159300.png

5.用connection automation 连接 S_AXI_LITE interface of VCU IP to the M_AXI_HPM0_LPD interface.

会自动加入processor system reset和AXI interconnect

6.手动连接AXI,中断,复位和时钟等信号

ae680c956737d39d0e93fe693106d72c.png     

cd9b3d33a608d34ec38c414a4441da41.png   

43c7c6bc6cfbc9adfd736533166a73f8.png

复位和时钟参考zcu106_hdmitx,复位最开始采用PG252方式,用了一个constant,可以生成位流,但是启动kernel时候会报错(reset没有定义之类)

所以参考zcu106_hdmitx,从EMIO拉了reset到VCU,slice配置见下图

3c38662fca7358a842112b55619b3fde.png

a2cea26cee74aec26a5ef886f7292441.png

加入clocking wizard,配置如下图:

84141a6a73a911ac5dedf5ffbc9e809f.png

35c63eb1bc0ef3909392ce9073a57242.png

参考zcu106硬件原理图zcu106-schematic-xtp469

15463701d89a892c089beb3df5ae34d9.png

a0045d9bf8b82cd19bc40774bc952d35.png

输入时钟配置为差分,300MHz。

输出时钟clk_out1--33.33MHz,连接至VCUpll_ref_clk,clk_out2--200MHz,连接至mspoc和VCU的AXI的aclk。

完整连线见下图:

3f0760d83b22d9c3685f674ea43f7bdd.png

7.自动分配地址(点击红框中的自动分配地址)

c958f508d2e6323e5b0069a234b9600f.png

对于PS端,可访问vcu的寄存器,地址为0x00_A000_0000 - 0x00_A000_FFFF

VCU做为主,访问DDR,可访问空间为

0x000_0000_0000 - 0x000_7FFF_FFFF

0x008_0000_0000 - 0x00F_FFFF_FFFF

8.Validate Block Design

9.Generate Output Products   生成Diagram Block Design的HDL源文件以及相应端口癿约束文件。

2a04f9608f5c0e2aacc5fb32572b7213.png

10.Create HDL Wrapper

b692eb83a7c136737b413b58247b3abf.png

11.添加约束文件

File-->add sources--> add or create constraints--> create file (zcu106_vcu.xdc)

内容如下:

set_property PACKAGE_PIN AH12 [get_ports {si570_user_clk_p}]

set_property IOSTANDARD LVDS [get_ports {si570_user_clk_p}]

12.Run Synthesis

13.Run Implementation

14.Generate Bitstream

至此,vivado部分工作已经完成,生成了bit流

petalinux部分

vcu trd 下载了 rdf0428-zcu106-vcu-trd-2019-2

rdf0428-zcu106-vcu-trd-2019-2\apu\vcu_petalinux_bsp里有bsp

将xilinx-vcu-zcu106-v2019.2-final.bsp拷贝到ubuntu中

1. petalinux-create -t project -s ../xilinx-zcu106-v2019.2-final.bsp

2. cd ./xilinx-vcu-zcu106-v2019.2-final

将vivado生成的zcu106_vcu_wrapper.xsa copy到zcu106_vcu.hw 然后传到ubuntu的xilinx-vcu-zcu106-v2019.2-final中

3. petalinux-config --get-hw=./zcu106_vcu.hw   #参考UG1209设置为SD启动 P48

4. vim ./project-spec/meta-user/recipes-bsp/device-tree/files/system-user.dtsi

加入以下部分:

&sdhci1 {

no-1-8-v;

};

&vcu_0 {

reset-gpios = ;

};

为了fix sd mount error和加入vcu reset (No reset gpio info from dts for vcu)

5. petalinux-config -c rootfs   增加 packagegroup-petalinux-gstreamer。 gstreamer 是用于驱动 VCU 的软件组件。

6. git clone git://anongit.freedesktop.org/gstreamer/common (编译过程中会报错 所以手动下载 具体依报错信息拷贝到相应目录)

7. petalinux-build

8. cd ./images/linux/

9. petalinux-package --boot --fsbl zynqmp_fsbl.elf --u-boot --force --fpga zcu106_vcu_wrapper.bit

运行

将images/linux目录下的BOOT.BIN和image.ub拷贝到 SD 卡

将 ZCU106 设置为从 SD 卡启动: SW6[1:4] = ON, OFF, OFF, OFF,上电启动

连接串口,Interface 0

Login: root, password: root

Mount SD 卡: mount /dev/mmcblk0p1 /mnt

尝试从 MP4 文件解码:gst-launch-1.0 filesrc location=/mnt/sun_xuan.mp4 ! qtdemux ! h264parse ! omxh264dec ! queue max-size-bytes=0 ! filesink location=./sun_xuan.yuv

播放编解码后的视频文件

在 PC 上安装ffmpeg,运行指令ffplay.exe -f rawvideo -pixel_format nv12 -video_size 640x360 -i suan_xuan.yuv

转载地址:http://emlyo.baihongyu.com/

你可能感兴趣的文章
swift-var/let定义变量和常量
查看>>
ios多线程操作(五)—— GCD串行队列与并发队列
查看>>
Phalcon资源文件管理(Assets Management)
查看>>
VC6.0入门使用
查看>>
easyui-datagrid 报错:TypeError: col is null
查看>>
在Windows中安装Memcached
查看>>
【Android】10.4 卡片视图
查看>>
第九章 Redis过期策略
查看>>
HDU 2844 Coins (多重背包)
查看>>
浅析selenium的page object模式
查看>>
[Hapi.js] View engines
查看>>
我也想聊聊 OAuth 2.0 —— Access Token
查看>>
centos安装firefox flash插件
查看>>
centos6.5 mysql开机启动
查看>>
Ubuntu14.10 更新源,现在很多源已经停用了建议使用ubuntu15以上
查看>>
FastJSON 简介及其Map/JSON/String 互转
查看>>
手写数字样本库的下载地址
查看>>
implicit declaration of function 'copy_from_user'
查看>>
jquery,php之间的ajax关系以及json
查看>>
如何在Word中插入几何画板图形
查看>>