AX 7020ベースのpetalinuxでLCDを生成して駆動(071)

10778 ワード

AX 7020ベースのpetalinuxによるタッチパネルの生成と駆動(071)


環境


Ubuntu14.04、タッチパネルAN 071 vivado 2015.4、petalinux 2015.4、黒金zynq開発板AX 7010/AX 7020テスト:QT 5.6.2

プロセスディレクトリ


1、PCの下にvivado 2015をインストールする.4 2、PCの下にqt 5をインストール.6.2、クロスコンパイルqt 5.6.2 3、PCの下にpetalinux 4をインストールし、タッチパネルに基づくvivadoエンジニアリングドキュメントでpetalinux 5を生成し、SDカードをダウンロードして準備する

紹介する


本文はalinxの公式ドキュメントの統合であり,他のエンジニアリングに基づいて生成されたpetalinuxに基づいて,公式ドキュメントの2つのエラーを修正した.一つは最上位デバイス数コードのBug一つは構成カーネルの選択である

コメント


Xilinxのクロスコンパイラ(2017年前)でコンパイルされたQTライブラリはdebianファイルシステムではサポートされておらず、プログラム実行時に「ファイルが見つかりません」というエラーが報告されます.すなわち、linaroのようなファイルシステムにarm-xilinx-linux-gnueabi-gcc/g++を付けることはできません.qtライブラリのコンパイルは、Xilinxが提供するコンパイラを使用するが、LINUXのルートファイルシステムはそうではない.その後、Xilinxはこの問題を解決するために、自分のコンパイラを放棄し、これは2017.4バージョンで、Xilinxは自分のコンパイラを放棄し、arm-xilinx-linux-gnueabi-シリーズがない.

1、PCの下にvivado 2015をインストールする.4


ベースライブラリのインストール
sudo su
rm /bin/sh
ln -s /bin/bash /bin/sh
ls -al /bin/sh
apt-get install lib32z1 lib32ncurses5 lib32bz2-1.0 lib32stdc++6
apt-get install iproute2:i386
apt-get install gawk:i386
apt-get install gcc
apt-get install gcc:i386
apt-get install git:i386
apt-get install make:i386
apt-get install net-tools:i386
apt-get install libncurses5-dev:i386
apt-get install zlib1g-dev:i386
apt-get install libssl-dev:i386
apt-get install flex:i386
apt-get install bison:i386
apt-get install libselinux1:i386
apt-get install libncurses5 libncurses5-dev
apt-get install libc6:i386
apt-get install libstdc++6:i386
apt-get install zlib1g:i386
apt-get install libssl-dev
apt-get install tftpd tftp openbsd-inetd

sudo tar -zxvf Xilinx_Vivado_SDK_2015.4_1118_2.tar.gz
cd Xilinx_Vivado_SDK_2015.4_1118_2
./xsetup

後の3段階はインストールを解凍して、できるだけ/opt/Xilinxディレクトリの下でインストールする方がよくて、空間が足りなくて拡張ディスクのインストールが完成した後に、権限を高めることを忘れないでください
sudo chmod 777 -R /opt/Xilinx/
chmod 777 -R ~/.Xilinx/

vivadoの使用
sudo su
source /opt/Xilinx/Vivado/2015.4/settings64.sh
vivado&

2、PCの下にqt 5を取り付ける.6.2、クロスコンパイルqt 5.6.2


ベースライブラリのインストール、インストールパッケージへのアクセス権の向上、インストールプロセスへの移行
sudo apt-get install mesa-common-dev libgl1-mesa-dev libglu1-mesa-dev freeglut3-dev g++
chmod +x qt-opensource-linux-x64-5.6.2.run
./qt-opensource-linux-x64-5.6.2.run

ZYNQのQTコンパイルファイル:alinx_heijin_QT.tar.gzはそれを解凍し、/home/work/ディレクトリの下に解凍し、中に入って実行することに注意します.
./build.sh

§intallディレクトリに入ると、ヘッダファイル「include」ディレクトリ、「lib」ディレクトリなどが表示されます.ここで、「lib」は実行ライブラリであり、「plugins」はプラグインです.build.shファイルのmakeコマンドは、コンピュータのパフォーマンスに応じてマルチスレッドPCにnfsをインストールし、/home/workディレクトリをマウントすることができます.具体的には、基本開発チュートリアルの後の章を参照してください.

3、PCの下にpetalinuxをインストールする

sudo su
rm /bin/sh
ln -s /bin/bash /bin/sh
ls -al /bin/sh
apt-get install tofrodos:i386
apt-get install iproute2:i386
apt-get install gawk:i386
apt-get install gcc
apt-get install gcc:i386
apt-get install net-tools:i386
apt-get install zlib1g-dev:i386
apt-get install libssl-dev:i386
apt-get install flex:i386
apt-get install bison:i386
apt-get install libselinux1:i386
apt-get install libncurses5 libncurses5-dev
apt-get install libc6:i386
apt-get install libstdc++6:i386
apt-get install zlib1g:i386
apt-get install libssl-dev
apt-get install tftpd tftp openbsd-inetd

petalinuxインストールパッケージ(petalinux-v 2015.4-final-installer-dec.run)をubuntuシステムにコピーします.一部の仮想マシンは直接コピーできます.直接コピーできない場合は、まずUディスク、モバイルハードディスクにコピーし、仮想マシンの下でUディスクからコピーすることができます.petalinuxインストールパッケージがあるディレクトリで端末を実行します.PetalinxインストールパッケージのディレクトリでTernimalウィンドウを開き、次の2つのコマンドを入力します.
sudo su
chmod +x petalinux-v2015.4-final-installer-dec.run
./petalinux-v2015.4-final-installer-dec.run /opt/Xilinx

4、タッチスクリーンに基づくvivadoエンジニアリングドキュメントによってpetalinuxを生成する


(1)工程生成ハードウェアファイル


vivadoで工事ts_を実行するan071_linux_ax 7020は、sdkを再シミュレーションして実行し、hdファイルを生成しますが、元のzipファイルも実際に生成され、直接使用されます.vivadoエンジニアリングのディレクトリの下には、「ts_an 071_linux_ax 7020.sdk/system_wrapper_hw_platform_0」ディレクトリが生成されます.ここで、「system_wrapper_hw_platform_0」はpetalinuxに必要なフォルダであり、「system_wrapper_hw_platform_0」フォルダをpetalinuxがインストールされたLinuxシステムにコピーします.ここでは、homeworkディレクトリの下にpetalinuxというフォルダを新規作成します.「system_wrapper_hw_platform_0」フォルダをこのフォルダの下にコピーし、petalinuxの使用に備えて「ax 7020_hw_platform_0」と名前を変更します.

(2)駆動およびpetalinuxエンジニアリング生成作成


petalinuxのデフォルトではHDMI出力に関するドライバはありません.ブラックゴールドはこのドライバをpetalinuxのドライバに追加し、ブラックゴールドが提供するドライバを既存のドライバに置き換え、まず圧縮ファイル「drivers.tar.gz」を「/home/work/petalinux」ディレクトリにコピーします.
rootアカウントの下に「/opt/Xilinx/petalinux-v 2015.4-final/components/linux-kernel/xlnx-4.0」ディレクトリを入力します.これはpetalinuxインストール後のLinuxカーネルが存在するディレクトリで、解凍コマンドを実行します.
sudo su
cd /opt/Xilinx/petalinux-v2015.4-final/components/linux-kernel/xlnx-4.0
tar -zxvf /home/work/petalinux/drivers.tar.gz

/home/work/petalinuxディレクトリの下
sudo su
source /opt/Xilinx/petalinux-v2015.4-final/settings.sh
source /opt/Xilinx/Vivado/2015.4/settings64.sh
petalinux-create --type project --template zynq --name ax7020_an071
cd ax7020_an071
petalinux-config --get-hw-description ../ax7020_hw_platform_0/

save、exit

(3)設備ツリーの修正


プロジェクトディレクトリの下にある/home/work/petalinux/ax 7020_an071
gedit subsystems/linux/configs/device-tree/system-top.dts

次のようにコピー
/dts-v1/;
/include/ "system-conf.dtsi"
/ {
	usb_phy0:usb_phy@0 {
		compatible = "ulpi-phy";
		#phy-cells = <0x0>;
		reg = <0xe0002000 0x1000>;
		view-port=<0x170>;
		reset-gpios = ;
		drv-vbus;
	};
	xilinx_drm_0: xilinx_drm {
		compatible = "xlnx,drm";
		xlnx,vtc = ;
		xlnx,connector-type = "HDMIA";
		xlnx,encoder-slave = ;
		clocks = ;
		planes {
			xlnx,pixel-format = "xrgb8888";
			plane0 {dmas = ;
			dma-names = "dma";
				};
			};
		};
		an071_encoder_0: an071_encoder {
			compatible = "ax_lcd,drm-encoder";
		};
};

&usb0 {
	status = "okay";
	dr_mode = "host";
	usb-phy = ;
};

&axi_dynclk_0 {
	compatible = "digilent,axi-dynclk";
	#clock-cells = <0x0>;
	xlnx,s00-axi-addr-width = <0x5>;
	xlnx,s00-axi-data-width = <0x20>;
	clocks = ;
};

&i2c1 {
	compatible = "cdns,i2c-r1p10";
	status = "okay";
	alinx_an071@38 {
		compatible = "alinx,an071";
		reg = <0x38>;
		interrupt-parent = ;
		interrupts = <0 29 4>;
	};
};

&v_tc_0 {
	compatible = "xlnx,v-tc-5.01.a";
	xlnx,det-achroma-en = <0x0>;
	xlnx,det-avideo-en = <0x1>;
	xlnx,det-fieldid-en = <0x0>;
	xlnx,det-hblank-en = <0x1>;
	xlnx,det-hsync-en = <0x1>;
	xlnx,det-vblank-en = <0x1>;
	xlnx,det-vsync-en = <0x1>;
	xlnx,detect-en = <0x0>;
	xlnx,fsync-hstart0 = <0x0>;
	xlnx,fsync-hstart1 = <0x0>;
	xlnx,fsync-hstart10 = <0x0>;
	xlnx,fsync-hstart11 = <0x0>;
	xlnx,fsync-hstart12 = <0x0>;
	xlnx,fsync-hstart13 = <0x0>;
	xlnx,fsync-hstart14 = <0x0>;
	xlnx,fsync-hstart15 = <0x0>;
	xlnx,fsync-hstart2 = <0x0>;
	xlnx,fsync-hstart3 = <0x0>;
	xlnx,fsync-hstart4 = <0x0>;
	xlnx,fsync-hstart5 = <0x0>;
	xlnx,fsync-hstart6 = <0x0>;
	xlnx,fsync-hstart7 = <0x0>;
	xlnx,fsync-hstart8 = <0x0>;
	xlnx,fsync-hstart9 = <0x0>;
	xlnx,fsync-vstart0 = <0x0>;
	xlnx,fsync-vstart1 = <0x0>;
	xlnx,fsync-vstart10 = <0x0>;
	xlnx,fsync-vstart11 = <0x0>;
	xlnx,fsync-vstart12 = <0x0>;
	xlnx,fsync-vstart13 = <0x0>;
	xlnx,fsync-vstart14 = <0x0>;
	xlnx,fsync-vstart15 = <0x0>;
	xlnx,fsync-vstart2 = <0x0>;
	xlnx,fsync-vstart3 = <0x0>;
	xlnx,fsync-vstart4 = <0x0>;
	xlnx,fsync-vstart5 = <0x0>;
	xlnx,fsync-vstart6 = <0x0>;
	xlnx,fsync-vstart7 = <0x0>;
	xlnx,fsync-vstart8 = <0x0>;
	xlnx,fsync-vstart9 = <0x0>;
	xlnx,gen-achroma-en = <0x0>;
	xlnx,gen-achroma-polarity = <0x1>;
	xlnx,gen-auto-switch = <0x0>;
	xlnx,gen-avideo-en = <0x1>;
	xlnx,gen-avideo-polarity = <0x1>;
	xlnx,gen-cparity = <0x0>;
	xlnx,gen-f0-vblank-hend = <0x500>;
	xlnx,gen-f0-vblank-hstart = <0x500>;
	xlnx,gen-f0-vframe-size = <0x2ee>;
	xlnx,gen-f0-vsync-hend = <0x500>;
	xlnx,gen-f0-vsync-hstart = <0x500>;
	xlnx,gen-f0-vsync-vend = <0x2d9>;
	xlnx,gen-f0-vsync-vstart = <0x2d4>;
	xlnx,gen-f1-vblank-hend = <0x500>;
	xlnx,gen-f1-vblank-hstart = <0x500>;
	xlnx,gen-f1-vframe-size = <0x2ee>;
	xlnx,gen-f1-vsync-hend = <0x500>;
	xlnx,gen-f1-vsync-hstart = <0x500>;
	xlnx,gen-f1-vsync-vend = <0x2d9>;
	xlnx,gen-f1-vsync-vstart = <0x2d4>;
	xlnx,gen-fieldid-en = <0x0>;
	xlnx,gen-fieldid-polarity = <0x1>;
	xlnx,gen-hactive-size = <0x500>;
	xlnx,gen-hblank-en = <0x1>;
	xlnx,gen-hblank-polarity = <0x1>;
	xlnx,gen-hframe-size = <0x672>;
	xlnx,gen-hsync-en = <0x1>;
	xlnx,gen-hsync-end = <0x596>;
	xlnx,gen-hsync-polarity = <0x1>;
	xlnx,gen-hsync-start = <0x56e>;
	xlnx,gen-interlaced = <0x0>;
	xlnx,gen-vactive-size = <0x2d0>;
	xlnx,gen-vblank-en = <0x1>;
	xlnx,gen-vblank-polarity = <0x1>;
	xlnx,gen-video-format = <0x2>;
	xlnx,gen-vsync-en = <0x1>;
	xlnx,gen-vsync-polarity = <0x1>;
	xlnx,generate-en = <0x1>;
	xlnx,has-axi4-lite = <0x1>;
	xlnx,has-intc-if = <0x0>;
	xlnx,interlace-en = <0x0>;
	xlnx,max-lines = <0x1000>;
	xlnx,max-pixels = <0x1000>;
	xlnx,num-fsyncs = <0x1>;
	xlnx,sync-en = <0x0>;
};

(4)カーネルの構成


プロジェクトディレクトリの下にある/home/work/petalinux/ax 7020_an071
petalinux-config -c kernel

Device Drivers ---->
Input device support --->
Touchscreens --->( Y)
<> Alinx_ts I2C Touchscreen support ( Y)
exit
exit
Graphics support --->
Direct Rendering Manager --->
ALINX LCD DRM Encoder Driver( Y)
exit
exit
Common Clock Framework
 Digilent axi_dynclk Driver( Y)
save
exit
petalinux-config -c rootfs

Filesystem Packages
base
external-xilinx-toolchain
libstdc++6
save
exit
petalinux-build

BOOTファイルのマージ
petalinux-package --boot --fsbl ./images/linux/zynq_fsbl.elf --fpga ./images/linux/system_wrapper.bit --
uboot --force

/home/work/petalinux/ax 7020_an 071/images/linux下のBOOT.BINとimage.ubはsdカードにコピーし、SDカードはまずFAT形式にフォーマットされ、パーティションを使用しないことに注意します.

(5)ダウンロード録画準備


ネットワークはipを表示します.例えば192.168.1.1136です.
mount -t nfs -o nolock 192.168.1.136:/home/work /mnt
cd /mnt/alinx_heijin_QT
source qt_env_set.sh
 
./test