在Zynq平臺上運行QT其實與PC無異,都需要相應的執行環境,只不過PC上的QT Lib可以使用QT SDK自動安裝配置,而Zynq平臺上的QT Lib則需要手動安裝。另外,我們自己編寫的代碼只需要使用Xilinx交叉編譯器進行一次編譯就能在ZedBoard上執行,而QT代碼則需要先由QMake進行配置,之后再用交叉編譯器編譯。因此,想讓QT開發的應用程序在ZedBoard上運行,首先就要編譯一個適合Zynq平臺的QT庫。其實操作方法已經在Xilinx Wiki中介紹了,但跟著Xilinx的介紹走一通可能都不知道自己在干什么(兔子一開始就是這樣)。這里我就給大家一步驟講解一下。原始資料請見Wiki:已經提供了一個QT Lib源碼包和相關的配置文件,不過是4.7版的:兔子使用的4.8.3版本可以在QT官網上下載:一、安裝QT Lib之前我們已經配置好了交叉編譯環境使用的環境變量PATH和CROSS_COMPILE,而為了簡便操作,還可以再設置幾個環境變量。export?ZYNQ_QT_BUILD=/path/to/qt/buildexport?ZYNQ_QT_INSTALL=/path/to/qt/installexport PATH=$ZYNQ_QT_INSTALL/bin:$PATHZYNQ_QT_BUILD指向QT源碼解壓后的目錄,ZYNQ_QT_INSTALL則指向QT Lib的安裝目錄,以后要編譯QT工程,都需要用到安裝目錄中的程序,因此在PATH中添加了一條指向QMake等程序所在的路徑。按需要替換等號后面的路徑,比如兔子的安裝路徑是/arm/qt/qt-lib/。之后將qt-everywhere-opensource-src-4.8.3.tar.gz解壓到ZYNQ_QT_BUILD指向的目錄中,把qt_build_src.tar里的qmake.conf配置文件復制到qt-everywhere-opensource-src-4.8.3/mkspecs/qws/linux-arm-gnueabi-g++目錄下,這個文件用來告知QMake應該用哪個編譯器來編譯QT工程。然后對QT進行配置:./configure-embedded arm?\-xplatform qws/linux-arm-gnueabi-g++ \-little-endian \-opensource \-host-little-endian \-confirm-license \-nomake demos \-nomake examples \-prefix $ZYNQ_QT_INSTALL?雖然QT Lib是在本地進行交叉編譯的,這些配置選項則根據目標平臺而定,其中-embedded arm一項表示目標設備為ARM核心設備,-prefix $ZYNQ_QT_INSTALL則將QT Lib安裝到指定的目錄里。兔子在看到這個選項后當即想到能不能在Xilinx其他系列的FPGA上移植QT。很不幸的是,目前QT似乎并不支持MicroBlaze或NIOS II這樣的軟核,雖然也有資料顯示可以實現,但應該需要不小的工作量。還有待進一步研究啊。配置完成后進行編譯:make編譯好了就可以進行安裝(安裝需要在root權限下進行):make install之后將Xilinx交叉編譯器中的基礎C++庫復制到QT的安裝目錄下:cp -P /path/to/cross/compiler/arm-xilinx-linux-gnueabi/libc/usr/lib/libstdc++.so*???????????? $ZYNQ_QT_INSTALL/lib這樣就位Zynq平臺手動安裝了一個QT Lib。二、為ZedBoard制作預編譯QT庫鏡像安裝好QT Lib后,已經可以直接編譯QT工程了,但是想要在ZedBoard上運行還需要將所需的庫文件拷貝到ZedBoard上,那么為什么要把它做成鏡像文件呢?兔子的理由是這樣的:以Digilent出廠默認的Demo系統為例,該系統的rootfs是通過在內存中虛擬出一個8M-Byte大小的空間并加載固定的鏡像文件來實現的,這個rootfs十分小巧,但缺點是空間不足。數十兆的QT支持庫無法裝入這個小鏡像里,即使可以也會占用大量內存。因此只要將其做成鏡像的形式,就可以保存在SD卡中,通過mount指令裝載,節省了內存資源。Xilinx已經提供了制作鏡像的方法(安裝需要在root權限下進行):cd $ZYNQ_QT_BUILDdd if=/dev/zero of=qt_lib.img bs=1M count=80mkfs.ext2 -F qt_lib.imgchmod go+w qt_lib.imgmount qt_lib.img -o loop /mntcp -rf $ZYNQ_QT_INSTALL/* /mntchmod go-w qt_lib.imgumount /mnt這個qt_lib.img就是我們需要的QT運行庫了。三、編譯QT工程在上一篇博客中,我們已經建立好了一個QT工程,名為HelloQT。在交叉編譯之前,建議復制一份工程文件夾,以防交叉編譯后,QT Creator無法再運行該工程。這里我們將復制得到的文件夾命名為zed_complie,保證ZYNQ_QT_INSTALL和PATH變量已經配置正確(可以按之前講的方法把兩個export命令加入到開機自動運行中),在這個文件夾下,依次執行下列指令:qmake –projectqmakemake完成后會生成一個與文件夾同名的可執行文件,在這里就叫zed_complie。和拷貝到SD卡中,在ZedBoard里裝載qt_lib.img。要注意的是,這個鏡像最好裝載到與本地安裝目錄相同的路徑下,即ZYNQ_QT_INSTALL指向的目錄,兔子就把這個鏡像裝載到/arm/qt/qt-lib/文件夾下(mmcblk0p2是SD卡的分區)。mount /dev/mmcblk0p2 /mnt/mount /mnt/qt_lib.img? /arm/qt/qt-lib/這樣一來,就可以運行QT程序了。-qws指令用來建立一個運行QT軟件必須的QWS Server,這是由QT的運行機制決定的,軟件會從/arm/qt/qt-lib/文件夾里調用QT運行庫。/sdcard/zed_compile –qws再根據兔子之前講的修改rootfs鏡像的方法,便能夠實現ZedBoard上電自動加載QT庫并運行我們自己開發的應用軟件。深入思考:1.能否通過修改環境變量來改變調用QT運行庫的位置?2.如何為Linaro系統編譯QT庫,并在Linaro系統下運行QT軟件?這兩個問題就留給大家思考吧,希望研究出結果的朋友不吝分享啊。最后發一個ZedBoard上的運行效果圖:?
ZedBoard學習手記(九) 在ZedBoard上運行QT圖形軟件
- Xilinx(119164)
- Zynq(46445)
- Zedboard(49064)
相關推薦
玩轉賽靈思Zedboard開發板(3):基于Zynq PL的流水燈
電子發燒友網核心提示:本文為玩轉賽靈思Zedboard開發板(3):基于Zynq PL的流水燈,內容精彩,敬請對電子發燒友網保持密切關注?;赯ynq PL的流水燈是使用PL做流水燈實驗,目的是為
2012-12-05 14:25:41
12770

玩轉賽靈思Zedboard開發板(1):ZedBoard詳解
電子發燒友網核心提示 :本文介紹了最新的Xilinx Zynq-7000 FPGA開發板 Zedboard 。Zedboard是基于Xilinx Zynq-7000擴展式處理平臺(EPP)的低成本開發板,也是行業首個面向開源社區的Zynq-7000擴展
2012-11-26 15:09:01
55135

玩轉賽靈思Zedboard開發板(6):如何在Zedboard上運行linux下的應用程序?
電子發燒友網編輯現為讀者整合《玩轉賽靈思Zedboard開發板》系列文章, 其中包括在ZedBoard開發板上的一些應用實例。本文主要講述Zedboard上的嵌入式linux應用,包括使用SDK設計最簡單的linux應用程序、linux交叉編譯環境搭建、設備驅動編寫等內容...
2013-01-24 13:38:18
16892

ZedBoard Vivado許可證無效
我購買了Zedboard,我在許可方面遇到了麻煩。使用我在電路板上收到的憑證我生成了許可證,該許可證通過電子郵件發送給我,我使用管理Xilinx許可證軟件添加了許可證。我還在磁盤,ISE
2019-03-12 13:49:36
Zedboard USB UART端口問題
Helo人,我一直在使用Zedboard進行一些項目。我的USB_UART適配器與電路板斷開連接,無法再次連接。我聯系了Xilinx和Digilent,但根據它們無法修復?,F在有一個解決方案是買一個
2020-04-02 07:00:45
Zedboard在Linux上運行helloworld
在Zedboard上實現了Linux,接下來我們就可以像其他的嵌入式linux開發一樣來使用Zedboard了。SDK提供了標準可視化的linux-arm交叉編譯鏈,不需要再進行交叉編譯環境的搭建
2018-06-28 11:10:51
Zedboard與uboot
的各項操作后,啟動SDK開始創建一個zynq FSBL,見下面圖 生成*.elf文件后,導入所需文件開始生成bin文件下圖是所需的文件創建完成后,生成一個boot.bin文件拷到sd卡,把SD卡放進Zedboard開發板,上電,發現uboot2018.1正常運行了
2018-06-06 10:33:53
zedboard為什么spdif核心無法立即實現?不支持bistream生成
Hiteam,我有一個zedboard和vivado 13.4許可證。一切都很好,我已經成功實現了一些設計我調查了adau1761 ADC并試圖通過logico axi4lite spdif來提供它
2018-12-10 10:29:01
zedboard是否支持SDIO?
你好我已經在zedboard上成功開發了SD / MMC驅動程序,我的海量存儲應用程序運行正常。 zedboard是否支持SDIO?我正在為AR6K3無線驅動程序工作。在開發SDIO驅動程序時,當我
2019-03-14 07:59:03
zedboard板載SD卡讀取問題!
大家好我用的是zedboard開發板,現在我有一個60M的數據需要處理,全部為十進制整形,每個數據長度至少8位,目前嘗試先放入SD卡,但讀取出現了問題,我用的是xilinx SDK提供的庫函數
2016-05-25 10:26:07
在PanGu Board上運行Qt應用實戰
FD、16bit ADC等等。PanGu開發板的接口圖示下面我們來體驗下,如何在PanGu Board上運行Qt應用。PanGu Board默認安裝的是Weston圖形的Linux系統,運行Qt
2019-12-10 11:30:08
評論