参考了网上大神们的文章,为方便自己查阅做下记录
用到的一些软件版本分别是:Ubuntu18.04、Petalinux2019.1、Qt5.12,硬件为zcu106.
1 安装编译器
没有装过vivado sdk的机器,需要单独安装编译器。
由上表知工具链选aarch64-linux-gnu-。可以在Linaro下载
选择gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu.tar.xz下载并解压至/home/zxl/Xilinx/SDK/2019.1/gnu/aarch64/nt/aarch64-linux/ (路径无所谓,这里和sdk的一致)。
测试安装成功与否:
export CROSS_COMPILE=aarch64-linux-gnu-
PATH=$PATH:/home/zxl/Xilinx/SDK/2019.1/gnu/aarch64/nt/aarch64-linux/bin
aarch64-linux-gnu-g++ -v
安装成功。
也可以将以上命令写入.bashrc,以便自动添加路径。
gedit .bashrc
###添加至.bashrc####
export CROSS_COMPILE=aarch64-linux-gnu-
export PATH=$PATH:/home/zxl/Xilinx/SDK/2019.1/gnu/aarch64/nt/aarch64-linux/bin
###################
2 编译Qt库
下载 Qt5.12源码包
选择qt-everywhere-src-5.12.8.tar.xz下载,.zip为windows版的。下载完后解压,可以看到源码文件夹中qtbase/mkspecs/linux-aarch64-gnu-g++/qmake.conf与编译器文件夹aarch64-linx/bin是相对应的。
进入qt源码文件夹,编写脚本:autoconfig.sh,具体设置说明见http://www.cppblog.com/lauer3912/articles/136423.html
#!/bin/sh
./configure \
-release \
-opensource \
-xplatform linux-aarch64-gnu-g++ \
-prefix /home/zxl/tools/zynqmp_qt5.12 \
-nomake tests \
-nomake examples \
-no-opengl
运行
./autoconfig.sh
make
make install
生成如下文件
3 编写Qt程序
3.1 安装QtCreator
下载Qt5.12安装程序,qt-opensource-linux-x64-5.12.8.run,下载完后直接安装。
3.2 配置
运行QtCreator,tools->options->Kits->QtVersions->Manual->add选择新生成的qmake:/home/zxl/tools/zynqmp_qt5.12/bin/qmake,点击apply。
选择Compilers页,add->gcc->c, name改为ZYNQMP_GCC,compiler path改为/home/zxl/Xilinx/SDK/2019.1/gnu/aarch64/nt/aarch64-linux/bin/aarch64-linux-gcc
add->gcc->c++, name改为ZYNQMP_G++,compiler path改为/home/zxl/Xilinx/SDK/2019.1/gnu/aarch64/nt/aarch64-linux/bin/aarch64-linux-g++
点击apply
选择Kits页,Manual->add,name改为ZYNQMP,compiler与qt version都改为最新的,如图
点击ok,完成配置。
3.3 新建测试工程
QtCreator->File->New File or Project->Application->Qt Widgets Application,点击choose
Location:填写工程名与路径,Next
Build System:Next
Details:Next
Translation:Next
Kits:DesktopQt与Zynqmp两个都勾上,Next
Summary:完成
写一个测试程序,双击mainwindow.ui进入界面设计
点击锤子build,在ZYNQMP-Debug文件夹下生成test文件,将test文件拷贝至sd卡
另外:
Qt 默认在 /usr/lib/ 目录下查找动态链接库,但是很多 Linux 发行版将 OpenGL 链接库放在其它目录http://c.biancheng.net/view/3901.html,所以需要建立软链接。
sudo ln -s /usr/lib/x86_64-linux-gnu/libGL.so.1 /usr/lib/libGL.so
4 Petalinux生成镜像
根据ZynqMP-petalinux使用生成镜像,其中配置rootfs时,进入Petalinux Package Groups,勾选
packagegroup-petalinux-qt->packagegroup-petalinux-qt
packagegroup-petalinux-qt-extended->packagegroup-petalinux-qt-extended
packagegroup-petalinux-x11->packagegroup-petalinux-x11
三个选项。
将生成的BOOT.bin,image.ub放入sd卡。
5 测试
SD卡插入zcu106,系统启动,挂载SD卡
mount /dev/mmcblk0p1 /mnt
写测试脚本
cd /mnt
vi test.sh
#!/bin/bash
export DISPLAY=:0.0
Xorg&
./test
运行脚本
./test.sh
如图
自动熄屏的问题参考WIKI
/etc/X11/xorg.conf
Section "InputDevice"
Identifier "System Mouse"
Driver "mouse"
Option "Device" "/dev/input/mouse0"
EndSection
Section "InputDevice"
Identifier "System Keyboard"
Driver "kbd"
Option "Device" "/dev/input/event0"
EndSection
Section "Device"
Identifier "ZynqMP"
Driver "armsoc"
Option "DRI2" "true"
Option "DRI2_PAGE_FLIP" "false"
Option "DRI2_WAIT_VSYNC" "true"
Option "SWcursorLCD" "false"
Option "DEBUG" "false"
EndSection
Section "Screen"
Identifier "DefaultScreen"
Device "ZynqMP"
DefaultDepth 16
EndSection
Section "ServerFlags"
Option "BlankTime" "0"
Option "StandbyTime" "0"
Option "SuspendTime" "0"
Option "OffTime" "0"
EndSection