教程前言在Zynq嵌入式工业开发中LCD触控人机交互界面HMI是工业网关、智能终端、工控设备的核心功能。本文基于米联客H3-CZ08P-7100Zynq7100开发板复刻官方QT触控屏完整方案从零讲解硬件工程解析、设备树配置、系统构建、QT交叉编译、板级触控演示全流程。教程全程基于官方REV2024版demo文档无删减、无魔改适配Zynq7000系列ARMHF架构新手可直接跟着步骤落地触控显示项目解决LCD无画面、触控失灵、QT程序无法运行等常见问题。✅ 开发环境与硬件适配硬件平台米联客 H3-CZ08P-7100Zynq7100软件工具版本Vivado2021.1 Vitis2021.1系统环境Ubuntu18.04 64位核心开发包uisrc-lab-xlnx20220601、uisrc-lab-qt-armhf.tar.gz实现功能VDMA帧缓存画面输出、GT9157触控IC驱动、I2C触控数据交互、QT触控应用程序运行、屏幕滑动触控一、方案原理与系统架构1.1 核心功能简介本方案实现LCD画面显示多点触控一体化功能通过VDMA驱动实现Framebuffer图像输出依托I2C总线驱动GT9157触控芯片注册Linux Input子系统最终基于QT框架开发触控交互程序实现屏幕滑动、触控响应等人机交互效果。⚠️ 重点说明本方案实现的是Linux标准input子系统触控功能并非系统全局触控界面仅适配QT应用程序触控交互。1.2 硬件驱动架构显示驱动VDMA驱动提供Framebuffer显存管理负责LCD画面渲染输出触控驱动I2C总线驱动适配GT9157触控芯片采集触控坐标、手势数据背光驱动PWM背光控制接口支持屏幕亮度调节二、Vivado硬件工程解析H3-CZ08P-7100专属无需自行搭建BD工程直接使用官方配套demo工程即可重点掌握硬件资源配置要点2.1 关键硬件接口资源lcd_*系列接口LCD屏幕图像显示专用数据接口lcd_pwm屏幕背光亮度PWM控制引脚gpio_rtl触控芯片复位控制引脚lcd_iic触控I2C数据采集与复位接口2.2 寄存器地址说明VDMA、I2C、GPIO相关寄存器地址由Vivado综合后自动生成Vitis导出设备树时会自动适配填充新手无需手动修改寄存器参数保证硬件资源匹配H3-CZ08P-7100板卡引脚定义。三、设备树配置解析核心关键❌ 新手禁止随意修改设备树建议直接使用官方demo自带设备树文件仅需理解核心节点作用。3.1 LCD显示设备树节点对应内核驱动路径/uisrc-lab-xlnx/sources/kernel/drivers/video/fbdev/vdmafb.c核心配置要点配置dmas属性绑定VDMA控制器地址匹配硬件axi_vdma_0节点本工程采用3缓存VDMA架构必须将park参数设置为1否则画面闪烁、无显示3.2 GT9157触控设备树节点对应内核驱动路径/uisrc-lab-xlnx/sources/kernel/drivers/input/touchscreen/gt9xx核心配置要点直接挂载在系统根节点下可与zynqmp默认i2c0节点共存无冲突固定reg地址为0x14匹配H3-CZ08P-7100板卡I2C触控芯片硬件地址自动注册为Linux Input子系统设备上电自动识别触控设备四、系统工程搭建与镜像编译4.1 前置文件准备从官方demo包中提取核心工程文件适配H3-CZ08P-7100boot启动文件替换SD卡boot分区适配任意合法文件系统QT工程文件包含PC端编译工程与板端运行压缩包系统工程文件soc_dts(设备树)、soc_hw(硬件配置)、soc_prj(Vivado工程)、soc_sdk(Vitis工程)开发包下载地址官方原版02_米联客uisrc-lab-Zynq|MPSoc Linux开发环境|镜像下载 - 资料下载 FPGAAI数字世界 -4.2 核心文件拷贝部署进入系统开发包路径/uisrc-lab-xlnx/boards/mz7x/ubuntu/output/files放置对应文件直接放置fsbl.elf、system_wrapper.bit内核设备树放入kernel-dts文件夹支持多文件include引用Uboot设备树仅支持命名为zynq-mz7x.dts的文件不支持include4.3 一键编译系统镜像进入脚本目录依次执行编译命令全程自动化构建Plain Text# 进入脚本目录cd /uisrc-lab-xlnx/scripts# 加载环境变量、拷贝并重命名文件source mz7xcfg.shsource move_files.sh# 编译Uboot、内核source make_uboot.shsource make_kernel.sh# 生成完整启动镜像source create_image.sh# SD卡分区与烧录插入SD卡连接虚拟机source make_parted.shsource deploy_image.sh执行分区时输入设备号sdb确认y即可完成系统烧录。五、QT程序交叉编译ARMHF架构H3-CZ08P-7100为Zynq7000架构必须使用armhf版本QT交叉编译工具。5.1 部署QT编译环境工具包下载地址05_Linux资料常用软件环境下载备用链接(2024版) - 资料下载 FPGAAI数字世界 -Plain Text# 拷贝至用户目录并解压tar zxvf uisrc-lab-qt-armhf.tar.gz -C /home/uisrc# 加载QT编译环境变量cd /uisrc-lab-qt/scriptssource qt_cfg.sh5.2 编译官方触控DemoPlain Text# 进入QT应用工程目录cd /uisrc-lab-qt/applications/deform/# 执行ARM架构编译./build_arm_app.sh5.3 部署QT程序到开发板将编译生成的可执行文件替换qt_play文件夹内程序修改run_arm_app.sh脚本替换为新程序文件名将整个qt_play文件夹拷贝至SD卡根文件系统/home/uisrc目录安全弹出SD卡准备板级测试。六、H3-CZ08P-7100板级实操演示6.1 硬件接线开发板插入烧录好系统的SD卡拨码切换为SD卡启动模式连接LCD触控屏幕、串口USB、5V电源串口波特率设置115200打开PuTTY等待开机。6.2 系统登录与程序运行开机完成后使用官方默认账号密码登录账号uisrc密码root此时LCD屏幕自动加载系统命令行界面执行QT触控程序Plain Text# 进入程序目录cd qt_play/# 运行触控Demosudo ./run_arm_app.sh# 输入密码root6.3 功能验证程序启动后LCD屏幕显示可滑动气泡界面支持手指触控、滑动拖拽触控响应灵敏无卡顿、无失灵代表整套QT触控方案部署成功。七、常见问题排查H3-CZ08P-7100专属问题1屏幕无画面、黑屏未使用配套VDMA设备树park参数未设置为1镜像未重新编译Framebuffer驱动未加载LCD背光PWM引脚未正常初始化。问题2有画面但触控无响应GT9157设备树reg地址与硬件不匹配I2C驱动未加载Input子系统未识别触控设备触控复位引脚硬件接线异常。问题3QT程序编译报错、无法运行误用aarch64版本QT工具Zynq7100需使用armhf版本QT环境变量未正确加载编译架构不匹配。八、项目拓展总结本文实现的基于QT的LCD触控方案是Zynq工业人机界面开发的基础模板。基于本工程可快速拓展工业参数触控配置、动态数据显示、按键交互、界面动画、多页面切换等功能完全适配H3-CZ08P-7100工业板卡的工控、智能终端、物联网网关项目场景。