| | Armadillo-X2 では基本的に ATDE という Armadillo 専用開発環境と、 Visual Studio Code (以降 VS Code と記載します) 向け Armadillo 開発用エクステンションを用いてアプリケーション開発を行っていきます。 この節では、アプリケーション開発のために、はじめに開発環境のセットアップを行います。
本節を完了すると、Armadillo を用いた製品の開発に即座に取り組むことができる状態になります。 開発環境のセットアップは、作業用 PC と Armadillo の両方に対して行います。
本節では初めに作業用 PC についてのセットアップを行い、その後に Armadillo についてのセットアップを行います。
そのため、新たに Armadillo を用意した場合や、Armadillo のセットアップをやり直したい方は本節の途中から行うことができます。
後半では Armadillo による開発方法の勝手を大まかに把握したい方を想定して、
Python アプリケーションによる LED 点滅の動作確認を行う項を用意しています。
不要な方はこの項をスキップしてください。
その後、 Armadillo のシリアルコンソールのセットアップ・操作方法について解説します。 開発環境をセットアップする上で、まずは次のものを用意してください。 -
作業用PC
-
LinuxまたはWindowsが動作し、ネットワークインターフェースと 1つ以上のUSBポートを持つPCです。
-
Armadillo-X2 開発セット一式
-
詳しくは「Armadillo-X2 開発セット」をご参照ください。
-
1 GB 以上の microSDカード
-
Armadilloの初期化・ABOSのアップデートの際に使用します。
-
ネットワーク環境
-
仮想化ソフトウェアや Armadillo の初期化インストールディスクイメージなどを作業用 PC にダウンロードする手順があります。
また、 「Armadillo に初期設定をインストールする」 の手順から Armadillo と作業用 PC をネットワーク通信ができるようにする必要があります。
作業用 PC をセットアップします。
アットマークテクノでは、製品のソフトウェア開発や動作確認を簡単に行うために、Oracle VM VirtualBox 仮想マシンのデータイメージを提供しています。
このデータイメージを ATDE(Atmark Techno Development Environment) と呼びます。
ATDE の起動には仮想化ソフトウェアである VirtualBox を使用します。 | |
---|
Oracle VM VirtualBoxには以下の特徴があります。 -
GPL v2(General Public License version 2)で提供されている []
-
VMware形式の仮想ディスク(.vmdk)ファイルに対応している
|
3.1.2.1. VirtualBox のインストールATDE を使用するために、作業用 PC に VirtualBox をインストールします。
VirtualBox の Web ページ(https://www.virtualbox.org/) を参照してインストールしてください。 また、ホスト OS が Linux の場合、デフォルトでは VirtualBox で USB デバイスを使用することができません。
ホスト OS(Linux)で以下のコマンドを実行後、ホスト OS を再起動してください。 [PC ~]$ sudo usermod -a -G vboxusers $USER ホスト OS が Windows の場合はこの操作は必要ありません。 ATDE のアーカイブ(.ova ファイル)を Armadillo サイト(https://armadillo.atmark-techno.com/resources/software/atde/atde-v9)から
ダウンロードします。 | |
---|
アットマークテクノ製品の種類ごとに対応している ATDE のバージョンが異なります。
本製品に対応している ATDE のバージョンは以下のとおりです。 -
VirtualBox
-
ATDE9 v20240925 以降
-
VMware
-
ATDE9 v20211201 から ATDE9 v20240826
|
ATDE9 は Debian GNU/Linux 11 (コードネーム bullseye) をベースに、Armadillo-X2 のソフトウェア開発を行うために必要なクロス開発ツールや、Armadillo-X2 の動作確認を行うために必要なツールが事前にインストールされています。 | |
---|
作業用 PC の動作環境(ハードウェア、VirtualBox、ATDE の対応アーキテクチャなど)により、 ATDE が正常に動作しない可能性があります。
VirtualBox の Web ページ(https://www.virtualbox.org/) から、
使用している VirtualBox のドキュメントなどを参照して動作環境を確認してください。 |
-
VirtualBox を起動し、[ファイル]-[仮想アプライアンスのインポート]を選択します。
-
[ソース]の項目で、ダウンロードした ATDE のアーカイブ(
.ova ファイル)を選択します。
-
[設定]の項目で、[ハードドライブをVDIとしてインポート]のチェックを外します。
-
[完了]をクリックします。インポートの処理が完了するまで数分程要します。
-
インポートの処理が完了したら、ホスト OS の環境に合わせた設定に更新するため
仮想マシンを選択して[設定]をクリックした後に[OK]をクリックします。
| |
---|
ATDE に割り当てるメモリおよびプロセッサ数を増やすことで、 ATDE をより快適に使用することができます。
仮想マシンのハードウェア設定の変更方法については、
VirtualBox の Web ページ(https://www.virtualbox.org/) から、
VirtualBox のドキュメントなどを参照してください。 |
-
仮想マシンを選択して[起動]をクリックしてください。
-
ATDE のログイン画面が表示されます。
ATDE にログイン可能なユーザーを、表3.1「ユーザー名とパスワード」に示します []。 表3.1 ユーザー名とパスワード ユーザー名 | パスワード | 権限 |
---|
atmark
| atmark
| 一般ユーザー | root
| root
| 特権ユーザー |
3.1.2.5. コマンドライン端末(GNOME端末)の起動Armadillo を利用した開発では、 CUI (Character-based User Interface)環境を提供するコマンドライン端末を通じて、 Armadillo や ATDE に対して操作を行う場面が多々あります。
コマンドライン端末にはいくつかの種類がありますが、ここではGNOMEデスクトップ環境に標準インストールされているGNOME端末を起動します。 GNOME端末を起動するには、図3.1「GNOME端末の起動」のようにデスクトップ左上のアプリケーションの「ユーティリティ」カテゴリから「端末」を選択してください。 図3.2「GNOME端末のウィンドウ」のようにウィンドウが開きます。 コマンドライン端末から次の操作を行い、ソフトウェアを最新版へアップデートしてください。 VirtualBoxは、ゲストOS (ATDE)による取り外し可能デバイス(USBデバイスやDVDなど)の使用をサポートしています。
デバイスによっては、ホストOS (VirtualBoxを起動しているOS)と ATDE で同時に使用することができません。
そのようなデバイスを ATDE で使用するためには、ATDE にデバイスを接続する 図3.4「ATDE にデバイスを接続する」 の操作が必要になります。 3.1.2.8. VirtualBox Guest Additions の再インストールATDE は VirtualBox 仮想マシン用ソフトである VirtualBox Guest Additions があらかじめインストールされた状態で配布されています。 Guest Additions のバージョンは VirtualBox 自体のバージョンと連動しているため、
お使いの VirtualBox のバージョンと ATDE にインストール済みの Guest Additions のバージョンが異なる場合があります。 VirtualBox と Guest Additions のバージョンが異なることによって問題が起こる可能性は低いですが、
これに起因すると思われる不具合(ATDEの画面・共有フォルダー・クリップボード等の不調)が発生した場合は、
以下の手順を参考に Guest Additions を再インストールしてください。
(実行前に ATDE のスナップショットを作成しておくことを推奨します) -
ATDE を起動後、上部バーの[ツール]-[Guest Additions CD イメージの挿入]を選択してください。
-
お使いの VirtualBox と同じバージョンの
VBox_GAs_[VERSION] が「ファイル」上に表示されます。
-
VBox_GAs_[VERSION] をマウントするために、「ファイル」から VBox_GAs_[VERSION] を押下してください。
インストールする前に、以下のコマンドで既にインストール済みの Guest Additions をアンインストールします。
sudo /opt/VBoxGuestAdditions-[VERSION]/uninstall.sh
以下のコマンドでお使いの VirtualBox のバージョンに合った Guest Additions がインストールされます。
cd /media/cdrom0
sudo sh ./autorun.sh
ホスト OS と ATDE 間でファイルを受け渡す手段として、共有フォルダーがあると大変便利です。
ここでは、ホスト OS と ATDE 間の共有フォルダを作成する手順を紹介しますが、
不要な方はこの手順をスキップしてください。 追加した共有フォルダーは、図3.8「「ファイル」に表示される共有フォルダー」のように「ファイル」からアクセスするか、
または /media/sf_share(共有フォルダー名) からアクセスできます。
( share というフォルダー名で作成すると、ATDE上では sf_share として表示されます。) 作業用 PC のセットアップです。
Armadillo-X2 の開発には、 VS Code を使用します。
ATDE のバージョン v20230123 以上には、 VS Code がインストール済みのため新規にインストールする必要はありませんが、
使用する前には図3.3「ソフトウェアをアップデートする」にしたがって最新版へのアップデートを行ってください。 以下の手順は全てATDE上で実施します。 VS Code を起動するために code コマンドを実行するか、「アプリケーション」の中から「Visual Studio Code」を探して起動してください。 | |
---|
VS Code を起動すると、日本語化エクステンションのインストールを提案してくることがあります。
その時に表示されるダイアログに従ってインストールを行うと VS Code を日本語化できます。 |
3.1.3.2. VS Code に開発用エクステンションをインストールするVS Code 上でアプリケーションを開発するために、
ABOSDE (Armadillo Base OS Development Environment) というエクステンションをインストールします。 エクステンションはマーケットプレイスからインストールすることができます。
VS Code を起動し、左サイドバーのエクステンションを選択して、検索フォームに「abos」と入力してください。 表示された「Armadillo Base OS Development Environment」の 「Install」ボタンを押すとインストールは完了します。 3.1.4. Armadillo の初期化と ABOS のアップデートArmadillo をセットアップします。
まずは、お手元の Armadillo に搭載されている Armadillo Base OS(ABOS) を最新版にします。
ABOS のバージョンが古い場合、本マニュアルで紹介されている重要な機能を使用できない可能性があります。
そのため、以下の手順に従って、ABOS のアップデートを兼ねた Armadillo の初期化を行ってください。 3.1.4.1. 初期化インストールディスクの作成-
1 GB 以上の microSD カードを用意してください。
-
標準のインストールディスクイメージをダウンロードします。
Armadillo-X2 インストールディスクイメージ から
「Armadillo Base OS インストールディスクイメージ」を ATDE にダウンロードしてください。
-
ATDE に microSD カードを接続します。詳しくは「取り外し可能デバイスの使用」を参考にしてください。
microSD カードのデバイス名を確認します
[ATDE ~]$ ls /dev/sd?
/dev/sda /dev/sdb
[ATDE ~]$ sudo fdisk -l /dev/sdb
Disk /dev/sdb: 7.22 GiB, 7751073792 bytes, 15138816 sectors
Disk model: SD/MMC
: (省略)
microSD カードがマウントされている場合、アンマウントします。
[ATDE ~]$ mount
: (省略)
/dev/sdb1 on /media/52E6-5897 type ext2 (rw,nosuid,nodev,relatime,uid=1000,gid=1000,fmask=0022,dmask=0077,codepage=cp437,iocharset=utf8,shortname=mixed,showexec,utf8,flush,errors=remount-ro,uhelper=udisks)
[ATDE ~]$ sudo umount /dev/sdb1
ダウンロードしたファイルを展開し、imgファイルをmicroSDカードに書き込んでください。
Linux PCの場合、以下のようにmicroSDカードに書き込むことができます。 [ATDE ~]$ unzip baseos-x2-installer-[VERSION].zip
[ATDE ~]$ sudo dd if=baseos-x2-installer-[VERSION].img \
of=/dev/sdb bs=1M oflag=direct status=progress また、Windowsの場合、エクスプローラー等でZipファイルからimgファイルを取り出し、「Win32 Disk Imager」などを使用してmicroSDカードに書き込むことができます。
3.1.5. Armadillo に初期設定をインストールする次に、 Armadillo に初期設定( initial_setup.swu )をインストールします。
initial_setup.swu はログインパスワードやユーザー固有の証明書などの
初期設定を Armadillo にインストールするためのファイルです。
initial_setup.swu でインストールされるユーザー固有の証明書がない場合、
ユーザーが開発したアプリケーションをインストール、またはアップデートすることができません。
このため開発前に、初期化された Armadillo に initial_setup.swu をインストールする必要があります。
初期化された Armadillo に対してユーザーが開発したアプリケーションのインストール・アップデートを行うために必須の手順になりますので、
必ず行ってください。 ここでは、 initial_setup.swu を VS Code で作成し、 ABOS Web で Armadillo にインストールします。 3.1.5.1. initial_setup.swu の作成図3.13「initial_setup.swu を作成する」 に示すように、VS Code の左ペインの [COMMON PROJECT COMMAND] から [Generate Initial Setup Swu] を実行してください。 初回実行時には各種設定の入力を求められます。
入力する設定の内容を 図3.14「initial_setup.swu 初回生成時の各種設定」 に示します。 なお、この後の
Python アプリケーション
による動作確認では ABOS Web を使用した手順を記載しています。
この後の手順通りに動作確認を行いたい場合は、ABOS Web のパスワードを設定してください。 |
COMMON_NAME には証明鍵の「common name」として会社や製品が分かるような任意の名称を入力してください。
| |
証明鍵を保護するパスフレーズを2回入力します。
| |
SWUイメージ自体を暗号化する場合に「y」を入力します。
詳細は 「SWUpdate と暗号化について」 を参考にしてください。
| |
アットマークテクノのアップデートをインストールしない場合は「n」を入力します。
| |
rootのパスワードを2回入力します。
使用するパスワードは以下のルールに従ってください。
-
辞書に載っている言葉を使用しない
-
単調な文字列を使用しない
-
8文字以上のパスワード長にする
| |
atmarkユーザーのパスワードを2回入力します。
何も入力しない場合はユーザーをロックします。
使用できるパスワードの制限はrootと同様です。
| |
自動アップデートを無効のままで進みます。ここで「y」を入れると、定期的に
アットマークテクノのサーバーからアップデートの有無を確認し、自動的にインストールします。
| |
abos-webを使用する場合はパスワードを設定してください。
ここで設定したパスワードは abos-web から変更できます。
使用できるパスワードの制限はrootと同様です。
詳細は 「ABOS Web のパスワード変更」 を参考にしてください。
| |
作成したファイルを確認します。「swupdate.aes-key」は暗号化の場合にのみ作成されます。
|
ファイルは ~/mkswu/initial_setup.swu に保存されます。 3.1.5.2. initial_setup.swu を Armadillo にインストール上の手順で作成した SWU イメージ(initial_setup.swu )を Armadillo へインストールします。
インストール方法は様々ありますが(「SWU イメージのインストール」)、ここでは ABOS Web を使用した手動インストールを行います。 ABOS には ABOS Web という機能が含まれています。
この機能を活用することで、 Web ブラウザからネットワークの設定や、 SWU イメージのインストールなどを簡単に行うことができます。
(ただし、Armadillo と作業用 PC が同一 LAN 内に存在している必要があります) 以下の手順に沿って、 ABOS Web へアクセスし、initial_setup.swu のインストールを行ってください。 まず、 図3.15「ABOSにアクセスするための接続」 のとおりに Armadillo に配線を行い、電源を入れてください。 -
-
Armadillo-X2
-
-
ACアダプタ(12V/3.0A)
-
-
作業用 PC
-
-
LAN HUB
-
-
Ethernetケーブル
1分ほど待機して、ABOSDE でローカルネットワーク上の Armadillo をスキャンします。
図3.16「ABOSDE で ローカルネットワーク上の Armadillo をスキャンする」 の赤枠で囲われているボタンをクリックしてください。 Armadillo が正常に起動していた場合、図3.17「ABOSDE に表示されている Armadillo を更新する」 の一覧に起動した Armadillo が armadillo.local という名称で表示されます。
表示されない場合は1分ほど待機してから図3.17「ABOSDE に表示されている Armadillo を更新する」の赤枠で囲われているマークをクリックしてスキャンを再度試みてください。 ただし、ATDE のネットワークをブリッジ接続以外に設定している場合は Armadillo がリストに表示されない場合があります。表示するためにはATDE のネットワークをブリッジ接続に設定してください。
また、ABOS Web が動作する Armadillo が同じ LAN 上に複数あると、ABOS Web に接続する URL のホスト名部分(armadillo.local)が、2台目では armadillo-2.local、3台目では armadillo-3.local のように、違うものが自動的に割り当てられます。
目的の Armadillo がどのホスト名なのか不明な場合には、Armadillo のラベルに記載されているMACアドレスと一致するもの( 図3.18「ABOSDE を使用して ABOS Web を開く」 の赤枠に表示されます )を探してください。 続いて、図3.18「ABOSDE を使用して ABOS Web を開く」 の赤枠で囲われているマークをクリックして、
ABOS Web を Web ブラウザで開きます。 ABOS Web が正常に起動していれば、Web ブラウザに パスワード登録画面( 図3.19「パスワード登録画面」 )が表示されます。
initial_setup.swu を作成する手順で設定したパスワードを入力して、ABOS Web のログイン用パスワードを設定します。 パスワード登録画面で、"パスワード" フィールドと "パスワード(確認)" フィールドに、登録したいパスワードを入力してから、"登録" ボタンをクリックしてください。
パスワード登録完了画面が表示されたら、パスワード登録の完了です。 パスワード登録完了画面にある "ログインページ" というリンクをクリックすると、ログイン画面が表示されますので、先ほど登録したパスワードを入力して "ログイン" ボタンをクリックしてください。 ログインに成功すると、ABOS Web の設定画面( 図3.22「トップページ」 )に表示が変わり、設定操作を行うことができます。
これで、ABOS Web へのアクセスが完了しました。 3.1.5.4. ABOS Web から initial_setup.swu をインストールABOS Web のトップページから"SWU インストール"をクリックして、 図3.23「SWU インストール」 の画面に遷移します。 "参照…"から ~/mkswu/initial_setup.swu を選択し、"インストール"をクリックしてください。
数分ほど待機すると 図3.24「SWU インストールに成功した画面」 のように"インストールが成功しました。"と表示され、Armadillo が再起動します。
(ABOS Web も再起動されるので、再起動完了後にページを更新するとログイン画面に戻ります) これで Armadillo に初期設定をインストールする手順が完了です。
インストール完了後に ~/mkswu ディレクトリ以下にある mkswu.conf と、鍵ファイルの swupdate.* をなくさないようにしてください。 | ABOS Web にブラウザから直接アクセスする |
---|
ABOSDE を使わずに、 直接 Web ブラウザのアドレスバーに ABOS Web のURLを入力することでも ABOS Web にアクセスできます。
ATDE で Web ブラウザを起動した後、Web ブラウザのアドレスバーに次の URL を入力してください: https://armadillo.local:58080 複数台の Armadillo が接続されている場合には、armadillo.local の部分が armadillo-2.local や armadillo-3.local となっている可能性があります。
これらは ABOSDE のリストに表示されているホスト名と同名ですので、目的の Armadillo と一致するホスト名を入力してください。 また、Web ブラウザから直接アクセスする方法では、ホスト名ではなくIPアドレスを指定することもできます。
例えば、Armadillo の(ネットワークコネクタの)IPアドレスが 192.0.2.80 である場合は、次の URL を入力してください: https://192.0.2.80:58080 IPアドレスを固定している場合はIPアドレスを指定する方法が便利になる場面もあります。
また、IPアドレスを指定する方法は ATDE のネットワークを NAT に設定している場合でも有効です。 |
| ABOS Web からログアウトする |
---|
ログアウトを行う場合は、サイドメニューから "ログアウト" を選択してください。
ログアウトすると、ログイン画面が再び表示されますので、ABOS Web をすぐに使わないのであれば、Web ブラウザを閉じてください。 |
3.1.6. Python アプリケーションで動作確認する本項では LEDを点滅させる Python のサンプルアプリケーションを使用して、
Armadillo による開発方法の勝手を大まかに把握したい方を想定した簡単な動作確認を行います。
なお、開発環境のセットアップに直接関わる手順ではないので、この動作確認が不要な方は本項をスキップしてください。 Armadillo でのアプリケーションの開発には ABOSDE を使用します。 VS Code の左ペインの [G4/X2] から [Python New Project] を実行(右に表示されている三角形ボタン)し、表示されるディレクトリ選択画面からプロジェクトを保存する
ディレクトリを選択してください。
保存先を選択すると、プロジェクト名を入力するダイアログが表示されるので、任意のプロジェクト名を入力してエンターキーを押してください。
この操作により、選択した保存先に、入力したプロジェクト名と同名のディレクトリが作成されます。 また、ここでは次のように設定しています。 -
保存先 : ホームディレクトリ
-
プロジェクト名 :
my_project
プロジェクトを作成したら、VS Code で my_project のディレクトリを開いてください。 プロジェクトを作成する度に、初期設定を行う必要があります。
初期設定では主に Armadillo と SSH で接続するための秘密鍵と公開鍵の生成を行います。
以下の手順を実施してください。 VS Code の左ペインの [my_project] から [Setup environment] を実行します。 選択すると、 VS Code の下部に以下のようなターミナルが表示されます。 このターミナル上で以下のように入力してください。 |
パスフレーズを設定します。設定しない場合は何も入力せず Enter を押します。
| |
1 でパスフレーズを設定した場合は、確認のため再度入力してください。
| |
ここで何か任意のキーを押すとターミナルが閉じます。
|
パスフレーズを設定した場合は、アプリケーションを Armadillo へ転送する時にパス
フレーズの入力を求められることがあります。 | |
---|
ssh の鍵は $HOME/.ssh/id_ed25519_vscode (と id_ed25519_vscode.pub ) に保存されていますので、
プロジェクトをバックアップする時は $HOME/.ssh も保存してください。 |
3.1.6.3. アプリケーション実行用コンテナイメージの作成Armadillo 上でアプリケーションを実行するためのコンテナイメージを作成します。
ここで作成したコンテナイメージは SWU イメージを使用して Armadillo へインストールします。 コンテナイメージの作成および SWU イメージの作成も VS Code で行います。
VS Code の左ペインの [my_project] から [Generate development swu] を実行します。 コンテナイメージの作成にはしばらく時間がかかります。
VS Code のターミナルに以下のように表示されるとコンテナイメージの作成は完了です。 作成した SWU イメージは my_project ディレクトリ下に development.swu という
ファイル名で保存されています。 3.1.6.4. アプリケーション実行用コンテナイメージのインストール上で作成した development.swu を Armadillo へインストールします。
initial_setup.swu をインストールしたときと同様に ABOS Web からインストールさせることも可能ですが、
ここでは ABOSDE を使用してインストールする手順をご紹介します。 図3.32「ABOSDE で Armadillo に SWU をインストール」 のように、目的の Armadillo の隣にある赤枠で囲まれているボタンをクリックしてください。
パスワードの入力を要求されますので、ABOS Web のパスワードを入力してください。
その後、 ~/my_project/development.swu を選択してインストールを開始します。 インストールが成功すると、VS Code のターミナルに Successfully installed SWU と表示されます。 インストール後に自動で Armadillo が再起動し、1分ほど待機するとLED が点滅します。 3.1.6.5. ssh 接続に使用する IP アドレスの設定以下の手順にしたがい、
ABOS Web が動作している Armadillo の一覧を確認し、
ssh 接続に使用する Armadillo の IP アドレスを指定してください。
なお、この手順は Armadillo の IP アドレス が変更される度に行う必要があります。 図3.16「ABOSDE で ローカルネットワーク上の Armadillo をスキャンする」 の赤枠で囲われているボタン、
または 図3.17「ABOSDE に表示されている Armadillo を更新する」 の赤枠で囲われているマークをクリックして、
ローカルネットワーク上で ABOS Web が実行されている Armadillo をスキャンしてください。 その後、目的の Armadillo について、図3.33「ABOSDE を使用して ssh 接続に使用する IP アドレスを設定する」 の赤枠で囲われているマークをクリックしてください。 これにより、指定した Armadillo の IP アドレスを ssh 接続に使用する IP アドレスに設定することができます。
また、プロジェクトディレクトリ内の config/ssh_config ファイルに指定した Armadillo の IP アドレスが記載されます。
ATDE のネットワークを NAT に設定している場合や、ABOS Web を起動していない場合等、
ABOSDE のリストに Armadillo が表示されない場合は、
プロジェクトディレクトリに入っている config/ssh_config ファイルを編集して
IP アドレスを書き換えてください。 |
Armadillo の IP アドレスに置き換えてください。
|
| |
---|
Armadillo を初期化した場合や、プロジェクトを実行する Armadillo を変えた場合は,
プロジェクトの config/ssh_known_hosts に保存されている公開鍵で Armadillo を認識できなくなります。
その場合はファイルを削除するか、「Setup environment」タスクを再実行してください。 |
VS Code の左ペインの [my_project] から [App run on Armadillo] を実行すると、
アプリケーションが Armadillo へ転送されて起動します。 VS Code のターミナルに以下のメッセージが表示されることがあります。
これが表示された場合は yes と入力して下さい。 アプリケーションを終了するには VS Code の左ペインの [my_project] から [App stop on Armadillo] を実行してください。 動作確認として使用した Python アプリケーションを削除します。
ABOSDE から Armadillo のコンテナイメージを全て削除する SWU イメージを作成します。
この方法はコンテナイメージを全て削除する方法ですので、開発中に複数のコンテナイメージを使用している場合などはそれらも削除されることに注意してください。 VS Code の左ペインの [COMMON PROJECT COMMAND] から [Generate Container Clear Swu] を実行すると、SWU イメージが作成されます。
SWU イメージは ~/mkswu/container_clear.swu に保存されます。 この SWU イメージを Armadillo へインストールします。 図3.32「ABOSDE で Armadillo に SWU をインストール」 のように、目的の Armadillo の隣にある赤枠で囲まれているボタンをクリックしてください。
パスワードの入力を要求されますので、ABOS Web のパスワードを入力してください。
その後、 ~/mkswu/container_clear.swu を選択してインストールを開始します。 インストール後に自動で Armadillo が再起動し、LED が点滅しなくなります。 Armadillo ではシリアルコンソールを通じてLinuxコマンドを直接実行することができます。
シリアルコンソールを活用することで、ABOS Web や ABOSDE からではできない多くのことが可能になるため、
より応用的な開発やメンテナンス・デバッグの際に重宝します。
また、この章以降ではシリアルコンソールを使用した手順が多々登場します。 本項ではシリアル通信ソフトウェア(minicom)を使用したシリアルコンソールの操作方法について記載しています。 | minicomのセットアップについて |
---|
ATDE9 v20240925 以降の ATDE では Armadillo 用の minicom の通信設定を既に済ませた状態で配布しています。
これより前のバージョンの場合は、「シリアル通信ソフトウェア(minicom)のセットアップ」 を参照して minicom のセットアップを行ってください。 |
3.1.7.1. Armadilloと開発用PCを接続Armadillo-X2のシリアルコンソールを使用するために、 図3.39「シリアルコンソールを使用する配線例」 のとおりに配線を行ってください。
この配線図はArmadillo-X2のシリアルコンソールを使用するための最低限の配線ですので、これに加えて他のインターフェースを接続しても問題ありません。 -
-
Armadillo-X2
-
-
ACアダプタ(12V/3.0A)
-
-
作業用PC
-
-
シリアル通信用USBケーブル(A-microB)
| |
---|
作業用PCがWindowsの場合、一部のBluetoothデバイスドライバがUSBコンソールインターフェースと
同じポート番号のCOMを重複して取得し、USBコンソールインターフェースが利用できないことがあります。
この場合は、デバイスマネージャーからBluetoothのデバイスを選択して「ポートの設定→詳細設定」
からCOMの番号を変更するか、Bluetoothデバイスを無効にしてください。
仮想マシンであるATDEにUSBコンソールインターフェースデバイスを接続する場合は、この影響はありません。 |
minicom を起動する前に、Armadillo からのログを表示させるため、表3.2「動作確認に使用する取り外し可能デバイス」に示すデバイスをゲストOSに接続してください。 表3.2 動作確認に使用する取り外し可能デバイス デバイス | デバイス名 |
---|
USBシリアル変換IC | Silicon CP2102N USB to UART Bridge Controller |
図3.42「minicom起動方法」のようにして、minicom を起動してください。
また、minicomを起動する端末の横幅を80文字以上にしてください。横幅が80文字より小さい場合、コマンド入力中に表示が乱れることがあります。 | |
---|
デバイスファイル名は、環境によって /dev/ttyS0 や /dev/ttyUSB1 など、本書の実行例とは異なる場合があります。 |
| |
---|
minicomがオープンする /dev/ttyS0 や /dev/ttyUSB0 といったデバイスファイルは、 root または dialout グループに属しているユーザーしかアクセスできません。 ユーザーを dialout グループに入れることで、以降、sudoを使わずにminicomで /dev/ttyUSB0 をオープンすることができます。 [ATDE ~]$ sudo usermod -aG dialout atmark
[ATDE ~]$ LANG=C minicom --wrap --device /dev/ttyUSB0 |
既に電源が接続されていて起動している場合は、Enterを1回押してください。
次のようなログインプロンプトが表示されます。( 「ログイン」 ) armadillo login: 電源が接続されていない場合は、電源入力インターフェースに電源を接続して Armadillo-X2 を起動してください。
CON6 (USB コンソールインターフェース)から以下のような起動ログが表示されます。 以下に起動ログの例を示します。 U-Boot SPL 2020.04-at11 (Jan 19 2023 - 10:53:24 +0000)
DDRINFO: start DRAM init
DDRINFO: DRAM rate 4000MTS
DDRINFO:ddrphy calibration done
DDRINFO: ddrmix config done
Normal Boot
Trying to boot from BOOTROM
image offset 0x0, pagesize 0x200, ivt offset 0x0
NOTICE: BL31: v2.4(release):2020.04-at10-0-ge26bfd065
NOTICE: BL31: Built : 10:54:50, Jan 19 2023
U-Boot 2020.04-at11 (Jan 19 2023 - 10:53:24 +0000)
CPU: i.MX8MP[8] rev1.1 1600 MHz (running at 1200 MHz)
CPU: Industrial temperature grade (-40C to 105C) at 44C
Model: Atmark-Techno Armadillo X2 Series
DRAM: Hold key pressed for tests: t (fast) / T (slow)
2 GiB
WDT: Started with servicing (10s timeout)
MMC: FSL_SDHC: 1, FSL_SDHC: 2
Loading Environment from MMC... OK
In: serial
Out: serial
Err: serial
BuildInfo:
- ATF e26bfd0
- U-Boot 2020.04-at11
first boot since power on
switch to partitions #0, OK
mmc2(part 0) is current device
flash target is MMC:2
Net:
Warning: ethernet@30be0000 using MAC address from ROM
eth0: ethernet@30be0000 [PRIME]
Fastboot: Normal
Normal Boot
Hit any key to stop autoboot: 0
switch to partitions #0, OK
mmc2(part 0) is current device
28962824 bytes read in 628 ms (44 MiB/s)
Booting from mmc ...
78223 bytes read in 3 ms (24.9 MiB/s)
Loading fdt boot/armadillo.dtb
## Flattened Device Tree blob at 45000000
Booting using the fdt blob at 0x45000000
Loading Device Tree to 0000000052bbe000, end 0000000052bf4fff ... OK
Starting kernel ...
[ 0.521327] fxl6408 2-0043: FXL6408 probe returned DID: 0xfa
[ 0.835647] mdio_bus 30be0000.ethernet-1: MDIO device at address 3 is missing.
OpenRC 0.45.2 is starting up Linux 5.10.161-0-at (aarch64)
* Mounting /proc ... [ ok ]
* Mounting /run ... * /run/openrc: creating directory
* /run/lock: creating directory
* /run/lock: correcting owner
* Caching service dependencies ... [ ok ]
* Starting rngd ... * Mounting /sys ... * Remounting devtmpfs on /dev ... [ ok ]
[ ok ]
* Mounting security filesystem ... [ ok ]
* Mounting config filesystem ... [ ok ]
[ ok ]
* Mounting fuse control filesystem ... * Mounting /dev/mqueue ... [ ok ]
[ ok ]
* Mounting /dev/pts ... [ ok ]
* Mounting /dev/shm ... [ ok ]
fsck_atlog | * Checking at-log filesystem /dev/mmcblk2gp1 ...udev | * Starting udev ... [ ok ]
fsck | * Checking local filesystems ... [ ok ]
[ ok ]
root | * Remounting filesystems ... [ ok ]
localmount | * Mounting local filesystems ... [ ok ]
overlayfs | * Preparing overlayfs over / ... [ ok ]
udev-trigger | * Generating a rule to create a /dev/root symlink ...sysctl | * Configuring kernel parameters ... [ ok ]
hostname | * Setting hostname ...udev-trigger | * Populating /dev with existing devices through uevents ... [ ok ]
[ ok ]
[ ok ]
bootmisc | * Migrating /var/lock to /run/lock ... [ ok ]
bootmisc | * Creating user login records ... [ ok ]
bootmisc | * Wiping /var/tmp directory ... [ ok ]
syslog | * Starting busybox syslog ...dbus | * /run/dbus: creating directory
dbus | * /run/dbus: correcting owner
micron-emmc-reten | * Starting micron-emmc-reten
dbus | * Starting System Message Bus ... [ ok ]
[ ok ]
klogd | * Starting busybox klogd ... [ ok ]
networkmanager | * Starting networkmanager ... [ ok ]
dnsmasq | * /var/lib/misc/dnsmasq.leases: creating file
dnsmasq | * /var/lib/misc/dnsmasq.leases: correcting owner
dnsmasq | * Starting dnsmasq ... [ ok ]
reset_bootcount | * Resetting bootcount in bootloader env ...buttond | * Starting button watching daemon ... [ ok ]
Environment OK, copy 1
reset_bootcount | [ ok ]
zramswap | [ ok ]
podman-atmark | * Starting configured podman containers ...chronyd | * Starting chronyd ...zramswap | * Creating zram swap device ... [ ok ]
[ ok ]
[ ok ]
local | * Starting local ... [ ok ]
Welcome to Alpine Linux 3.17
Kernel 5.10.161-0-at on an aarch64 (/dev/ttymxc1)
armadillo login: U-Boot プロンプト USB コンソールインターフェース に"Hit any key to stop autoboot:" が出力されている間に何かしらのキー入力を行うと U-Boot のプロンプトが表示されます。この間にキー入力がなければ自動的に起動します。 : (省略)
BuildInfo:
- ATF e26bfd0
- U-Boot 2020.04-at11
reset cause: normal reboot
switch to partitions #0, OK
mmc2(part 0) is current device
flash target is MMC:2
Net:
Warning: ethernet@30be0000 using MAC address from ROM
eth0: ethernet@30be0000 [PRIME]
Fastboot: Normal
Normal Boot
Hit any key to stop autoboot: 0
u-boot=> 起動が完了するとログインプロンプトが表示されます。
初期状態では「root」ユーザーと、一般ユーザーである「atmark」ユーザーが存在しますが、「atmark」ユーザーは初期状態ではロックされていますので、「root」ユーザーでログインしてください。
initial_setup.swu をインストールしていない場合、「root」ユーザーは初回ログイン時にパスワードを入力せずに新しいパスワードを促されます。 「root」ユーザーでログインし、 passwd atmark コマンドで「atmark」ユーザーのパスワードを設定することで、「atmark」ユーザーのロックが解除されます。
設定するパスワードには大文字のアルファベット、小文字のアルファベット、0から9までの数字、その他(記号・句読点など)を含める事ができます。
root でログイン
初期パスワードを変更します。 armadillo login: root
You are required to change your password immediately (administrator enforced).
New password:
Retype new password:
Welcome to Alpine! |
新しいパスワードを入力します
| |
新しいパスワードを再入力します
|
atmark でログイン
「atmark」ユーザーは初期状態ではロックされています。
そのため、「root」ユーザーでログイン後に「atmark」ユーザーのパスワードを設定してから「atmark」ユーザーでログインします。 armadillo:~# passwd atmark
New password:
Retype new password:
passwd: password updated successfully
armadillo:~# persist_file /etc/shadow
armadillo:~# exit
Welcome to Alpine Linux 3.16
Kernel 5.10.118-1-at on an aarch64 (/dev/ttymxc1)
armadillo login: atmark
Password:
Welcome to Alpine! |
atmarkユーザーのパスワード変更コマンドです。「SWUイメージの作成」 を使用した場合には不要です。
| |
パスワードファイルを永続化します。
| |
設定したパスワードでログインすることができます。
|
| |
---|
Armadillo BaseOS ではルートファイルシステムに overlayfs を採用しており、そのままではシステムが OFF すると内容は消えてしまいます。そのため persist_file コマンドが用意されています。このコマンドを利用することでファイル単位で変更を反映することができます。パスワードを設定した後には以下のコマンドを実行してください。 [armadillo ~]# persist_file /etc/shadow persist_file コマンドに関する詳細は「persist_file について」を参照してください。 |
eMMC や USB メモリ等に書き込みを行っている時に電源を切断すると、データが破損する可能性が有ります。
安全に終了させる場合は、次のように poweroff コマンドを実行し、「reboot: Power down」と表示されたのを確認してから電源を切断します。 armadillo:~# poweroff
armadillo:~# zramswap | * Deactivating zram swap device ...local | * Stopping local ... [ ok ]
dnsmasq | * Stopping dnsmasq ... [ ok ]rngd | * Stopping rngd ...
podman-atmark | * Stopping all podman containers ...buttond | * Stopping button watching daemon ... [ ok ]
klogd | * Stopping busybox klogd ...chronyd | * Stopping chronyd ... [ ok ]
[ ok ]
[ ok ]
[ ok ]
networkmanager | * Stopping networkmanager ...syslog | * Stopping busybox syslog ... [ ok ]
udev | * Stopping udev ... [ ok ]
[ ok ]
dbus | * Stopping System Message Bus ...nm-dispatcher: Caught signal 15, shutting down...
[ ok ]
[ ok ]
localmount | * Unmounting loop devices
localmount | * Unmounting filesystems
localmount | * Unmounting /opt/firmware ... [ ok ]
localmount | * Unmounting /var/at-log ... [ ok ]
localmount | * Unmounting /var/tmp ... [ ok ]
localmount | * Unmounting /var/app/volumes ... [ ok ]
localmount | * Unmounting /var/app/rollback/volumes ... [ ok ]
localmount | * Unmounting /var/lib/containers/storage_readonly ... [ ok ]
localmount | * Unmounting /var/log ... [ ok ]
localmount | * Unmounting /tmp ... [ ok ]
killprocs | * Terminating remaining processes ...mount-ro | * Remounting remaining filesystems read-only ... * Remounting / read only ... [ ok ]
mount-ro | [ ok ]
indicator_signals | * Signaling external devices we are shutting down ... [ ok ]
The system is going down NOW!
Sent SIGTERM to all processes
Sent SIGKILL to all processes
Requesting system poweroff
[ 88.401459] imx2-wdt 30280000.watchdog: Device shutdown: Expect reboot!
[ 88.408763] reboot: Power down Podman コンテナの保存先が tmpfs であり、eMMC への書き込みを行っていない場合は、poweroff コマンドを使用せずに電源を切断することが可能です。 Podman コンテナの保存先が eMMC の場合や、頻繁に rootfs 等の eMMC にあるボリュームを変更するような開発段階においては、poweroff コマンドを実行し、「reboot: Power down」と表示されたのを確認してから電源を切断してください。 | |
---|
haltコマンドで終了させた場合、「reboot: System halted」と表示されてから約128秒後、Armadilloは自動的に再起動します。確実に終了させるためにもpoweroffコマンドを利用してください。 |
| |
---|
電源を再投入する際は、コンデンサに蓄えられた電荷を抜くため、電源を切断後、一定時間以上待つ必要があります。
開発セット付属のACアダプタの場合に必要な時間は以下のとおりです。 -
DCプラグ側で電源を切断した場合 : 約5秒
-
ACプラグ側で電源を切断した場合 : 約1分
コンデンサに蓄えられた電荷が抜ける前に電源を再投入した場合、
電源シーケンスが守られず、起動しない等の動作不具合の原因となります。 |
minicomを終了させるには、まず Ctrl-a に続いて q キーを入力します。その後、以下のように表示されたら「Yes」にカーソルを合わせてEnterキーを入力するとminicomが終了します。 アットマークテクノ製品をご利用のユーザーに対して、
購入者向けの限定公開データの提供や大切なお知らせをお届けするサービスなど、
ユーザー登録すると様々なサービスを受けることができます。
サービスを受けるためには、「アットマークテクノ Armadilloサイト」
にユーザー登録をする必要があります。 ユーザー登録すると次のようなサービスを受けることができます。 -
製品仕様や部品などの変更通知の閲覧・配信
-
購入者向けの限定公開データのダウンロード
-
該当製品のバージョンアップに伴う優待販売のお知らせ配信
-
該当製品に関する開発セミナーやイベント等のお知らせ配信
詳しくは、「アットマークテクノ Armadilloサイト」をご覧ください。 ユーザー登録完了後に、購入製品登録することで、「購入者向けの限定公開データ」をダウンロードすることができるようになります。 購入製品登録の詳しい手順は以下のURLをご参照ください。 以上で開発環境のセットアップと動作確認の手順は終了です。 3.3. 開発前に知っておくべき Armadillo Base OS の機能・特徴「Armadillo Base OSとは」にて Armadillo Base OS についての概要を紹介しましたが、開発に入るにあたってもう少し詳細な概要について紹介します。 3.3.1. 一般的な Linux OS 搭載組み込み機器との違いLinux OS 搭載組み込み機器ではアプリケーションの実行環境をユーザーランド上に直接用意し、Systemdなどでアプリケーションを自動実行させるのが一般的です。
Armadillo Base OS 搭載機器では、アプリケーションの実行環境をコンテナ内に用意して、コンテナ起動用設定ファイルを所定の場所に配置することでコンテナ(=アプリケーション)を自動実行させます。 また、Linux OS 搭載組み込み機器では、ストレージの保護のために overlayfs で運用するのが一般的です。
そのため、アプリケーションが出力するログや画像などのデータは、 USBメモリなどの外部デバイスに保存する必要があります。
Armadillo Base OS 搭載機器もルートファイルシステムが overlayfs 化されていますが、内部に USBメモリなどと同じように使用できるユーザーデータディレクトリを持っており、別途外部記録デバイスを用意しておく必要はありません。 Armadillo Base OS 搭載機器は、標準でセキュアエレメントを搭載しており、対応した暗号化方式の認証鍵や証明書を安全に保存・利用することが可能です。 3.3.2. Armadillo Base OS 搭載機器のソフトウェア開発手法Armadillo Base OS 搭載機器上で動作するソフトウェアの開発は、基本的に作業用PC上で行います。 ネットワークの設定は ABOS Web という機能で、コマンドを直接打たずとも設定可能です。 開発環境として、ATDE(Atmark Techno Development Environment)という仮想マシンイメージを提供しています。
その中で、ABOSDE(Armadillo Base OS Development Environment)という、Visual Studio Code にインストールできる開発用エクステンションを利用してソフトウェア開発を行います。 ABOSDE を使用することで、コンテナ及びコンテナ自動起動用設定ファイルの作成、コンテナ内におけるパッケージのインストール、コンテナ内で動作するアプリケーション本体の開発をすべてVS Code内で行うことができます。 Armadillo-X2 では、開発・製造・運用時にソフトウェアを書き込む際に、 SWUpdate という仕組みを利用します。 SWUpdateは、デバイス上で実行されるプログラムで、ネットワーク/ストレージ経由でデバイスのソフトウェアを更新することができます。
Stefano Babic, DENX software engineering, Germany によってオープンソースで開発が進められています。 Armadillo-X2 では、 SWUpdateを利用することで次の機能を実現しています。 -
機密性、完全性、真正性の担保
-
A/Bアップデート(アップデートの二面化)
-
リカバリーモード
-
ソフトウェアの圧縮、暗号化、署名付与
-
Armadillo Twin でのリモートアップデート対応
-
Web サーバーでのリモートアップデート対応
-
ダウングレードの禁止
| |
---|
2024年2月までは、hawkBit の WebUI を利用したアップデートも紹介していましたが、
hawkBit は 2024年3月22日 に行われたバージョン 0.5.0 へのアップデートで、
これまで採用していた Web UI を廃止しました。
これに伴い、今後 OTA によるアップデートを行いたい場合は、
Armadillo Twin の利用を推奨します。 なお、hawkBit 0.4.1 の配布は継続していますので、こちらを利用する場合は
Armadillo-X2 開発用ツール から
「Hawkbit docker-composeコンテナ」 をダウンロードして展開してください。 hawkBit に関する詳細な情報は
hawkBit 公式サイト を参照してください。 |
swuパッケージは、SWUpdate独自のソフトウェアの配布フォーマットです。
SWUpdateでは、1回のアップデートは1つのswuパッケージで行われます。 swuパッケージには、次のような様々なものを含めることができます。 -
アップデート対象のイメージファイル
-
アップデート対象のイメージファイルのチェックサム
-
アップデート前後に実行するスクリプト
-
書き込み先ストレージの情報
-
U-Boot 環境変数の書き換え情報
-
ソフトウェアのバージョン情報
-
etc…
SWU イメージは swupdate (https://sbabic.github.io/swupdate/swupdate.html) によって Armadillo Base OS上で検証とインストールが実行されます。
SWU イメージを Armadillo に転送するための方法は、用途や状況に合わせて様々な方法を用意しています。例えば、 USB メモリから読み取る、ウェブサーバーからダウンロードするなどです。 ユーザーは SWU イメージをネットワーク/ストレージ経由で Armadillo にインストールします。 インターネットを通じて Armadillo にインストールする場合、以下の脅威が存在することが考えられます。 -
攻撃者が正規のユーザーを偽りデータをインストールする(なりすまし)
-
データの一部を悪意のあるコードに書き換えられる(改ざん)
-
データを盗み見される(盗聴)
Armadillo Base OS では暗号化技術、SHA-256 によるハッシュ化、デジタル署名を駆使することで、インストールするデータに対する機密性、完全性、真正性を保証します。 それらの機能は SWUpdate によって実現しています。
SWUpdate は以下の対策を提供します。 -
SWU イメージ内の Armadillo にインストールするデータを暗号化する
-
デジタル署名により正規の SWU イメージであることを保証する
-
復号したデータに対してもチェックサムの値を計算して、インストールするデータが正しいことを保証する
これらの対策により、たとえ攻撃者が不正な SWU イメージを Armadillo に送信したとしてもデジタル署名により正規の SWU イメージでないことが分かります。 攻撃者がインターネット上で SWU イメージ内のデータを書き換えたとしても、インストール前にそのデータに対してチェックサムが正しいかを確認します。
そのため、不正なデータが Armadillo にインストールされることはありません。 また、攻撃者がネットワーク上で SWU イメージのデータを盗み見たとしても暗号化されているので、重要なデータが漏洩することもありません。 3.3.3.4. A/Bアップデート(アップデートの二面化)A/B アップデートは、
Flash メモリにパーティションを二面確保し、
アップデート時には交互に利用する仕組みです。 常に使用していない方のパーティションを書き換えるため次の特徴を持ちます。 -
○ アップデートによって動作中のソフトウェアは破壊されない
-
○ 書き込みが電源断などで中断しても、すぐに復帰出来る
-
○ 機器が動作中に書き込みが出来る
-
× 使用Flashメモリ量が増える
アップデート直後に起動に失敗した場合、起動可能な状態へ復帰するためアップデート前の状態にロールバックします。 ロールバック状態の確認は 「ロールバック状態を確認する」 を参照してください。 自動ロールバックが動作する条件は以下の通りです: -
アップデート直後の再起動、または「
abos-ctrl rollback-clone 」コマンドを実行した後(アップデートが成功した後では古いバージョンに戻りません)
以下のどちらかに該当した場合:
-
rootfs にブートに必要なファイルが存在しない
(/boot/Image, /boot/armadillo.dtb)
-
起動を 3 回試みて、Linux ユーザーランドの「reset_bootcount」サービスの起動まで至らなかった
また、ユーザースクリプト等で「abos-ctrl rollback」コマンドを実行した場合にもロールバック可能となります。
このコマンドで「 --allow-downgrade 」オプションを設定すると古いバージョンに戻すことも可能です。 いずれの場合でもロールバックが実行されると /var/at-log/atlog にログが残ります。 | |
---|
Armadillo Base OS 3.19.1-at.4 以前のバージョンではアップデート直後の条件が存在しなかったため、古いバージョンに戻ることができる問題がありました。 最新の Armadillo Base OS へのアップデートを推奨しますが、上記バージョン以前の Armadillo Base OS をご利用でダウングレードを防ぎたい場合は、以下のコマンドを入力することで回避可能です: [armadillo ~]# sed -i -e 's/fw_setenv bootcount/& \&\& fw_setenv upgrade_available/' /etc/init.d/reset_bootcount
[armadillo ~]# tail -n 3 /etc/init.d/reset_bootcount
fw_setenv bootcount && fw_setenv upgrade_available
eend $? "Could not set bootloader env"
}
[armadillo ~]# persist_file -v /etc/init.d/reset_bootcount
'/mnt/etc/init.d/reset_bootcount' -> '/target/etc/init.d/reset_bootcount' |
イメージをインストールする方法として以下に示すような方法があります。
手元でイメージをインストールする方法
-
ABOS Web を使用した手動インストール
-
ABOSDE から ABOS Web を使用した手動インストール
-
USBメモリまたは microSD カードからの自動インストール
-
外部記憶装置からイメージのインストール(手動)
リモートでイメージをインストールする方法
-
Armadillo Twin を使用した自動インストール
-
ウェブサーバーからイメージのインストール(手動)
-
ウェブサーバーからの定期的な自動インストール
それぞれのインストール方法の詳細については、以下に記載しております。
もし、作成した SWU イメージのインストールに失敗する場合は、「swupdate がエラーする場合の対処」をご覧ください。
ABOS Web を使用した手動インストール
Armadillo-X2 で動作している Web アプリケーションのABOS Webを使用してアップデートすることができます。
「SWUインストール」を参考にしてください。
ABOSDE から ABOS Web を使用した手動インストール
VS Code 拡張機能の ABOSDE を使用することで、Armadillo-X2 で動作している ABOS Web 経由でアップデートすることができます。
「Armadillo に SWU をインストールする」を参考にしてください。
USBメモリまたはmicroSDカードからの自動インストール
Armadillo-X2にUSBメモリを接続すると自動的にアップデートが始まります。
アップデート終了後にArmadillo-X2は自動で再起動します。 USBメモリやmicroSDカードをvfatもしくはext4形式でフォーマットし、作成した.swuのファイルをディレクトリを作らずに配置してください。 [ATDE ~/mkswu]$ df -h
Filesystem Size Used Avail Use% Mounted on
: (省略)
/dev/sda1 15G 5.6G 9.1G 39% /media/USBDRIVE
[ATDE ~/mkswu]$ cp initial_setup.swu /media/USBDRIVE/
[ATDE ~/mkswu]$ umount /media/USBDRIVE |
USBメモリがマウントされている場所を確認します。
| |
ファイルをコピーします。
| |
/media/USBDRIVEをアンマウントします。コマンド終了後にUSBメモリを取り外してください。
|
エラーの場合、/var/log/messageに保存されます。例えば、コンソールで証明書が間違っているイメージのエラーは以下の様に表示されます。 [armadillo ~]# tail /var/log/messages
Nov 19 10:48:42 user.notice swupdate-auto-update: Mounting sda0 on /mnt
Nov 19 10:48:42 user.notice swupdate-auto-update: Trying update /mnt/initial_setup.swu
Nov 19 10:48:42 user.info swupdate: START Software Update started !
Nov 19 10:48:42 user.err swupdate: FAILURE ERROR : Signature verification failed
Nov 19 10:48:42 user.err swupdate: FAILURE ERROR : Compatible SW not found
Nov 19 10:48:42 user.err swupdate: FATAL_FAILURE Image invalid or corrupted. Not installing ... |
証明書エラーのメッセージ。
|
外部記憶装置からイメージのインストール(手動)
USBメモリやmicroSDカード等の外部記憶装置のルートディレクトリ以外にSWUイメージを保存して、イメージのインストールを行います。
ルートディレクトリに保存すると自動アップデートが行われますので、/var/log/messagesを確認してください。 以下は外部記憶装置が/dev/mmcblk1p1(microSDカード)として認識された場合に、イメージのインストールを行う例です。 [armadillo ~]# mount /dev/mmcblk1p1 /mnt
[armadillo ~]# swupdate -i /mnt/swu/initial_setup.swu
SWUpdate v5f2d8be-dirty
Licensed under GPLv2. See source distribution for detailed copyright notices.
[INFO ] : SWUPDATE running : [main] : Running on AGX4500 Revision at1
[INFO ] : SWUPDATE started : Software Update started !
[INFO ] : SWUPDATE running : [read_lines_notify] : No base os update: copying current os over
[INFO ] : SWUPDATE running : [read_lines_notify] : Removing unused containers
[INFO ] : SWUPDATE running : [read_lines_notify] : swupdate triggering reboot!
Killed
Armadillo Twin を使用した自動インストール
Armadillo Twin で Armadillo-X2 を複数台管理してアップデートすることができます。
「Armadillo Twin から複数の Armadillo をアップデートする」を参考にしてください。
ウェブサーバーからイメージのインストール(手動)
SWUイメージをウェブサーバーにアップロードして、イメージのインストールを行います。
以下は、http://server/initial_setup.swu のイメージをインストールする例です。
[armadillo ~]# swupdate -d '-u http://server/initial_setup.swu'
SWUpdate v5f2d8be-dirty
Licensed under GPLv2. See source distribution for detailed copyright notices.
[INFO ] : SWUPDATE running : [main] : Running on AGX4500 Revision at1
[INFO ] : SWUPDATE running : [channel_get_file] : Total download size is 25 kB.
[INFO ] : SWUPDATE started : Software Update started !
[INFO ] : SWUPDATE running : [read_lines_notify] : No base os update: copying current os over
[INFO ] : SWUPDATE running : [read_lines_notify] : Removing unused containers
[INFO ] : SWUPDATE running : [read_lines_notify] : swupdate triggering reboot!
Killed
ウェブサーバーからの定期的な自動インストール
swupdate-urlを有効にしたら、定期的にチェックしてインストールします。
以下はサービスの有効化とタイミングの設定の例です。 [armadillo ~]# rc-update add swupdate-url
[armadillo ~]# persist_file /etc/runlevels/default/swupdate-url
[armadillo ~]#
echo https://download.atmark-techno.com/armadillo-x2/image/baseos-x2-latest.swu \
> /etc/swupdate.watch
[armadillo ~]# echo 'schedule="0 tomorrow"' > /etc/conf.d/swupdate-url
[armadillo ~]# echo 'rdelay="21600"' >> /etc/conf.d/swupdate-url
[armadillo ~]# persist_file /etc/swupdate.watch /etc/conf.d/swupdate-url |
swupdate-urlサービスを有効します。
| |
サービスの有効化を保存します。
| |
イメージのURLを登録します。一行ごとにイメージのURLを設定することができ、複数行にイメージのURLを設定することができます。
| |
チェックやインストールのスケジュールを設定します。
| |
変更した設定ファイルを保存します。
|
USBメモリからのアップデートと同様に、ログは/var/log/messagesに保存されます。 | |
---|
initial_setupのイメージを作成の際に /usr/share/mkswu/examples/enable_swupdate_url.desc を入れると有効にすることができます。 |
Armadillo Base OS ではルートファイルシステムに overlayfs を採用しています。 その為、ファイルを変更した後 Armadillo の電源を切ると変更内容は保持されません。
開発中などに rootfs の変更内容を保持するには、変更したファイルに対して persist_file コマンドを使用します。 persist_file コマンドの詳細については、「persist_file について」を参照してください。
また、 SWUpdate によってルートファイルシステム上に配置されたファイルについては、 persist_file を実行しなくても保持されます。
開発以外の時は安全のため、 persist_file コマンドではなく SWUpdate による更新を実行するようにしてください。 3.3.4.1. 電源を切っても保持されるディレクトリ(ユーザーデータディレクトリ)「ファイルの取り扱いについて」 にて、 Armadillo Base OS 上のファイルは通常、 persist_file コマンドを実行せずに電源を切ると変更内容が保存されないと紹介しましたが、表3.3「電源を切っても保持されるディレクトリ(ユーザーデータディレクトリ)」に示すディレクトリ内にあるファイルはこの限りでありません。 表3.3 電源を切っても保持されるディレクトリ(ユーザーデータディレクトリ) ディレクトリ | 備考 |
---|
/var/app/volumes | SWUpdate の最中や後も保持され続けます。ロールバックが発生しても、アップデート前の状態には戻りません。ログやデータベースなど、アプリケーションが動作中に作成し続けるようなデータはこのディレクトリに保存してください。 | /var/app/rollback/volumes | SWUpdate の最中や後も保持され続けます。ロールバックが発生すると、アップデート前の状態に戻ります。コンフィグファイルなど、アプリケーションのバージョンに追従してアップデートするようなデータはこのディレクトリに保存してください。 |
| |
---|
コンテナを前のバージョンに戻した場合(ロールバック)、/var/app/rollback/volumes/ のデータの前のバージョンに戻ります。 その為、アプリケーションのバージョンに依存するようなデータは /var/app/rollback/volumes/ に入れることを推奨します。 mkswu の swdesc_files (--extra-os 無し)と podman_start の add_volumes では、相対パスはそのディレクトリをベースにします。
/var/app/rollback/volumes/myvolume は myvolume で簡潔に指定できます。
|
| |
---|
Copy-on-Write (CoW) について。 この二つの volumes ディレクトリは btrfs と呼ばれるファイルシステムに保存されています。
btrfs ではデータは Copy on Write(CoW)を使ってデータ完全性を保証しますが、その保証にはコストがあります。 数百 MB のファイルに小さな変更を頻繁に行う場合 CoW を無効化することを推奨します。
CoW を無効化されたファイルにチェックサムが入らなくなりますので、極端な場合以外に残してください。
|
chattr +C でディレクトリに NoCow を設定します。これから作成されるファイルが NoCow で作成されます。すでに存在していたファイルに影響ないのでご注意ください。
| |
lsattr 確認します。リストの C の字があればファイルが「no cow」です。
|
|
インストールディスクは、 Armadillo の eMMC の中身をまとめて書き換えることのできる microSD カードを指します。
インストールディスクは、インストールディスクイメージを microSD カードに書き込むことで作成できます。 インストールディスクには以下の2つの種類があります。
初期化インストールディスク
Armadillo-X2 インストールディスクイメージ にある標準イメージです。
Armadillo を初期化する際に使用します。
開発が完了した Armadillo-X2 をクローンするためのインストールディスク。
量産時など、特定の Armadillo を複製する際に使用されます。
詳しくは、4章量産編で説明します。
3.3.5.1. 初期化インストールディスクの作成-
512 MB 以上の microSD カードを用意してください。
標準のインストールディスクイメージを使用する場合は、
Armadillo-X2 インストールディスクイメージ から
「Armadillo Base OS」を ATDE にダウンロードしてください。
「Armadilloのソフトウェアをビルドする」 でビルドしたイメージを使用してインストールディスクを作成したい場合は、
以下のコマンドを実行して、インストールディスクイメージを作成してください。 [ATDE ~/build-rootfs-[VERSION]]$ sudo ./build_image.sh --board ax2 \
--firmware ~/at-imxlibpackage/imx_lib.img
: (省略)
[ATDE ~/build-rootfs-[VERSION]]$ ls baseos-x2*img
baseos-x2-[VERSION].img
[ATDE ~/build-rootfs-[VERSION]]$ sudo ./build_image.sh --board ax2 \
--boot ~/imx-boot-[VERSION]/imx-boot_armadillo_x2 \
--installer ./baseos-x2-[VERSION].img コマンドの実行が完了すると、baseos-x2-[VERSION]-installer.img というファイルが作成されていますので、
こちらを使用してください。 -
ATDE に microSD カードを接続します。詳しくは「取り外し可能デバイスの使用」を参考にしてください。
microSD カードのデバイス名を確認します
[ATDE ~]$ ls /dev/sd?
/dev/sda /dev/sdb
[ATDE ~]$ sudo fdisk -l /dev/sdb
Disk /dev/sdb: 7.22 GiB, 7751073792 bytes, 15138816 sectors
Disk model: SD/MMC
: (省略)
microSD カードがマウントされている場合、アンマウントします。
[ATDE ~]$ mount
: (省略)
/dev/sdb1 on /media/52E6-5897 type ext2 (rw,nosuid,nodev,relatime,uid=1000,gid=1000,fmask=0022,dmask=0077,codepage=cp437,iocharset=utf8,shortname=mixed,showexec,utf8,flush,errors=remount-ro,uhelper=udisks)
[ATDE ~]$ sudo umount /dev/sdb1
ダウンロードしたファイルを展開し、imgファイルをmicroSDカードに書き込んでください。
Linux PCの場合、以下のようにmicroSDカードに書き込むことができます。 [ATDE ~]$ unzip baseos-x2-installer-[VERSION].zip
[ATDE ~]$ sudo dd if=baseos-x2-installer-[VERSION].img \
of=/dev/sdb bs=1M oflag=direct status=progress また、Windowsの場合、エクスプローラー等でZipファイルからimgファイルを取り出し、「Win32 Disk Imager」などを使用してmicroSDカードに書き込むことができます。
| |
---|
インストールディスク作成時に SBOM を作成する場合は build_image.sh の引数に --sbom を渡してください。
ライセンス情報等を記載するためのコンフィグファイルはデフォルトは baseos_sbom.yaml となっています。
コンフィグファイルを変更する場合は --sbom-config <config> に引数を入れてください。
また、コンテナイメージを含める場合等に外部の SBOM を入れる必要がある場合は --sbom-external <sbom> に引数を入れてください。
SBOM のライセンス情報やコンフィグファイルの設定方法については 「ビルドしたルートファイルシステムの SBOM を作成する」 をご覧ください。 |
-
JP1 をジャンパーピンでショート(SDブートに設定)させ、microSDカードを microSD スロットに挿入します。
-
電源を投入すると、1分程度でeMMCのソフトウェアの初期化が完了します。
-
完了すると電源が切れます(LED4 が消灯、コンソールに
reboot: Power down が表示)。
-
電源を取り外し、続いて JP1 ジャンパーとmicroSDカードを外してください。
-
10秒以上待ってから再び電源を入れると、初回起動時と同じ状態になります。
Armadillo-X2の機能拡張や信頼性向上のための設計情報について説明します。 Armadillo-X2の各種信頼性試験データを、「アットマークテクノ Armadilloサイト」から
「購入者向けの限定公開データ」としてダウンロード可能ですのでご確認ください。 HDMIインターフェース(CON8)にディスプレイを接続した場合や、MIPI-CSIインターフェース(CON10)にカメラを接続した場合に、
放射ノイズが問題になる場合があります。放射ノイズを減らすために、以下の対策が効果的です。 Armadillo-X2のESD耐性を向上させるために、以下の対策が効果的です。 Armadillo-X2に接続されたケーブルが屋外に露出するような設置環境では、
ケーブルに侵入した雷サージ等のストレスによりインターフェース回路が破壊される場合があります。
ストレスへの耐性を向上させるには、以下の対策が効果的です。 SoC(基板裏のIC1)の放熱が必要かどうかは、使用状況により違いますので、十分な設計評価の上、ご検討ください。
SoCの表面温度が90℃以上になる場合は、放熱することを推奨いたします。 参考までに、下記条件の場合にSoCの表面温度が90℃を超えることを確認しています。 Armadillo-X2の周囲温度の上限は+70℃としていますが、
これは下記条件の場合の温度となります。 オプションケース(金属製)は、SoCの熱をケースに伝導させて放熱する構造で設計しております。
同様の構造でのケース設計をご検討の場合は、「Armadillo-X2 オプションケース(金属製)」をご確認ください。 SoC近辺にヒートシンク固定用の穴(φ2.5mm × 2)を準備していますので、ヒートシンクからの放熱も可能です。
寸法につきましては、「形状図」をご確認ください。 | |
---|
Armadillo-X2では、温度センサーでCPU(Arm Cortex-A53)周辺温度、
SoC(ANAMIX内部)温度を測定することが可能です。
温度センサーの詳細につきましては、「温度センサーの仕様」をご確認ください。 |
Armadillo Base OS には標準で、 CPU や SoC の温度をプロファイリングするソフトウェアが搭載されているので、温度設計にお役立てください。
詳細は「動作中の Armadillo の温度を測定する」を参照してください。 CON11は機能拡張用のインターフェースです。
複数の機能(マルチプレクス)をもつ、i.MX 8M Plusの信号線が接続されており、
USB、GPIO、SPI、UART、CAN、I2C、PWM、I2S、PDM MIC等の機能を拡張することができます。
また、電源入出力ピン(VIN)より電源供給することも可能です。 Armadillo-X2 のハードウェアを拡張する際には、主にこの拡張インターフェースに接続していくことになります。 | |
---|
CON11、CON14、CON15の電源ライン(VIN)は接続されており、同時に電源を供給することはできません。 |
表3.4 CON11 搭載コネクタと対向コネクタ例 名称 | 型番 | メーカー | 備考 |
---|
搭載コネクタ | 6130xx21121 [] | Wurth Elektronik | 許容電流 3A(端子1本あたり) | 対向コネクタ | 6130xx21821 [] | Wurth Elektronik | - |
表3.5 CON11 信号配列 ピン番号 | ピン名 | I/O | 説明 | 電圧グループ |
---|
1 | VIN | Power | 電源入出力(VIN)、CON14、CON15と共通 | - | 2 | VIN | Power | 電源入出力(VIN)、CON14、CON15と共通 | - | 3 | GND | Power | 電源(GND) | - | 4 | GND | Power | 電源(GND) | - | 5 | I2C4_SCL | In/Out | 拡張入出力、i.MX 8M PlusのI2C4_SCLピン、CON9 7ピンに接続
基板上で4.7kプルアップ | VDD_1V8 | 6 | ECSPI1_MISO | In/Out | 拡張入出力、i.MX 8M PlusのECSPI1_MISOピンに接続 | VDD_1V8 | 7 | I2C4_SDA | In/Out | 拡張入出力、i.MX 8M PlusのI2C4_SDAピン、CON9 8ピンに接続
基板上で4.7kプルアップ | VDD_1V8 | 8 | ECSPI1_MOSI | In/Out | 拡張入出力、i.MX 8M PlusのECSPI1_MOSIピンに接続 | VDD_1V8 | 9 | ECSPI2_MISO | In/Out | 拡張入出力、i.MX 8M PlusのECSPI2_MISOピンに接続 | VDD_1V8 | 10 | ECSPI1_SCLK | In/Out | 拡張入出力、i.MX 8M PlusのECSPI1_SCLKピンに接続 | VDD_1V8 | 11 | ECSPI2_MOSI | In/Out | 拡張入出力、i.MX 8M PlusのECSPI2_MOSIピンに接続 | VDD_1V8 | 12 | ECSPI1_SS0 | In/Out | 拡張入出力、i.MX 8M PlusのECSPI1_SS0ピンに接続 | VDD_1V8 | 13 | ECSPI2_SCLK | In/Out | 拡張入出力、i.MX 8M PlusのECSPI2_SCLKピンに接続 | VDD_1V8 | 14 | SAI3_TXFS | In/Out | 拡張入出力、i.MX 8M PlusのSAI3_TXFSピンに接続 | VDD_1V8 | 15 | ECSPI2_SS0 | In/Out | 拡張入出力、i.MX 8M PlusのECSPI2_SS0ピンに接続 | VDD_1V8 | 16 | SAI3_TXC | In/Out | 拡張入出力、i.MX 8M PlusのSAI3_TXCピンに接続 | VDD_1V8 | 17 | SAI5_RXC | In/Out | 拡張入出力、i.MX 8M PlusのSAI5_RXCピンに接続 | VDD_1V8 | 18 | SAI3_TXD | In/Out | 拡張入出力、i.MX 8M PlusのSAI3_TXDピンに接続 | VDD_1V8 | 19 | SAI5_RXD0 | In/Out | 拡張入出力、i.MX 8M PlusのSAI5_RXD0ピンに接続 | VDD_1V8 | 20 | SAI3_RXD | In/Out | 拡張入出力、i.MX 8M PlusのSAI3_RXDピンに接続 | VDD_1V8 | 21 | SAI5_RXD1 | In/Out | 拡張入出力、i.MX 8M PlusのSAI5_RXD1ピンに接続 | VDD_1V8 | 22 | SAI3_MCLK | In/Out | 拡張入出力、i.MX 8M PlusのSAI3_MCLKピンに接続 | VDD_1V8 | 23 | SAI5_RXD2 | In/Out | 拡張入出力、i.MX 8M PlusのSAI5_RXD2ピンに接続 | VDD_1V8 | 24 | GPIO1_IO15 | In/Out | 拡張入出力、i.MX 8M PlusのGPIO1_IO15ピンに接続 | VDD_1V8 | 25 | SAI5_RXD3 | In/Out | 拡張入出力、i.MX 8M PlusのSAI5_RXD3ピンに接続 | VDD_1V8 | 26 | USBDM_DN2 | In/Out | USB 2.0 データ(-)、USB HUB経由でi.MX 8M PlusのUSB2に接続 | - | 27 | SAI5_MCLK | In/Out | 拡張入出力、i.MX 8M PlusのSAI5_MCLKピンに接続 | VDD_1V8 | 28 | USBDP_DN2 | In/Out | USB 2.0 データ(+)、USB HUB経由でi.MX 8M PlusのUSB2に接続 | - | 29 | SAI5_RXFS | In/Out | 拡張入出力、i.MX 8M PlusのSAI5_RXFSピンに接続 | VDD_1V8 | 30 | VDD_1V8 | Power | 電源出力(VDD_1V8) | - | 31 | VDD_5V | Power | 電源出力(VDD_5V) | - | 32 | VDD_5V | Power | 電源出力(VDD_5V) | - | 33 | GND | Power | 電源(GND) | - | 34 | GND | Power | 電源(GND) | - |
Armadillo-X2の拡張インターフェース(CON11)には、
複数の機能をもった信号線が接続されており、様々な機能拡張が可能です。 拡張インターフェースに接続する基板を設計する際の制限事項について、説明します。 Armadillo-X2では、表2.2「仕様」の拡張インターフェースの欄にあるとおりの機能が拡張できます。
ただし、ここに記載の拡張数は、優先的に機能を割り当てた場合の最大数ですので、必要な機能がすべて実現できるかは、
『Armadillo-X2 マルチプレクス表』で検討する必要があります。 マルチプレクス表では、各ピンに割り当て可能な機能の他に、リセット後の信号状態、プルアップ/ダウン抵抗の有無等の情報を確認することができます。 各機能の詳細な仕様が必要な場合は、NXP Semiconductorsのホームページからダウンロード可能な、
『i.MX 8M Plus Applications Processor Reference Manual』、『i.MX 8M Plus Applications Processor Datasheet for Industrial Products』をご確認ください。
Armadillo-X2固有の情報を除いて、回路設計に必要な情報はこれらのマニュアルに、すべて記載されています。
検索しやすいように、マルチプレクス表や「CON11(拡張インターフェース)」にi.MX 8M Plusのピン名やコントローラー名を記載しておりますので、是非ご活用ください。 Armadillo-X2の拡張ボードを設計する際の推奨形状は図3.50「Armadillo-X2の拡張ボード例」のとおりです。
拡張ボード側にピンソケットを実装してArmadillo-X2と接続します。 一般的なピンソケットを実装した場合、嵌合高さは約11mmとなります。LANコネクタの高さは13.5mmですので、
LANコネクタの上に基板を重ねることはできません。 拡張ボード固定用に、φ2.3mmの穴を3箇所用意しており、M2のスペーサーとねじを接続可能です。 -
-
なべ小ねじ、ワッシャ、スプリングワッシャ付(M2、L=6mm) × 6
-
-
金属スペーサ(M2、L=11mm) × 3
基板の詳細寸法につきましては、「基板形状図」をご確認ください。 拡張インターフェース(CON11)を使用する際の参考回路を紹介します。 | |
---|
参考回路は動作を保証するものではありません。
実際のアプリケーションで十分な評価をお願いいたします。 |
スイッチやLED、リレーを拡張する場合は、GPIOを割り当てます。
GPIOに割り当て可能なピンは多数ありますので、
プルアップ/プルダウン抵抗の有無と電圧レベルを確認して、使用するピンを決定してください。 拡張インターフェースには、i.MX 8M Plusの信号線が直接接続されています。
静電気等による内部回路の故障を防ぐため、スイッチとi.MX 8M Plusの間に、
電流制限抵抗等を接続することをおすすめします。 LED、リレーはGPIOピンで直接駆動せずにトランジスタ等を経由して駆動してください。 拡張インターフェース(CON11)から拡張ボード用に、12V電圧(VIN)、5V電源(VDD_5V)、1.8V電源(VDD_1V8)を出力しています。
その他の電源が必要な場合は、別途外部から入力するか、DC/DCコンバータ、LDO等で生成してください。
3.3V電源(VEXT_3V3)を3.3V電源出力インターフェース(CON16)から出力しており、こちらを利用することも可能です。 電源シーケンス、出力電流につきましては、「電源回路の構成」をご確認ください。 | |
---|
3.3V電源出力インターフェース(CON16)の1、2ピンは
拡張インターフェース(CON11)の33、34ピンから2.54mm間隔で配置しています。 |
図3.54「電源回路の構成」のインターフェース名(Ext. I/F等)の左横にはコネクタもしくはノイズフィルタの定格電流値を最大値として記載しています。
また、パワースイッチの下には、パワースイッチの制限電流値を最大値として記載しています。
スイッチングレギュレータの供給能力を超えてしまうため、インターフェースすべての最大値まで電流供給することはできません。
それぞれのインターフェースへの推奨の電流供給値は以下のとおりです。 表3.6 各インターフェースへの電流供給例 部品番号 | インターフェース名 | 電圧グループ | 電流値 |
---|
CON4 | USBインターフェース1 | USB1_VBUS | 900mA | CON17 | USBインターフェース2 | USB2_VBUS | 500mA | CON10 | MIPI-CSIインターフェース | VEXT_3V3 | 500mA | CON11 | 拡張インターフェース | VIN | 入力電源に依存 | VDD_5V | 1A | VDD_1V8 | 500mA | CON16 | 3.3V電源出力インターフェース | VEXT_3V3 | 500mA |
| |
---|
動作させるアプリケーションにより、内部で消費する電流値は大きく変わりますので、動作検証の上、供給電源の設計を行なってください。 |
拡張インターフェース(CON11)の拡張入出力ピンの電圧レベルは1.8V(VDD_1V8)です。
異なる電圧レベルのデバイスを接続する場合は、レベル変換が必要となります。
CON11にVDD_1V8、VDD_5Vピン、CON16にVEXT_3V3ピンがありますので、適宜ご活用ください。
レベル変換ICは、立ち上がり、立ち下がり速度、遅延時間、ドライブ能力等を考慮し、
適切なものを選定してください。 | |
---|
上記レベル変換ICは1.8V ←→ 5Vでも使用可能です。 |
表3.7 絶対最大定格 項目 | 記号 | Min. | Max. | 単位 | 備考 |
---|
電源電圧 | VIN | -0.3 | 13.2 | V | - | 入出力電圧 | VI,VO(VDD_3V3) | -0.3 | OVDD+0.3 | V | OVDD=VDD_3V3 | VI,VO(VDD_1V8) | OVDD=VDD_1V8 | VI,VO(NVCC_SNVS_1V8) | OVDD=NVCC_SNVS_1V8 | VI,VO(VEXT_3V3) | -0.5 | 7.0 | V | - | USBコンソール電源電圧 | VBUS_CNSL | -0.3 | 5.8 | V | - | RTCバックアップ電源電圧 | RTC_BAT | -0.3 | 5.5 | V | - | 動作温度範囲 | Topr | -20 | 70 | ℃ | 結露なきこと |
| |
---|
絶対最大定格は、あらゆる使用条件や試験状況において、瞬時でも超えてはならない値です。上記の値に対して余裕をもってご使用ください。 |
表3.8 推奨動作条件 項目 | 記号 | Min. | Typ. | Max. | 単位 | 備考 |
---|
電源電圧 | VIN | 10.8 | 12 | 13.2 | V | - | USBコンソール電源電圧 | VBUS_CNSL | 3.0 | - | 5.25 | V | - | RTCバックアップ電源電圧 | RTC_BAT | 2.4 | 3 | 3.6 | V | Topr=+25℃、対応電池: CR1220等 |
表3.9 電源出力仕様 項目 | 記号 | Min. | Typ. | Max. | 単位 | 備考 |
---|
5V 電源 | VDD_5V
USB1_VBUS
USB2_VBUS
HDMI_5V | 4.85 | 5 | 5.15 | V | - | 3.3V 電源 | VDD_3V3
VDD_SD
VEXT_3V3 | 3.135 | 3.3 | 3.465 | V | - | 1.8V 電源 | VDD_1V8
NVCC_SNVS_1V8 | 1.71 | 1.8 | 1.89 | V | - |
3.4.9.4. 入出力インターフェースの電気的仕様表3.10 拡張入出力ピンの電気的仕様(OVDD=VDD_3V3, VDD_1V8) 項目 | 記号 | Min. | Typ. | Max. | 単位 | 備考 |
---|
ハイレベル出力電圧 | VOH
(VDD_1V8) | 0.8xOVDD | - | OVDD | V | IOH = 1.6/3.2/6.4/9.6mA | VOH
(VDD_3V3) | 0.8xOVDD | - | OVDD | V | IOH = 2/4/8/12mA | ローレベル出力電圧 | VOL
(VDD_1V8) | 0 | - | 0.2xOVDD | V | IOL = 1.6/3.2/6.4/9.6mA | VOL
(VDD_3V3) | 0 | - | 0.2xOVDD | V | IOL = 2/4/8/12mA | ハイレベル入力電圧 | VIH | 0.7×OVDD | - | OVDD+0.3 | V | - | ローレベル入力電圧 | VIL | -0.3 | - | 0.3×OVDD | V | - | Pull-up抵抗(VDD_1V8) | - | 12 | 22 | 49 | kΩ | - | Pull-down抵抗(VDD_1V8) | - | 13 | 23 | 48 | kΩ | - | Pull-up抵抗(VDD_3V3) | - | 18 | 37 | 72 | kΩ | - | Pull-down抵抗(VDD_3V3) | - | 24 | 43 | 87 | kΩ | - |
表3.11 拡張入出力ピンの電気的仕様(OVDD=VEXT_3V3) 項目 | 記号 | Min. | Typ. | Max. | 単位 | 備考 |
---|
ハイレベル出力電流 | IOH | - | - | 0.7 | mA | - | ローレベル出力電流 | IOL | - | - | 1 | mA | - | ハイレベル入力電圧 | VIH | 0.7×OVDD | - | OVDD+0.3 | V | - | ローレベル入力電圧 | VIL | -0.3 | - | 0.3×OVDD | V | - |
Armadillo-X2の電源回路の構成は図3.54「電源回路の構成」のとおりです。 入力電圧(VIN)を電源ICで各電圧に変換し、内部回路および各インターフェースに供給しています。
各インターフェースやスイッチング・レギュレータの最大出力電流値を超えないように、
外部機器の接続、供給電源の設計を行なってください。 電源シーケンスは図3.55「電源シーケンス」のとおりです。
電源オン時
Armadillo-X2に電源(VIN)を投入すると、VDD_5V、NVCC_SNVS_1V8の順で電源が立ち上がり、
i.MX 8M PlusからパワーマネジメントICにPMIC_ON_REQ信号が出力されます。
パワーマネジメントICはPMIC_ON_REQ信号のアサートを検知後、電源オンシーケンスを開始し、
VDD_SOC、VDD_ARM、VDDA_1V8、VDD_1V8、NVCC_DRAM_1V1、VDD_3V3、NVCC_SD2の順に電源を立ち上げます。
POR_B信号が解除されると、ソフトウェアにより、
VEXT_3V3を任意のタイミングで立ち上げることが可能です。
電源オフ時
poweroffコマンドにより、POR_B信号がアサートされると、
パワーマネジメントICは電源オフシーケンスを開始し、
電源オンシーケンスとは逆の順番で電源を立ち下げます。
Armadillo-X2の電源(VIN)を切断すると、VDD_5V、NVCC_SNVS_1V8の順で電源が立ち下がります。
リセットシーケンスは図3.57「リセットシーケンス」のとおりです。 Armadillo-X2のハードウェアリセットには、
I2Cによるリセット[]、ウォッチドッグタイマーによるリセットがあります。 パワーマネジメントICが、ハードウェアリセットを検知すると、
POR_B信号をアサートして電源オフシーケンスを開始し、
VIN、VDD_5V、NVCC_SNVS_1V8以外の電源を切断します。
電源オフシーケンスが終わった250ms後に電源オンシーケンスを開始し、電源が再投入されます。
リアルタイムクロックからの電源制御
リアルタイムクロックの割り込み信号は、i.MX 8M PlusのONOFFピンに接続されています。
ONOFF信号を一定時間以上、Lowレベルとすることで、
i.MX 8M Plusのオン状態、オフ状態を切り替えることができます。
オン状態になると、PMIC_ON_REQ信号がアサートされ、
ソフトウェアからの制御で電源切断しているものを除いて、すべての電源が供給されます。
オフ状態になると、PMIC_ON_REQ信号がディアサートされ、
VIN、VDD_5V、NVCC_SNVS_1V8以外の電源が切断されます。
オン状態からオフ状態に切り替える場合は5秒以上、
オフ状態からオン状態に切り替える場合は500ミリ秒以上、Lowレベルを保持する必要があります。オン状態およびオフ状態は、NVCC_SNVS_1V8が供給されている限り、保持されます。 表3.12 オン状態、オフ状態を切り替えする際のLowレベル保持時間 状態 | Lowレベル保持時間 |
---|
オン状態からオフ状態 | 5秒以上 | オフ状態からオン状態 | 500ミリ秒以上 |
| |
---|
オフ状態にしてArmadillo-X2の電源(VIN)を切断した場合、
コンデンサに蓄えられた電荷が抜けるまではオフ状態であることが保持されます。
オフ状態を保持した状態で電源を投入したくない場合は、一定時間以上空けて電源を投入する必要があります。
開発セット付属のACアダプタの場合に必要な時間は以下のとおりです。 -
DCプラグ側で電源を切断した場合 : 約5秒
-
ACプラグ側で電源を切断した場合 : 約1分
|
| |
---|
基板改版や部品変更により、基板上の部品位置、高さは変更になることがあります。
ケースや拡張基板を設計する場合、ある程度の余裕をもった寸法での設計をお願いいたします。 |
| |
---|
DXF形式の形状図を「アットマークテクノ Armadilloサイト」から「購入者向けの限定公開データ」としてダウンロード可能です。 |
Armadillo-X2 のオプション品については、「オプション品」 を参照してください。 3.5. Device Treeをカスタマイズするat-dtweb を利用して Device Tree をカスタマイズする方法を説明します。
at-dtweb では、 Web ブラウザ上のマウス操作でDevice Tree のファイルを生成することができます。
カスタマイズの対象は拡張インターフェース(CON11)です。 3.5.1. Linux カーネルソースコードの取得at-dtweb を使用するためには、予めLinux カーネルのソースコードを用意しておく必要があります。 | |
---|
at-dtweb が必要とするのは Linux カーネルソースコード内の dts(Device Tree Source)ファイルと Makefile であり、Linux カーネルイメージのビルドをする必要はありません。
そのため、ここでは Linux カーネルのビルドは行いません。 Linux カーネルのビルド手順については、「Linux カーネルをビルドする」を参照してください。 |
Armadillo-X2 Linuxカーネル から
「Linuxカーネル」ファイル (linux-at-x2-[VERSION].tar) をダウンロードして、次のコマンドを実行します。 [ATDE ~]$ tar xf linux-at-x2-[VERSION].tar
[ATDE ~]$ tar xf linux-at-x2-[VERSION]/linux-[VERSION].tar.gz
[ATDE ~]$ cd linux-[VERSION] 次のコマンドを実行して、デフォルトコンフィギュレーションを適用しておきます。 [ATDE ~/linux-[VERSION]]$ make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- x2_defconfig ATDE9 に at-dtweb パッケージをインストールします。 [ATDE ~]$ sudo apt update
[ATDE ~]$ sudo apt install at-dtweb インストール済みの場合は、以下のコマンドを実行し最新版への更新を行ってください。 [ATDE ~]$ sudo apt update
[ATDE ~]$ sudo apt upgrade
at-dtweb の起動開始
at-dtweb の起動を開始するには、デスクトップ左上のアプリケーションの「システムツール」から「at-dtweb」を選択してください。
コマンドライン上からでも、at-dtweb コマンドで起動できます。 [ATDE ~]$ at-dtweb
ボードの選択
ボードを選択します。Armadillo-X2 を選択して、「OK」をクリックします。
Linux カーネルディレクトリの選択
Linux カーネルディレクトリを選択します。「Linux カーネルソースコードの取得」で準備した Linux カーネルディレクトリを選択して、「OK」をクリックします。
at-dtweb の起動完了
at-dtweb が起動し、次のように画面が表示されます。
3.5.4. Device Tree をカスタマイズ機能の選択は、ドラッグ&ドロップで行います。画面左上の「Available features」から有効にしたい機能をドラッグし、画面右側の「Armadillo-X2」の白色に変化したピンにドロップします。例として CON11 8/10 ピンを UART3(RXD/TXD) に設定します。 | |
---|
何も機能が選択されていないピンには GPIO の機能が割り当てられます。 |
画面右側の「Armadillo-X2」にドロップして設定したピンを左クリックすると信号名が表示されます。
どのピンがどの信号に対応しているのかを確認することができます。 例として UART3(RXD/TXD) の信号名を確認します。 | |
---|
再度ピンを左クリックすると機能名の表示に戻ります。 |
いくつかの機能にプロパティを設定することができます。画面右側の「Armadillo-X2」に選択した機能を左クリックすると、画面左下の「Properties」からプロパティを選択することができます。 例としてCON11 19/27 ピンの I2C5(SCL/SDA) の clock_frequency プロパティを設定します。 設定したプロパティを確定させるには「Apply」をクリックします。 全ての機能を削除する場合は、画面右上の「Reset configuration」をクリックします。機能ごとに削除する場合は、画面右側の「Armadillo-X2」のピンを右クリックして「Remove」をクリックします。 3.5.4.5. Device Tree のファイルの生成Device Tree のファイルを生成するには、画面右上の「Save」をクリックします。 以下の画面ようなメッセージが表示されると、dtbo ファイルおよび desc ファイルの生成は完了です。 ビルドが完了するとホームディレクトリ下の mkswu/at-dtweb-Armadillo-X2
ディレクトリに、DTB overlays ファイル(dtboファイル)と desc ファイルが生成されます。
Armadillo-X2 本体に書き込む場合は、mkswu コマンドで desc ファイルから SWU イメージを生成してアップデートしてください。 [ATDE ~]$ ls ~/mkswu/at-dtweb-Armadillo-X2
armadillo_iotg_g4-at-dtweb.dtbo at-dtweb.desc.old update_preserve_files.sh
at-dtweb.desc update_overlays.sh
[ATDE ~]$ cd ~/mkswu/at-dtweb-Armadillo-X2
[ATDE ~]$ mkswu at-dtweb.desc
Enter pass phrase for /home/atmark/mkswu/swupdate.key:
at-dtweb.swu を作成しました。 |
SWU イメージを生成します。
|
SWU イメージを使ったアップデートの詳細は 「アップデート機能について」 を参照してください。 3.5.5. DT overlay によるカスタマイズDevice Treeは「DT overlay」(dtbo) を使用することでも変更できます。 DT overlay を使用することで、通常の dts の更新が自動的に入りつづける状態で
dts の変更でしかできない設定を行うことができます。 /boot/overlays.txt に fdt_overlays を dtbo 名で設定することで、
u-bootが起動時にその DT overlay を通常の dtb と結合して起動します。
複数の DT overlay を使う場合は以下の例のようにスペースで別けたファイル名を記載することができます。 |
/boot/overlays.txt ファイルに「armadillo_iotg_g4-sw1-wakeup.dtbo」を追加します。
ファイルが存在しない場合は新規に作成してください。
このファイルの詳細については 「DT overlay によるカスタマイズ」 を参照してください。
| |
/boot/overlays.txt を保存し、アップデートの場合でも保存します。
| |
overlay の実行のために再起動します。
| |
シリアルコンソールの場合に、u-bootによるメッセージを確認できます。
| |
Linux からも「nousb」overlay の確認ができます。USB の regulator を無効にしたため、
USB を使えないようになりました。
| |
sw1-wakeupも有効になっていることを確認できます。
|
3.5.5.1. 提供している DT overlay以下の DT overlay を用意しています: -
armadillo_iotg_g4-nousb.dtbo: USB の電源を切ります。
-
armadillo_iotg_g4-sw1-wakeup.dtbo: SW1 の起床要因を有効にします。
-
armadillo_iotg_g4-con10-arducam.dtbo: arducam カメラを MIPI CSI-2 で接続する場合にご使用ください。
-
armadillo_iotg_g4-con10-imx219.dtbo: Raspberry Pi 向けの imx219 カメラを MIPI CSI-2 で接続する場合にご使用ください。
-
armadillo_iotg_g4-con10-ox01f10.dtbo: OMNIVISION の OX01F10 カメラを MIPI CSI-2 で接続する場合にご使用ください。
-
armadillo_iotg_g4-lte-ext-board.dtbo: LTE モデルで自動的に使用します。
3.5.5.2. カスタマイズした DT overlay の作成at-dtweb では対応できない変更を行いたい場合にカスタマイズした DT overlay を作成することでができます。 overlay を使用することで、今後のアップデートで overlay される側の dts に変更があっても自動的に適用され続けます。 -
「Linux カーネルをビルドする」 を参照して、カーネルのソースコードを取得します。
-
ソースディレクトリの
arch/arm64/boot/dts/freescale/armadillo_iotg_g4-customize.dts を編集します。
-
make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- dtbs で DT overlay をビルドします。
-
arch/arm64/boot/dts/freescale/armadillo_iotg_g4-customize.dtbo ファイルを Armadillo の /boot に配置し、/boot/overlays.txt に記載します。
|
取得したカーネルのソースディレクトリに入ります。
| |
dts ファイルを編集します。この例では pwm2 を SPDIF_RX (CON9.28) ピンを有効にします。
| |
DT overlay をビルドします。
| |
ビルドされたファイルを Armadillo にコピーします。この例では scp を使いましたが、USBドライブでのコピーや SWUpdate でも可能です。
| |
overlays.txt にこの DT overlay をロードするように記載します。
| |
ファイルを永続化します。DT overlay は swupdate_preserve_files のデフォルトには記載されていないため、SWUpdate で更新する場合は必ず swupdate_preserve_files も更新してください。
| |
再起動して、u-boot の出力で DT overlay がロードされてることを確認します。
|
3.6. インターフェースの使用方法とデバイスの接続方法Armadillo を用いた開発に入る前に、開発するシステムに接続する必要のある周辺デバイスをこのタイミングで接続しておきます。 図3.75「Armadillo-X2のインターフェース」にArmadillo-X2の各インターフェースの位置を、表3.13「Armadillo-X2 インターフェース一覧」に各インターフェースの概要を示します。 表3.13 Armadillo-X2 インターフェース一覧 部品番号 | インターフェース名 | 型番 | メーカー |
---|
CON1 | SDインターフェース | DM3BT-DSF-PEJS | HIROSE ELECTRIC | CON3 | LANインターフェース | 56F-1304DYDZ2NL | YUAN DEAN SCIENTIFIC | CON4 | USBインターフェース1 | GSB3111311HR | Amphenol ICC | CON6 | USBコンソールインターフェース | UB-MC5BR3-SD204-4S-1-TB NMP | J.S.T.Mfg. | CON8 | HDMIインターフェース | DC3RX19JA2R1700 | Japan Aviation Electronics Industry | CON10 | MIPI-CSIインターフェース | 1-1734248-5 | TE Connectivity | CON11 | 拡張インターフェース1 | 61303421121 | Wurth Elektronik | CON13 | RTCバックアップインターフェース | BH-44C-5 | Adam Tech | CON14 | 電源入力インターフェース1 | PJ-102AH | Same Sky | CON15 | 電源入力インターフェース2 | S02B-PASK-2(LF)(SN) | J.S.T.Mfg. | CON16 | 3.3V電源出力インターフェース | 61300211121 | Wurth Elektronik | CON17 | USBインターフェース2 | SS-52100-001 | Bel Fuse Inc. | JP1 | 起動デバイス設定ジャンパ | 61300211121 | Wurth Elektronik | SW1 | ユーザースイッチ | SKHHLUA010 | ALPS ELECTRIC | LED3 | ユーザーLED | L-710A8CB/1GD | Kingbright Electronic | LED4 | 電源LED | SML-D12M8WT86 | ROHM |
以下では、各デバイスの接続方法、仕様及び使用方法について紹介していきます。 以下の説明では、共通の操作が可能な場合に、 microSD/microSDHC/microSDXC カードを microSD カードと表記します。 Armadillo-X2のSDホストは、i.MX 8M PlusのuSDHC(Ultra Secured Digital Host Controller)を利用しています。 Armadillo-X2では、SDインターフェース(CON1)がuSDHC2を利用しています。 -
機能
-
カードタイプ: microSD/microSDHC/microSDXC/microSDIO
-
バス幅: 1bit or 4bit
-
スピードモード: Default Speed(26MHz), High Speed(52MHz), UHS-I (50MHz)
-
カードディテクトサポート
| |
---|
スピードモードがUHS-Iモードで動作した場合、
VCCI ClassB規格準拠のため、SDカードの対応スピードがDDR50(最大クロック50MHz)に制限されます。 |
-
インターフェース仕様
CON1はUHS-Iに対応したSDインターフェースです。
信号線はi.MX 8M PlusのSDホストコントローラ(uSDHC2)に接続されています。 表3.14 CON1 信号配列 ピン番号 | ピン名 | I/O | 説明 |
---|
1 | SD_DAT2 | In/Out | SDデータバス(bit2)、i.MX 8M PlusのSD2_DATA2ピンに接続 | 2 | SD_DAT3 | In/Out | SDデータバス(bit3)、i.MX 8M PlusのSD2_DATA3ピンに接続 | 3 | SD_CMD | In/Out | SDコマンド/レスポンス、i.MX 8M PlusのSD2_CMDピンに接続 | 4 | VDD_SD | Power | 電源出力(VDD_SD) | 5 | SD_CLK | Out | SDクロック、i.MX 8M PlusのSD2_CLKピンに接続 | 6 | GND | Power | 電源(GND) | 7 | SD_DAT0 | In/Out | SDデータバス(bit0)、i.MX 8M PlusのSD2_DATA0ピンに接続 | 8 | SD_DAT1 | In/Out | SDデータバス(bit1)、i.MX 8M PlusのSD2_DATA1ピンに接続 | - | SD_CD | In | SDカード検出、i.MX 8M PlusのSD2_CD_Bピンに接続
(Low: カード挿入、High: カード未挿入) |
| |
---|
microSDカードを挿入すると、スロット内部の端子が飛び出します。
引っかける等で破損する可能性がございますので、取り扱いにはご注意ください。
|
ここでは、 sd_example という名称の alpine ベースのコンテナを作成し、その中で microSD カードを使用します。
必要なコンテナイメージは予め podman pull している前提で説明します。 CON1 に microSD カードを挿入してください。 /etc/atmark/containers/sd_example.conf というファイルを以下の内容で作成します。 set_image docker.io/alpine
add_hotplugs mmc
add_args --cap-add=SYS_ADMIN
set_command sleep infinity |
add_hotplugs に mmc を指定することで、 コンテナ内でmicroSD カードをホットプラグで認識します
| |
コンテナ内で microSD カードをマウントするための権限を与えます
|
コンテナを起動し、コンテナの中に入ります。 [armadillo]# podman_start sd_example
Starting 'sd_example'
1d93ecff872276834e3c117861f610a9c6716c06eb95623fd56aa6681ae021d4
[armadillo]# podman exec -it sd_example sh
[container]# コンテナ内で microSD カードは、 /dev/mmcblk1 として認識されますので /mnt にマウントします。 [container]# mount /dev/mmcblk1p1 /mnt ストレージの使用方法については、「ストレージの操作」もあわせて参照してください。 Armadillo-X2のEthernet(LAN)は、i.MX 8M PlusのENET(Ethernet MAC)を利用しています。 Armadillo-X2では、LANインターフェース1(CON3)がENETを利用しています。 | |
---|
LANインターフェース2(CON2)は10Mbps(10BASE-T)に非対応です。10Mbpsで通信を行う場合は、LANインターフェース1(CON3)をご利用ください。 |
-
機能
-
通信速度: 1000Mbps(1000BASE-T), 100Mbps(100BASE-TX), 10Mbps(10BASE-T)
-
通信モード: Full-Duplex(全二重), Half-Duplex(半二重) []
-
Auto Negotiationサポート
-
キャリア検知サポート
-
リンク検出サポート
-
インターフェース仕様(CON3)
CON3は10BASE-T/100BASE-TX/1000BASE-Tに対応したLANインターフェースです。
カテゴリ5e以上のイーサネットケーブルを接続することができます。
AUTO-MDIX機能を搭載しており、ストレートケーブルまたはクロスケーブルを自動認識して送受信端子を切り替えます。 信号線はEthenet PHY(88E1512-A0-NNP2I000 Marvel)を経由して
i.MX 8M PlusのEthernet MAC(ENET)に接続されています。 表3.15 CON3 信号配列 (10BASE-T/100BASE-TX) ピン番号 | ピン名 | I/O | 説明 |
---|
1 | LAN1_TX+ | In/Out | 送信データ(+) | 2 | LAN1_TX- | In/Out | 送信データ(-) | 3 | LAN1_RX+ | In/Out | 受信データ(+) | 4 | - | - | - | 5 | - | - | - | 6 | LAN1_RX- | In/Out | 受信データ(-) | 7 | - | - | - | 8 | - | - | - |
表3.16 CON3 信号配列 (1000BASE-T) ピン番号 | ピン名 | I/O | 説明 |
---|
1 | LAN1_TRD0+ | In/Out | 送受信データ0(+) | 2 | LAN1_TRD0- | In/Out | 送受信データ0(-) | 3 | LAN1_TRD1+ | In/Out | 送受信データ1(+) | 4 | LAN1_TRD2+ | In/Out | 送受信データ2(+) | 5 | LAN1_TRD2- | In/Out | 送受信データ2(-) | 6 | LAN1_TRD1- | In/Out | 送受信データ1(-) | 7 | LAN1_TRD3+ | In/Out | 送受信データ3(+) | 8 | LAN1_TRD3- | In/Out | 送受信データ3(-) |
表3.17 CON3 LAN LEDの動作 名称 | 状態 | 説明 |
---|
LANリンクアクティビティLED | 消灯 | リンクが確立されていない | 点灯(黄) | リンクが確立されている | 点滅(黄) | リンクが確立されており、データを送受信している | LANスピードLED | 消灯 | 10Mbpsで接続されている、またはリンクが確立されていない | 点灯(緑) | 100Mbpsで接続されている | 点灯(橙) | 1000Mbpsで接続されている |
USB ホスト
Armadillo-X2のUSBホストは、i.MX 8M PlusのUSB(Universal Serial Bus Controller)およびUSB_PHY(Universal Serial Bus PHY)を利用しています。 Armadillo-X2では、USBインターフェース(CON4)がUSB1を利用しています。 -
機能
-
USB specification rev 3.0準拠
-
xHCI(eXtensible Host Controller Interface)互換
-
転送レート: Super-speed(5 Gbps), high-speed(480 Mbps), full-speed(12 Mbps), low-speed(1.5 Mbps)
USB ハブ
Armadillo-X2には、Microchip製USB2422が搭載されています。
USB2422は、「CON11(拡張インターフェース)」および CON17 に接続されています。 -
機能
-
USB specification rev 2.0準拠
-
転送レート: high-speed(480 Mbps), full-speed(12 Mbps), low-speed(1.5 Mbps)
-
インターフェース仕様(CON4)
CON4はUSB 3.0に対応したUSBインターフェースです。
信号線はi.MX 8M PlusのUSBコントローラ(USB1)に接続されています。 USBデバイスに供給される電源(USB1_VBUS)は、i.MX 8M PlusのGPIO1_IO09ピンで制御しており、
Highレベル出力で電源が供給され、Lowレベル出力で電源が切断されます。
データ転送モード
-
Super Speed(5Gbps)
-
High Speed(480Mbps)
-
Full Speed(12Mbps)
-
Low Speed(1.5Mbps)
表3.18 CON4 信号配列 ピン番号 | ピン名 | I/O | 説明 |
---|
1 | USB1_VBUS | Power | 電源出力(USB1_VBUS) | 2 | USB1_D- | In/Out | USB 2.0 データ(-)、i.MX 8M PlusのUSB1_D_Nピンに接続 | 3 | USB1_D+ | In/Out | USB 2.0 データ(+)、i.MX 8M PlusのUSB1_D_Pピンに接続 | 4 | GND | Power | 電源(GND) | 5 | USB1_SSRX- | In | USB 3.0 受信データ(-)、i.MX 8M PlusのUSB1_RX_Nピンに接続 | 6 | USB1_SSRX+ | In | USB 3.0 受信データ(+)、i.MX 8M PlusのUSB1_RX_Pピンに接続 | 7 | GND | Power | 電源(GND) | 8 | USB1_SSTX- | Out | USB 3.0 送信データ(-)、i.MX 8M PlusのUSB1_TX_Nピンに接続 | 9 | USB1_SSTX+ | Out | USB 3.0 送信データ(+)、i.MX 8M PlusのUSB1_TX_Pピンに接続 |
-
インターフェース仕様(CON17)
CON17はUSB 2.0に対応したUSBインターフェースです。
信号線はUSB HUB経由でi.MX 8M PlusのUSBコントローラ(USB2)に接続されています。 USBデバイスに供給される電源(USB2_VBUS)は、i.MX 8M PlusのGPIO4_IO01ピンで制御しており、
Highレベル出力で電源が供給され、Lowレベル出力で電源が切断されます。
データ転送モード
-
High Speed(480Mbps)
-
Full Speed(12Mbps)
-
Low Speed(1.5Mbps)
表3.19 CON4 信号配列 ピン番号 | ピン名 | I/O | 説明 |
---|
1 | USB2_VBUS | Power | 電源出力(USB1_VBUS) | 2 | USBDM_DN1 | In/Out | USB 2.0 データ(-)、USB HUB経由でi.MX 8M PlusのUSB2に接続 | 3 | USBDP_DN1 | In/Out | USB 2.0 データ(+)、USB HUB経由でi.MX 8M PlusのUSB2に接続 | 4 | GND | Power | 電源(GND) |
-
デバイスファイル
-
メモリデバイスの場合は、デバイスを認識した順番で/dev/sdN (Nは’a'からの連番)となります。
-
I/Oデバイスの場合は、ファンクションに応じたデバイスファイルとなります。
コンテナ内で動作するアプリケーションから USB 接続のデバイスを扱うための方法について示します。
USB シリアルデバイスを扱う
USB シリアルデバイスをコンテナ内から扱う場合には、Podman のイメージからコンテナを作成する際に
add_hotplugs に ttyUSB を設定する必要があります。この設定により、コンテナ起動後に USB シリアルデバイスを
接続した場合でも正しく認識されます。
以下は、alpine イメージからコンテナを作成する例です。
コンテナ内に入り、setserial コマンドを使って現在の設定を確認することができます。
コンテナ内からのデバイスの指定には /dev/ttyUSBN を使用することもできますが、
デバイスを接続するタイミングによっては N の値が変わる可能性があります。
このため上記の例のように /dev/serial/by-id/ 下にあるファイルを指定することで
確実に目的のデバイスを使用することができます。
USB カメラを扱う
USB カメラをコンテナ内から扱う場合には、Podman のイメージからコンテナを作成する際に
add_hotplugs に video4linux を設定する必要があります。この設定により、コンテナ起動後に USB カメラを
接続した場合でも正しく認識されます。
以下は、alpine イメージからコンテナを作成する例です。
GStreamer などのマルチメディアフレームワークと組み合わせることで、USB カメラからの映像のキャプチャが可能となります。 コンテナ内からのデバイスの指定には /dev/videoN を使用することもできますが、
デバイスを接続するタイミングによっては N の値が変わる可能性があります。
このため上記の例のように /dev/v4l/by-id/ 下にあるファイルを指定することで
確実に目的のデバイスを使用することができます。
USB メモリを扱う
ここでは、USB メモリを扱う方法について 2 つの例を示します。
ホスト OS 側でマウントした USB メモリをコンテナから扱う
あらかじめホスト OS 側でマウントしてある USB メモリをコンテナから扱う場合には、Podman のイメージから
コンテナを作成する際にホスト OS 側で USB メモリをマウントしてるディレクトリを渡す必要があります。
上記の例では、USB メモリを /mnt にマウントしました。以下は、 /mnt を渡して alpine イメージからコンテナを作成する例です。
ホスト OS 側の /mnt ディレクトリをコンテナ内の /mnt にマウントしています。
これにより、コンテナ内からも /mnt ディレクトリを通して USB メモリを扱うことができます。
USB メモリをコンテナ内からマウントする
USB メモリをコンテナ内からマウントして扱う場合には、Podman のイメージからコンテナを作成する際に
add_hotplugs に sd を設定する必要があります。この設定により、コンテナ起動後に USB メモリを
接続した場合でも正しく認識されます。加えて、コンテナ内からマウントするためには適切な権限も設定する必要があります。
以下は、 alpine イメージからコンテナを作成する例です。権限として SYS_ADMIN を渡しています。
コンテナ内に入り、mount コマンドで USB メモリを /mnt にマウントし、保存されているデータを確認することができます。
|
[MYUSBMEMORY] の部分は USB メモリに設定しているラベルに置き換えてください。
|
コンテナ内からマウントするデバイスの指定には /dev/sdN を使用することもできますが、
他にもストレージデバイスを接続している場合などには N の値が変わることがあります。
このため、USBメモリにラベルを設定している場合は、上記の例のように /dev/disk/by-label/ 下にある
ラベルと同名のファイルを指定することで確実に目的のデバイスを使用することができます。
Armadillo-X2のUARTは、i.MX 8M PlusのUART(Universal Asynchronous Receiver/Transmitter)を利用しています。 Armadillo-X2では、USBシリアル変換IC(CP2102N/Silicon Labs)経由でUART2に接続されています。 -
フォーマット
-
データビット長: 7 or 8ビット
-
ストップビット長: 1 or 2ビット
-
パリティ: 偶数 or 奇数 or なし
-
フロー制御: CTS/RTS or XON/XOFF or なし
-
最大ボーレート:4Mbps
| |
---|
USBコンソールインターフェース(CON6)は4Mbpsで利用することができません。USBシリアル変換IC(CP2102N/Silicon Labs)の最大ボーレートが3Mbpsである為です。 |
拡張インターフェース(CON11)でシリアル(UART)を最大2ポート拡張することが可能です。
信号線はi.MX 8M PlusのUART(UART3、UART4)に接続されています。
信号レベル: VDD_1V8
-
インターフェース仕様
CON6はUSBコンソール用インターフェースです。 信号線はUSBシリアル変換IC(CP2102N/Silicon Labs)経由でi.MX 8M PlusのUARTコントローラ(UART2)に
接続されています。 表3.20 CON6 信号配列 ピン番号 | ピン名 | I/O | 説明 |
---|
1 | VBUS_CNSL | Power | 電源入力(VBUS_CNSL) | 2 | CNSL_USB_D- | In/Out | コンソール用USBのマイナス側信号、USBシリアル変換ICに接続 | 3 | CNSL_USB_D+ | In/Out | コンソール用USBのプラス側信号、USBシリアル変換ICに接続 | 4 | CNSL_USB_ID | - | 未接続 | 5 | GND | Power | 電源(GND) |
コンテナ内で動作するアプリケーションから RS-232C や RS-485 などのシリアル通信を行うためには、
Podman のイメージからコンテナを作成する際にホスト OS 側のデバイスファイル /dev/ttymxcN を渡す必要があります。
以下は、/dev/ttymxc0 を渡して alpine イメージからコンテナを作成する例です。 コンテナ内に入り、setserial コマンドを使って現在の設定を確認することができます。 Armadillo-X2のHDMIは、i.MX 8M PlusのHDMI TX Controller、HDMI TX PHY、HDMI TX BLK_CTRL、HTX_PVI(HDMI TX Parallel Video Interface)およびLCDIF(LCD Interface)を利用しています。LCDIFは、LCDIF3を利用します。 Armadillo-X2は、HDMI対応ディスプレイへの画像出力及び、音声出力をサポートしています。 Linuxでは、それぞれDRM(Direct Rendering Manager)デバイス []、ALSA(Advanced Linux Sound Architecture)デバイスとして利用することができます。 -
機能(画像出力)
-
最大解像度: 4096x2160ピクセル
-
最大ドットクロック: 297MHz
-
カラーフォーマット: RGB888(24bit)
-
走査方式: プログレッシブ
| |
---|
上記を満していても、画像出力できない場合があります。次のVIC [] は非対応である為、画像出力できません。 -
DAR(Display Aspect Ratio)が64
: 27または256 : 135のVIC
|
-
機能(音声出力)
-
サンプリング周波数: 32kHz, 44.1kHz, 48kHz, 88.2kHz, 96kHz, 176.4kHz, 192kHz
-
チャンネル数: 2
-
フォーマット: Signed 24/32 bit, Little-endian
-
インターフェース仕様
CON8はHDMI出力インターフェースです。 信号線はi.MX 8M PlusのHDMI TXコントローラに接続されています。 表3.21 CON8 信号配列 ピン番号 | ピン名 | I/O | 説明 |
---|
1 | HDMI_HPD | In | ホットプラグ検出、HEAC(-)、i.MX 8M PlusのEARC_N_HPDピン、HDMI_HPDピンに接続 | 2 | HDMI_Utility | In/Out | Utility、HEAC(+)、i.MX 8M PlusのEARC_P_UTILピンに接続 | 3 | HDMI_TX2+ | Out | TMDSデータ2(+)、i.MX 8M PlusのHDMI_TX2_Pピンに接続 | 4 | HDMI_TX2_Shield | - | TMDSデータ2シールド | 5 | HDMI_TX2- | Out | TMDSデータ2(-)、i.MX 8M PlusのHDMI_TX2_Nピンに接続 | 6 | HDMI_TX1+ | Out | TMDSデータ1(+)、i.MX 8M PlusのHDMI_TX1_Pピンに接続 | 7 | HDMI_TX1_Shield | - | TMDSデータ1シールド | 8 | HDMI_TX1- | Out | TMDSデータ1(-)、i.MX 8M PlusのHDMI_TX1_Nピンに接続 | 9 | HDMI_TX0+ | Out | TMDSデータ0(+)、i.MX 8M PlusのHDMI_TX0_Pピンに接続 | 10 | HDMI_TX0_Shield | - | TMDSデータ0シールド | 11 | HDMI_TX0- | Out | TMDSデータ0(-)、i.MX 8M PlusのHDMI_TX0_Nピンに接続 | 12 | HDMI_TXC+ | Out | TMDSクロック(+)、i.MX 8M PlusのHDMI_TXC_Pピンに接続 | 13 | HDMI_TXC_Shield | - | TMDSクロックシールド | 14 | HDMI_TXC- | Out | TMDSクロック(-)、i.MX 8M PlusのHDMI_TXC_Nピンに接続 | 15 | HDMI_CEC | In/Out | CEC信号、i.MX 8M PlusのHDMI_CECピンに接続 | 16 | HDMI_GND | Power | 電源(GND) | 17 | HDMI_SCL | In/Out | DDCクロック、i.MX 8M PlusのHDMI_DDC_SCLピンに接続 | 18 | HDMI_SDA | In/Out | DDCデータ、i.MX 8M PlusのHDMI_DDC_SDAピンに接続 | 19 | 5V_HDMI | Power | 電源出力(5V_HDMI) |
-
デバイスファイル
-
/dev/dri/card1 (DRM)
-
/dev/fb0 (フレームバッファ)
-
hw:0 (ALSA)
-
sysfs DRMクラスディレクトリ
-
/sys/class/drm/card1-HDMI-A-1
| |
---|
以下のコマンドを実行することで映像出力の信号を停止することができます。 [armadillo ~]# echo 1 > /sys/class/graphics/fb0/blank 映像出力を行いたい場合は以下のコマンドを実行します。 [armadillo ~]# echo 0 > /sys/class/graphics/fb0/blank |
使用方法については「画面表示を行う」を参照してください。 特別な理由が無い限りは Wayland で画面表示を行うことを推奨しています。 Armadillo-X2 に接続したスピーカーなどの音声出力デバイスへコンテナ内から音声を出力するためには、
Podman のイメージからコンテナを作成する際にホスト OS 側のデバイスファイル /dev/snd を渡す必要があります。
以下は、/dev/snd を渡して debian イメージからコンテナを作成する例です。 コンテナ内に入り、alsa-utils などのソフトウェアで音声出力を行えます。 |
alsa-utils をインストールします。
| |
alsa-utils を起動します。
| |
指定したファイル名の音声ファイルを再生します。
|
aplay の引数にある、M は音声を出力したい CARD 番号、N はデバイス番号を表しています。
CARD 番号とデバイス番号は、aplay コマンドに -l オプションを与えることで確認できます。 3.6.7. MIPI CSI-2 カメラを使用するArmadillo-X2のMIPI CSI-2は、i.MX 8M PlusのMIPI_CSI(MIPI CSI Host Controller)を利用しています。 Armadillo-X2では、MIPI-CSI インターフェース(CON10)がMIPI_CSI1を利用しています。 Linuxでは、カメラ [] からの画像入力をV4L2(Video4Linux2)デバイスとして利用することができます。 -
機能
-
MIPI D-PHY specification V1.2準拠
-
MIPI CSI2 Specification V1.3準拠(C-PHY featureを除く)
-
レーン数: 2(データ), 1(クロック)
-
最大ピクセルクロック: 400MHz
-
データレート: 80Mbps - 1.5Gbps(1レーンあたり)
-
カラーフォーマット(YUV): YUV420 8/10bit, YUV420 8bit Legacy, YUV420 8/10bit CSPS, YUV422 8/10bit
-
カラーフォーマット(RGB): RGB565, RGB666, RGB888
-
カラーフォーマット(RAW): RAW6, RAW7, RAW8, RAW10, RAW12, RAW14
-
インターフェース仕様
CON10はカメラ接続用の1チャンネル(2レーン)のMIPI-CSIインターフェースです。 信号線はi.MX 8M PlusのMIPI Camera Serial Interface(MIPI CSI1)に接続されています。 表3.23 CON10 搭載コネクタとフレキシブルフラットケーブル例 名称 | 型番 | メーカー | 備考 |
---|
搭載コネクタ | 1-1734248-5 | TE Connectivity | 許容電流 1A(端子1本あたり) |
表3.24 CON10 信号配列 ピン番号 | ピン名 | I/O | 説明 | 電圧グループ |
---|
1 | GND | Power | 電源(GND) | - | 2 | CSI1_DN_0 | In | MIPIデータ0(-)、i.MX 8M PlusのMIPI_CSI1_D0_Nピンに接続、
17ピンと共通 | - | 3 | CSI1_DP_0 | In | MIPIデータ0(+)、i.MX 8M PlusのMIPI_CSI1_D0_Pピンに接続、
18ピンと共通 | - | 4 | GND | Power | 電源(GND) | - | 5 | CSI1_DN_1 | In | MIPIデータ1(-)、i.MX 8M PlusのMIPI_CSI1_D1_Nピンに接続、
20ピンと共通 | - | 6 | CSI1_DP_1 | In | MIPIデータ1(+)、i.MX 8M PlusのMIPI_CSI1_D1_Pピンに接続、
21ピンと共通 | - | 7 | GND | Power | 電源(GND) | - | 8 | CSI1_CK_N | In | MIPIクロック(-)、i.MX 8M PlusのMIPI_CSI1_CLK_Nピンに接続、
23ピンと共通 | - | 9 | CSI1_CK_P | In | MIPIクロック(+)、i.MX 8M PlusのMIPI_CSI1_CLK_Pピンに接続、
24ピンと共通 | - | 10 | GND | Power | 電源(GND) | - | 11 | CSI1_GPIO0_3V3 | In/Out | 拡張入出力、レベル変換ICを経由してi.MX 8M PlusのNAND_DATA00ピンに接続、
26ピンと共通 | VEXT_3V3 | 12 | CSI1_GPIO1_3V3 | In/Out | 拡張入出力、レベル変換ICを経由してi.MX 8M PlusのNAND_DATA01ピンに接続、
27ピンと共通 | VEXT_3V3 | 13 | I2C2_SCL_3V3 | Out | I2Cクロック、レベル変換ICを経由してi.MX 8M PlusのI2C2_SCLピンに接続、基板上で4.7kプルアップ(VEXT_3V3)、
28ピンと共通 | VEXT_3V3 | 14 | I2C2_SDA_3V3 | In/Out | I2Cデータ、レベル変換ICを経由してi.MX 8M PlusのI2C2_SDAピンに接続、基板上で4.7kプルアップ(VEXT_3V3)、
29ピンと共通 | VEXT_3V3 | 15 | VEXT_3V3 | Power | 電源出力(VEXT_3V3) | - | 16 | GND | Power | 電源(GND) | - | 17 | CSI1_DN_0 | In | MIPIデータ0(-)、i.MX 8M PlusのMIPI_CSI1_D0_Nピンに接続、
2ピンと共通 | - | 18 | CSI1_DP_0 | In | MIPIデータ0(+)、i.MX 8M PlusのMIPI_CSI1_D0_Pピンに接続、
3ピンと共通 | - | 19 | GND | Power | 電源(GND) | - | 20 | CSI1_DN_1 | In | MIPIデータ1(-)、i.MX 8M PlusのMIPI_CSI1_D1_Nピンに接続、
5ピンと共通 | - | 21 | CSI1_DP_1 | In | MIPIデータ1(+)、i.MX 8M PlusのMIPI_CSI1_D1_Pピンに接続、
6ピンと共通 | - | 22 | GND | Power | 電源(GND) | - | 23 | CSI1_CK_N | In | MIPIクロック(-)、i.MX 8M PlusのMIPI_CSI1_CLK_Nピンに接続、
8ピンと共通 | - | 24 | CSI1_CK_P | In | MIPIクロック(+)、i.MX 8M PlusのMIPI_CSI1_CLK_Pピンに接続、
9ピンと共通 | - | 25 | GND | Power | 電源(GND) | - | 26 | CSI1_GPIO0_3V3 | In/Out | 拡張入出力、レベル変換ICを経由してi.MX 8M PlusのNAND_DATA00ピンに接続、基板上で4.7kプルアップ(VEXT_3V3)、
11ピンと共通 | VEXT_3V3 | 27 | CSI1_GPIO1_3V3 | In/Out | 拡張入出力、レベル変換ICを経由してi.MX 8M PlusのNAND_DATA01ピンに接続、基板上で4.7kプルアップ(VEXT_3V3)、
12ピンと共通 | VEXT_3V3 | 28 | I2C2_SCL_3V3 | Out | I2Cクロック、レベル変換ICを経由してi.MX 8M PlusのI2C2_SCLピンに接続、基板上で4.7kプルアップ(VEXT_3V3)、
13ピンと共通 | VEXT_3V3 | 29 | I2C2_SDA_3V3 | In/Out | I2Cデータ、レベル変換ICを経由してi.MX 8M PlusのI2C2_SDAピンに接続、基板上で4.7kプルアップ(VEXT_3V3)、
14ピンと共通 | VEXT_3V3 | 30 | VEXT_3V3 | Power | 電源(VEXT_3V3) | - |
MIPI CSI-2 カメラを使用する場合、 Device Tree の変更が必要です。 Armadillo-X2 では標準で以下の MIPI CSI-2 カメラの DT overlay を提供しています。 DT overlay の使用方法については「DT overlay によるカスタマイズ」を参照してください。 表3.25 MIPI CSI-2 カメラ用の DT overlay DT overlay ファイル | 対応デバイス例 | 説明 |
---|
armadillo_iotg_g4-con10-arducam.dtbo | Arducam 2MP*2 Stereo Camera | arducam カメラを MIPI CSI-2 で接続する場合にご使用ください。 | armadillo_iotg_g4-con10-imx219.dtbo | - | Raspberry Pi 向けの imx219 カメラを MIPI CSI-2 で接続する場合にご使用ください。 | armadillo_iotg_g4-con10-ox01f10.dtbo | KBCR-S08MM | OMNIVISION の OX01F10 カメラを MIPI CSI-2 で接続する場合にご使用ください。 |
GPIOは、i.MX 8M PlusのGPIO(General Purpose Input/Output)を利用しています。 拡張インターフェース(CON11)で GPIO を最大 21 ボート拡張することが可能です。
拡張インターフェースの仕様については「CON11(拡張インターフェース)」を参照してください。 -
デバイスファイル
-
sysfs GPIOクラスディレクトリ
| |
---|
sysfs GPIOクラスは旧バージョンのLinuxカーネルとの互換性維持の為に残っています。新しくアプリケーションを開発する際の利用はおすすめしません。 新しくアプリケーションを開発する場合は、libgpiodパッケージに含まれるアプリケーションまたはLinux カーネルのソースコードに含まれているサンプル(tools/gpio/)を参考にしてください。 |
コンテナ内で動作するアプリケーションから GPIO を扱うためには、Podman のイメージからコンテナを作成する際にホスト OS 側の
デバイスファイル /dev/gpiochipN を渡す必要があります。以下は、/dev/gpiochip2 を渡して alpine イメージからコンテナを作成する例です。
/dev/gpiochipN を渡すと、GPION+1 を操作することができます。 コンテナ内に入ってコマンドで GPIO を操作する例を以下に示します。この例では GPIO3_IO21 を操作しています。 |
GPIO 番号 21 の値を取得します。
| |
取得した値を表示します。
| |
GPIO 番号 21 に 1(High) を設定します。
|
他にも、gpiodetect コマンドで認識している gpiochip をリスト表示できます。
以下の例では、コンテナを作成する際に渡した /dev/gpiochip2 が認識されていることが確認できます。 gpioinfo コマンドでは、指定した gpiochip の詳細な情報を表示することができます。 C 言語プログラムから操作する場合は、GPIO 操作ライブラリである libgpiod を使用することができます。 I2C インターフェースは、i.MX 8M PlusのI2C(I2C Controller)を利用しています。また、i2c-gpioを利用することで、I2C バスを追加することができます。 主に拡張インターフェース(CON11)で I2C を最大3ポート拡張することが可能です。
拡張インターフェースの仕様については「CON11(拡張インターフェース)」を参照してください。
信号線はi.MX 8M PlusのI2Cコントローラ(I2C4、I2C5、I2C6)に接続されています。 -
最大データ転送レート: 384kbps
-
信号レベル: VDD_1V8
Armadillo-X2で利用しているI2Cバスと、接続されるI2Cデバイスを次に示します。 表3.26 I2C デバイス I2C バス | I2C デバイス | アドレス | デバイス名 | 0(I2C1) | 0x25 | PCA9450(PMIC) | 1(I2C2) | 0x2c | USB2422(USBハブ) | 0x32 | RV-8803-C7(RTC) | 2(I2C3) | 0x48 | SE050(セキュアエレメント) | 3(I2C4) | 接続デバイス無し |
Armadillo-X2の標準状態では、CONFIG_I2C_CHARDEVが有効となっているためユーザードライバでI2Cデバイスを制御することができます。ユーザードライバを利用する場合は、Linux カーネルでI2Cデバイスに対応するデバイスドライバを無効にする必要があります。 -
機能
-
デバイスファイル
-
/dev/i2c-0 (I2C1)
-
/dev/i2c-1 (I2C2)
-
/dev/i2c-2 (I2C3)
-
/dev/i2c-3 (I2C4)
| |
---|
/dev/i2c-6 は、HDMI DDCです。
|
コンテナ内で動作するアプリケーションから I2C を扱うためには、Podman のイメージからコンテナを作成する際にホスト OS 側の
デバイスファイル /dev/i2c-N を渡す必要があります。以下は、/dev/i2c-1 を渡して alpine イメージからコンテナを作成する例です。 コンテナ内に入り、i2c-tools に含まれる i2cdetect コマンドを使ってスレーブアドレスを確認することができます。 拡張インターフェース(CON11)で SPI を最大 2 ボート拡張することが可能です。
拡張インターフェースの仕様については「CON11(拡張インターフェース)」を参照してください。 -
最大クロック周波数: 66MHz(リード)/23MHz(ライト)
-
信号レベル : VDD_1V8
コンテナ内で動作するアプリケーションから SPI を扱うためには、Podman のイメージからコンテナを作成する際にホスト OS 側の
デバイスファイル /dev/spidevN.N を渡す必要があります。以下は、/dev/spidev1.0 を渡して alpine イメージからコンテナを作成する例です。 コンテナ内に入り、spi-tools に含まれる spi-config コマンドを使って現在の設定を確認することができます。 拡張インターフェース(CON11)で CAN を最大2ポート拡張することが可能です。
拡張インターフェースの仕様については「CON11(拡張インターフェース)」を参照してください。
信号線はi.MX 8M PlusのFLEXCAN(FLEXCAN1、FLEXCAN2)に接続されています。 -
CAN FD、CAN 2.0Bプロトコル対応
-
信号レベル: VDD_1V8
コンテナ内で動作するアプリケーションから CAN 通信を行うためには、
Podman のイメージからコンテナを作成する際に、コンテナを実行するネットワークとして host を、
権限として NET_ADMIN を指定する必要があります。
以下は、ネットワークとして host を、権限として NET_ADMIN を指定して alpine イメージからコンテナを作成する例です。 コンテナ内に入り、ip コマンドで CAN を有効にすることができます。
以下に、設定例を示します。 |
CAN の設定のために必要な iproute2 をインストールします。すでにインストール済みの場合は不要です。
| |
CAN の通信速度を 125000 kbps に設定します。
| |
can0 インターフェースを起動します。
| |
can0 インターフェースの現在の使用状況を表示します。
|
拡張インターフェース(CON11)で PWM を最大4ポート拡張することが可能です。
拡張インターフェースの仕様については「CON11(拡張インターフェース)」を参照してください。 -
最大周波数: 66MHz
-
信号レベル: VDD_1V8
コンテナ内で動作するアプリケーションから PWM を扱うためには、
Podman のイメージからコンテナを作成する際にホスト OS 側の /sys ディレクトリを渡す必要があります。デフォルト状態でもマウントされてますが、読み取り専用になって使えませんのでご注意ください。
以下は、 /sys を渡して alpine イメージからコンテナを作成する例です。ここで渡された /sys ディレクトリは
コンテナ内の同じ /sys にマウントされます。 コンテナ内に入り、/sys/class/pwm/pwmchipN ディレクトリ内の export ファイルに 0 を書き込むことで扱えるようになります。
以下に、/sys/class/pwm/pwmchip2 を扱う場合の動作設定例を示します。 |
pwmchip2 を export します。
| |
周期を 1 秒にします。単位はナノ秒です。
| |
PWM の ON 時間 を 0.5 秒にします。
| |
PWM 出力を有効にします。
|
I2Sを最大3ポート拡張することが可能です。
信号線はi.MX 8M Plusの同期式オーディオインターフェース(SAI3)に接続されています。 Armadillo サイトの Howto にて I2S を使用する例を公開していますので、そちらを参照してください。 LとRが対になったPDM MICを最大4ポート拡張することが可能です。
信号線はi.MX 8M PlusのPDMマイクロフォンインターフェース(MICFIL)に接続されています。 Armadillo サイトの Howto にて PDM マイクを使用する例を公開していますので、そちらを参照してください。 Armadillo-X2のリアルタイムクロックは、Armadillo-X2に搭載されたMicro Crystal製RV-8803-C7および、i.MX 8M PlusのSNVS_HP Real Time Counterを利用しています。 -
機能
-
インターフェース仕様
CON13はリアルタイムクロックのバックアップ用インターフェースです。
長時間電源が切断されても時刻データを保持させたい場合にご使用ください。 CON13にはCR1220、BR1220等の電池を接続することができます。
リアルタイムクロックの時刻保持時の平均消費電流は、
データシート上、240nA(Typ.)です。 表3.27 CON13 信号配列 ピン番号 | ピン名 | I/O | 説明 |
---|
1 | RTC_BAT | Power | リアルタイムクロックのバックアップ用電源入力(RTC_BAT) | 2 | GND | Power | 電源(GND) |
| |
---|
温度補償タイプのリアルタイムクロックを実装しており、
平均月差は周囲温度-20℃~70℃で8秒(参考値)です。 リアルタイムクロックの時間精度は周囲温度に大きく影響を受けますので、使用温度での十分な特性の確認をお願いいたします。 |
| |
---|
電池をホルダーへ装着する際は、異物の挟み込みや不完全な装着がないように、目視での異物確認や
装着状態の確認を行ってください。 |
-
デバイスファイル
-
/dev/rtc ( /dev/rtc0 へのシンボリックリンク)
-
/dev/rtc0 (RV-8803-C7)
-
/dev/rtc1 (SNVS_HP Real Time Counter)
| |
---|
RV-8803-C7が /dev/rtc0 、SNVS_HP Real Time Counterが /dev/rtc1 となるよう、Device Treeでエイリアスを設定しています。 |
| |
---|
Linux カーネルのバージョン v5.10.86-r0 以降では、NTPサーバーとRTCを時刻同期した場合、rtc0 (RV-8803-C7)にのみ時刻が保存されます。 Linux カーネルのバージョン v5.10.52-r1 では、NTPサーバーとRTCを時刻同期した場合、rtc0 (RV-8803-C7)とrtc1 (SVNS) の両方に時刻が保存されていました。 |
| |
---|
RV-8803-C7は、毎分 0 秒にしかアラーム割り込みを発生させることができません。
0 時 0 分 30 秒の時に、1 秒後にアラームが鳴るように設定しても、
実際にアラーム割り込みが発生するのは 0 時 1 分 0 秒となります。 |
アラーム割り込みは、デバイスファイル経由で利用することができます。 詳細な情報については、Linux カーネルのソースコードに含まれているドキュメント(Documentation/admin-guide/rtc.rst)やサンプルプログラム(tools/testing/selftests/rtc/rtctest.c)を参照してください。 コンテナ内から RTC を扱うためには、Podman のイメージからコンテナを作成する際にホスト OS 側の
デバイスファイル /dev/rtcN を渡すと同時に、RTC への時刻の設定を行うための権限も渡す必要があります。
以下は、/dev/rtc0 を渡して alpine イメージからコンテナを作成する例です。権限として SYS_TIME も渡しています。 コンテナ内に入り、hwclock コマンドで RTC の時刻表示と設定ができます。 |
RTC に設定されている現在時刻を表示します。
| |
システム時刻を 2021 年 4 月 1 日 9 時 0 分 0 秒に設定します。
| |
システム時刻を RTC に反映させます。
| |
RTC に設定されている時刻が変更されていることを確認します。
|
CON14、CON15は電源入力用のインターフェースです。 -
インターフェース仕様(CON14)
CON14にはDCジャックが実装されており、図3.105「ACアダプタの極性マーク」と同じ極性マークのあるACアダプタが使用できます。対応プラグは内径2.1mm、外形5.5mmのものとなります。
-
インターフェース仕様(CON15)
CON15には2mmピッチのライトアングルコネクタを実装しています。 表3.28 CON15 搭載コネクタと対向コネクタ例 名称 | 型番 | メーカー | 備考 |
---|
搭載コネクタ | S02B-PASK-2(LF)(SN) | J.S.T.Mfg. | 許容電流 3A(端子1本あたり) | 対向コネクタ | PAP-02V-S | J.S.T.Mfg. | - | コンタクト | SPHD-001T-P0.5 | J.S.T.Mfg. | 適用電線AWG26~AWG22 | SPHD-002T-P0.5 | J.S.T.Mfg. | 適用電線AWG28~AWG24 |
表3.29 CON15 信号配列 ピン番号 | ピン名 | I/O | 説明 |
---|
1 | VIN | Power | 電源入力(VIN) | 2 | GND | Power | 電源(GND) |
| |
---|
CON11、CON14、CON15の電源ライン(VIN)は接続されており、同時に電源を供給することはできません。 |
| |
---|
ACアダプタを使用する際は、ACアダプタのDCプラグをArmadillo-IoT ゲートウェイ G4に接続してからACプラグをコンセントに挿してください。 |
| |
---|
電源を再投入する際は、コンデンサに蓄えられた電荷を抜くため、電源を切断後、一定時間以上待つ必要があります。
開発セット付属のACアダプタの場合に必要な時間は以下のとおりです。 -
DCプラグ側で電源を切断した場合 : 約5秒
-
ACプラグ側で電源を切断した場合 : 約1分
コンデンサに蓄えられた電荷が抜ける前に電源を再投入した場合、
電源シーケンスが守られず、起動しない等の動作不具合の原因となります。 |
-
機能
JP1は起動デバイス設定ジャンパです。
JP1の状態で、起動デバイスを設定することができます。 表3.30 ジャンパの状態と起動デバイス JP1の状態 | 起動デバイス |
---|
オープン | eMMC | ショート | microSD(CON1) |
-
インターフェース仕様
表3.31 JP1 信号配列 ピン番号 | ピン名 | I/O | 説明 |
---|
1 | JP1 | In | 起動デバイス設定用信号、i.MX 8M PlusのBOOT_MODE0ピンに接続、基板上で100kΩプルダウン | 2 | JP1_PU | Out | 基板上で4.7kΩプルアップ(VDD_1V8) |
Armadillo-X2に搭載されているユーザースイッチには、GPIOが接続されています。 -
インターフェース仕様
SW1は、ユーザー側で自由に利用できる押しボタンスイッチです。 表3.32 SW1 信号配列 部品番号 | 名称 | 説明 |
---|
SW1 | ユーザースイッチ | i.MX 8M PlusのGPIO1_IO13ピンに接続、基板上で10kΩプルアップ(VDD_1V8)
(Low: 押された状態、High: 押されていない状態) |
Linuxでは、ユーザー空間でイベント(Press/Release)を検出することができます。Linuxでは、GPIO接続用キーボードドライバ(gpio-keys)で制御することができます。 ユーザースイッチと信号には、次に示すキーコードが割り当てられています。 表3.33 キーコード ユーザースイッチ | キーコード | イベントコード | X11 キーコード |
---|
SW1 | KEY_PROG1
| 148 | XF86Launch1
| EC25-J RI | KEY_PROG2
| 149 | XF86Launch2
| 予約 | KEY_PROG3
| 202 | XF86Launch3
| 予約 | KEY_PROG4
| 203 | XF86Launch4
| PWR_OFF | KEY_POWER
| 116 | XF86PowerOff
| REBOOT | KEY_RESET
| 408 | なし |
-
デバイスファイル
-
/dev/input/by-path/platform-gpio-keys-event []
Armadillo-X2 にはユーザースイッチが実装されています。これらのスイッチのプッシュ/リリースイベントを取得するためには、
Podman のイメージからコンテナを作成する際にホスト OS 側の /dev/input ディレクトリを渡す必要があります。
以下は、/dev/input を渡して alpine イメージからコンテナを作成する例です。ここで渡された /dev/input ディレクトリは
コンテナ内の /dev/input にマウントされます。 コンテナ内に入り、evtest コマンドでイベントを確認できます。 |
SW1のボタン プッシュ イベントを検出したときの表示
| |
SW1のボタン リリース イベントを検出したときの表示
|
ユーザースイッチ押下などに対して、細かく動作を指定できる buttond という機能があります。
詳細は「ボタンやキーを扱う」を参照してください。 Armadillo-X2に搭載されているユーザーLEDには、GPIOが接続されています。 -
インターフェース仕様(LED3)
LED3は、ユーザー側で自由に利用できるLEDです。 表3.34 LED3の状態 部品番号 | 名称(色) | 説明 |
---|
LED3 | ユーザー LED(緑) | トランジスタを経由してi.MX 8M PlusのGPIO1_IO14ピンに接続
(Low: 消灯、High: 点灯) |
-
インターフェース仕様(LED4)
LED4は、Armadillo-IoT ゲートウェイ G4の電源確認用のLEDです。 表3.35 LED4の状態 部品番号 | 名称(色) | 状態 | 説明 |
---|
LED4 | 電源LED(緑) | 点灯 | VDD_3V3が供給されている | 消灯 | VDD_3V3が供給されていない |
Linuxでは、GPIO接続用LEDドライバ(leds-gpio)で制御することができます。 Armadillo-X2 には LED が実装されています。これらの LED を扱うためには、
Podman のイメージからコンテナを作成する際にホスト OS 側の /sys ディレクトリを渡す必要があります。
LEDクラスディレクトリと LED の対応を次に示します。 表3.36 LED クラスディレクトリと LED の対応 LEDクラスディレクトリ | インターフェース | デフォルトトリガ |
---|
/sys/class/leds/led1/
| ユーザーLED緑 | none
|
以下は、/sys を渡して alpine イメージからコンテナを作成する例です。ここで渡された /sys ディレクトリは
コンテナ内の /sys にマウントされます。 コンテナ内に入り、brightness ファイルに値を書き込むことで LED の点灯/消灯を行うことができます。
0 を書き込むと消灯、0 以外の値 (1〜255) を書き込むと点灯します。 brightness ファイルを読み出すことで、現在の LED の状態を参照することも可能です。 Linux では、LED をある特定のタイミングで光らせることができます。これを「トリガ」と呼びます。
LEDクラスディレクトリ以下の trigger ファイルへ値を書き込むことによってLEDの点灯/消灯にトリガを設定することができます。
trigger でサポートされている主な値は以下の通りです。 表3.37 LEDトリガの種類 設定 | 説明 |
---|
none
| トリガを設定しません | mmc1
| microSD スロットのアクセスランプにします | mmc2
| eMMC のアクセスランプにします | heartbeat
| 心拍のように点灯/消灯を行います | default-on
| 主に Linux カーネルから使用します。LED が点灯します |
trigger ファイルを読み出すとサポートしているトリガと、現在有効のトリガが表示されます。 [] が付いているものが現在のトリガです。
以下のコマンドを実行すると、心拍のように点灯/消灯を行います。 コンテナ内から Bluetooth を扱うには、コンテナ作成時にホストネットワークを使用するために、
NET_ADMIN の権限を渡す必要があります。
図3.113「Bluetooth を扱うコンテナの作成例」に、alpine イメージから Bluetooth を扱うコンテナを作成する例を示します。 コンテナ内で必要なソフトウェアをインストールして、Bluetooth を起動します。 これにより、bluetoothctl で Bluetooth 機器のスキャンやペアリングなどが行えるようになります。
以下に、bluetoothctl コマンドで周辺機器をスキャンしてペアリングを行う例を示します。 |
コントローラを起動します。
| |
周辺機器をスキャンします。
| |
ペアリングしたい機器の MAC アドレスを指定してペアリングします。
| |
exit で bluetoothctl のプロンプトを終了します。
|
ここでは、Wi-SUN デバイスが UART で接続されている場合の例を示します。
この場合、コンテナ内で動作するアプリケーションから Wi-SUN デバイスで通信を行うためには、
Podman のイメージからコンテナを作成する際にホスト OS 側のデバイスファイル /dev/ttymxcN のうち、
Wi-SUN と対応するものを渡す必要があります。
以下は、/dev/ttymxc0 を渡して alpine イメージからコンテナを作成する例です。 コンテナ内から、/dev/ttymxc0 を使って Wi-SUN データの送受信ができるようになります。 ここでは、EnOcean デバイスが UART で接続されている場合の例を示します。
この場合、コンテナ内で動作するアプリケーションから EnOcean デバイスで通信を行うためには、
Podman のイメージからコンテナを作成する際にホスト OS 側のデバイスファイル /dev/ttymxcN のうち、
EnOcean と対応するものを渡す必要があります。
以下は、/dev/ttymxc0 を渡して alpine イメージからコンテナを作成する例です。 コンテナ内から、/dev/ttymxc0 を使って EnOcean データの送受信ができるようになります。 Armadillo-X2 を用いた製品のソフトウェア設計は、一般的な組み込み開発と基本的には変わりません。
しかし、 Armadillo Base OS という独自OSを搭載しているため、ソフトウェアの設計には特有のポイントがいくつかあります。
本章では、それらの設計時に考慮すべき Armadillo Base OS 特有のポイントについて紹介していきます。 3.7.1. 開発者が開発するもの、開発しなくていいものArmadillo Base OS では、組み込み機器において必要になる様々な機能を標準で搭載しています。 図3.118「開発者が開発するもの、開発しなくていいもの」は、 Armadillo Base OS 搭載製品において、開発者が開発するものと開発しなくていいものをまとめた図です。 開発しなくていいものについては設計を考える必要はありません。
開発するものに絞って設計を進めることができます。 Armadillo Base OSでは基本的にユーザーアプリケーションを Podman コンテナ上で実行します。
そのため、実行環境として Armadillo Base OS を意識する必要はありません。 Podmanは、同じくコンテナを扱えるソフトウェアである Docker と基本的に互換性があります。 VPU 及び NPU を使用する場合は、 アットマークテクノが提供する Debian GNU/Linux ベースのコンテナイメージ の使用を推奨しますが、それ以外は Docker Hub などから使い慣れたディストリビューションのコンテナイメージを取得して開発することができます。 アプリケーションが出力するユーザーデータで保存が必要なものは、「電源を切っても保持されるディレクトリ(ユーザーデータディレクトリ)」にも記載があるとおり、 /var/app/volumes/ 以下に配置してください。 色々な場所にデータが保存されていますと Armadillo-X2 の初期化を行う際に削除の処理が煩雑になりますので、 /var/app/volumes/ 以下に集約してください。 ユーザーアプリケーションのログは、不具合発生時の原因究明の一助になるため必ず残しておくことを推奨します。 ユーザーアプリケーションが出力するログは、「電源を切っても保持されるディレクトリ(ユーザーデータディレクトリ)」にも記載があるとおり、 /var/app/volumes/ 以下に配置するのが良いです。 コンテナの中から /var/app/volumes/ ディレクトリにアクセスすることになります。
手順についての詳細は実際に開発を行う箇所にて紹介します。
Ethernet、LTE、BT、WLANなどのネットワーク系のログ
一般に不具合発生時によく疑われる箇所なので、最低でも接続・切断情報などのログを残しておくことをおすすめします。
ソフトウェアのバージョン
/etc/sw-versions というファイルが Armadillo Base OS 上に存在します。
これは、 SWUpdate に管理されている各ソフトウェアのバージョンが記録されているファイルです。
このファイルの内容をログに含めておくことで、当時のバージョンを記録することができます。
A/B 面どちらであったか
アップデート後になにか不具合があって、自動的にロールバックしてしまう場合があります。
後でログを確認する際に、当時 A/B 面どちらであったかで環境が大きく変わってしまい解析に時間がかかる場合があるので、どちらの面で動作していたかをログに残しておくことをおすすめします。 図3.119「現在の面の確認方法」に示すコマンドを実行することで、現在 A/B どちらの面で起動しているかを確認できます。
|
この実行結果から今の面は/dev/mmcblk2p1であることが分かります。
|
Armadillo-X2のウォッチドッグタイマーは、i.MX 8M PlusのWDOG(Watchdog Timer)を利用しています。 ウォッチドッグタイマーは、U-Boot によって有効化されます。標準状態でタイムアウト時間は10秒に設定されます。Linux カーネルは、ウォッチドッグタイマードライバの初期化時にタイムアウト時間を60 秒に再設定します。 何らかの要因でウォッチドッグタイマーのキックができなくなりタイムアウトすると、システムリセットが発生します。 ウォッチドッグタイマーの設定変更は、ioctlシステムコール経由で行うことができます。詳細な情報については、Linux カーネルのソースコードに含まれているドキュメント(Documentation/watchdog/watchdog-api.rst)を参照してください。 | |
---|
ウォッチドッグタイマーを停止することはできません。 |
3.7.5. コンテナに Armadillo の情報を渡す方法Armadillo Base OS からコンテナに環境変数として情報を渡すためにコンテナ起動設定ファイルを使用します。 コンテナ起動設定ファイル(conf ファイル)に関しては「コンテナ起動設定ファイルを作成する」を参照してください。
アットマークテクノが提供する情報を環境変数として渡す
コンテナ起動設定ファイルに add_armadillo_env を使用してください。 アットマークテクノが設定した LAN1(eth0)の MACアドレス、個体番号などの Armadillo の情報を環境変数としてコンテナに渡します。 add_armadillo_env については「個体識別情報の環境変数の追加」を参照してください。
任意の情報を環境変数として渡す
コンテナ起動設定ファイルに add_args を使用してください。 add_args については「podman run に引数を渡す設定」を参照してください。
add_args を下記のように使用することでコンテナに環境変数として情報を渡すことができます。
|
シェルコマンドの出力を環境変数に代入する場合は <値> として $(シェルコマンド) を使用してください。
|
add_args --env の例を示します。
これにより、コンテナ内の環境変数 MY_ENV に文字列 my_value が設定されます。
3.7.6. Armadillo Base OS のデフォルトで開放しているポートArmadillo Base OS では表3.38「Armadillo Base OS のデフォルトで開放しているポート」に示すポートをデフォルトで開放しています。 表3.38 Armadillo Base OS のデフォルトで開放しているポート ポート番号 | プロトコル | 使用目的 |
---|
58080 | TCP | ABOS Web | 5353 | UDP | avahi(mDNS) |
使用していないポートを開放することは攻撃の標的になります。
使用しないサービスを停止しポートを閉じてください。 ABOS Web のサービスを停止する方法は「ABOS Web を停止する」を、起動する方法は「ABOS Web を起動する」を参照してください。 図3.122「avahi-daemon を停止する」に avahi のサービスを停止する方法を示します。 |
OpenRC に avahi のサービスが登録されていることを確認します。
| |
avahi のサービスが起動していることを確認します。
| |
avahi のサービスを停止します。
| |
サービスを管理している OpenRC から avahi のサービスの登録を解除します。
| |
サービス設定ファイルの削除を永続化します。
|
図3.123「avahi-daemon を起動する」に avahi サービスを起動する方法を示します。 |
OpenRC に avahi のサービスが登録されていないことを確認します。
| |
サービスを管理している OpenRC に avahi のサービスを登録します。
| |
avahi のサービスを起動します。
| |
サービス設定ファイルを永続化します。
|
必要であれば、 Armadillo のネットワークの設定を行います。 Armadillo Base OS(以降、 ABOS) には、 Armadillo と作業用 PC が同一 LAN 内に存在していれば Web ブラウザからネットワークの設定や、 SWU イメージのインストールなどを行うことが可能となる、 ABOS Web という機能があります。
この機能は、バージョン v3.17.4-at.7 以降の ABOS に標準で組み込まれています。 現在、ネットワークに関して ABOS Web で設定できるのは以下のものです。 -
WWAN設定
-
WLAN設定
-
各接続設定(各ネットワークインターフェースの設定)
-
DHCPサーバー設定
-
NAT設定
-
VPN設定
| バージョン v3.17.4-at.7 以前から ABOS をアップデートした場合の注意 |
---|
バージョン v3.17.4-at.7 以前からこのバージョン以降へ ABOS をアップデートすると、
avahi サービスが新しく追加されます。
ABOS Web にアクセスできるようにするためには、この avahi サービスが自動起動するように設定を変更する必要があります。
そのため、以下の手順にしたがって設定を変更してください。
(新しく追加されたサービスが自動起動することによる悪影響を防ぐため、アップデート直後では avahi サービスは自動起動しない設定になっています。) [armadillo ~]# rc-update add avahi-daemon
[armadillo ~]# rc-service avahi-daemon start
[armadillo ~]# persist_file /etc/runlevels/default/avahi-daemon |
| バージョン 4.13 以前の mkswu を使用した場合の注意 |
---|
バージョン v3.17.4-at.7 以降の ABOS に、バージョン 4.13 以前の mkswu の mkswu --init で作成した initial_setup.swu を
インストールした場合、 ABOS Web にパスワードが設定されていないため自動起動しません。
そのため、以下の手順にしたがって ABOS Web のパスワードを設定してください。 [armadillo ~]# passwd abos-web-admin
[armadillo ~]# persist_file /etc/shadow
[armadillo ~]# rc-service abos-web restart |
LTE モジュールを搭載した Armadillo をお使いで、LTE モジュールによる WWAN 接続でインターネットにアクセスする場合に、Armadillo に LAN で接続した機器から Armadillo をルーターとして利用したい場合には、NAT設定機能が役に立つでしょう。
LTE モジュールによる WWAN 通信でクラウドサービスに接続し、WLAN や LAN で接続した機器から集めたデータをクラウドサービスに転送したり、それらの機器を、クラウドサービスから Armadillo 経由で遠隔制御するようなシステムを構成する場合にご利用ください。 以下では、 ABOS Web を利用した各種ネットワーク設定の方法について紹介します。 Armadillo と PC を有線 LAN で接続し、Armadillo の電源を入れて PC で Web ブラウザを起動した後、Web ブラウザのアドレスバーに次の URL を入力してください: https://armadillo.local:58080 ABOS Web は、初期状態では同一サブネットのネットワークのみアクセス可能です。
サブネット外からのアクセスを許可したい場合は、 /etc/atmark/abos_web/init.conf を作成し、ABOS Web のサービスを再起動してください。 以下の例ではコンテナとループバックからのアクセスのみを許可します: [armadillo ~]# vi /etc/atmark/abos_web/init.conf
command_args="--allowed-subnets '10.88.0.0/16 127.0.0.0/8 ::1/128'"
[armadillo ~]# persist_file -v /etc/atmark/abos_web/init.conf
'/mnt/etc/atmark/abos_web/init.conf' -> '/target/etc/atmark/abos_web/init.conf'
[armadillo ~]# rc-service abos-web restart | |
---|
ABOS Web が動作する Armadillo が、同じ LAN 上に複数あると、ABOS Web に接続する URL のホスト名部分(armadillo.local)は、2台めでは armadillo-2.local、3台めでは armadillo-3.local のように、違うものが自動的に割り当てられます。
どのホスト名が、どの Armadillo のものなのかを判別するのが難しいので、複数台の Armadillo で同時に ABOS Web を動かすときは、LAN に固定 IP アドレスを設定して、IP アドレスで指定できるようにするのがよいでしょう。 また、VS Code 上で ABOSDE(Armadillo Base OS Development Environment) から、
ABOS Web が動作している Armadillo の一覧を確認し、
指定した Armadillo の ABOS Web を Web ブラウザ で開くことが出来ます。
ただし、ATDE のネットワークを NAT に設定している場合は Armadillo がリストに表示されません。 図3.124「ABOSDE で ローカルネットワーク上の Armadillo をスキャンする」 の赤枠で囲われているボタンをクリックすることで、
ローカルネットワーク上で ABOS Web が実行されている Armadillo をスキャンすることができます。
図3.125「ABOSDE を使用して ABOS Web を開く」 の赤枠で囲われているマークをクリックすることで、
ABOS Web を Web ブラウザで開くことができます。
図3.126「ABOSDE に表示されている Armadillo を更新する」 の赤枠で囲われているマークをクリックすることで、ABOSDE に表示されている Armadillo を更新することができます。
|
「initial_setup.swu の作成」で ABOS Web のログイン用パスワードを設定していない場合、 ABOS Web 初回ログイン時に、 "初回ログイン"のパスワード登録画面が表示されますので、パスワードを設定してください。 "初回ログイン"のパスワード登録画面で、"パスワード" フィールドと "パスワード(確認)" フィールドに、登録したいパスワードを入力してから、"登録" ボタンをクリックしてください。
パスワード登録完了画面が表示されたら、パスワード登録の完了です。 パスワード登録完了画面にある "ログインページ" というリンクをクリックすると、ログイン画面が表示されますので、先ほど登録したパスワードを入力して "ログイン" ボタンをクリックしてください。 ABOS Web に対応した Armadillo が正常に起動していれば、Web ブラウザに ABOS Web のログイン画面が表示されます。 ログイン画面で ABOS Web のパスワードを入力して認証されれば、ABOS Web の設定画面に表示が変わり、設定操作を行うことができます。 登録した ABOS Web のログイン用パスワードは「設定管理」画面から変更することができます。
トップページから「設定管理」をクリックすると、移動した先にパスワード変更画面が表示されますので、
現在のパスワードと変更後のパスワードを入力して登録ボタンをクリックしてください。 ABOS Web で Armadillo の動作設定を行うには、ログイン後に表示されるトップページで、設定したい機能へのリンクをクリックしてください。
リンクをクリックすると、リンク先の設定画面が表示されますので、設定画面で、現在の設定内容の確認や設定変更を行ってください。
現在の設定内容を確認するには、"各接続設定"をクリックしてください。
各機能の設定ページへのリンクは、それぞれの設定ページでも、左端にサイドメニュー形式で表示されます。
以後、サイドメニュー形式で表示されたリンクをクリックすることを、「サイドメニューから xxx を選択する」と表記します。
ログイン後に表示されるトップページと、それぞれの設定ページには、左端のサイドメニューに加え、上端右側に、現在の接続状態が表示されます。
現在の接続状態は、WWAN、WLAN、LAN、のそれぞれについて表示されます。
WWAN と WLAN は、それらの通信モジュールが Armadillo に搭載されていなければ、表示されません。 ABOS Web で必要なセットアップを行なったら、サイドメニューから "ログアウト" を選択してログアウトしてください。
ログアウトすると、ログイン画面が再び表示されますので、ABOS Web をすぐに使わないのであれば、Web ブラウザを閉じてください。 LTE をはじめとする WWAN 通信モジュールを搭載した Armadillo の、WWAN 設定を行います。
この設定画面では、WWAN 接続設定の登録と、WWAN 接続の状態(現在のアドレス情報)の表示、登録済み WWAN 接続設定の編集と削除を行うことができます。
設定項目のうち、"MCC/MNC" は、通常は空欄にしてください。
MCC/MNC 以外の項目を正しく設定しても WWAN 通信が動作しない場合、特に SIM カードがマルチキャリア SIM の場合は、ご契約の通信事業者に MCC/MNM を問い合わせ、通信事業者から提示された MCC/MNC の値を設定してください。
それぞれの入力フィールドに設定値を入力して "接続して保存" ボタンをクリックすると、WWAN 接続の設定を登録して、WWAN 接続動作を実行します。
WWAN 通信設定が行われ、ネットワーク接続が確立した状態では、割当たっている IP アドレスなどを "現在のWWAN接続情報" に表示します。
図3.132「WWAN設定画面」に、WWAN 設定を行った状態を示します。 | |
---|
ABOS Web のバージョン 1.3.3 以降では「IPv6 設定」を選択することができます。
使用する SIM によっては IPv6 が有効だと接続できず、無効にすると接続できることがあります。
その場合は、この設定を「使用しない」に設定して接続してください。 |
無線 LAN モジュールを搭載した Armadillo の、WLAN(無線 LAN)設定を行います。
この設定画面では、WLAN クライアント(子機)としての設定または、WLAN アクセスポイントとしての設定を行うことができます。
クライアントとアクセスポイントのどちらか一方について、接続設定の登録と接続の状態の表示、登録済み設定の削除を行なえます。
クライアントとアクセスポイントのどちらに設定するかは、"動作モード選択"欄で指定します。 クライアント設定とアクセスポイント設定の、それぞれについて、以下に説明します。 3.8.8.1. WLAN 設定(クライアントとしての設定)"動作モード選択"欄で"クライアントとして使用する"を選択すると、クライアント設定画面が表示されます。
もしアクセスポイントに設定済みの場合は、アクセスポイントの設定を削除してください。
そうしないと、動作モードをクライアントに切り替えることができません。
設定項目のうち、ネットワーク名(SSID) は、リストから選択してください。
WLAN アクセスポイントを Armadillo が何も検出できない場合は、このリストが空になります。
セキュリティ方式も、リストから選択してください。
DHCP と 固定 は、DHCP を選択すると DHCP サーバーから IP アドレスを取得します。
固定 を選択すると、固定 IP アドレス設定用の入力フィールドを表示します。
それぞれの入力フィールドに設定値を入力して "接続して保存" ボタンをクリックすると、WLAN クライアント設定を登録して、WLAN 接続動作を実行します。
WLAN 接続設定が行われ、WLAN 接続が確立した状態では、割当たっている IP アドレスなどを "現在のWLAN接続情報" に表示します。 ABOS-WEB上では複数のネットワーク設定を保存することが可能です。
設定項目のうちにネットワーク情報を入力した後、 "保存" ボタンをクリックすると、入力した内容の登録のみを行い、接続は行いません。
登録した設定の一覧は WLAN ページの中央にあるリストに表示されます。
このリストでは WLAN 設定の接続/編集/削除を行うことができます。
保存した設定に接続先を変更したい場合はリストから選択して、"接続" ボタンをクリックしてください。
保存した設定を編集したい場合はリストから選択して、"設定を編集" ボタンをクリックしてください。
保存した設定を削除したい場合はリストから選択して、"設定を削除" ボタンをクリックしてください。 図3.133「WLAN クライアント設定画面」に、WLAN クライアント設定を行った状態を示します。 登録済み WLAN クライアント設定を削除して、WLAN アクセスポイントとの接続を切断するには、"設定を削除" ボタンをクリックしてください。 3.8.8.2. WLAN 設定(アクセスポイントとしての設定)"動作モード選択"欄で"アクセスポイントとして使用する"を選択すると、アクセスポイント設定画面が表示されます。
もしクライアントに設定済みの場合は、クライアントの設定を削除してください。
そうしないと、動作モードをアクセスポイントに切り替えることができません。
設定項目のうち、ブリッジアドレス は、WLAN アクセスポイントに割り当てる IP アドレスを入力してください。
サブネットマスク は、アクセスポイントのサブネットのものを入力してください。
使用周波数は、5GHz と 2.4GHz のうち使用するものを選択してください。
両方の周波数を同時に使用することはできません。
使用チャンネルは、リストから選択してください。
SSID と パスワード に入力した値は、アクセスポイントに設定した Armadillo に WLAN 子機を接続する際に使用します。 それぞれの入力フィールドに設定値を入力して "設定" ボタンをクリックすると、WLAN アクセスポイント設定を登録して、WLAN アクセスポイント動作を開始します。
WLAN アクセスポイント設定が行われ、アクセスポイント動作中の状態では、"現在のアクセスポイント情報" に設定内容を表示します。 図3.134「WLAN アクセスポイント設定画面」に、WLAN アクセスポイント設定を行った状態を示します。 | |
---|
アクセスポイントモードのセキュリティ方式は、WPA2 を使用します。 |
3.8.9. 各接続設定(各ネットワークインターフェースの設定)設定されたネットワーク接続の一覧を表示します。表示した接続のそれぞれについて、接続の有効化(「接続」)や無効化(「切断」)、および接続設定内容の編集や削除を行うことができます。
接続の操作を行う時は、操作したい接続をラジオボタンで選択してください。 ここで、「ネットワーク接続」は、Linux のネットワーク接続管理機能(NetworkManager)が管理するコネクションです。
ネットワーク接続に対する設定項目の詳細は、NetworkManager のリファレンス(https://developer-old.gnome.org/NetworkManager/stable/nmcli.html)をご覧ください。
接続設定内容を編集したい接続を選択して "設定を編集" ボタンをクリックすると、設定内容の編集画面を表示します。
LAN の接続以外、つまり、WWANと WLAN の接続に対する設定は、"WWAN設定" や "WLAN設定" の設定画面をお使いいただくのが簡単です。 それぞれの接続設定画面では、IPv4 と IPv6 のそれぞれについて、IP アドレスを自動割り当てするかまたは固定 IP アドレスにするかを選択して設定できます。
IP アドレスの割り当ては、デフォルトでは自動割り当てです。
Armadillo を接続した LAN や WLAN で、Armadillo を DHCP サーバーとして運用する場合は、それらのネットワーク接続を固定 IP アドレスに設定してください。 LAN 接続の接続名は、デフォルトでは "Wired connection 1" です。
LAN ポートを二つ搭載した Armadillo では、二つめの LAN ポートに対応する "Wired connection 2" も有効です。
Armadillo を LAN と WWAN との間で IPv4 ルーターとして運用する場合は、LAN 接続の設定で IPv4 アドレスを固定 IP アドレスに設定して下さい。
図3.136「LAN 接続設定で固定 IP アドレスに設定した画面」に、LAN 接続の設定編集画面で固定 IP アドレスに設定した状態を示します。 WWAN 接続の接続名は、デフォルトでは "gsm-ttyCommModem" です。 WLAN 接続の接続名は、デフォルトでは、クライアントモードが "abos_web_wlan"、アクセスポイントモードが "abos_web_br_ap" です。 ネットワークインターフェースごとに、接続したネットワーク上で Armadillo を DHCP サーバーとして動作させる設定を行うことができます。
接続済みの DHCP サーバー情報を、画面上部の"現在のDHCP情報"に表示します。
DHCPサーバーの設定を登録する場合は、"DHCP情報入力"欄に設定内容を入力して"設定"ボタンをクリックしてください。
図3.137「eth0 に対する DHCP サーバー設定」に、一つめの LAN ポート(eth0)に対する設定を行った状態を示します。 たとえば、LAN ポートが二つある Armadillo で、それぞれの LAN ポートを異なる LAN に接続して、それぞれの LAN 上で Armadillo を DHCP サーバーとして運用する場合は、eth0 と eth1 に対して DHCP サーバー設定を行ってください。
DHCP サーバー設定を削除するには、"現在のDHCP情報"の一覧で削除したい設定を選択して、"削除"ボタンをクリックしてください。 この設定画面では、ルーター機能での宛先インターフェース設定と、Armadillo を接続した LAN 上の機器用のポートフォワーディング設定を行うことができます。
Armadillo を LAN や WLAN と WWAN との間でルーターとして運用する場合は、NAT設定の宛先インターフェースを WWAN のインターフェースに設定してください。
そして、LAN や WLAN 上の機器を、WWAN 接続したインターネットにサーバーとして公開したい場合は、ポートフォワーディング設定を使ってください。 Armadillo の VPN 接続設定を行います。
この設定画面では、認証方式や VPN クライアントの設定ファイル、認証用の証明書と鍵の設定を行うことができます。
VPN 接続を設定していれば、現在の接続状態も表示します。
現在の接続状態表示欄にある "接続" ボタンと "切断" ボタンで、VPN 接続の接続と切断を行なえます。
VPN クライアントは、現在 OpenVPN をサポートしています。 図3.140「VPN 設定」に、VPN 接続設定を行った状態を示します。 認証方式は、"ユーザ名とパスワード" と "証明書" のどちらか一方を選択できます。
認証方式が "証明書" の場合、.ovpn ファイルに証明書や鍵が埋め込まれていれば、それらのファイルを指定する必要はありません。 ABOS Web は、VPN 接続を設定する際に abos_web_openvpn という名前のコンテナを自動的に作成し、このコンテナで VPN クライアントを実行します。
VPN 接続動作を実行する時には、進行状況を示すログを表示します。 登録済み VPN 設定を削除して、VPN 接続を切断するには、"設定を削除" ボタンをクリックしてください。 各設定画面で行った設定の現在状態を、設定ごとに区切って一覧表示します。 ABOS Web では以下の要素についてお客様自身で用意したものを使用して
カスタマイズすることができます。 -
ロゴ画像
-
ヘッダロゴアイコン画像
-
ヘッダタイトル
-
favicon 画像
-
背景色
-
メニューの表示名
ABOS Web をお客様の最終製品に組み込む場合、自社のロゴ画像に変更するといったような
使い方ができます。 カスタマイズは、「設定管理」で行うことができます。 | |
---|
カスタマイズは ABOS Web のバージョン 1.3.0 以降で対応しています。 |
ロゴ画像
ログインページや新規パスワード設定画面で表示される画像です。
「ファイルを選択」をクリックしてアップロードしたい画像ファイルを選択してください。
フォーマットは PNG のみで、ファイルサイズは 3MB のものまでアップロードできます。
ヘッダロゴアイコン画像
画面左上に常に表示されている画像です。
「ファイルを選択」をクリックしてアップロードしたい画像ファイルを選択してください。
フォーマットは PNG のみで、ファイルサイズは 3MB のものまでアップロードできます。
ヘッダタイトル
画面左上に常に表示されている文字列です。24文字まで入力できます。
favicon 画像
Web ブラウザのタブなどに小さく表示される画像です。
favicon 画像は以下の種類を favicon ディレクトリに保存して、
favicon ディレクトリごと zip 圧縮したものをアップロードしてください。 表3.39 用意する favicon 画像 ファイル名 | 縦横サイズ | 説明 |
---|
android-chrome-192x192.png | 192x192 | スマートフォンのホームに Web ページを追加した時に使用されます。 | android-chrome-512x512.png | 512x512 | Web ページを開いた時のスプラッシュ画面に使用されます。 | apple-touch-icon.png | 180x180 | スマートフォンのホームに Web ページを追加した時に使用されます。 | favicon-16x16.png | 16x16 | Web ブラウザで使用されます。 | favicon-32x32.png | 32x32 | Web ブラウザで使用されます。 | mstile-150x150.png | 150x150 | Windows でスタート画面にピン止めしたときに使用されます。 |
背景色
5 種類の中から選択できます。
メニューの表示名
画面左にあるメニューの表示名を変更する、または非表示にすることができます。
「メニュー項目を変更する」をクリックし、変更用ページへ行ってください。
各メニュー項目名と説明を変更することができます。
項目名を空欄にするとそのメニューは非表示になります。
入力し終わったらページ下部の「メニューを設定」をクリックしてください。
画像やメニューの変更後、すぐに Web ブラウザ画面に反映されない場合は、
お使いの Web ブラウザの設定でキャッシュの削除を行ってください。 変更完了後は、「カスタマイズ機能を無効にする」をクリックするとカスタマイズ項目が非表示になり
それ以上カスタマイズできなくなります。お客様の最終製品に ABOS Web を組み込む場合に実行してください。 | |
---|
Armadillo 内の /etc/atmark/abos_web/customize_disable ファイルを削除すると、
再びカスタマイズ項目が表示されるようになります。 |
3.10. Network Time Protocol (NTP, ネットワーク・タイム・プロトコル) の設定Armadillo Base OS では chronyd を使用しています。 デフォルトの設定(使用するサーバーなど)は /lib/chrony.conf.d/ にあり、
設定変更用に /etc/chrony/conf.d/ のファイルも読み込みます。
/etc/chrony/conf.d/ ディレクトリに /lib/chrony.conf.d/ と同名の
設定ファイルを配置することで、デフォルトのファイルを読み込まないようになります。 時刻取得に関する設定は 2 つのファイルに分かれています: -
initstepslew.conf : chronyd 起動時「 initstepslew 」コマンドでサーバーと通信し時刻を取得します。
-
servers.conf : chronyd 起動後周期的に「 pool 」または「 server 」コマンドでサーバーと通信し時刻を補正します。
例えば、 NTP サーバーを変更する際は 図3.143「chronyd のコンフィグの変更例」 に示す通り
/etc/chrony/conf.d/initstepslew.conf と /etc/chrony/conf.d/servers.conf に記載します: |
起動時のサーバー設定です。不要な場合は空のファイルを生成してください。
| |
運用時のサーバー設定です。複数の行または「pool」の設定も可能です。
| |
ファイルを保存します。
| |
chronyd サービスを再起動します。
| |
chronyc で新しいサーバーが使用されていることを確認します。
|
NTP の設定は ABOS Web や Rest API を使って行うこともできます。詳細は、
「時刻設定」 および 「Rest API : 時刻の設定」 を参照してください。 3.11. Armadillo Twin を体験するArmadillo Twin を利用したデバイス運用管理を検討する場合は、一度Armadillo Twin をお試しいただくことをおすすめします。
Armadillo Twin は、無償トライアルでご登録いただくことで、3ヶ月間無償で全ての機能をご利用いただくことができます。
また、トライアル中の設定内容は、有料の月額プランに申込後も引き継いで利用することができます。 詳細は Armadillo Twin ユーザーマニュアル 「アカウント・ユーザーを作成する」 をご確認ください。 3.12. ABOSDEによるアプリケーションの開発ここでは、ABOSDE(Armadillo Base OS Development Environment) によるアプリケーション開発の概要とABOSDEで作成される各プロジェクトの違いについて説明します。 ABOSDE は Visual Studio Code にインストールできる開発用エクステンションです。
ABOSDE を使用することで、コンテナ及びコンテナ自動起動用設定ファイルの作成、コンテナ内におけるパッケージのインストール、コンテナ内で動作するアプリケーション本体の開発をすべてVS Code内で行うことができます。 ABOSDEでは、以下のようなアプリケーションを開発できます。 -
GUI アプリケーション
-
CUI アプリケーション
-
C 言語アプリケーション
表3.40「ABOSDEの対応言語」に示すように、アプリケーション毎に対応している言語が異なります。 表3.40 ABOSDEの対応言語 アプリケーションの種類 | 使用言語(フレームワーク) |
---|
GUI アプリケーション | Dart (Flutter) | CUI アプリケーション | シェルスクリプト | Python | C言語アプリケーション | C 言語 |
どのようなアプリケーションを開発するかによってABOSDEによる開発手順が異なります。図3.144「参照する開発手順の章を選択する流れ」を参考に、ご自身が開発するアプリケーションに適した章を参照してください。 -
GUI アプリケーション
-
CUI アプリケーション
-
C 言語アプリケーション
対象ユーザー
-
C 言語でないと実現できないアプリケーションを開発したい
-
既存の C 言語によって開発されたアプリケーションを Armadillo で動作させたい
-
開発環境に制約がある
マニュアルの参照先
ここでは Armadillo の性能を最大限に生かした GUI アプリケーションを
作ることのできる Flutter を使った開発方法を紹介します。 Flutterとはモバイルアプリケーションや Web アプリケーションの開発に使われる
GUI アプリケーション開発ツールキットです。
マルチプラットフォームなので、ソースコードの大部分を共通化可能で一度開発したアプリケーションは最小限の工数で別の
プラットフォームへ移植できます。さらに、プラットフォーム間でアプリケーションの見た目も統一することができます。
アプリケーション開発言語として Dart を使用しています。 Flutter を使うことで Armadillo 上でも GUI アプリケーションを開発することができます。
以下は Flutter で開発したアプリケーションを Armadillo 上で動かしている例です。 3.13.2. Flutter を用いた開発の流れArmadillo 向けに Flutter アプリケーションを開発する場合の流れは以下のようになります。 ここでは、開発開始時の ATDE 上でのセットアップ手順について説明します。
ATDE をお使いでない場合は、先に 「開発の準備」 を参照して ATDE のセットアップを完了してください。 Flutter アプリケーションのサンプルとして以下を用意しております。 -
Flutter Demo アプリケーション
-
GUI アプリケーション
-
Signage アプリケーション
-
Factory Signage アプリケーション
各プロジェクトは以下のようなアプリケーションの画面となります。 | |
---|
以降の手順でサンプルアプリケーション毎に VS Code でクリックする箇所や生成されるファイル名等が変わります。 |
VS Code の左ペインの [G4/X2] から [<アプリケーション名> New Project]を実行し、表示されるディレクトリ選択画面からプロジェクトを保存するディレクトリを選択してください。実行するためには右に表示されている三角形ボタンを押してください。
保存先を選択すると、プロジェクト名を入力するダイアログが表示されるので、任意のプロジェクト名を入力してエンターキーを押してください。
この操作により、選択した保存先に、入力したプロジェクト名と同名のディレクトリが作成されます。 また、ここでは次のように設定しています。 -
保存先 : ホームディレクトリ
-
プロジェクト名 :
my_project
以下では例として [GUI アプリケーション] の作成を行っています。 初期設定では主に Armadillo と SSH で接続するための秘密鍵と公開鍵の生成を行います。 作成したプロジェクトディレクトリへ移動して VS Code を起動してください。 VS Code の左ペインの [my_project] から [Setup environment] を実行します。 選択すると、 VS Code の下部に以下のようなターミナルが表示されます。 このターミナル上で以下のように入力してください。 |
パスフレーズを設定します。設定しない場合は何も入力せず Enter を押します。
| |
ここで何か任意のキーを押すとターミナルが閉じます。
|
パスフレーズを設定した場合は、アプリケーションを Armadillo へ転送する時にパス
フレーズの入力を求められることがあります。 3.13.3.4. アプリケーション実行用コンテナイメージの作成Armadillo 上でアプリケーションを実行するためのコンテナイメージを作成します。
ここで作成したコンテナイメージは SWU イメージを使用して Armadillo へインストールするため、
事前に mkswu を参照して SWU の初期設定を行ってください。 コンテナイメージの作成および SWU イメージの作成も VS Code で行います。
VS Code の左ペインの [my_project] から [Generate development swu] を実行します。 コンテナイメージの作成にはしばらく時間がかかります。
VS Code のターミナルに以下のように表示されるとコンテナイメージの作成は完了です。 作成した SWU イメージは my_project ディレクトリ下に development.swu という
ファイル名で保存されています。 使用するコンテナのディストリビューションは以下のとおりです。 3.13.5. Armadillo に転送するディレクトリ及びファイルコンテナイメージ以外に、以下に示すディレクトリやファイルを Armadillo に転送します。
ここでは、プロジェクト名は my_project としています。 -
Armadillo に転送するディレクトリ及びファイル
-
my_project/swu/app
-
my_project/app/build/elinux/arm64/[debug または release]/bundle
図3.159「コンテナ内のファイル一覧を表示するタブ」 の赤枠で囲われているタブをクリックすることで、development.swu または「リリース版のビルド」で作成される release.swu に含まれるコンテナ内のファイルおよびディレクトリを表示します。 クリック後の表示例を 図3.160「コンテナ内のファイル一覧の例」 に示します。 コンテナ内のファイル一覧は [Generate development swu] または [Generate release swu] を実行することで ATDE 上に作成されるコンテナイメージから取得しています。 そのため、[Generate development swu] または [Generate release swu] を実行していない場合はコンテナ内のファイル一覧は表示されません。
その場合は [Generate development swu] または [Generate release swu] を先に実行してください。 | |
---|
この機能を使用するにあたり、ATDE上でプロジェクトのコンテナイメージからコンテナを作成します。 コンテナ名は「プロジェクト名-abosde」を使用します。
例えば、プロジェクト名が my_project の場合、コンテナ名は「my_project-abosde」になります。 ユーザー自身で同名のコンテナを既に作成していた場合、そのコンテナはこの機能を使用時に削除されます。 |
| |
---|
コンテナ内のファイル一覧には、ファイルおよびディレクトリのみを表示しています。
シンボリックリンク、特殊デバイスファイルなどは表示していません。 |
3.13.6.1. resources ディレクトリについて図3.161「resources ディレクトリ」に示すように ATDE 上のプロジェクトディレクトリには container/resources ディレクトリがあります。 container/resources ディレクトリ下に、コンテナ内と同じパスでファイルまたはディレクトリを配置することで、それらは [Generate development swu] または [Generate release swu] を実行時にコンテナ内にコピーされます。
例えば、コンテナ内にある /etc/adduser.conf を上書きする場合は、編集した adduser.conf ファイルをプロジェクトディレクトリにある container/resources/etc/adduser.conf に配置してください。 プロジェクトディレクトリにある container/resources 下のファイルおよびディレクトリを操作する方法は以下の 2 通りがあります。 -
エクスプローラーを使用する
-
ABOSDEのコンテナ内のファイル一覧表示機能を使用する
ABOSDEのコンテナ内のファイル一覧表示機能を使用することで、視覚的にファイル構成や、差分があるファイルを把握しながら操作可能です。
以降に詳細を説明します。 3.13.6.4. container/resources 下にあるファイルを開く図3.167「container/resources 下にあるファイルを開くボタン」 の赤枠で囲われている表記のボタンをクリックすることで、プロジェクトディレクトリにある container/resources 下のファイルをエディタに表示することができます。 この例では、プロジェクトディレクトリにある container/resources 下の add_file をエディタに表示します。 3.13.6.6. コンテナ内のファイルを container/resources 下に保存図3.169「コンテナ内のファイルを container/resources 下に保存するボタン」 の赤枠で囲われている表記のボタンをクリックすることで、コンテナ内にあるファイルをプロジェクトディレクトリにある container/resources 下に保存します。 ファイルが container/resources 下に保存されると、図3.170「編集前のファイルを示すマーク」 に示すように、ファイル名の右側に "U" のマークが表示されます。 "U" のマークはプロジェクトディレクトリにある container/resources 下のファイルとコンテナ内にあるファイルの内容が同一であることを示します。 container/resources 下にあるファイルを編集して再表示すると、図3.171「編集後のファイルを示すマーク」 に示すように、ファイル名の右側に "M" のマークが表示されます。
"M" のマークはプロジェクトディレクトリにある container/resources 下のファイルとコンテナ内にあるファイルの内容に差があることを示します。 プロジェクトディレクトリにある container/resources 下とコンテナ内にあるファイルまたはディレクトリを比較して、同名でかつファイルの種類が異なる場合、図3.172「コンテナ内にコピーされないことを示すマーク」 に示すように、ファイル名の右側に "E" のマークが表示されます。 "E" のマークが表示された場合、そのファイルまたはディレクトリは [Generate development swu] または [Generate release swu] を実行してもコンテナにコピーされません。 3.13.7. Armadillo 上でのセットアップ3.13.8.1. アプリケーションのビルドモードFlutter アプリケーションのビルドモードには Debug、 Profile、 Release の3種類があり、
VS Code からは Debug、Release モードの実行が可能です。
Debug モードでビルドしたアプリケーションは後述するホットリロード等のデバッグ機能を用いて、
効率的に開発が可能ですが、アプリケーションの動作が重くなります。
特に動画やアニメーションの動作に大きく影響が出ますので、
その場合は Release モードで動作を確認してください。 3.13.8.2. サンプルアプリケーションのビルドFlutter のサンプルアプリケーションのビルド方法を説明します。
プロジェクトディレクトリへ移動し VS Code を起動します。 VS Code の左ペインの [my_project] から [Debug app run on ATDE] を実行すると、
Debug モードでアプリケーションがビルドされ ATDE 上で起動します。 | |
---|
flutter-elinux をイントール後に初めてビルドを実行する時は、必要なファイルのダウンロード処理が行われるため、
アプリケーションが起動するまでに時間がかかります。 |
GUI アプリケーションの場合は以下のようなアプリケーションが起動します。 アプリケーションを終了するにはウィンドウ右上の X ボタンを押してください。 また、Release モードでアプリケーションを実行するには、VS Code の左ペインの [my_project] から [Release app run on ATDE] を実行してください。 サンプルアプリケーションのソースコードは、 app/lib にあります。
サンプルアプリケーションをベースとして開発を進める場合は、 app/lib 下にソースコードを
保存してください。 Flutter には様々な機能を実現するためのパッケージが豊富に存在しており、
主に こちらのサイトで見つけることができます。 目的のパッケージをアプリケーションで使えるようにするためには、
アプリケーションディレクトリの中で以下のコマンドを実行します。
例として dart_periphery パッケージをインストールします。 video_player や camera など以下に挙げたパッケージは、
ATDE 内の /opt/flutter-elinux-packages にあるパッケージと組み合わせて使う必要があります。 表3.41 組み合わせて使うパッケージ パッケージ名 | /opt/flutter-elinux-package 内のパッケージ名 |
---|
video_player | video_player_elinux | camera | camera_elinux | audioplayers | audioplayers_elinux | path_provider | path_provider_elinux | shared_preferences | shared_preferences_elinux | なし | joystick |
これらのパッケージをインストールする場合は以下のようにインストールしてください。 パッケージをアンインストールする場合は pub remove を実行します。 3.13.8.4. BLE パッケージをインストールするアプリケーションから BLE を使用するために必要なパッケージは、
VS Code からインストールすることができます。 左ペインの [my_project] から [external packages] を開き [universal_ble] の右にある
+ をクリックするとインストールされます。 すでにインストール済みの状態で - をクリックするとアインストールされます。
一番右にある丸アイコンをクリックすると Web ブラウザで universal_ble パッケージの API リファレンスページを開きます。 | |
---|
BLE パッケージのインストールは ABOSDE のバージョン 1.8.4 以降で、かつ 2024 年 7 月 24 日以降に
「プロジェクトの作成」 の手順で新たに作成したプロジェクトで使用できるようになります。 |
ここでは、実際に Armadillo 上でアプリケーションを起動する場合の手順を説明します。 3.13.9.1. ssh 接続に使用する IP アドレスの設定VS Code 上で ABOSDE(Armadillo Base OS Development Environment) から、
ABOS Web が動作している Armadillo の一覧を確認し、
指定した Armadillo の IP アドレスを ssh 接続に使用することができます。
ただし、ATDE のネットワークを NAT に設定している場合は Armadillo がリストに表示されません。 図3.181「ABOSDE で ローカルネットワーク上の Armadillo をスキャンする」 の赤枠で囲われているボタンをクリックすることで、
ローカルネットワーク上で ABOS Web が実行されている Armadillo をスキャンすることができます。 図3.182「ABOSDE を使用して ssh 接続に使用する IP アドレスを設定する」 の赤枠で囲われているマークをクリックすることで、
指定した Armadillo の IP アドレスを ssh 接続に使用する IP アドレスに設定することができます。 図3.183「ABOSDE に表示されている Armadillo を更新する」 の赤枠で囲われているマークをクリックすることで、
ABOSDE に表示されている Armadillo を更新することができます。 ATDE のネットワークを NAT に設定している場合や、ABOS Web を起動していない場合等、
ABOSDE のリストに Armadillo が表示されない場合は、
プロジェクトディレクトリに入っている config/ssh_config ファイルを編集して
IP アドレスを書き換えてください。 |
Armadillo の IP アドレスに置き換えてください。
|
VS Code の左ペインの [my_project] から [Debug app run on Armadillo] を実行すると、
Debug モードでビルドされたアプリケーションが Armadillo へ転送されて起動します。 VS Code のターミナルに以下のメッセージが表示されることがあります。
これが表示された場合は yes と入力して下さい。 アプリケーションを終了するには VS Code の左ペインの [my_project] から [App stop on Armadillo] を実行してください。 また、Release モードでアプリケーションを実行するには、VS Code の左ペインの [my_project] から [Release app run on Armadillo] を実行してください。 アプリケーションのソースコードに修正を加えた後にコンパイルをせずに即座に動作確認をしたい場合、
ホットリロード機能を使うことができます。
この機能を使うには Debug モードでアプリケーションをビルドしている必要があります。 ホットリロード機能を使うには、アプリケーション実行時に表示される VS Code のターミナルで r を入力してください。
その後、以下のようなメッセージが表示され修正が反映されます。 アプリケーションをデバッグモードで起動することで VS Code のデバッガ機能を使用したデバッグができるようになります。
デバッガを使用すると、ブレークポイントで処理を止めて変数の値を確認したり、ステップ実行などができるようになります。 デバッグモードのアプリケーションでは、リリースモードに比べて動作が遅くなり操作に対するレスポンスが遅延することがあります。
特に外部機器と接続してデータをやり取りするようなアプリケーションで、遅延が原因で接続がタイムアウトしてしまうようなことがある場合は、
デバッグモードの場合はタイムアウトしないようにするなどの対応を行う必要があります。 デバッグ完了後、最終的にはリリースモードでのテストを行ってください。 | |
---|
デバッガ機能は 2024 年 6 月 26 日以降に 「プロジェクトの作成」 の手順で新たに作成したプロジェクトで
使用できます。
それ以前に作成したアプリケーションの場合は新たにプロジェクトを作成し直し、既存のソースコードを
新しく作成したプロジェクトにコピーすることで使用できるようになります。 |
3.13.10.1. VS Code に Flutter エクステンションをインストールするVS Code に Flutter エクステンションをインストールします。
マーケットプレイスの検索フォームに「flutter」と入力し、
表示された「Flutter」の 「Install」ボタンをクリックしてインストールしてください。 次に Flutter Sdk Path を設定します。VS Code 上で Ctrl + , キーを押して設定画面を開き、
検索フォームに「Flutter Sdk Paths」と入力し、「Add Item」をクリックしてください。 表示されたフィールドに、/opt/flutter-elinux/flutter と入力し「OK」をクリックしてください。 3.13.10.2. アプリケーションを Debug モードで実行するVS Code の左ペインの [my_project] から [Debug app run on ATDE] または [Debug app run on Armadillo] を実行してください。 3.13.10.3. アプリケーションのデバッグを開始するVS Code の [Run and Debug] 画面を表示し、上部の三角ボタンをクリックすると
VS Code からアプリケーションのデバッグを開始します。 デバッグを開始すると VS Code のウィンドウ上部にデバッガを操作するためのアイコンが表示されます。 デバッガの機能としては次のものがあります。
ブレークポイントの設定
ソースコードの行数表示の左をクリックすると丸印が付きます。処理をここで止めることができます。
Continue
ブレークポイントで停止したところから再び実行を継続します。
Step Over
クリックするごとに、ブレークポイントで停止したところから一行ずつ実行します。
Step Into
関数の中へ入ります。
Step Out
関数の中にいる場合、その関数を最後まで実行した後に関数から出ます。
Hot Reload
図3.189「ホットリロード機能を使う」 と同じ機能です。
Restart
アプリケーションを再起動します。
Disconnect
デバッグを終了します。
Widget Inspector
アプリケーション上に配置してある Widget のツリー構成を確認できます。
ここでは完成したアプリケーションをリリース版としてビルドする場合の手順について説明します。 VS Code の左ペインの [my_project] から [Generate release swu] を実行すると、
リリース版のアプリケーションを含んだ SWU イメージが作成されます。
事前に 「SWUイメージの作成」 を参照して SWU の初期設定を行ってください。 | |
---|
リリース版の SWU イメージには、開発用の機能は含まれていません。
このため、リリース版の SWU イメージをインストールした Armadillo では、
[Debug app run on Armadillo] や [Release app run on Armadillo] を
使用したリモート実行や、Flutter のデバッグ機能は使用できません。 |
作成した SWU イメージは my_project ディレクトリ下に release.swu という
ファイル名で保存されています。 この SWU イメージを 「SWU イメージのインストール」 を参照して Armadillo へインストールすると、
Armadillo 起動時にアプリケーションも自動起動します。 3.13.14. Armadillo 上のコンテナイメージの削除development.swu または release.swu を Armadillo にインストールすることで保存されたコンテナイメージを削除する方法は、
「VS Code から実行する」 を参照してください。
ここではシェルスクリプトおよび Python を使った CUI アプリケーションの開発方法を紹介します。
開発手順としてはシェルスクリプトと Python で同じであるため、シェルスクリプトの場合の例で説明します。 3.14.1. CUI アプリケーション開発の流れArmadillo 向けに CUI アプリケーションを開発する場合の流れは以下のようになります。 ここでは、開発開始時の ATDE 上でのセットアップ手順について説明します。
ATDE をお使いでない場合は、先に 「開発の準備」 を参照して ATDE 及び、 VS Code のセットアップを完了してください。 VS Code の左ペインの [G4/X2] から [Shell New Project] を実行し、表示されるディレクトリ選択画面からプロジェクトを保存する
ディレクトリを選択してください。
実行するためには右に表示されている三角形ボタンを押してください。
Python の場合は [Python New Project] を実行してください。
保存先を選択すると、プロジェクト名を入力するダイアログが表示されるので、任意のプロジェクト名を入力してエンターキーを押してください。
この操作により、選択した保存先に、入力したプロジェクト名と同名のディレクトリが作成されます。 また、ここでは次のように設定しています。 -
保存先 : ホームディレクトリ
-
プロジェクト名 :
my_project
ここでは、実際に Armadillo 上でサンプルアプリケーションを起動する場合の手順を説明します。
プロジェクトディレクトリへ移動し VS Code を起動します。 プロジェクトには下記のディレクトリがあります。
app : アプリケーションのソースです。Armadillo ではビルドしたアプリケーションが /var/app/rollback/volumes/my_project にコピーされます。
-
requirements.txt : Python プロジェクトにのみ存在しており、このファイルに記載したパッケージは pip を使用してインストールされます。
config : 設定に関わるファイルが含まれるディレクトリです。
container : スクリプトを実行するコンテナの設定ファイルが含まれるディレクトリです。
-
packages.txt : このファイルに記載されているパッケージがインストールされます。
-
Dockerfile : 直接編集することも可能です。
デフォルトのコンテナコンフィグ( app.conf )ではシェルスクリプトの場合は app の src/main.sh または Python の場合 src/main.py を実行しますので、リネームが必要な場合にコンテナのコンフィグも修正してください。 このサンプルアプリケーションは、CPU と SOC の温度を /vol_data/log/temp.txt に出力し、
LED3 を点滅させます。 初期設定では主に Armadillo と SSH で接続するための秘密鍵と公開鍵の生成を行います。 作成したプロジェクトディレクトリへ移動して VS Code を起動してください。 VS Code の左ペインの [my_project] から [Setup environment] を実行します。 選択すると、 VS Code の下部に以下のようなターミナルが表示されます。 このターミナル上で以下のように入力してください。 |
パスフレーズを設定します。設定しない場合は何も入力せず Enter を押します。
| |
1 でパスフレーズを設定した場合は、確認のため再度入力してください。
| |
ここで何か任意のキーを押すとターミナルが閉じます。
|
パスフレーズを設定した場合は、アプリケーションを Armadillo へ転送する時にパス
フレーズの入力を求められることがあります。 | |
---|
ssh の鍵は $HOME/.ssh/id_ed25519_vscode (と id_ed25519_vscode.pub ) に保存されていますので、
プロジェクトをバックアップする時は $HOME/.ssh も保存してください。 |
3.14.3.4. アプリケーション実行用コンテナイメージの作成Armadillo 上でアプリケーションを実行するためのコンテナイメージを作成します。
ここで作成したコンテナイメージは SWU イメージを使用して Armadillo へインストールするため、
事前に 「SWUイメージの作成」 を参照して SWU の初期設定を行ってください。 コンテナイメージの作成および SWU イメージの作成も VS Code で行います。
VS Code の左ペインの [my_project] から [Generate development swu] を実行します。 コンテナイメージの作成にはしばらく時間がかかります。
VS Code のターミナルに以下のように表示されるとコンテナイメージの作成は完了です。 作成した SWU イメージは my_project ディレクトリ下に development.swu という
ファイル名で保存されています。 3.14.3.5. Python アプリケーションに BLE パッケージをインストールするPython アプリケーションの場合は、アプリケーションから BLE を使用するために必要なパッケージを
VS Code からインストールすることができます。 左ペインの [my_project] から [external packages] を開き [bleak] の右にある
+ をクリックするとインストールされます。 すでにインストール済みの状態で - をクリックするとアインストールされます。
一番右にある丸アイコンをクリックすると Web ブラウザで bleak パッケージの API リファレンスページを開きます。 | |
---|
BLE パッケージのインストールは ABOSDE のバージョン 1.8.4 以降で、かつ 2024 年 7 月 24 日以降に
「プロジェクトの作成」 の手順で新たに作成したプロジェクトで使用できるようになります。 |
使用するコンテナのディストリビューションは以下のとおりです。 3.14.5. Armadillo に転送するディレクトリ及びファイルコンテナイメージ以外に、以下に示すディレクトリやファイルを Armadillo に転送します。
ここでは、プロジェクト名は my_project としています。 -
Armadillo に転送するディレクトリ及びファイル
図3.207「コンテナ内のファイル一覧を表示するタブ」 の赤枠で囲われているタブをクリックすることで、development.swu または「リリース版のビルド」で作成される release.swu に含まれるコンテナ内のファイルおよびディレクトリを表示します。 クリック後の表示例を 図3.208「コンテナ内のファイル一覧の例」 に示します。 コンテナ内のファイル一覧は [Generate development swu] または [Generate release swu] を実行することで ATDE 上に作成されるコンテナイメージから取得しています。 そのため、[Generate development swu] または [Generate release swu] を実行していない場合はコンテナ内のファイル一覧は表示されません。
その場合は [Generate development swu] または [Generate release swu] を先に実行してください。 | |
---|
この機能を使用するにあたり、ATDE上でプロジェクトのコンテナイメージからコンテナを作成します。 コンテナ名は「プロジェクト名-abosde」を使用します。
例えば、プロジェクト名が my_project の場合、コンテナ名は「my_project-abosde」になります。 ユーザー自身で同名のコンテナを既に作成していた場合、そのコンテナはこの機能を使用時に削除されます。 |
| |
---|
コンテナ内のファイル一覧には、ファイルおよびディレクトリのみを表示しています。
シンボリックリンク、特殊デバイスファイルなどは表示していません。 |
3.14.6.1. resources ディレクトリについて図3.209「resources ディレクトリ」に示すように ATDE 上のプロジェクトディレクトリには container/resources ディレクトリがあります。 container/resources ディレクトリ下に、コンテナ内と同じパスでファイルまたはディレクトリを配置することで、それらは [Generate development swu] または [Generate release swu] を実行時にコンテナ内にコピーされます。
例えば、コンテナ内にある /etc/adduser.conf を上書きする場合は、編集した adduser.conf ファイルをプロジェクトディレクトリにある container/resources/etc/adduser.conf に配置してください。 プロジェクトディレクトリにある container/resources 下のファイルおよびディレクトリを操作する方法は以下の 2 通りがあります。 -
エクスプローラーを使用する
-
ABOSDEのコンテナ内のファイル一覧表示機能を使用する
ABOSDEのコンテナ内のファイル一覧表示機能を使用することで、視覚的にファイル構成や、差分があるファイルを把握しながら操作可能です。
以降に詳細を説明します。 3.14.6.4. container/resources 下にあるファイルを開く図3.215「container/resources 下にあるファイルを開くボタン」 の赤枠で囲われている表記のボタンをクリックすることで、プロジェクトディレクトリにある container/resources 下のファイルをエディタに表示することができます。 この例では、プロジェクトディレクトリにある container/resources 下の add_file をエディタに表示します。 3.14.6.6. コンテナ内のファイルを container/resources 下に保存図3.217「コンテナ内のファイルを container/resources 下に保存するボタン」 の赤枠で囲われている表記のボタンをクリックすることで、コンテナ内にあるファイルをプロジェクトディレクトリにある container/resources 下に保存します。 ファイルが container/resources 下に保存されると、図3.218「編集前のファイルを示すマーク」 に示すように、ファイル名の右側に "U" のマークが表示されます。 "U" のマークはプロジェクトディレクトリにある container/resources 下のファイルとコンテナ内にあるファイルの内容が同一であることを示します。 container/resources 下にあるファイルを編集して再表示すると、図3.219「編集後のファイルを示すマーク」 に示すように、ファイル名の右側に "M" のマークが表示されます。
"M" のマークはプロジェクトディレクトリにある container/resources 下のファイルとコンテナ内にあるファイルの内容に差があることを示します。 container/resources 下とコンテナ内にあるファイルまたはディレクトリを比較して、同名でかつファイルの種類が異なる場合、図3.220「コンテナ内にコピーされないことを示すマーク」 に示すように、ファイル名の右側に "E" のマークが表示されます。
"E" のマークが表示された場合、そのファイルまたはディレクトリは [Generate development swu] または [Generate release swu] を実行してもコンテナにコピーされません。 3.14.7. Armadillo 上でのセットアップ3.14.7.2. ssh 接続に使用する IP アドレスの設定VS Code 上で ABOSDE(Armadillo Base OS Development Environment) から、
ABOS Web が動作している Armadillo の一覧を確認し、
指定した Armadillo の IP アドレスを ssh 接続に使用することができます。
ただし、ATDE のネットワークを NAT に設定している場合は Armadillo がリストに表示されません。 図3.221「ABOSDE で ローカルネットワーク上の Armadillo をスキャンする」 の赤枠で囲われているボタンをクリックすることで、
ローカルネットワーク上で ABOS Web が実行されている Armadillo をスキャンすることができます。 図3.222「ABOSDE を使用して ssh 接続に使用する IP アドレスを設定する」 の赤枠で囲われているマークをクリックすることで、
指定した Armadillo の IP アドレスを ssh 接続に使用する IP アドレスに設定することができます。 図3.223「ABOSDE に表示されている Armadillo を更新する」 の赤枠で囲われているマークをクリックすることで、
ABOSDE に表示されている Armadillo を更新することができます。 ATDE のネットワークを NAT に設定している場合や、ABOS Web を起動していない場合等、
ABOSDE のリストに Armadillo が表示されない場合は、
プロジェクトディレクトリに入っている config/ssh_config ファイルを編集して
IP アドレスを書き換えてください。 |
Armadillo の IP アドレスに置き換えてください。
|
| |
---|
Armadillo を初期化した場合や、プロジェクトを実行する Armadillo を変えた場合は,
プロジェクトの config/ssh_known_hosts に保存されている公開鍵で Armadillo を認識できなくなります。
その場合はファイルを削除するか、「Setup environment」タスクを再実行してください。 |
VS Code の左ペインの [my_project] から [App run on Armadillo] を実行すると、
アプリケーションが Armadillo へ転送されて起動します。 VS Code のターミナルに以下のメッセージが表示されることがあります。
これが表示された場合は yes と入力して下さい。 アプリケーションを終了するには VS Code の左ペインの [my_project] から [App stop on Armadillo] を実行してください。 ここでは完成したアプリケーションをリリース版としてビルドする場合の手順について説明します。 VS Code の左ペインの [my_project] から [Generate release swu] を実行すると、
リリース版のアプリケーションを含んだ SWU イメージが作成されます。
事前に 「SWUイメージの作成」 を参照して SWU の初期設定を行ってください。 | |
---|
リリース版の SWU イメージには、開発用の機能は含まれていません。
このため、リリース版の SWU イメージをインストールした Armadillo では、
[App run on Armadillo] を使用したリモート実行は使用できません。 |
作成した SWU イメージは my_project ディレクトリ下に release.swu というファイル名で保存されています。 この SWU イメージを 「SWU イメージのインストール」 を参照して Armadillo へインストールすると、
Armadillo 起動時にアプリケーションも自動起動します。 ここでは C 言語によるアプリケーション開発の方法を紹介します。 C 言語によるアプリケーション開発は下記に当てはまるユーザーを対象としています。 -
既存の C 言語によって開発されたアプリケーションを Armadillo で動作させたい
-
C 言語でないと実現できないアプリケーションを開発したい
上記に当てはまらず、開発するアプリケーションがシェルスクリプトまたは Python で実現可能であるならば、「CUI アプリケーションの開発」を参照してください。
GUI アプリケーションを開発したい場合、flutterで実現可能ならば、「GUI アプリケーションの開発」を参照してください。 3.15.1. C 言語によるアプリケーション開発の流れArmadillo 向けに C 言語によるアプリケーションを開発する場合の流れは以下のようになります。 ここでは、開発開始時の ATDE 上でのセットアップ手順について説明します。
ATDE をお使いでない場合は、先に 「開発の準備」 を参照して ATDE 及び、 VS Code のセットアップを完了してください。 VS Code の左ペインの [G4/X2] から [C New Project] を実行し、表示されるディレクトリ選択画面からプロジェクトを保存する
ディレクトリを選択してください。
実行するためには右に表示されている三角形ボタンを押してください。
保存先を選択すると、プロジェクト名を入力するダイアログが表示されるので、任意のプロジェクト名を入力してエンターキーを押してください。
この操作により、選択した保存先に、入力したプロジェクト名と同名のディレクトリが作成されます。 また、ここでは次のように設定しています。 -
保存先 : ホームディレクトリ
-
プロジェクト名 :
my_project
ここでは、実際に Armadillo 上でサンプルアプリケーションを起動する場合の手順を説明します。
プロジェクトディレクトリへ移動し VS Code を起動します。 プロジェクトには下記のディレクトリがあります。
app : 各ディレクトリの説明は以下の通りです。
-
src : アプリケーションのソースファイル(拡張子が .c )と Makefile を配置してください。
-
build : ここに配置した実行ファイルが Armadillo 上で実行されます。
-
lib : 共有ライブラリの検索パスとしてこのディレクトリを指定しているので、ここに共有ライブラリ(拡張子が .so )を配置することができます。
config : 設定に関わるファイルが含まれるディレクトリです。
container : スクリプトを実行するコンテナの設定ファイルが含まれるディレクトリです。
-
packages.txt : このファイルに記載されているパッケージがインストールされます。
-
Dockerfile : 直接編集することも可能です。
デフォルトのコンテナコンフィグ( app.conf )では C 言語の場合は build/main を実行しますので、リネームが必要な場合にコンテナのコンフィグも修正してください。 このサンプルアプリケーションは、CPU と SOC の温度を /vol_data/log/temp.txt に出力し、
LED3 を点滅させます。 初期設定では主に Armadillo と SSH で接続するための秘密鍵と公開鍵の生成を行います。 作成したプロジェクトディレクトリへ移動して VS Code を起動してください。 VS Code の左ペインの [my_project] から [Setup environment] を実行します。 選択すると、 VS Code の下部に以下のようなターミナルが表示されます。 このターミナル上で以下のように入力してください。 |
パスフレーズを設定します。設定しない場合は何も入力せず Enter を押します。
| |
1 でパスフレーズを設定した場合は、確認のため再度入力してください。
| |
ここで何か任意のキーを押すとターミナルが閉じます。
|
パスフレーズを設定した場合は、アプリケーションを Armadillo へ転送する時にパス
フレーズの入力を求められることがあります。 | |
---|
ssh の鍵は $HOME/.ssh/id_ed25519_vscode (と id_ed25519_vscode.pub ) に保存されていますので、
プロジェクトをバックアップする時は $HOME/.ssh も保存してください。 |
3.15.3.4. packages.txt の書き方ABOSDEではコンテナイメージにパッケージをインストールするために container ディレクトリにある packages.txt を使用します。
packages.txt に記載されているパッケージは "apt install" コマンドによってコンテナイメージにインストールされます。 C 言語による開発の場合、packages.txt に [build] というラベルを記載することで、ビルド時のみに使用するパッケージを指定することが出来ます。 図3.237「C 言語による開発における packages.txt の書き方」に C 言語による開発の場合における packages.txt の書き方の例を示します。
ここでは、パッケージ名を package_A 、package_B 、package_C としています。 |
このラベル以降のパッケージはビルド時のみに使用されます。
|
上記の例の場合、Armadillo 上で実行される環境では package_A 、package_B のみがインストールされ、package_C はインストールされません。 "[build] package_C" のように [build] の後に改行せずに、一行でパッケージ名を書くことは出来ませんのでご注意ください。 3.15.3.5. ABOSDEでの開発における制約Makefile は app/src 直下に配置してください。
app/src 直下の Makefile を用いて make コマンドが実行されます。
ABOSDE では make コマンドのみに対応しています。 app/build と app/lib 内のファイルが Armadillo に転送されますので、実行ファイルは app/build 、共有ライブラリ( 拡張子が .so ファイル )は app/lib に配置してください。
3.15.3.6. アプリケーション実行用コンテナイメージの作成Armadillo 上でアプリケーションを実行するためのコンテナイメージを作成します。
ここで作成したコンテナイメージは SWU イメージを使用して Armadillo へインストールするため、
事前に 「SWUイメージの作成」 を参照して SWU の初期設定を行ってください。 コンテナイメージの作成、 実行ファイルや共有ライブラリの作成およびSWU イメージの作成も VS Code で行います。
VS Code の左ペインの [my_project] から [Generate development swu] を実行します。 コンテナイメージの作成にはしばらく時間がかかります。
VS Code のターミナルに以下のように表示されるとコンテナイメージの作成は完了です。 作成した SWU イメージは my_project ディレクトリ下に development.swu という
ファイル名で保存されています。 使用するコンテナのディストリビューションは以下のとおりです。 図3.240「コンテナ内のファイル一覧を表示するタブ」 の赤枠で囲われているタブをクリックすることで、development.swu または「リリース版のビルド」で作成される release.swu に含まれるコンテナ内のファイルおよびディレクトリを表示します。 クリック後の表示例を 図3.241「コンテナ内のファイル一覧の例」 に示します。 コンテナ内のファイル一覧は [Generate development swu] または [Generate release swu] を実行することで ATDE 上に作成されるコンテナイメージから取得しています。 そのため、[Generate development swu] または [Generate release swu] を実行していない場合はコンテナ内のファイル一覧は表示されません。
その場合は [Generate development swu] または [Generate release swu] を先に実行してください。 | |
---|
この機能を使用するにあたり、ATDE上でプロジェクトのコンテナイメージからコンテナを作成します。 コンテナ名は「プロジェクト名-abosde」を使用します。
例えば、プロジェクト名が my_project の場合、コンテナ名は「my_project-abosde」になります。 ユーザー自身で同名のコンテナを既に作成していた場合、そのコンテナはこの機能を使用時に削除されます。 |
| |
---|
コンテナ内のファイル一覧には、ファイルおよびディレクトリのみを表示しています。
シンボリックリンク、特殊デバイスファイルなどは表示していません。 |
3.15.5.1. resources ディレクトリについて図3.242「resources ディレクトリ」に示すように ATDE 上のプロジェクトディレクトリには container/resources ディレクトリがあります。 container/resources ディレクトリ下に、コンテナ内と同じパスでファイルまたはディレクトリを配置することで、それらは [Generate development swu] または [Generate release swu] を実行時にコンテナ内にコピーされます。
例えば、コンテナ内にある /etc/adduser.conf を上書きする場合は、編集した adduser.conf ファイルをプロジェクトディレクトリにある container/resources/etc/adduser.conf に配置してください。 プロジェクトディレクトリにある container/resources 下のファイルおよびディレクトリを操作する方法は以下の 2 通りがあります。 -
エクスプローラーを使用する
-
ABOSDEのコンテナ内のファイル一覧表示機能を使用する
ABOSDEのコンテナ内のファイル一覧表示機能を使用することで、視覚的にファイル構成や、差分があるファイルを把握しながら操作可能です。
以降に詳細を説明します。 3.15.5.4. container/resources 下にあるファイルを開く図3.248「container/resources 下にあるファイルを開くボタン」 の赤枠で囲われている表記のボタンをクリックすることで、プロジェクトディレクトリにある container/resources 下のファイルをエディタに表示することができます。 この例では、プロジェクトディレクトリにある container/resources 下の add_file をエディタに表示します。 3.15.5.6. コンテナ内のファイルを container/resources 下に保存図3.250「コンテナ内のファイルを container/resources 下に保存するボタン」 の赤枠で囲われている表記のボタンをクリックすることで、コンテナ内にあるファイルをプロジェクトディレクトリにある container/resources 下に保存します。 ファイルが container/resources 下に保存されると、図3.251「編集前のファイルを示すマーク」 に示すように、ファイル名の右側に "U" のマークが表示されます。 "U" のマークはプロジェクトディレクトリにある container/resources 下のファイルとコンテナ内にあるファイルの内容が同一であることを示します。 container/resources 下にあるファイルを編集して再表示すると、図3.252「編集後のファイルを示すマーク」 に示すように、ファイル名の右側に "M" のマークが表示されます。
"M" のマークはプロジェクトディレクトリにある container/resources 下のファイルとコンテナ内にあるファイルの内容に差があることを示します。 container/resources 下とコンテナ内にあるファイルまたはディレクトリを比較して、同名でかつファイルの種類が異なる場合、図3.253「コンテナ内にコピーされないことを示すマーク」 に示すように、ファイル名の右側に "E" のマークが表示されます。
"E" のマークが表示された場合、そのファイルまたはディレクトリは [Generate development swu] または [Generate release swu] を実行してもコンテナにコピーされません。 3.15.6. Armadillo に転送するディレクトリ及びファイルコンテナイメージ以外に、以下に示すディレクトリやファイルを Armadillo に転送します。
ここでは、プロジェクト名は my_project としています。 -
Armadillo に転送するディレクトリ及びファイル
-
my_project/app/build
-
my_project/app/lib
3.15.7. Armadillo 上でのセットアップ3.15.7.2. ssh 接続に使用する IP アドレスの設定VS Code 上で ABOSDE(Armadillo Base OS Development Environment) から、
ABOS Web が動作している Armadillo の一覧を確認し、
指定した Armadillo の IP アドレスを ssh 接続に使用することができます。
ただし、ATDE のネットワークを NAT に設定している場合は Armadillo がリストに表示されません。 図3.254「ABOSDE で ローカルネットワーク上の Armadillo をスキャンする」 の赤枠で囲われているボタンをクリックすることで、
ローカルネットワーク上で ABOS Web が実行されている Armadillo をスキャンすることができます。 図3.255「ABOSDE を使用して ssh 接続に使用する IP アドレスを設定する」 の赤枠で囲われているマークをクリックすることで、
指定した Armadillo の IP アドレスを ssh 接続に使用する IP アドレスに設定することができます。 図3.256「ABOSDE に表示されている Armadillo を更新する」 の赤枠で囲われているマークをクリックすることで、
ABOSDE に表示されている Armadillo を更新することができます。 ATDE のネットワークを NAT に設定している場合や、ABOS Web を起動していない場合等、
ABOSDE のリストに Armadillo が表示されない場合は、
プロジェクトディレクトリに入っている config/ssh_config ファイルを編集して
IP アドレスを書き換えてください。 |
Armadillo の IP アドレスに置き換えてください。
|
| |
---|
Armadillo を初期化した場合や、プロジェクトを実行する Armadillo を変えた場合は,
プロジェクトの config/ssh_known_hosts に保存されている公開鍵で Armadillo を認識できなくなります。
その場合はファイルを削除するか、「Setup environment」タスクを再実行してください。 |
VS Code の左ペインの [my_project] から [App run on Armadillo] を実行すると、
実行ファイルや共有ライブラリを作成した後、アプリケーションが Armadillo へ転送されて起動します。 VS Code のターミナルに以下のメッセージが表示されることがあります。
これが表示された場合は yes と入力して下さい。 アプリケーションを終了するには VS Code の左ペインの [my_project] から [App stop on Armadillo] を実行してください。 ここでは完成したアプリケーションをリリース版としてビルドする場合の手順について説明します。 VS Code の左ペインの [my_project] から [Generate release swu] を実行すると、
リリース版のアプリケーションを含んだ SWU イメージが作成されます。
事前に 「SWUイメージの作成」 を参照して SWU の初期設定を行ってください。 | |
---|
リリース版の SWU イメージには、開発用の機能は含まれていません。
このため、リリース版の SWU イメージをインストールした Armadillo では、
[App run on Armadillo] を使用したリモート実行は使用できません。 |
作成した SWU イメージは my_project ディレクトリ下に release.swu というファイル名で保存されています。 この SWU イメージを 「SWU イメージのインストール」 を参照して Armadillo へインストールすると、
Armadillo 起動時にアプリケーションも自動起動します。 ABOSDE では SWU イメージの生成と同時に SBOM が生成されます。
生成される SBOM 名は SWU イメージ.spdx.json になります。
json 形式で ISO/IEC5962で国際標準となっているSPDX2.2のフォーマットに準拠しています。
SBOM についての詳細は 「SBOM の提供」 をご参照ください。 3.16.1. SBOM 生成に必要なファイルを確認するSBOM の生成には以下の二つのファイルが必要です。 SBOM の生成にはライセンス情報を示したコンフィグファイルを使用します。コンフィグファイルは config/sbom_config.yaml.tmpl になります。
SWU イメージ作成時にこのコンフィグファイルからバージョン番号をアップデートした swu/sbom_config.yaml が生成されます。
リリース時にはコンフィグファイルの内容を確認し、正しい内容に変更してください。
各項目の詳細な説明については SPDX specification v2.2.2 (https://spdx.github.io/spdx-spec/v2.2.2/) をご覧ください。 SBOM に含めるコンテナイメージ等の情報については desc ファイルに記載されています。
各項目の説明については 「desc ファイルを編集する」 をご覧ください。 SBOM の利点のひとつに、スキャンツールに入力することでソフトウェアに含まれる脆弱性を検出することができる点が挙げられます。
ここでは、 Google が提供しているオープンソース SBOM スキャンツール OSV-Scanner[] を用いて、開発したソフトウェアに既知の脆弱性が含まれているかを確認する方法を紹介します。 3.17.1. OSV-Scanner のインストール以下の手順はすべて ATDE 上で行います。 OSV-Scanner は GitHub にてビルド済みの実行ファイルが配布されているのでそちらを使用します。
OSV-Scannerのリリースページから、最新の実行ファイル(osv-scanner_linux_amd64)をクリックしてダウンロードしてください。 次に、図3.267「OSV-Scanner をインストールする」のコマンドを実行することで、 OSV-Scanner がインストールされます。 osv-scanner --help コマンドを実行して、正しくインストールされていることを確認してください。
これで OSV-Scanner のインストールが完了しました。 3.17.2. OSV-Scanner でソフトウェアの脆弱性を検査する図3.269「OSV-Scanner を用いて SBOM をスキャンする」に示すコマンドを実行することで、ソフトウェアに含まれる既知の脆弱性を検出します。
ここでは例として ABOSDE で開発したアプリケーションの SBOM をスキャンします。
SBOM 生成については 「SWU イメージと同時に SBOM を作成する」 を参照してください。 |
今回は見やすさのために format を markdown に設定しています
|
上記の例では、 development.swu に含まれるソフトウェアから既知の重要な脆弱性が5件検出されました。
OSV URL 列の URL にアクセスすることで各脆弱性の詳細を確認することができます。 Armadillo 上で動作するシステムの開発が完了したら、製造・量産に入る前に開発したシステムのテストを行ってください。 テストケースは開発したシステムに依ると思いますが、 Armadillo で開発したシステムであれば基本的にテストすべき項目について紹介します。 長期間のランニングテストは実施すべきです。 ランニングテストで発見できる現象としては、以下のようなものが挙げられます。
長期間稼働することでソフトウェアの動作が停止してしまう
開発段階でシステムを短い時間でしか稼働させていなかった場合、長期間ランニングした際になんらかの不具合で停止してしまう可能性が考えられます。 開発が完了したら必ず、長時間のランニングテストでシステムが異常停止しないことを確認するようにしてください。 コンテナの稼働情報は podman stats コマンドで確認することができます。
メモリリークが発生する
アプリケーションのなんらかの不具合によってメモリリークが起こる場合があります。 また、運用時の Armadillo は基本的に overlayfs で動作しています。
そのため、外部ストレージやボリュームマウントに保存している場合などの例外を除いて、動作中に保存したデータは tmpfs (メモリ)上に保存されます。
よくあるケースとして、動作中のログなどのファイルの保存先を誤り、 tmpfs 上に延々と保存し続けてしまうことで、メモリが足りなくなってしまうことがあります。 長時間のランニングテストで、システムがメモリを食いつぶさないかを確認してください。 メモリの空き容量は図3.270「メモリの空き容量の確認方法」に示すように free コマンドで確認できます。
開発したシステムが、想定した条件下で正しく動作することは開発時点で確認できていると思います。
しかし、そのような正常系のテストだけでなく、正しく動作しない環境下でどのような挙動をするのかも含めてテストすべきです。 よくあるケースとしては、動作中に電源やネットワークが切断されてしまった場合です。 電源の切断時には、 Armadillo に接続しているハードウェアに問題はないか、電源が復旧した際に問題なくシステムが復帰するかなどをよくテストすると良いです。 ネットワークの切断時には、再接続を試みるなどの処理が正しく実装されているか、 Armadillo と サーバ側でデータなどの整合性が取れるかなどをよくテストすると良いです。 この他にもシステムによっては多くの異常系テストケースが考えられるはずですので、様々な可能性を考慮しテストを実施してから製造・量産ステップに進んでください。 3.19. ユーザー設定とユーザーデータを一括削除するユーザー設定とユーザーデータを一括削除することができます。
ユーザー設定の削除では ABOS Web から設定できる以下の項目を削除します。
ネットワーク設定
-
LAN、WLAN、WWAN の設定を全て削除します。WLAN はクライアント設定とアクセスポイント設定の両方を削除します。
-
DHCP 設定
-
NAT 設定
-
VPN 設定
-
NTP 設定
ABOS Web から設定できるものであっても以下は削除されません。 -
Rest API トークン
-
UI カスタマイズの内容
ユーザーデータの削除では以下のデータを削除します。 -
/var/app/volumes ディレクトリ下のファイルを全て
-
/var/log ディレクトリ下のファイルを全て
ユーザー設定とユーザーデータを削除するには Armadillo 上で abos-ctrl reset-default コマンドを使用します。 |
何もオプションを付けない場合、 DRY-RUN モードとなり実際に削除は行われません。
実際に削除を行う時に実行されるコマンドが表示されるのみです。
|
表示されたコマンドを確認し実際に削除されてもよい場合は、以下のように -f オプションを付けて
実行してください。 コマンド実行後は自動的に Armadillo が再起動します。 ABOS Web または Rest API から実行することもできます。
ABOS Web から実行する場合は 「ユーザー設定とユーザーデータの削除」 を参照してください。
Rest API から実行する場合は 「Rest API : ユーザー設定とユーザーデータの管理」 を参照してください。 | |
---|
再起動後、再び設定が必要な場合は ABOS Web や REST API を使用して行ってください。
特に Armadillo Twin を利用している場合は、必ずネットワークの再設定を行ってください。 |
| |
| | | |
| |