有時在開發過程中,需要把畫面資訊或是圖片給截錄出來做成報告交差.每次都透過FrameBuffer的記憶體輸出(cat /dev/fb0 > xxx.raw),再將這些資料做處理.

一來一往,花費了不少時間,也搞得目瞅都灰灰了.

在網路看到有人推gsnap這程式小又好用,原始檔只有gsnap.c,重編了一下果然是神物啊.畫面或圖片咻的一下就完成.讓摸魚時間增加了不少.

gsnap的原始檔可以在 https://github.com/wuqingwei/gsnap 下載

      gsnap 需要使用到libjpeg , ligpng及 zlib 三個 liberary.  github 也說明了相對清楚

X3拔拔用的版本分別為: zlib-1.2.8.tar.gz ,  jpegsrc.v9d.tar.gz ,  libpng-1.6.31.tar.xz

1. 重編zlib

./configure CC=arm-linux-gnueabihf-gcc --prefix=/opt/tools/zlib_install

make

make install

2. 重編libjpeg

      ./configure CC=arm-linux-gnueabihf-gcc --host=arm-linux --prefix=/opt/tools/jpeg_install --enable-shared --enable-static

make

make install

3 重編libpng

./configure --host=arm-linux-gnueabihf CC=arm-linux-gnueabihf-gcc --prefix=/opt/tools/png_install

make

make install

4. 重編gsnap

 寫個 sh檔

arm-linux-gnueabihf-gcc -g gsnap.c \
-L/opt/tools/zlib_install/lib -L/opt/tools/jpeg_install/lib -L/opt/tools/png_install/lib \
-I/opt/tools/zlib_install/include -I/opt/tools/jpeg_install/include -I/opt/tools/png_install/include \
-lpng -ljpeg -lz -lm -o gsnap

產出 gsnap. 複制至開發板上的/usr/bin下

將libz.so, libjpeg.so.9,libpng16.so 也複制到開發板的/usr/lib下

執行gsnap

2021-11-30 11-42-36 的螢幕擷圖1.png

完成

ZYNQaa.png

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

X3拔拔 發表在 痞客邦 留言(0) 人氣()

利用psplash軟體輕鬆實現開機畫及進度條顯示.

1. 下載psplash: git clone https://github.com/g0hl1n/psplash

2. 將圖片轉換成程式碼檔案:./make-image-header.sh XXX.png POKY,生成圖片檔案XXX-img.h(其中POKY是XXX-img.h裡的標頭,對應於psplash.c所以延用比較省事. 圖片檔只能是png檔)

3.修改psplash.c的h檔, 將#include "psplash-poky-img.h"替換成#include "xxx-img.h"

4.製作autogen.sh指令碼,用於生成Makefile,如下
#!/bin/bash
aclocal
autoheader
automake --add-missing
autoconf
5.生成Makefile:./autogen.sh

6.配置交叉編譯庫:./configure --host=arm-linux CC=arm-linux-gnueabihf-gcc
7.執行make:生成psplash與psplash-writer 兩個檔案

8.將psplash與psplash-write拷貝到開發板的/usr/bin/目錄下。
9.製做一個S00psplash.sh腳本放在開發板的/etc/rcS.d/目錄下,如此,當kernel執行完後就會開始顯示進度條了.

ZYNQ-XXX.png

10.完成.缺點是只能在kernel完成後才會開始顯示.

X3拔拔 發表在 痞客邦 留言(0) 人氣()

FPGA 部份:

1. 將I2C0 設定為EMIO,並增加2支EMIO 的GPIO腳當做是GT911 的RST及INT.

20211110-1.png

20211110-2.png

20211110-3.png

2. 執行 Generate Bitstream,產生.hdf檔

驅動部份:

3.使用petalinux 選取kernel的選項

  Device Drivers --->

         Input device support  --->

        [*] Touchscreens --->

                 <*>   Goodix I2C touchscreen

                 <*>   Goodix gt9xx I2C touchscreen

20211110-4.png

4. 增加devicetree 的說明

&i2c0 {
       #address-cells = <1>;     
       #size-cells = <0>;
    clock-frequency = <10000000>;
        interrupt-parent = <&intc>;
        interrupts = <0 25 4>;
    gt911@5d {                  
            compatible="goodix,gt9XX";
         reg = <0x5d>;  
            goodix,rst-gpio = <&gpio0 54 0 GPIO_ACTIVE_LOW>;
            goodix,irq-gpio = <&gpio0 55 0 GPIO_ACTIVE_LOW>;
    };
};

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

  重新包裝BOOT.BIN及image.ub 檔

6.啟動系統,查看BOOT訊息

20211110-5.png

7.產生事件中斷.

20211110-6.png

8. 直接測試TouchScreen ,有數值產生.

20211110-7.png

9. 驅動成功.

X3拔拔 發表在 痞客邦 留言(0) 人氣()