作者

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官方有,但是版本不一样,使用ADI
  • compatible = "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/Makefile
  • compatible = "adi,axi-clkgen-2.00.a";,位于drivers\clk\clk-axi-clkgen.c,xilinx官方有,但是版本不一样,使用Xilinx
  • compatible = "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安装

  1. 使用7zip解压xz文件
  2. 使用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使用相关推荐

  1. Xilinx zc706开发板使用

    作者 QQ群:852283276 微信:arm80x86 微信公众号:青儿创客基地 B站:主页 https://space.bilibili.com/208826118 Boot模式 通过SW11来控 ...

  2. Xilinx ZC706植入Linux系统-笔记

    目录 一.前期准备 二.构建Ubuntu硬件运行环境 2.1  在Vivado 2018.3环境下建立新的设计工程 2.2  构建硬件系统 三.部署petalinux安装环境 3.1 部署FTP服务器 ...

  3. Xilinx zc706 Si5324

    作者 QQ群:852283276 微信:arm80x86 微信公众号:青儿创客基地 B站:主页 https://space.bilibili.com/208826118 参考 Si5324官网 任意频 ...

  4. FPGA实现HDMI接口

    作者 QQ群:852283276 微信:arm80x86 微信公众号:青儿创客基地 B站:主页 https://space.bilibili.com/208826118 参考 用FPGA实现HDMI ...

  5. Xilinx FPGA高速串行收发器简介

    1 Overview 与传统的并行实现方法相比,基于串行I/O的设计具有很多优势,包括:器件引脚数较少.降低了板空间要求.印刷电路板(PCB)层数较少.可以轻松实现PCB设计.连接器较小.电磁干扰降低 ...

  6. AD936x+ZYNQ搭建OpenWIFI

    之前推荐过GitHub上优秀的开源项目<Github 上有哪些优秀的 VHDL/Verilog/FPGA 项目>,OpenWIFI作为通信领域的"翘楚",自然很多人都会 ...

  7. 用于RF收发器的简单基带处理器详细教程

    如今,无线系统无处不在,无线设备和服务的数量持续增长.设计完整的RF系统是一项跨学科设计挑战,模拟RF前端是其中最关键的部分.然而,AD9361等集成RF收发器的推出显著减少了此类设计的RF挑战.这些 ...

  8. 用于RF收发器的简单基带处理器

    编者按:目前很多的射频收发芯片价格低廉但没有任何基带处理,纯粹的一个物理层.不少芯片开发者用MCU完成基带处理,加上后端的射频,实现了单芯片化.本文完整阐述了一个基带处理器的各部分功能和关键点,特别适 ...

  9. 熟练成就创造——MathWorks全球副总裁Richard Rovner、产品市场经理赵志宏专访

    摘要:MathWorks提供了多种方式帮助开发者,该如何更好地运用?其在最近颇受关注的无线通讯和机器人领域又有哪些实践?针对这些问题,CSDN采访了MathWorks全球副总裁Richard Rovn ...

最新文章

  1. 商城分类表-二级,内容较全
  2. python—多线程数据混乱问题解决之同步锁
  3. sql sever 中如何查看某个表的索引_查看执行计划:explain的type
  4. 连环卡通漫画《转学第一天》
  5. leetcode209. 长度最小的子数组 借这个题规范一下双指针写法
  6. 第k个数组中的最小值
  7. C/C++语法知识:typedef struct 用法详解
  8. memset函数详细说明 1
  9. 带女朋友回家家里人一共给了她3500我拿走了真的有错吗?
  10. react实现聊天界面_React-Redux 100行代码简易版探究原理
  11. 怎么读取二代身份证UUID----在STM32+CLRC663平台试验成功
  12. 万能视频格式转换器 v 2018 全能版
  13. java展示图片_Java中显示图片的方法
  14. win10+黑苹果 单硬盘的双系统引导配置
  15. 单片机c语言小车转圈,用51单片机编写的智能小车全程前进的C程序
  16. 联想Y50-70笔记本更换固态硬盘SSD记录
  17. python-cheatsheet,一款很全的Python小抄库
  18. Mac电脑 重设开机密码
  19. Linux中Uboot详解
  20. shiro手机无状态登录访问和电脑端登录访问两种方式处理

热门文章

  1. 系统集成项目管理工程师软考知识点(第一章已完结)
  2. Docker安装时提示Existing installation is up to date
  3. window 定时任务错误
  4. 回馈父母,该给老年人买什么保险?
  5. MySQL 不同条件查询条数 count带条件
  6. Qt保存和恢复页面布局
  7. chatgpt赋能python:Python一行输出8个数的神奇魔法!
  8. just read 人生信条!
  9. 我,PolarDB云原生数据库,5年来实现这些重磅技术创新
  10. opencv putText 参数说明