コラム

2023年05月18日

TorizonCoreでの開発例(評価/開発中の皆様へ)

TorizonCoreでの開発例(評価/開発中の皆様へ)

Toradex製品のソフトウェアのTorizoneCoreでの開発例をご紹介いたします

 

当ページを開いてくださり、ありがとうございます。
このコラムでは、Toradex製品に関わるノウハウやチップス的な事柄を記載させていただきます。

 

まず、TorizonOS(TorizonCore)を利用OSとしてオススメすると、「dockerは分からない」「OSに直接書く方が慣れている」「起動が遅い」などと言ったご意見を頂戴いたします。

ですが、Torizonは既にOSに組み込まれておりインストールや設定の手間も不要で必要最小限のコマンドさえ行えば、dockerの知識を保有していなくてもアプリ開発が行える仕組みになっております。

コンテナを起動すれば、後はdebianベースのLinuxと同じ操作が出来ることを実感されると思います。

 

また、デモの「portainer (dockerの上で動作するコンテナ)」が表示されるまでの体感にて「遅い」と感じられることは、承知しております。

しかし、実際の開発や最終製品に「portainer」が入ることはまず無いと思います。(遅い原因は本コンテナがコンテナ管理ツールとして、ネットワークを介してのチェックなどを行っているからです)

後述しますが、コンテナが無いTorizonOSをお試しになると、yoctoベースのLinuxと大差ないことが分かります。

 

残念な点としてTorizon Core (≒ docker)は、後述するコンテナの所在が「docker hub」と言うクラウド上にありますので、外部機器を社内ネットワークに接続できない制限がある場合は手間が少し増えることになります。

ダウンロードを行う際のみ、PCを使ってメディアでインストールするか、LTEなどの別の接続手段を用いることになります。

もし、ネットワーク接続に問題が無ければ以降の操作方法を参考に実際に試していただき、yoctoの開発手順よりも簡便なことをご理解いただけると思います。

 

 

では次に、Torizon Core (≒ docker)での操作方法並びに開発例をご紹介いたします。

(尚、dockerやLinuxのコマンド詳細説明については、記載スペースの都合上割愛させていただきます)

 


 

    1.  TorizonOSをインストールしてください。開発には「TorizonCore Linux with no containers pre-provisioned」版が良いかと思います。(導入時にはコンテナが含まれておりません)
      ※evalution containersが含まれるイメージにて本記事の内容を行う場合、別途操作が必要となります。
      ※:https://developer.toradex.com/software/toradex-embedded-software/toradex-download-links-torizon-linux-bsp-wince-and-partner-demos/

 

    1.   起動してもモニタには何も表示されていないと思いますが、前回説明をさせていただいた方法でPCよりログインを行います。

 

    1.  ログインすると、OS(docker のプラットフォーム部分)での操作が行えます。⇒ docker コマンドが可能になります。

 

    1.  次に開発を行うためのコンテナをダウンロード&実行します。(ダウンロードは、該当コンテナイメージがローカル上にない場合のみ行われます)

# docker run -e ACCEPT_FSL_EULA=1 -d –rm –name=weston –net=host \
–cap-add CAP_SYS_TTY_CONFIG \
-v /dev:/dev -v /tmp:/tmp -v /run/udev/:/run/udev/ \
–device-cgroup-rule=’c 4:* rmw’ –device-cgroup-rule=’c 13:* rmw’ \
–device-cgroup-rule=’c 199:* rmw’ –device-cgroup-rule=’c 226:* rmw’ \
torizon/weston-vivante:$CT_TAG_WESTON_VIVANTE –developer –tty=/dev/tty7

https://developer.toradex.com/torizon/application-development/ など参照の事

    1.  モニタにwestonと言うwindow managerが表示されます(ターミナルのアイコンが上部に表示されている)。こちらは、GUI付きのdebian containerになります。基本的にこのコンテナにツールなどをインストールして開発していく方法が最も簡単です。
    2.  ただし、PCのターミナル上はOSのままです。コンテナで作業を行い且つツールなどをroot権限でインストールするために、以下のコマンドを実行しコンテナに入って行きます。

      # docker exec -it -u=root weston /bin/bash

       

    3.  プロンプトが変わって、コンテナ内のdebian Linuxを操作が出来るようになりました。⇒ dockerコマンドは受け付けません。

 

    1.  以降はCUIのLinuxにて作業していきます。目的に合わせた環境構築などをしてください。(以下は一例です)
  1. HelloWorld(c版)を表示させる
  2. apt update & apt upgrade & apt install build-essential
  3. nano HelloWorld.c( エディタは好みのものをapt install で持ってくる)
  4. HelloWorldのコードを書く
  5. gcc -o HelloWorld HelloWorld.c
  6.  ./HelloWorld → HelloWorld!!

 

    1. コンテナ上で「exit」とタイプすると、元のOS(docker engine)へと戻ります。⇒ 再びdocker コマンドが可能になります。

 

※ここで注意、このまま電源OFFすると作業したものが全て無くなります。(仮想空間での作業のため) これでは、作業に支障をきたしますので、以下にてdockerのチップス的な利用方法をご紹介します。

  • docker run -e ACCEPT_FSL_EULA=1 -d –restart unless-stopped –name=weston ・・・

電源OFFしてもシステム再起動時に自動で実行されます。「docker stop」で完全に終了します。

  • docker run -e ACCEPT_FSL_EULA=1 -d –rm –name=weston –net=host –cap-add CAP_SYS_TTY_CONFIG \
    -v /dev:/dev -v /tmp:/tmp -v /run/udev/:/run/udev/ -v /home/torizon:/home/torizon\ ・・・

OSとコンテナが同じ場所を共有します。指定したフォルダ上に保存したファイルがOS上に残ります。

  • # docker ps
    CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
    5207d7754xxx torizon/weston-vivante “/usr/bin/entry.sh -…” 2 weeks ago Up 4 hours weston

# docker commit 5207d7754xxx test-container

# docker stop 5207d7754xxx

# docker run -e ACCEPT_FSL_EULA=1 -d –rm –name=weston –net=host –cap-add CAP_SYS_TTY_CONFIG \
-v /dev:/dev -v /tmp:/tmp -v /run/udev/:/run/udev/ \
–device-cgroup-rule=’c 4:* rmw’ –device-cgroup-rule=’c 13:* rmw’ \
–device-cgroup-rule=’c 199:* rmw’ –device-cgroup-rule=’c 226:* rmw’ \
test-container –developer weston-launch \
–tty=/dev/tty7 –user=torizon

作成したコンテナをメモリ上に保存し、次回から保存したコンテナを呼び出すことで続きの作業が出来ます。インストールしたツールなども保持されます。

 

他に作成したコンテナを「docker hub」に保存する方法もございますが登録手続きなどがありますので、共有したいコンテナを作成される際などがよろしいかと思います。

 

以上、簡単ではございますが開発の一助となれば幸いです。