ZYNQ平台的HDMI驱动测试

前情提要:
1、本文所使用的的开发板是Alinx的AX7010开发板
2、PC开发环境为:Vivado 2019.2 vitis 2019.2
3、Ubuntu开发环境为:安装了petalinux2019.2的版本号为18.04.1的Ubuntu系统(18.04.1版本Ubuntu下的Petalinux安装和使用
4、带有HDMI驱动的Linux内核源文件由alinx厂商提供,其百度网盘下载链接如下:
链接:https://pan.baidu.com/s/1FQPsLNrEl-eeA8WBYoSnYg
提取码:wrlp
5、把带有HDMI驱动的内核源文件复制到前情提要3中提到的Ubuntu系统,然后解压,解压后的内核目录就是本实验 Petalinux 要用到的内核。本文解压到当前用户家目录下的myfile目录下
在这里插入图片描述
6、通过图片的正确显示来对HDMI驱动进行测试

一、制作包含HDMI驱动的Linux内核

1.1、创建Petalinux工程

打开终端,参考前面基于xsa文件使用petalinux定制Linux内核的实验步骤,创建 本文的Petalinux 工程。
使用petalinux定制Linux内核

1.2、配置petalinux工程
1)配置 petalinux工程,使用petalinux-config命令,选择 Linux Components Selection —> linux-kernel (linux-xlnx) —>
在这里插入图片描述
在这里插入图片描述
2) 选择 ext-local-src 按空格键
在这里插入图片描述
接着选择 External linux-kernel local source settings —>
在这里插入图片描述
选择 External linux-kernel local source path

填上 Linux 内核源码的路径 /home/ljy/myfile/xilinx-v2019.2.01, 实际路径要看内核存放位置。
在这里插入图片描述
3) 保存然后退出

1.3、配置 Linux 内核

1) 运行下面的命令配置内核

petalinux-config -c kernel

2) 在弹出的窗口中,进入 Device Drivers →Graphics support,选择 Digilent VGA/HDMI DRM Encoder Driver 项按 y。
在这里插入图片描述
3) 在 Device Drivers → Common Clock Framework 选项中选择 Digilent axi_dynclk Driver 按 y
在这里插入图片描述
4) 当要显示图片时,不需要控制台在显示器中显示,故取消 Device Drivers →Graphics support——》Console display driver support
在这里插入图片描述

5) 保存并退出

1.4、修改设备树

设备树是描述设备信息的一种格式化文本。

1) 打开 petalinux 工程文件中的名为 system-user.dtsi 的文件
在这里插入图片描述
2) 修改设备树内容如下

/include/ "system-conf.dtsi"
/ {
model = "Zynq ALINX Development Board";
compatible = "alinx,zynq", "xlnx,zynq-7000";
aliases {
ethernet0 = "&gem0";
serial0 = "&uart1";
};
usb_phy0: usb_phy@0 {
compatible = "ulpi-phy";
#phy-cells = <0>;
reg = <0xe0002000 0x1000>;
view-port = <0x0170>;
drv-vbus;
};
};
&i2c0 {
clock-frequency = <100000>;
};
&usb0 {
dr_mode = "host";
usb-phy = <&usb_phy0>;
};
&sdhci0 {
u-boot,dm-pre-reloc;
};
&uart1 {
u-boot,dm-pre-reloc;
};
&flash0 {
compatible = "micron,m25p80", "w25q256", "spi-flash";
};
&gem0 {
phy-handle = <&ethernet_phy>;
ethernet_phy: ethernet-phy@1 {
reg = <1>;
device_type = "ethernet-phy";
};
};
&amba_pl {
hdmi_encoder_0:hdmi_encoder {
compatible = "digilent,drm-encoder";
digilent,edid-i2c = <&i2c0>;
};
xilinx_drm {
compatible = "xlnx,drm";
xlnx,vtc = <&v_tc_0>;
xlnx,connector-type = "HDMIA";
xlnx,encoder-slave = <&hdmi_encoder_0>;
clocks = <&axi_dynclk_0>;
dglnt,edid-i2c = <&i2c0>;
planes {
xlnx,pixel-format = "rgb888";
plane0 {
dmas = <&axi_vdma_0 0>;
dma-names = "dma";
};
};
};
};
&axi_dynclk_0 {
compatible = "digilent,axi-dynclk";
#clock-cells = <0>;
clocks = <&clkc 15>;
};
&v_tc_0 {
compatible = "xlnx,v-tc-5.01.a";
};

1.5、编译 Petalinux 工程

使用下面命令配置编译 uboot、内核、根文件系统、设备树等。

petalinux-build

1.6 制作SD启动卡后启动开发板

1) 运行下面命令生成 BOOT.BIN 文件,注意空格和短线

petalinux-package --boot --fsbl ./images/linux/zynq_fsbl.elf --fpga --u-boot --force

2) 把 BOOT.bin 和 iamge.ub 复制到 sd 中,设置开发板 sd 模式启动,插上 HDMI 显示器,启动开发板。

二、编写应用程序
本文为HDMI的驱动测试,应用程序来自于别人。下面的下载链接中包含应用程序源文件、测试图片和编译后的可执行文件。
链接:https://pan.baidu.com/s/1p8qGDm1DTxaxrUm_ZNV2aw
提取码:6vyz
若没有编译好的可执行文件,可以参考使用vitis开发Linux应用程序来对源文件进行编译。

三、运行应用程序编译后的可执行文件
使用Vitis开发Linux应用程序,即获得编译后的可执行文件后,使用SSH方式去运行编译后的文件。SSH 方式是将编译得到的可执行的 elf 文件传到开发板上的 Linux 系统中。
1)先在 Ubuntu 主机终端查看ZYNQ开发板的IP地址,(主机要与开发板在一个网络下,Windows无线连接路由器,开发板有线连接同一路由器)
在这里插入图片描述
2)再使用MobaXterm的SSH连接,登录开发板Linux系统。
接着运行命令 chmod 777 hdmi_picture.elf,使得可执行文件在开发板上的 Linux 系统中具有可执行的属性。然后再运行./hdmi_picture.elf,执行它。具体如下图:
在这里插入图片描述
3)最后的HDMI驱动测试,图片显示如下:
在这里插入图片描述
ZYNQ平台下的HDMI驱动正常。

  • 1
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值