KV260アプリケーションの開発方法(3)

15952 ワード

1.はじめに

KV260のARM上で動作するアプリケーションをPetaLinuxに追加する手順

2.アプリケーションの準備

今回はSmartCameraのアプリケーションを参考に使用して行きます。
Githubからクローンしてきます。Revisionが2021.1であることを確認します。

$ git clone https://github.com/Xilinx/smartcam
$ git branch
* 2021.1

SmartCameraアプリでGstreamerを使用するのでpetalinux-configコマンドを実行してGStreamerに必要なパッケージを有効にします。

$ petalinux-config -c rootfs
  • 「Filesystem Packages」→「misc」→「gstreamer1.0-meta-base」
  • 「Filesystem Packages」→「misc」→「gstreamer1.0-plugins-bad」
  • 「Filesystem Packages」→「misc」→「gstreamer1.0-plugins-base」
  • 「Filesystem Packages」→「misc」→「gstreamer1.0-plugins-good」
  • 「Filesystem Packages」→「misc」→「v4l-utils」
  • 「Filesystem Packages」→「misc」→「matchbox-config-gtk」
  • 「Filesystem Packages」→「misc」→「matchbox-panel-2」
  • 「Filesystem Packages」→「libs」→「libmali-xlnx」
  • 「Filesystem Packages」→「multimedia」→「gstreamer1.0」
  • 「Filesystem Packages」→「multimedia」→「gstreamer1.0-omx」
  • 「Filesystem Packages」→「multimedia」→「gstreamer1.0-rtsp-server」
  • 「Filesystem Packages」→「x11」→「matchbox-keyboard」
  • 「Filesystem Packages」→「x11」→「matchbox-session」
  • 「Filesystem Packages」→「x11」→「matchbox-session-sato」
  • 「Petalinux Package Groups」→「packagegroup-petalinux-opencv」
  • 「Petalinux Package Groups」→「packagegroup-petalinux-v4lutils」
  • 「Petalinux Package Groups」→「packagegroup-petalinux-gstreamer」

3.クロスコンパイル環境の準備

続いてアプリケーションのクロスコンパイル環境となるPetaLinuxのSDKをビルドします。

$ source <path-to-installed-PetaLinux>/settings.sh
$ cd <Petalinux-project-root>
$ petalinux-build -s

SDKを<Petalinux-project-root>/images/linux/sdkにインストールします。

$ images/linux/sdk.sh
PetaLinux SDK installer version 2021.1_SOM
============================================
Enter target directory for SDK (default: /opt/petalinux/2021.1_SOM): ./images/linux/sdk
You are about to install the SDK to "/opt/petalinux/xilinx-k26-starterkit-2021.1/images/linux/sdk". Proceed [Y/n]? Y

SDKの設定を読み込みます

$ source `<Petalinux-project-root>/images/linux/sdk/environment-setup-cortexa72-cortexa53-xilinx-linux

4.アプリケーションのクロスコンパイル

続いてアプリケーションをクロスコンパイルします。
必要パッケージをインストールします。

$ sudo apt-get install rpm

SmartCamのインストール先フォルダに移動し、クロスコンパイルを実行します。

$ cd <path-to-installed-smartcam>
$ chmod +x build.sh
$ ./build.sh <Petalinux-project-root>/images/linux/sdk
$ source images/linux/sdk/environment-setup-aarch64-xilinx-linux

ビルドが成功すると<path-to-installed-smartcam>/build/smartcam-1.0.1-1.aarch64.rpmというファイルが生成されます。

5.SDカードの準備

設定変更したのでPetaLinuxをビルドしてSDカードに書き込みなおします。
最初にビルドします。

$ petalinux-build

PetaLinuxのSDカードイメージを作成します。
アプリケーションを追加したPetaLinuxをパッケージングし、GZIPで圧縮ファイルを生成します。

$ petalinux-package --wic --bootfiles "ramdisk.cpio.gz.u-boot boot.scr Image system.dtb"
$ gzip images/linux/petalinux-sdimage.wic

EtcherでSDカードに書き込みます。

5.アプリケーションのインストール

KV260にSDカードを挿して電源を入れます。
今回はクロスコンパイルで生成したsmartcam-1.0.1-1.aarch64.rpmをKV260のPetaLinuxに直接転送してインストールしてみます。始めにPetaLinuxからKV260のIPアドレスを変更します。

PetaLinux
$ sudo ifconfig eth0 192.168.0.20

転送側PCのIPアドレスを192.168.0.15に設定し、コマンドプロンプトからSCPコマンドでsmartcam-1.0.1-1.aarch64.rpmを転送します。

HostPC
$ scp smartcam-1.0.1-1.aarch64.rpm [email protected]:/home/petalinux/

PetaLinuxに戻ります。
PetaLinuxのHomeディレクトリにsmartcam-1.0.1-1.aarch64.rpmが転送されていることを確認し、パッケージインストールします。

PetaLinux
$ sudo rpm -ivh --force ./smartcam-1.0.1-1.aarch64.rpm
Verifying...                          ################################# [100%]
%pretrans(smartcam-1.0.1-1.aarch64): scriptlet start
%pretrans(smartcam-1.0.1-1.aarch64): execv(/bin/sh) pid 1421
%pretrans(smartcam-1.0.1-1.aarch64): waitpid(1421) rc 1421 status 0
Preparing...                          ################################# [100%]
%prein(smartcam-1.0.1-1.aarch64): scriptlet start
%prein(smartcam-1.0.1-1.aarch64): execv(/bin/sh) pid 1424
%prein(smartcam-1.0.1-1.aarch64): waitpid(1424) rc 1424 status 0
Updating / installing...
   1:smartcam-1.0.1-1                 ################################# [100%]
%post(smartcam-1.0.1-1.aarch64): scriptlet start
%post(smartcam-1.0.1-1.aarch64): execv(/bin/sh) pid 1427
%post(smartcam-1.0.1-1.aarch64): waitpid(1427) rc 1427 status 0
%posttrans(smartcam-1.0.1-1.aarch64): scriptlet start
%posttrans(smartcam-1.0.1-1.aarch64): execv(/bin/sh) pid 1428
%posttrans(smartcam-1.0.1-1.aarch64): waitpid(1428) rc 1428 status 0

6.アプリケーションの動作

以下でインストール済みのファームウエアをアップロードします。