我是靠谱客的博主 清爽手套,这篇文章主要介绍Xilinx ZC706 ADV7511使用作者参考vivadono-osno-os测试LinuxLinux测试,现在分享给大家,希望可以做个参考。

作者

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:XilinxVivado2015.2bin,执行make,此次耗时较久,本以为卡住,敲了回车键才知道编译已经完成,

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
zc@DESKTOP-KVKC06A ~ $ cd /e/hdl-2015_r2/projects/adv7511/zc706 zc@DESKTOP-KVKC06A /e/hdl-2015_r2/projects/adv7511/zc706 $ ls Makefile system_bd.tcl system_project.tcl system_top.v zc@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>&1 zc@DESKTOP-KVKC06A /e/hdl-2015_r2/projects/adv7511/zc706 $

可以看到,这个工程用到了三个库,

复制代码
1
2
3
4
axi_clkgen axi_hdmi_tx axi_spdif_tx

参考ug954,ps的iic和pl的iic均可控制所有外设,
218

no-os

新建工程,添加源代码E:no-OS-2015_R2adv7511zc706,添加库E:no-OS-2015_R2adv7511libraryzc,目录如下,刷新编译,
在这里插入图片描述
sdk2015.2.1好像有问题,在standalone模式下,头文件路径在这儿配置,
172
库目录在这儿配置,
173

no-os测试

输入0~6可以改变分辨率,实际测试这个程序输出的屏幕在闪烁,需要改进,

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
******************************************************************** ADI HDMI Trasmitter Application Ver R1.1.1 HDMI-TX: ADV7511 Rev 0x14 Created: 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 MHz H Active = 2560 V Active = 1440 Progressive No stereo Separate sync = 3 -ve Vsync +ve HSync Mon Serial: NDY7355N1AWL Mon Name: DELL P2416D Mon Freq: Min V Freq = 49 Hz Max V Freq = 86 Hz Min H Freq = 29 KHz Max 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=16 VIC=5 VIC=4 VIC=3 VIC=2 VIC=7 VIC=22 VIC=1 VIC=6 VIC=17 VIC=18 VIC=21 VIC=19 VIC=20 VIC=31 VIC=32 Audio data block Format Code = 1 (Linear PCM) Max. No. of Channels= 2 Sampling Freq. (KHz)= 32 44.1 48 Length (bits) = 16 20 24 VSDB data block Speaker allocation data block 0x01 0x00 0x00 SPA location is at 0x9D, SPA = 1.0.0.0 Mon Timing: Pixel clock = 148.50 MHz H Active = 1920 V Active = 1080 Progressive No stereo Separate sync = 3 +ve VSync +ve HSync Mon Timing: Pixel clock = 74.25 MHz H Active = 1920 V Active = 540 Interlaced No stereo Separate sync = 3 +ve VSync +ve HSync Mon Timing: Pixel clock = 74.25 MHz H Active = 1280 V Active = 720 Progressive No stereo Separate sync = 3 +ve VSync +ve HSync Mon Timing: Pixel clock = 27.0 MHz H Active = 720 V Active = 480 Progressive No stereo Separate sync = 3 -ve Vsync -ve HSync Mon Timing: Pixel clock = 197.0 MHz H Active = 2048 V Active = 1152 Progressive No stereo Separate 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";,位于driversgpudrmi2cadv7511.c,xilinx官方有,但是版本不一样,使用ADI
  • compatible = "xlnx,axi-vdma";,位于driversdmaxilinx_dma.c,xilinx vdma驱动,在xilinx官方内核目录没有该文件,已经废弃或者是adi自己维护的,目前dma驱动位于位于driversdmaxilinxxilinx_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";,位于driversclkclk-axi-clkgen.c,xilinx官方有,但是版本不一样,使用Xilinx
  • compatible = "adi,axi-hdmi-tx-1.00.a";,位于driversgpudrmadi_axi_hdmiaxi_hdmi_drv.c,xilinx官方没有,使用ADI,添加并修改Kconfig/Makefile,注意修改includedrmdrm_edid.h增加drm_connector_get_edid函数
  • compatible = "adi,axi-spdif-tx-1.00.a";,位于soundsocadiaxi-spdif.c,xilinx官方有,版本相同
  • compatible = "adv7511-hdmi-snd";,位于soundsocadiadv7511_hdmi.c,xilinx官方没有,使用ADI,添加并修改Kconfig/Makefile

配置内核menuconfig,

复制代码
1
2
3
4
5
6
> 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开机打印,

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
... [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

这个时候可以在屏幕上看到串口的终端打印了,退出休眠

复制代码
1
2
3
root@zynq:~# echo 1 > /sys/class/graphics/fb0/blank root@zynq:~# echo -e "33[9;0]" > /dev/tty0

Linux测试

注意ZC706的千兆网phy地址是7,需要检查u-boot和设备树是否正确。

Linux安装

官网下载image,拷入SD卡运行,xz文件用unxz解压,tar命令是不行的,

复制代码
1
2
3
4
$ 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,校验,

复制代码
1
2
3
$ sudo fsck -y /dev/mmcblk0p1 $ sudo fsck -y /dev/mmcblk0p2

将SD卡对应板卡的BOOT.BIN等拷入BOOT分区,启动,可以看到adi定制的linaro桌面
168

Windows安装

  1. 使用7zip解压xz文件
  2. 使用Win32DiskImager或者physdiskwrite将img写入磁盘,physdiskwrite还支持命令行模式
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
>diskpart Microsoft DiskPart version 6.1.7601 Copyright (C) 1999-2008 Microsoft Corporation. On computer: RGETZ-L05 DISKPART> list disk Disk ### Status Size Free Dyn Gpt -------- ------------- ------- ------- --- --- Disk 0 Online 119 GB 0 B Disk 1 Online 7580 MB 0 B DISKPART> select disk 1 Disk 1 is now the selected disk. DISKPART> clean DiskPart succeeded in cleaning the disk. DISKPART> exit Leaving DiskPart... >physdiskwrite.exe -u ..2014_R2-2014_12_12.bin physdiskwrite v0.5.2 by Manuel Kasper <mk@neon1.net> Searching for physical drives... Information for \.PhysicalDrive0: Windows: cyl: 15566 tpc: 255 spt: 63 Information for \.PhysicalDrive1: Windows: cyl: 966 tpc: 255 spt: 63 Which 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使用作者参考vivadono-osno-os测试LinuxLinux测试的全部内容,更多相关Xilinx内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(96)

评论列表共有 0 条评论

立即
投稿
返回
顶部