勉強しないとな~blog

ちゃんと勉強せねば…な電気設計エンジニアです。

ZYBOを進める - 18.アプリケーションの自動起動

時間が空きましたが、チュートリアルを継続です。 今回は、Linuxの起動時にアプリケーションを自動で起動するようにする、という内容です。

参考

参考サイトとXilinxドキュメントを参考にします。

参考サイト :

ZYBO (Zynq) 初心者ガイド (15) Linux起動時にアプリケーションを自動実行させる - Qiita

Xilinxドキュメント :

https://www.xilinx.com/support/documentation/sw_manuals/xilinx2018_2/ug1144-petalinux-tools-reference-guide.pdf

p68 "Application Auto Run at Startup" から

Linuxでのアプリケーション自動起動

Linuxでは、システム起動時に/etc/init.d ディレクトリに置かれたスクリプトを実行するようになっているとのこと。

Linux - 起動スクリプトの起動と停止

Linux起動の仕組みを理解しよう[rcスクリプト編]:Windowsユーザーに教えるLinuxの常識(最終回) - @IT

手順

完全に参考サイトの通りです。 これでは記事にならないので、やっている内容を確認しながら進めてみます。
アプリケーション起動用スクリプトを間に挟むやり方でやります。

起動時に実行するアプリケーションプロジェクトの作成

開発用Ubuntuで、Petalinuxプロジェクトディレクトリに移動して、以下を実行します。

petalinux-create -t apps --template install -n myinit --enable

以下を参考に、このコマンドの内容を確認してみます。

https://www.xilinx.com/support/documentation/sw_manuals/xilinx2016_4/ug1157-petalinux-tools-command-line-guide.pdf

p19

petalinux-createコマンドの詳細が記載されています。 これを見ると、上のコマンドは、

  • -t apps オプション : Petalinuxプロジェクト内にapplication componentを追加する
  • --templateオプション : アプリケーションのテンプレートを指定(オプション)
    • install : ビルド済みのバイナリを追加する場合、このテンプレートを指定します。
  • --enable : componentの作成後、ルートファイルシステムに追加する

というような内容になっています。

実行結果

noki@ubuntu:~/work/Petalinux/Zybo-base-linux-peta$ petalinux-create -t apps --template install -n myinit --enable
INFO: Create apps: myinit
INFO: New apps successfully created in /home/noki/work/Petalinux/Zybo-base-linux-peta/project-spec/meta-user/recipes-apps/myinit
INFO: Enabling created component...
INFO: sourcing bitbake
INFO: oldconfig rootfs
INFO: myinit has been enabled 
noki@ubuntu:~/work/Petalinux/Zybo-base-linux-peta$ 

生成ファイルの変更

生成されたファイルのうち、以下を参考サイトの通りに編集します。

  • project-spec/meta-user/recipes-apps/myinit/myinit.bb
  • project-spec/meta-user/recipes-apps/myinit/files/myinit

以下のファイルは新規作成して、内容を編集します。

  • project-spec/meta-user/recipes-apps/myinit/files/myinit_run.sh


編集している内容を少し確認してみます。

  • project-spec/meta-user/recipes-apps/myinit/myinit.bb
    • install -d ${D}${sysconfdir}/init.d
    • install -m 0755 ${S}/myinit ${D}${sysconfdir}/init.d/myinit
      myinitアプリケーションを/etc/init.dにインストールする、という内容のようです。
      正確にはbitbakeツールを知らないと分からないかと。
      デフォルトで生成されるファイルでは、このインストール先が/usr/binになっていますが、これで起動時自動実行になるようです。
    • install -d ${D}${bindir}
    • install -m 0755 myinit_run.sh ${D}${bindir}
      myinit_run.shスクリプト/usr/binにコピーします。
  • project-spec/meta-user/recipes-apps/myinit/files/myinit
    • これはrcスクリプトです。
      起動時にこれが実行されるようになっているとのこと。
    • rcスクリプト実行時に引数が渡されるようで、これに応じた処理をするようになっています。
      • start
      • stop
      • restart

再ビルド

以下のコマンドを実行します。

petalinux-build -x package

実行

上記でできたイメージをSDカードにコピーして、ZYBOに挿入し、電源を入れると、LEDが点滅しました!

次回

チュートリアルはもうちょっとなので、がんばって進めます。
次は自作IPの制御という内容で、オリジナルのシステムを作っていく上では大事な内容になると思います。