作者
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
30zc@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
4axi_clkgen axi_hdmi_tx axi_spdif_tx
参考ug954,ps的iic和pl的iic均可控制所有外设,
no-os
新建工程,添加源代码E:no-OS-2015_R2adv7511zc706
,添加库E:no-OS-2015_R2adv7511libraryzc
,目录如下,刷新编译,
sdk2015.2.1好像有问题,在standalone模式下,头文件路径在这儿配置,
库目录在这儿配置,
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官方有,但是版本不一样,使用ADIcompatible = "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/Makefilecompatible = "adi,axi-clkgen-2.00.a";
,位于driversclkclk-axi-clkgen.c
,xilinx官方有,但是版本不一样,使用Xilinxcompatible = "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
3root@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桌面
Windows安装
- 使用7zip解压xz文件
- 使用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内容请搜索靠谱客的其他文章。
发表评论 取消回复