Xilinx ZC706 ADV7511使用
作者
QQ群:852283276
微信:arm80x86
微信公众号:青儿创客基地
B站:主页 https://space.bilibili.com/208826118
参考
Linux with HDMI video output on the ZED, ZC702 and ZC706 boards
ADV7511 Xilinx Evaluation Boards Reference Design
Zynq & Altera SoC Quick Start Guide
analogdevicesinc/hdl
analogdevicesinc/linux
Linux_GUI加速(1)——GUI系统概述
Linux_GUI加速(2)——Linux中的DRM-KMS分析
2018.1/2 Zynq UltraScale+ MPSoC: Linux DRM driver does not need to update the plane for same framebuffer
linux-xlnx/drivers/gpu/drm下xilinx和xlnx这两个目录的区别
zynq-7000学习笔记(十一)——Linux下VDMA的使用
topic-embedded-products/adi_hdl
topic-embedded-products/kernel-module-vdmafb
ZedBoard Linux I2C Driver + VDMA使用
zynq-7000学习笔记(四)——Zedboard HDMI核的构建和输出显示测试(2017/6/9补充修改)
xilinx ZC706 在显示器上显示我们想显示的内容
【ZYNQ-7000开发之三】ZYNQ平台的HDMI驱动测试
FPGA+ADV7511实现HDMI显示
Zynq7020 在arm上跑hdmi驱动
zynq-7000学习笔记(九)——frame buffer图像显示编程
Building HDL
3. ZCU102 HDMI Demo工程修改【PCIE视频传输】
vivado
安装mingw,添加vivado工具到环境变量E:\Xilinx\Vivado\2015.2\bin
,执行make
,此次耗时较久,本以为卡住,敲了回车键才知道编译已经完成,
zc@DESKTOP-KVKC06A ~
$ cd /e/hdl-2015_r2/projects/adv7511/zc706zc@DESKTOP-KVKC06A /e/hdl-2015_r2/projects/adv7511/zc706
$ ls
Makefile system_bd.tcl system_project.tcl system_top.vzc@DESKTOP-KVKC06A /e/hdl-2015_r2/projects/adv7511/zc706
$ make
make -C ../../../library/axi_clkgen
make[1]: Entering directory `/e/hdl-2015_r2/library/axi_clkgen'
rm -rf *.cache *.data *.xpr *.log component.xml *.jou xgui .Xil
vivado -mode batch -source axi_clkgen_ip.tcl >> axi_clkgen_ip.log 2>&1
make[1]: Leaving directory `/e/hdl-2015_r2/library/axi_clkgen'
make -C ../../../library/axi_hdmi_tx
make[1]: Entering directory `/e/hdl-2015_r2/library/axi_hdmi_tx'
rm -rf *.cache *.data *.xpr *.log component.xml *.jou xgui .Xil
vivado -mode batch -source axi_hdmi_tx_ip.tcl >> axi_hdmi_tx_ip.log 2>&1
make[1]: Leaving directory `/e/hdl-2015_r2/library/axi_hdmi_tx'
make -C ../../../library/axi_spdif_tx
make[1]: Entering directory `/e/hdl-2015_r2/library/axi_spdif_tx'
rm -rf *.cache *.data *.xpr *.log component.xml *.jou xgui .Xil
vivado -mode batch -source axi_spdif_tx_ip.tcl >> axi_spdif_tx_ip.log 2>&1
make[1]: Leaving directory `/e/hdl-2015_r2/library/axi_spdif_tx'
rm -rf *.cache *.data *.xpr *.log *.jou xgui *.runs *.srcs *.sdk .Xil
vivado -mode batch -source system_project.tcl >> adv7511_zc706_vivado.log 2>&1zc@DESKTOP-KVKC06A /e/hdl-2015_r2/projects/adv7511/zc706
$
可以看到,这个工程用到了三个库,
axi_clkgen
axi_hdmi_tx
axi_spdif_tx
参考ug954,ps的iic和pl的iic均可控制所有外设,
no-os
新建工程,添加源代码E:\no-OS-2015_R2\adv7511\zc706
,添加库E:\no-OS-2015_R2\adv7511\library\zc
,目录如下,刷新编译,
sdk2015.2.1好像有问题,在standalone模式下,头文件路径在这儿配置,
库目录在这儿配置,
no-os测试
输入0~6
可以改变分辨率,实际测试这个程序输出的屏幕在闪烁,需要改进,
********************************************************************ADI HDMI Trasmitter Application Ver R1.1.1HDMI-TX: ADV7511 Rev 0x14Created: Aug 3 2019 At 11:13:28
********************************************************************To change the video resolution press:'0' - 640x480; '1' - 800x600; '2' - 1024x768; '3' - 1280x720 '4' - 1360x768; '5' - 1600x900; '6' - 1920x1080.
Mute audio and video.
Resolution was changed to 1920x1080
APP: Driver Enabled
HPD changed to HI
MSEN changed to HI
A new EDID segment was read.
HDMI device.
------------------------- EDID BLOCK 0 -------------------------
Edid Version 1.3
Mon Timing:Pixel clock = 241.50 MHzH Active = 2560V Active = 1440ProgressiveNo stereoSeparate sync = 3-ve Vsync+ve HSync
Mon Serial: NDY7355N1AWLMon Name: DELL P2416DMon Freq:Min V Freq = 49 HzMax V Freq = 86 HzMin H Freq = 29 KHzMax H Freq = 113 KHz
Edid extensions blocks: 1========================= EDID BLOCK 1 =========================
CEA extension block revision 3
Underscan=Yes Audio=Yes YCbCr4:4:4=Yes YCbCr4:2:2=Yes
Data block collection information:Video data block* VIC=16VIC=5VIC=4VIC=3VIC=2VIC=7VIC=22VIC=1VIC=6VIC=17VIC=18VIC=21VIC=19VIC=20VIC=31VIC=32Audio data blockFormat Code = 1 (Linear PCM)Max. No. of Channels= 2Sampling Freq. (KHz)= 32 44.1 48 Length (bits) = 16 20 24VSDB data blockSpeaker allocation data block0x010x000x00
SPA location is at 0x9D, SPA = 1.0.0.0
Mon Timing:Pixel clock = 148.50 MHzH Active = 1920V Active = 1080ProgressiveNo stereoSeparate sync = 3+ve VSync+ve HSync
Mon Timing:Pixel clock = 74.25 MHzH Active = 1920V Active = 540InterlacedNo stereoSeparate sync = 3+ve VSync+ve HSync
Mon Timing:Pixel clock = 74.25 MHzH Active = 1280V Active = 720ProgressiveNo stereoSeparate sync = 3+ve VSync+ve HSync
Mon Timing:Pixel clock = 27.0 MHzH Active = 720V Active = 480ProgressiveNo stereoSeparate sync = 3-ve Vsync-ve HSync
Mon Timing:Pixel clock = 197.0 MHzH Active = 2048V Active = 1152ProgressiveNo stereoSeparate sync = 3+ve VSync-ve HSync
########################### EDID END ###########################APP: Changed system mode to Transmitter
Un-mute audio and video.
Resolution was changed to 1024x768
Resolution was changed to 1600x900
Resolution was changed to 1920x1080
Linux
用到以下驱动,
compatible = "adi,adv7511";
,位于drivers\gpu\drm\i2c\adv7511.c
,xilinx官方有,但是版本不一样,使用ADIcompatible = "xlnx,axi-vdma";
,位于drivers\dma\xilinx_dma.c
,xilinx vdma驱动,在xilinx官方内核目录没有该文件,已经废弃或者是adi自己维护的,目前dma驱动位于位于drivers\dma\xilinx\xilinx_vdma.c
,使用ADI,使用Xilinx则drm驱动编译不过,DMA的头文件不一样,更改驱动注册的name解决和官方驱动的冲突,官方2015.2.1和ADI 2015_R2内核版本不一样,内核dma驱动的api修改了,编写device_control
完成device_config
,添加并修改Kconfig/Makefilecompatible = "adi,axi-clkgen-2.00.a";
,位于drivers\clk\clk-axi-clkgen.c
,xilinx官方有,但是版本不一样,使用Xilinxcompatible = "adi,axi-hdmi-tx-1.00.a";
,位于drivers\gpu\drm\adi_axi_hdmi\axi_hdmi_drv.c
,xilinx官方没有,使用ADI,添加并修改Kconfig/Makefile,注意修改include\drm\drm_edid.h
增加drm_connector_get_edid
函数compatible = "adi,axi-spdif-tx-1.00.a";
,位于sound\soc\adi\axi-spdif.c
,xilinx官方有,版本相同compatible = "adv7511-hdmi-snd";
,位于sound\soc\adi\adv7511_hdmi.c
,xilinx官方没有,使用ADI,添加并修改Kconfig/Makefile
配置内核menuconfig,
> Device Drivers > Graphics support > Direct Rendering Manager > I2C encoder or helper chips > AV7511 encoder
> Device Drivers > Common Clock Framework > AXI clkgen driver
> Device Drivers > Graphics support > Direct Rendering Manager > AV7511 encoder
> Device Drivers > Graphics support > Direct Rendering Manager > DRM Support for Analog Devices HDMI FPGA platforms
> Device Drivers > Sound card support > Advanced Linux Sound Architecture > ALSA for SoC audio support > ADV7511 HDMI transmitter sound support
Linux开机打印,
...
[drm] Initialized drm 1.1.0 20060810
platform 70e00000.axi_hdmi_tx: Driver axi-hdmi requests probe deferral
...
adv7511-hdmi-snd amba_pl:adv7511_hdmi_snd: adv7511 <-> 75c00000.axi_spdif_tx mapping ok
...
Console: switching to colour frame buffer device 240x75
axi-hdmi 70e00000.axi_hdmi_tx: fb0: frame buffer device
axi-hdmi 70e00000.axi_hdmi_tx: registered panic notifier
[drm] Initialized axi_hdmi_drm 1.0.0 20120930 on minor 0
...
ALSA device list:#0: HDMI monitor
这个时候可以在屏幕上看到串口的终端打印了,退出休眠
root@zynq:~# echo 1 > /sys/class/graphics/fb0/blank
root@zynq:~# echo -e "\033[9;0]" > /dev/tty0
Linux测试
注意ZC706的千兆网phy地址是7,需要检查u-boot和设备树是否正确。
Linux安装
官网下载image,拷入SD卡运行,xz文件用unxz解压,tar命令是不行的,
$ time unxz 2014_R2-2015_02_06.img.xz
$ sudo umount /dev/mmcblk0p1
$ time sudo dd if=2014_R2-2015_02_06.img of=/dev/mmcblk0 bs=4M
制作完后,SD卡包含两个分区,一个FAT32 BOOT分区,一个ext4根文件系统,重新插入PC,校验,
$ sudo fsck -y /dev/mmcblk0p1
$ sudo fsck -y /dev/mmcblk0p2
将SD卡对应板卡的BOOT.BIN等拷入BOOT分区,启动,可以看到adi定制的linaro桌面
Windows安装
- 使用7zip解压xz文件
- 使用Win32DiskImager或者physdiskwrite将img写入磁盘,physdiskwrite还支持命令行模式
>diskpartMicrosoft DiskPart version 6.1.7601
Copyright (C) 1999-2008 Microsoft Corporation.
On computer: RGETZ-L05DISKPART> list diskDisk ### Status Size Free Dyn Gpt-------- ------------- ------- ------- --- ---Disk 0 Online 119 GB 0 BDisk 1 Online 7580 MB 0 BDISKPART> select disk 1Disk 1 is now the selected disk.
DISKPART> cleanDiskPart succeeded in cleaning the disk.
DISKPART> exitLeaving DiskPart...
>physdiskwrite.exe -u ..\2014_R2-2014_12_12.binphysdiskwrite v0.5.2 by Manuel Kasper <mk@neon1.net>Searching for physical drives...Information for \\.\PhysicalDrive0:Windows: cyl: 15566tpc: 255spt: 63
Information for \\.\PhysicalDrive1:Windows: cyl: 966tpc: 255spt: 63Which disk do you want to write? (0..1) 1
WARNING: that disk is larger than 2 GB! Make sure you're not accidentally
overwriting your primary hard disk! Proceeding on your own risk...
About to overwrite the contents of disk 1 with new data. Proceed? (y/n) y
3653238784/4096 bytes written in total
Xilinx ZC706 ADV7511使用相关推荐
- Xilinx zc706开发板使用
作者 QQ群:852283276 微信:arm80x86 微信公众号:青儿创客基地 B站:主页 https://space.bilibili.com/208826118 Boot模式 通过SW11来控 ...
- Xilinx ZC706植入Linux系统-笔记
目录 一.前期准备 二.构建Ubuntu硬件运行环境 2.1 在Vivado 2018.3环境下建立新的设计工程 2.2 构建硬件系统 三.部署petalinux安装环境 3.1 部署FTP服务器 ...
- Xilinx zc706 Si5324
作者 QQ群:852283276 微信:arm80x86 微信公众号:青儿创客基地 B站:主页 https://space.bilibili.com/208826118 参考 Si5324官网 任意频 ...
- FPGA实现HDMI接口
作者 QQ群:852283276 微信:arm80x86 微信公众号:青儿创客基地 B站:主页 https://space.bilibili.com/208826118 参考 用FPGA实现HDMI ...
- Xilinx FPGA高速串行收发器简介
1 Overview 与传统的并行实现方法相比,基于串行I/O的设计具有很多优势,包括:器件引脚数较少.降低了板空间要求.印刷电路板(PCB)层数较少.可以轻松实现PCB设计.连接器较小.电磁干扰降低 ...
- AD936x+ZYNQ搭建OpenWIFI
之前推荐过GitHub上优秀的开源项目<Github 上有哪些优秀的 VHDL/Verilog/FPGA 项目>,OpenWIFI作为通信领域的"翘楚",自然很多人都会 ...
- 用于RF收发器的简单基带处理器详细教程
如今,无线系统无处不在,无线设备和服务的数量持续增长.设计完整的RF系统是一项跨学科设计挑战,模拟RF前端是其中最关键的部分.然而,AD9361等集成RF收发器的推出显著减少了此类设计的RF挑战.这些 ...
- 用于RF收发器的简单基带处理器
编者按:目前很多的射频收发芯片价格低廉但没有任何基带处理,纯粹的一个物理层.不少芯片开发者用MCU完成基带处理,加上后端的射频,实现了单芯片化.本文完整阐述了一个基带处理器的各部分功能和关键点,特别适 ...
- 熟练成就创造——MathWorks全球副总裁Richard Rovner、产品市场经理赵志宏专访
摘要:MathWorks提供了多种方式帮助开发者,该如何更好地运用?其在最近颇受关注的无线通讯和机器人领域又有哪些实践?针对这些问题,CSDN采访了MathWorks全球副总裁Richard Rovn ...
最新文章
- 商城分类表-二级,内容较全
- python—多线程数据混乱问题解决之同步锁
- sql sever 中如何查看某个表的索引_查看执行计划:explain的type
- 连环卡通漫画《转学第一天》
- leetcode209. 长度最小的子数组 借这个题规范一下双指针写法
- 第k个数组中的最小值
- C/C++语法知识:typedef struct 用法详解
- memset函数详细说明 1
- 带女朋友回家家里人一共给了她3500我拿走了真的有错吗?
- react实现聊天界面_React-Redux 100行代码简易版探究原理
- 怎么读取二代身份证UUID----在STM32+CLRC663平台试验成功
- 万能视频格式转换器 v 2018 全能版
- java展示图片_Java中显示图片的方法
- win10+黑苹果 单硬盘的双系统引导配置
- 单片机c语言小车转圈,用51单片机编写的智能小车全程前进的C程序
- 联想Y50-70笔记本更换固态硬盘SSD记录
- python-cheatsheet,一款很全的Python小抄库
- Mac电脑 重设开机密码
- Linux中Uboot详解
- shiro手机无状态登录访问和电脑端登录访问两种方式处理