| | Armadillo-IoT ゲートウェイ A6E では基本的に ATDE という Armadillo 専用開発環境と、 Visual Studio Code 向け Armadillo 開発用エクステンションを用いてアプリケーション開発を行っていきます。 基本的な Armadillo-IoT ゲートウェイ A6E でのアプリケーション開発の流れを図3.1「アプリケーション開発の流れ」に示します。 本章では、図3.1「アプリケーション開発の流れ」に示す開発時の流れに沿って手順を紹介していきます。 3.2. 開発前に知っておくべき Armadillo Base OS の機能・特徴「Armadillo Base OSとは」にて Armadillo Base OS についての概要を紹介しましたが、開発に入るにあたってもう少し詳細な概要について紹介します。 3.2.1. 一般的な Linux OS 搭載組み込み機器との違いLinux OS 搭載組み込み機器ではアプリケーションの実行環境をユーザーランド上に直接用意し、Systemdなどでアプリケーションを自動実行させるのが一般的です。
Armadillo Base OS 搭載機器では、アプリケーションの実行環境をコンテナ内に用意して、コンテナ起動用設定ファイルを所定の場所に配置することでコンテナ(=アプリケーション)を自動実行させます。 また、Linux OS 搭載組み込み機器では、ストレージの保護のために overlayfs で運用するのが一般的です。
そのため、アプリケーションが出力するログや画像などのデータは、 USBメモリなどの外部デバイスに保存する必要があります。
Armadillo Base OS 搭載機器もルートファイルシステムが overlayfs 化されていますが、内部に USBメモリなどと同じように使用できるユーザーデータディレクトリを持っており、別途外部記録デバイスを用意しておく必要はありません。 Armadillo Base OS 搭載機器は、標準でセキュアエレメントを搭載しており、対応した暗号化方式の認証鍵や証明書を安全に保存・利用することが可能です。 3.2.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 を使用することで、コンテナ及びコンテナ自動起動用設定ファイルの作成、コンテナ内におけるパッケージのインストール、コンテナ内で動作するアプリケーション本体の開発をすべてVSCode内で行うことができます。 Armadillo-IoT ゲートウェイ A6E では、開発・製造・運用時にソフトウェアを書き込む際に、 SWUpdate という仕組みを利用します。 SWUpdateは、デバイス上で実行されるプログラムで、ネットワーク/ストレージ経由でデバイスのソフトウェアを更新することができます。
Stefano Babic, DENX software engineering, Germany によってオープンソースで開発が進められています。 Armadillo-IoT ゲートウェイ A6E では、 SWUpdateを利用することで次の機能を実現しています。 -
A/Bアップデート(アップデートの2面化)
-
リカバリーモード
-
ソフトウェアの圧縮、暗号化、署名付与
-
Web サーバーでのリモートアップデート対応
-
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 メモリから読み取る、ウェブサーバーからダウンロードする、 hawkBit という Web アプリケーションを使うなどです。 3.2.3.3. A/Bアップデート(アップデートの2面化)A/B アップデートは、
Flash メモリにパーティションを2面確保し、
アップデート時には交互に利用する仕組みです。 常に使用していない方のパーティションを書き換えるため次の特徴を持ちます。 -
○ アップデートによって動作中のソフトウェアは破壊されない
-
○ 書き込みが電源断などで中断後しても、すぐに復帰出来る
-
○ 機器が動作中に書き込みが出来る
-
× 使用Flashメモリ量が増える
システムが起動できなくなった際に、自動的にアップデート前のシステムにロールバックします。 ロールバック状態の確認は 「ロールバック状態を確認する」 を参照してください。 ロールバックする条件は次の通りです: ロールバックが実行されると /var/at-log/atlog にログが残ります。 イメージをインストールする方法として以下に示すような方法があります。
もし、作成した SWU イメージのインストールに失敗する場合は、「swupdate がエラーする場合の対処」をご覧ください。
USBメモリまたはSDカードからの自動インストール
Armadillo-IoT ゲートウェイ A6EにUSBメモリを接続すると自動的にアップデートが始まります。
アップデート終了後にArmadillo-IoT ゲートウェイ A6Eは自動で再起動します。 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
ウェブサーバーからイメージのインストール(手動)
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-iot-a6e/image/baseos-6e-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 を入れると有効にすることができます。 |
hawkBit を使用した自動インストール
hawkBit で Armadillo-IoT ゲートウェイ A6E を複数台管理してアップデートすることができます。
「hawkBitサーバーから複数のArmadilloに配信する」を参考にしてください。
Armadillo Base OS ではルートファイルシステムに overlayfs を採用しています。 その為、ファイルを変更した後 Armadillo の電源を切ると変更内容は保持されません。
開発中などに rootfs の変更内容を保持するには、変更したファイルに対して persist_file コマンドを使用します。 persist_file コマンドの詳細については、「persist_file について」を参照してください。
また、 SWUpdate によってルートファイルシステム上に配置されたファイルについては、 persist_file を実行しなくても保持されます。
開発以外の時は安全のため、 persist_file コマンドではなく SWUpdate による更新を実行するようにしてください。 3.2.4.1. 電源を切っても保持されるディレクトリ(ユーザーデータディレクトリ)「ファイルの取り扱いについて」 にて、 Armadillo Base OS 上のファイルは通常、 persist_file コマンドを実行せずに電源を切ると変更内容が保存されないと紹介しましたが、表3.1「電源を切っても保持されるディレクトリ(ユーザーデータディレクトリ)」に示すディレクトリ内にあるファイルはこの限りでありません。 表3.1 電源を切っても保持されるディレクトリ(ユーザーデータディレクトリ) ディレクトリ | 備考 |
---|
/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 カードに書き込むことで作成できます。 インストールディスクは二つの種類があります。 3.2.5.1. 初期化インストールディスクの作成-
512 MB 以上の microSD カードを用意してください。
標準のインストールディスクイメージを使用する場合は、
Armadillo-IoT ゲートウェイ A6E インストールディスクイメージ から
「Armadillo Base OS」をダウンロードしてください。
「Armadilloのソフトウェアをビルドする」 でビルドしたイメージを使用してインストールディスクを作成したい場合は、
以下のコマンドを実行して、インストールディスクイメージを作成してください。 [ATDE ~/build-rootfs-[VERSION]]$ sudo ./build_image.sh --board a6e
: (省略)
[ATDE ~/build-rootfs-[VERSION]]$ ls baseos-6e*img
baseos-6e-[VERSION].img
[ATDE ~/build-rootfs-[VERSION]]$ sudo ./build_image.sh --board a6e \
--boot ~/u-boot-[VERSION]/u-boot-dtb.imx \
--installer ./baseos-6e-[VERSION].img コマンドの実行が完了すると、baseos-6e-[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-6e-installer-[VERSION].zip
[ATDE ~]$ sudo dd if=baseos-6e-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 を作成する」 をご覧ください。 |
3.2.5.2. 開発が完了した Armadillo をクローンするインストールディスクの作成-
microSD カードを用意してください。
-
初期化インストールディスクをベースとしますので、「初期化インストールディスクの作成」 でビルドしたSDカードを使用できますが、用意されていなければ次のステップで自動的にダウンロードされます。
abos-ctrl make-installer を実行してください
[armadillo ~]# abos-ctrl make-installer
It looks like your SD card does not contain an installer image
Download base SD card image from https://armadillo.atmark-techno.com (~200MB) ? [y/N]
WARNING: it will overwrite your sd card!!
y
Downloading installer image
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 167M 100 167M 0 0 104M 0 0:00:01 0:00:01 --:--:-- 104M
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 70 100 70 0 0 1441 0 --:--:-- --:--:-- --:--:-- 1458
Writing baseos-6e-installer-3.15.4-at.6.img to SD card (442M)
439353344 bytes (439 MB, 419 MiB) copied, 134 s, 3.3 MB/s
421+0 records in
421+0 records out
441450496 bytes (441 MB, 421 MiB) copied, 134.685 s, 3.3 MB/s
Verifying written image is correct
436207616 bytes (436 MB, 416 MiB) copied, 46 s, 9.5 MB/s
421+0 records in
421+0 records out
441450496 bytes (441 MB, 421 MiB) copied, 46.8462 s, 9.4 MB/s
Checking and growing installer main partition
GPT data structures destroyed! You may now partition the disk using fdisk or
other utilities.
Setting name!
partNum is 0
The operation has completed successfully.
e2fsck 1.46.4 (18-Aug-2021)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
rootfs_0: 2822/102400 files (0.5% non-contiguous), 352391/409600 blocks
(1/1) Installing e2fsprogs-extra (1.46.4-r0)
Executing busybox-1.34.1-r5.trigger
OK: 202 MiB in 197 packages
resize2fs 1.46.4 (18-Aug-2021)
Resizing the filesystem on /dev/mmcblk1p1 to 15547884 (1k) blocks.
The filesystem on /dev/mmcblk1p1 is now 15547884 (1k) blocks long.
Currently booted on /dev/mmcblk0p1
Copying boot image
Copying rootfs
301989888 bytes (302 MB, 288 MiB) copied, 10 s, 30.1 MB/s
300+0 records in
300+0 records out
314572800 bytes (315 MB, 300 MiB) copied, 10.3915 s, 30.3 MB/s
Copying /opt/firmware filesystem
Copying appfs
At subvol app/snapshots/volumes
At subvol app/snapshots/boot_volumes
At subvol app/snapshots/boot_containers_storage
Cleaning up and syncing changes to disk...
Installer updated successfully!
-
SW2(起動デバイス設定スイッチ)を ON にし、起動デバイスを microSD に設定します。
-
microSD カードを CON1 に挿入します。
-
電源を投入すると、1分程度でeMMCのソフトウェアの初期化が完了します。
-
完了すると電源が切れます(SYS(システムLED)が消灯、コンソールに
reboot: Power down が表示)。
-
電源を取り外し、続いて SW2 を OFF に設定し、microSD カードを外してください。
-
10秒以上待ってから再び電源を入れると、初回起動時と同じ状態になります。
Armadilloを使用する前に、次のものを必要に応じて準備してください。 -
作業用PC
-
LinuxまたはWindowsが動作し、ネットワークインターフェースと 1つ以上のUSBポートを持つPCです。「開発/動作確認環境の構築」を参照して、作業用PC上に開発/動作確認環境を構築してください。
-
ネットワーク環境
-
Armadilloと作業用PCをネットワーク通信ができるようにしてください。
-
tar.xz形式のファイルを展開するソフトウェア
-
開発/動作確認環境を構築するために利用します。Linuxでは、tar で展開できます。Windowsでは、7-Zip や Lhazなどが対応しています。
-
nanoSIM(UIM カード)とAPN 情報
-
Cat.1 モデル、Cat.M1 モデルで LTE の動作を確認する場合に利用します。通信事業者との契約が必要です。SMS の動作を確認する場合は、SMS が利用可能な nanoSIM(UIM カード)が必要です。
アットマークテクノ製品のソフトウェア開発や動作確認を簡単に行うために、VMware仮想マシンのデータイメージを提供しています。このVMware仮想マシンのデータイメージをATDE(Atmark Techno Development Environment)と呼びます。ATDEの起動には仮想化ソフトウェアであるVMwareを使用します。ATDEのデータは、tar.xz圧縮されています。環境に合わせたツールで展開してください。 | |
---|
仮想化ソフトウェアとして、VMwareの他にOracle VM VirtualBoxが有名です。
Oracle VM VirtualBoxには以下の特徴があります。 -
GPL v2(General Public License version 2)で提供されている []
-
VMware形式の仮想ディスク(.vmdk)ファイルに対応している
Oracle VM VirtualBoxからATDEを起動し、ソフトウェア開発環境として使用することができます。 |
ATDEは、バージョンにより対応するアットマークテクノ製品が異なります。本製品に対応しているATDEは、ATDE9 の v20230123 以降です。 ATDE9 は Debian GNU/Linux 11 (コードネーム bullseye) をベースに、Armadillo-IoT ゲートウェイ A6E のソフトウェア開発を行うために必要なクロス開発ツールや、Armadillo-IoT ゲートウェイ A6E の動作確認を行うために必要なツールが事前にインストールされています。 ATDEを使用するためには、作業用PCにVMwareがインストールされている必要があります。
VMware社 Webページ(http://www.vmware.com/)を参照し、利用目的に合うVMware製品をインストールしてください。
また、ATDEのアーカイブは tar.xz圧縮されていますので、環境に合せたツールで展開してください。 | |
---|
VMwareは、非商用利用限定で無償のものから、商用利用可能な有償のものまで複数の製品があります。製品ごとに異なるライセンス、エンドユーザー使用許諾契約書(EULA)が存在するため、十分に確認した上で利用目的に合う製品をご利用ください。 |
| |
---|
VMwareやATDEが動作しないことを未然に防ぐため、使用するVMwareのドキュメントから以下の項目についてご確認ください。 -
ホストシステムのハードウェア要件
-
ホストシステムのソフトウェア要件
-
ゲストOSのプロセッサ要件
VMwareのドキュメントは、VMware社 Webページ(http://www.vmware.com/)から取得することができます。 |
3.3.2.4. WindowsでATDEのアーカイブ展開する
7-Zipのインストール
7-Zipをインストールします。7-Zipは、圧縮解凍ソフト 7-Zipのサイト(https://7-zip.opensource.jp/)からダウンロード取得可能です。
7-Zipの起動
7-Zipを起動します。
xz圧縮ファイルの選択
xz圧縮ファイルを展開して、tar形式のファイルを出力します。tar.xz形式のファイルを選択して、「展開」をクリックします。
xz圧縮ファイルの展開先の指定
「展開先」を指定して、「OK」をクリックします。
xz圧縮ファイルの展開
展開が始まります。
tarアーカイブファイルの選択
xz圧縮ファイルの展開が終了すると、tar形式のファイルが出力されます。tarアーカイブファイルを出力したのと同様の手順で、tarアーカイブファイルからATDEのデータイメージを出力します。tar形式のファイルを選択して「展開」をクリックし、「展開先」を指定して、「OK」をクリックします。
展開の完了確認
tarアーカイブファイルの展開が終了すると、ATDEアーカイブの展開は完了です。「展開先」に指定したフォルダにATDEのデータイメージが出力されています。
3.3.2.5. Linuxでtar.xz形式のファイルを展開する
tar.xz圧縮ファイルの展開
tar の xf オプションを使用して tar.xz 圧縮ファイルを展開します。
[PC ~]$ tar xf atde9-amd64-[VERSION].tar.xz
展開の完了確認
tar.xz圧縮ファイルの展開が終了すると、ATDEアーカイブの展開は完了です。 atde9-amd64-[VERSION] ディレクトリにATDEのデータイメージが出力されています。 [PC ~]$ ls atde9-amd64-[VERSION]/
atde9-amd64-s001.vmdk atde9-amd64-s008.vmdk
atde9-amd64-s002.vmdk atde9-amd64-s009.vmdk
atde9-amd64-s003.vmdk atde9-amd64.nvram
atde9-amd64-s004.vmdk atde9-amd64.vmdk
atde9-amd64-s005.vmdk atde9-amd64.vmsd
atde9-amd64-s006.vmdk atde9-amd64.vmx
atde9-amd64-s007.vmdk atde9-amd64.vmxf
ATDEのアーカイブを展開したディレクトリに存在する仮想マシン構成(.vmx )ファイルをVMware上で開くと、ATDEを起動することができます。ATDE9にログイン可能なユーザーを、表3.2「ユーザー名とパスワード」に示します []。 表3.2 ユーザー名とパスワード ユーザー名 | パスワード | 権限 |
---|
atmark
| atmark
| 一般ユーザー | root
| root
| 特権ユーザー |
| |
---|
ATDEを起動する環境によっては、GUIログイン画面が表示されずに以下のようなエラー画面が表示される場合があります。 この場合は、VMwareの設定で「3D グラフィックスのアクセラレーション」をONにした後、ATDEを起動すると
正常にGUIログイン画面が表示されます。設定箇所を以下に示します。 |
| |
---|
ATDEに割り当てるメモリおよびプロセッサ数を増やすことで、ATDEをより快適に使用することができます。仮想マシンのハードウェア設定の変更方法については、VMware社 Webページ(http://www.vmware.com/)から、使用しているVMwareのドキュメントなどを参照してください。 |
VMwareは、ゲストOS (ATDE)による取り外し可能デバイス(USBデバイスやDVDなど)の使用をサポートしています。デバイスによっては、ホストOS (VMwareを起動しているOS)とゲストOSで同時に使用することができません。そのようなデバイスをゲストOSで使用するためには、ゲストOSにデバイスを接続する操作が必要になります。 Armadillo-IoT ゲートウェイ A6Eの動作確認を行うためには、表3.3「動作確認に使用する取り外し可能デバイス」に示すデバイスをゲストOSに接続する必要があります。 表3.3 動作確認に使用する取り外し可能デバイス デバイス | デバイス名 |
---|
USBシリアル変換IC | Silicon CP2102N USB to UART Bridge Controller |
3.3.2.8. コマンドライン端末(GNOME端末)の起動ATDEで、CUI (Character-based User Interface)環境を提供するコマンドライン端末を起動します。ATDEで実行する各種コマンドはコマンドライン端末に入力し、実行します。コマンドライン端末にはいくつかの種類がありますが、ここではGNOMEデスクトップ環境に標準インストールされているGNOME端末を起動します。 GNOME端末を起動するには、図3.4「GNOME端末の起動」のようにデスクトップ左上のアプリケーションの「ユーティリティ」カテゴリから「端末」を選択してください。 図3.5「GNOME端末のウィンドウ」のようにウィンドウが開きます。 3.3.2.9. シリアル通信ソフトウェア(minicom)の使用シリアル通信ソフトウェア(minicom)のシリアル通信設定を、表3.4「シリアル通信設定」のように設定します。また、minicomを起動する端末の横幅を80文字以上にしてください。横幅が80文字より小さい場合、コマンド入力中に表示が乱れることがあります。 表3.4 シリアル通信設定 項目 | 設定 |
---|
転送レート | 115,200bps | データ長 | 8bit | ストップビット | 1bit | パリティ | なし | フロー制御 | なし |
図3.6「minicomの設定の起動」に示すコマンドを実行し、minicomの設定画面を起動してください。
図3.7「minicomの設定」が表示されますので、「Serial port setup」を選択してください。
図3.8「minicomのシリアルポートの設定」が表示されますので、Aキーを押してSerial Deviceを選択してください。
Serial Deviceに使用するシリアルポートを入力してEnterキーを押してください。
| シリアル通信用USBケーブル(A-microB)使用時のデバイスファイル確認方法 |
---|
Linuxでシリアル通信用USBケーブル(A-microB)を接続した場合、コンソールに以下のようなログが表示されます。
ログが表示されなくても、dmesgコマンドを実行することで、ログを確認することができます。
上記のログからシリアル通信用USBケーブル(A-microB)がttyUSB0に割り当てられたことが分かります。 |
-
Fキーを押してHardware Flow ControlをNoに設定してください。
-
Gキーを押してSoftware Flow ControlをNoに設定してください。
キーボードのEキーを押してください。
図3.10「minicomのシリアルポートのパラメータの設定」 が表示されます。
-
図3.10「minicomのシリアルポートのパラメータの設定」では、転送レート、データ長、ストップビット、パリティの設定を行います。
現在の設定値は「Current」に表示されています。
それぞれの値の内容は図3.11「minicomシリアルポートの設定値」を参照してください。
-
Eキーを押して、転送レートを115200に設定してください。
-
Qキーを押して、データ長を8、パリティをNone、ストップビットを1に設定してください。
-
Enterキーを2回押して、図3.7「minicomの設定」に戻ってください。
-
図3.7「minicomの設定」から、「Save setup as dfl」を選択し、設定を保存してください。
-
「Exit from Minicom」を選択し、minicomの設定を終了してください。
minicomを起動させるには、図3.12「minicom起動方法」のようにしてください。 | |
---|
デバイスファイル名は、環境によって /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 |
minicomを終了させるには、まず Ctrl-a に続いて q キーを入力します。その後、以下のように表示されたら「Yes」にカーソルを合わせてEnterキーを入力するとminicomが終了します。 | |
---|
Ctrl-a に続いて z キーを入力すると、minicomのコマンドヘルプが表示されます。
|
3.3.3.2. 起動デバイス設定スイッチについて起動デバイス設定スイッチを操作することで、起動デバイスを設定することができます。 -
-
起動デバイスはeMMCになります。
-
-
起動デバイスはmicroSDになります。
| |
---|
起動デバイス設定スイッチの両脇の基板上に、白い文字でeMMC/SDとシルク記載しているので、操作の目印にご利用ください。 |
電源入力インターフェースに電源を接続すると Armadillo-IoT ゲートウェイ A6E が起動します。起動すると CON7 (USB コンソールインターフェース) から起動ログが表示されます。 | |
---|
Armadillo-IoT ゲートウェイ A6E の電源投入時点での起動デバイス設定スイッチ SW2 の状態によって起動モードが変化します。 詳しくは 「起動デバイス設定スイッチについて」 を参照してください。 |
以下に起動ログの例を示します。 U-Boot 2020.04-at10(Oct 04 2022 - 11:22:32 +0900)
CPU: i.MX6ULL rev1.1 at 396 MHz
Model: Atmark Techno Armadillo-IoT Gateway A6E
DRAM: 512 MiB
PMIC: PFUZE3000 DEV_ID=0x30 REV_ID=0x11
MMC: FSL_SDHC: 0, FSL_SDHC: 1
Loading Environment from MMC... OK
In: serial
Out: serial
Err: serial
Saving Environment to MMC... Writing to MMC(1)... OK
switch to partitions #0, OK
mmc1 is current device
Net:
Warning: ethernet@2188000 using MAC address from ROM
eth0: ethernet@2188000
Normal Boot
Hit any key to stop autoboot: 0
switch to partitions #0, OK
mmc1 is current device
11659840 bytes read in 518 ms (21.5 MiB/s)
Booting from mmc ...
38603 bytes read in 21 ms (1.8 MiB/s)
Loading fdt boot/armadillo.dtb
43 bytes read in 14 ms (2.9 KiB/s)
1789 bytes read in 18 ms (96.7 KiB/s)
Applying fdt overlay: armadillo-iotg-a6e-ems31.dtbo
## Booting kernel from Legacy Image at 80800000 ...
Image Name: Linux-5.10.145-32-at
Created: 2022-10-13 8:10:47 UTC
Image Type: ARM Linux Kernel Image (uncompressed)
Data Size: 11659776 Bytes = 11.1 MiB
Load Address: 82000000
Entry Point: 82000000
Verifying Checksum ... OK
## Flattened Device Tree blob at 83500000
Booting using the fdt blob at 0x83500000
Loading Kernel Image
Loading Device Tree to 9ef2d000, end 9ef59fff ... OK
Starting kernel ...
[ 0.601992] imx6ul-pinctrl 2290000.iomuxc-snvs: no groups defined in /soc/bus@2200000/iomuxc-snvs@2290000
OpenRC 0.44.10 is starting up Linux 5.10.145-32-at (armv7l)
* Mounting /proc ... [ ok ]
* Mounting /run ... * /run/openrc: creating directory
* /run/lock: creating directory
* /run/lock: correcting owner
* Caching service dependencies ... [ ok ]
* Starting atmark firstboot script ... * Mounting /sys ... * Remounting devtmpfs on /dev ... * Starting rngd ... [ ok ]
[ ok ]
* Mounting security filesystem ... [ ok ]
[ ok ]
* Mounting config filesystem ... [ ok ]
* Mounting /dev/mqueue ... * Mounting fuse control filesystem ... [ ok ]
[ ok ]
* Mounting /dev/pts ... [ ok ]
* Mounting /dev/shm ... [ ok ]
udev | * Starting udev ... [ ok ]
Warning: The kernel is still using the old partition table.
The new table will be used at the next reboot or after you
run partprobe(8) or kpartx(8)
The operation has completed successfully.
Could not create partition 2 from 0 to 614399
Could not create partition 3 from 0 to 102399
Could not create partition 4 from 0 to 409599
Could not create partition 5 from 0 to 20479
Error encountered; not saving changes.
* partitionning disk failed
fsck | * Checking local filesystems ... [ ok ]
root | * Remounting filesystems ... [ ok ]
localmount | * Mounting local filesystems ... [ ok ]
overlayfs | * Preparing overlayfs over / ... [ ok ]
hostname | * Setting hostname ... [ ok ]
sysctl | * Configuring kernel parameters ...udev-trigger
| * Generating a rule to create a /dev/root symlink ... [ ok ]
[ ok ]
udev-trigger | * Populating /dev with existing devices through uevents ... [ 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
[ ok ]
dbus | * /run/dbus: correcting owner
dbus | * Starting System Message Bus ... [ 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 ]
buttond | * Starting button watching daemon ... [ ok ]
reset_bootcount | * Resetting bootcount in bootloader env ...Environment OK, copy 0
reset_bootcount | [ ok ]
zramswap | [ ok ]
zramswap | * Creating zram swap device ...podman-atmark
| * Starting configured podman containers ... [ ok ]
atmark-power-utils | * Starting atmark-power-utils ... [ ok ]
chronyd | * Starting chronyd ... [ ok ]
[ ok ]
local | * Starting local ... [ ok ]
Welcome to Alpine Linux 3.16
Kernel 5.10.145-32-at on an armv7l (/dev/ttymxc2)
armadillo login: U-Boot プロンプト ユーザースイッチ(SW1) を押しながら電源を投入すると、 U-Boot のプロンプトが表示されます。 U-Boot 2020.04-at10 (Oct 04 2022 - 11:22:32 +0900)
CPU: i.MX6ULL rev1.1 at 396 MHz
Model: Atmark Techno Armadillo-IoT Gateway A6E
DRAM: 512 MiB
PMIC: PFUZE3000 DEV_ID=0x30 REV_ID=0x11
MMC: FSL_SDHC: 0, FSL_SDHC: 1
Loading Environment from MMC... OK
In: serial
Out: serial
Err: serial
Saving Environment to MMC... Writing to MMC(1)... OK
switch to partitions #0, OK
mmc1 is current device
Net: eth0: ethernet@2188000
Normal Boot
=> 起動が完了するとログインプロンプトが表示されます。「root」か一般ユーザーの「atmark」でログインすることができます。 initial_setup.swu を適用しない場合、「root」ユーザーは初回ログイン時にパスワードを入力せずに新しいパスワードを促されます。
「atmark」ユーザーは、初期状態ではロックされています。そのロックを解除するには、「root」ユーザーでログインし、 passwd 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 でログイン
初期状態でロックされてますので、rootで一度パスワードを設定してからログインします。 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.126-24-at on an armv7l (/dev/ttymxc2)
armadillo login: atmark
Password:
Welcome to Alpine! |
atmarkユーザーのパスワード変更コマンド。「SWUイメージの作成」 を使用した場合には不要です
| |
パスワードファイルを永続化します。
| |
設定したパスワードでログインすることができます。
|
| |
---|
Armadillo BaseOS ではルートファイルシステムに overlayfs を採用しており、そのままではシステムが OFF すると内容は消えてしまいます。そのため persist_file コマンドが用意されています。このコマンドを利用することでファイル単位で変更を反映することができます。パスワードを設定した後には以下のコマンドを実行してください。 [armadillo ~]# persist_file /etc/shadow persist_file コマンドに関する詳細は「persist_file について」を参照してください。 |
安全に終了させる場合は、次のようにpoweroffコマンドを実行し、「reboot: Power down」と表示されたのを確認してから電源を切断します。 armadillo:~# poweroff
armadillo:~# zramswap | * Deactivating zram swap device ...podman-atmark | * Stopping all podman containers ...local
| * Stopping local ... [ ok ]
[ ok ]
atmark-power-utils | * Stopping atmark-power-utils ...rngd
| * Stopping rngd ...chronyd | * Stopping chronyd ...dnsmasq | * Stopping dnsmasq ...buttond | * Stopping button watching daemon ... [ ok ]
[ ok ]
* start-stop-daemon: no matching processes found
[ ok ]
[ ok ]
atmark-power-utils | [ ok ]
klogd | * Stopping busybox klogd ... [ ok ]
networkmanager | * Stopping networkmanager ... [ ok ]
syslog | * Stopping busybox syslog ... [ ok ]
udev | * Stopping udev ... [ ok ]
dbus | * Stopping System Message Bus ...nm-dispatcher: Caught signal 15, shutting down...
[ ok ]
cgroups | * cgroups: waiting for podman-atmark (50 seconds)
[ ok ]
localmount | * Unmounting loop devices
localmount | * Unmounting filesystems
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
[ 99.211013] reboot: Power down | |
---|
電源を再投入する際は、コンデンサに蓄えられた電荷を抜くため、電源を切断後、一定時間以上待つ必要があります。
開発セット付属のACアダプタの場合に必要な時間は以下のとおりです。 -
DCプラグ側で電源を切断した場合 : 約5秒
-
ACプラグ側で電源を切断した場合 : 約1分
コンデンサに蓄えられた電荷が抜ける前に電源を再投入した場合、
電源シーケンスが守られず、起動しない等の動作不具合の原因となります。 |
Armadillo-IoT ゲートウェイ A6E の開発には、 VSCode を使用します。
開発前に以下の手順を実施して、 ATDE に VSCode 開発用エクステンションをインストールしてください。 以下の手順は全てATDE上で実施します。 ATDE のバージョン v20230123 以上には、 VSCode がインストール済みのため新規にインストールする必要はありませんが、
使用する前には最新版へのアップデートを行ってください。 VSCode を起動するには code コマンドを実行します。 | |
---|
VSCode を起動すると、日本語化エクステンションのインストールを提案してくることがあります。
その時に表示されるダイアログに従ってインストールを行うと VSCode を日本語化できます。 |
3.3.7.2. VSCode に開発用エクステンションをインストールするVSCode 上でアプリケーションを開発するためのエクステンションをインストールします。 エクステンションはマーケットプレイスからインストールすることができます。
VSCode を起動し、左サイドバーのエクステンションを選択して、検索フォームに「abos」と入力してください。 表示された「Armadillo Base OS Development Environment」の 「Install」ボタンを押すとインストールは完了します。 3.3.8. VSCode を使用して Armadillo のセットアップを行うここでは VSCode を使用した Armadillo のセットアップ方法を紹介します。 3.3.8.1. initial_setup.swu の作成initial_setup.swu はログインパスワードやユーザー固有の証明書などの
初期設定を Armadillo にインストールするためのファイルです。
initial_setup.swu でインストールされるユーザー固有の証明書がない場合、
ユーザーが開発したアプリケーションをインストール、またはアップデートすることができません。
このため、開発開始時に initial_setup.swu のインストールを行う必要があります。
VSCode の左ペインの [COMMON PROJECT COMMAND] から [Generate initial setup swu] を実行すると、
initial_setup.swu が作成されます。 初回実行時には各種設定の入力を求められます。
入力する設定の内容を 図3.20「initial_setup.swu 初回生成時の各種設定」 に示します。 |
COMMON_NAME には証明鍵の「common name」として会社や製品が分かるような任意の名称を入力してください。
| |
証明鍵を保護するパスフレーズを2回入力します。
| |
swuイメージ自体を暗号化する場合に「y」を入力します。詳細は 「SWUpdate と暗号化について」 を参考にしてください。
| |
アットマークテクノのアップデートをインストールしない場合は「n」を入力します。
| |
rootのパスワードを2回入力します。
| |
atmarkユーザーのパスワードを2回入力します。何も入力しない場合はユーザーをロックします。
| |
自動アップデートを無効のままで進みます。ここで「y」を入れると、定期的に
アットマークテクノのサーバーからアップデートの有無を確認し、自動的にインストールします。
| |
abos-webを使用する場合はパスワードを設定してください。
| |
作成したファイルを確認します。「swupdate.aes-key」は暗号化の場合にのみ作成されます。
|
ファイルは ~/mkswu/initial_setup.swu に保存されています。
この SWU イメージを 「SWU イメージのインストール」 を参照して Armadillo へインストールしてください。 インストール後に ~/mkswu ディレクトリ以下にある mkswu.conf と、鍵ファイルの swupdate.* をなくさないようにしてください。 アットマークテクノ製品をご利用のユーザーに対して、
購入者向けの限定公開データの提供や大切なお知らせをお届けするサービスなど、
ユーザー登録すると様々なサービスを受けることができます。
サービスを受けるためには、「アットマークテクノ Armadilloサイト」
にユーザー登録をする必要があります。 ユーザー登録すると次のようなサービスを受けることができます。 -
製品仕様や部品などの変更通知の閲覧・配信
-
購入者向けの限定公開データのダウンロード
-
該当製品のバージョンアップに伴う優待販売のお知らせ配信
-
該当製品に関する開発セミナーやイベント等のお知らせ配信
詳しくは、「アットマークテクノ Armadilloサイト」をご覧ください。 ユーザー登録完了後に、購入製品登録することで、「購入者向けの限定公開データ」をダウンロードすることができるようになります。 購入製品登録の詳しい手順は以下のURLをご参照ください。 Armadillo-IoT ゲートウェイ A6Eの機能拡張や信頼性向上のための設計情報について説明します。 Armadillo-IoT ゲートウェイ A6Eの各種信頼性試験データを、「アットマークテクノ Armadilloサイト」から
「購入者向けの限定公開データ」としてダウンロード可能ですのでご確認ください。 CON8(拡張インターフェース)を使用して、Armadillo-IoT ゲートウェイ A6Eと拡張基板を接続すると、
放射ノイズが問題になる場合があります。放射ノイズを減らすために、以下の対策が効果的です。 Armadillo-IoT ゲートウェイ A6EのESD耐性を向上させるために、以下の対策が効果的です。 また、Armadillo-IoT ゲートウェイ A6Eに接続されたケーブルが屋外に露出するような設置環境では、
ケーブルに侵入した雷サージ等のストレスによりインターフェース回路が破壊される場合があります。
ストレスへの耐性を向上させるために、以下の対策が効果的です。 Armadillo-IoT ゲートウェイ A6E の拡張インターフェース(CON8)には、複数の機能をもった信号線が接続されており、様々な機能拡張が可能です。 垂直方向に拡張して標準ケースに収める場合と、水平方向に拡張して拡張ケースに収める場合の制限事項について説明します。 3.4.4.1. 垂直方向に拡張基板を配置した場合の接続例垂直方向に拡張基板を配置することで、ケースのサイズを変えることなく機能拡張が可能です。 CON8(拡張インターフェース)と拡張基板はストレートアングルのピンヘッダおよびピンソケットで接続します。 一般的なピンソケットを実装した場合、嵌合高さは約 11mm となります。 拡張ボード固定用に、φ2.3mm の穴を 2 箇所用意しており、M2のスペーサーとねじで拡張基板を固定することが可能です。 水平方向に拡張基板を配置し、拡張ケースを使用することで、外部コネクタの増設が可能になります。 CON8(拡張インターフェース)と拡張基板はライトアングルのピンヘッダおよびピンソケットで接続します。 本製品と拡張基板を接続するための推奨コネクタは表3.5「推奨コネクタ」のとおりです。 表3.5 推奨コネクタ | メーカー | 型番 |
---|
本製品側推奨コネクタ | Sullins Connector Solutions | PRPC017DBAN-M71RC | 拡張基板側推奨コネクタ | Sullins Connector Solutions | PPPC172LJBN-RC |
拡張ケース搭載例は以下のとおりです。 拡張ケースのメーカーと型番は以下のとおりです。 表3.6 拡張ケースのメーカーと型番 メーカー | 型番 |
---|
Italtronic | 35.0907000.BL |
3.4.4.3. 水平方向に拡張する場合の基板形状図3.4.4.4. 水平方向に拡張する場合の部品搭載制限表3.7 絶対最大定格 項目 | 記号 | Min. | Max. | 単位 | 備考 |
---|
電源電圧 | VIN | -0.3 | 26.4 | V | CON5,CON6 | 入出力電圧(GPIO信号) | VI,VO | -0.3 | OVDD+0.3 | V | CON8(OVDD=VCC_3.3V) | 入出力電圧(RS485信号) | VI_RS485
VO_RS485 | -8.0 | 12.5 | V | CON6(DATA+,DATA-) | 入力電圧(接点入力) | VI_DI | -26.4 | 26.4 | V | CON6(DI1,DI2,COM) | 出力耐圧(接点出力) | Voff_DO | -60 | 60 | V | CON6(DO1A,DO1B,DO2A,DO2B) | RTCバックアップ電源電圧 | RTC_BAT | -0.3 | 5.5 | V | CON10 | 動作温度範囲 | Topr | -20 | 60 | ℃ | 結露なきこと |
| |
---|
絶対最大定格は、あらゆる使用条件や試験状況において、瞬時でも超えてはならない値です。上記の値に対して余裕をもってご使用ください。 |
表3.8 推奨動作条件 項目 | 記号 | Min. | Typ. | Max. | 単位 | 備考 |
---|
電源電圧 | VIN | 8 | 12 | 26.4 | V | CON5,CON6 | RTCバックアップ電源電圧 | RTC_BAT | 2.4 | 3 | 3.6 | V | CON10,対応電池 : CR1220等 |
電源入力仕様
表3.9 電源入力仕様 項目 | 記号 | Min. | Typ. | Max. | 単位 | 備考 |
---|
電源電圧 | VIN | 8 | 12 | 26.4 | V | CON5,CON6 |
電源出力仕様
表3.10 電源出力仕様 項目 | 記号 | Min. | Typ. | Max. | 単位 | 備考 |
---|
5V 電源電圧 | VCC_5V | 4.75 | 5 | 5.25 | V | CON8 | 3.3V 電源電圧 | VCC_3.3V | 3.102 | 3.3 | 3.498 | V | CON8 | USB VBUS 電圧 | USB_OTG1_VBUS | 4.75 | 5 | 5.25 | V | CON9 |
入出力インターフェース(CON6)の入出力仕様
表3.11 入出力インターフェース(CON6)の入出力仕様 接点入力 | 入力インピーダンス | 4.7 kΩ | 入力ON電流 | 2.0 mA 以上 | 入力OFF電流 | 0.2 mA 以下 | 応答時間 | 1ms 以内 | 入力電圧 | 最大 26.4 V | 接点出力 | 定格電圧 | 最大 48 V | 定格電流 | 最大 500 mA | 応答時間 | 2ms 以内 | 出力形式 | 無極性 | 絶縁耐圧 | 2kV |
拡張インターフェース(CON8)の入出力仕様
表3.12 拡張インターフェース(CON8)の入出力仕様(OVDD = VCC_3.3V) 項目 | 記号 | Min. | Max. | 単位 | 備考 |
---|
ハイレベル出力電流 | IOH | OVDD-0.15 | OVDD | mA | IOH = -0.1mA, -1mA | ローレベル出力電流 | IOL | 0 | 0.15 | mA | IOL = 0.1mA, 1mA | ハイレベル入力電圧[] | VIH | 0.7xOVDD | OVDD | V | - | ローレベル入力電圧[] | VIL | 0 | 0.3xOVDD | V | - | 入力リーク電流(no Pull-up/Pull-down) | IIN | -1 | 1 | μA | - | Pull-up抵抗(5kΩ) | - | 4 | 6 | kΩ | - | Pull-up抵抗(47kΩ) | - | 37.6 | 56.4 | kΩ | - | Pull-up抵抗(100kΩ) | - | 80 | 120 | kΩ | - | Pull-down抵抗(100kΩ) | - | 80 | 120 | kΩ | - |
Armadillo-IoT ゲートウェイ A6Eの電源回路の構成は図3.29「電源回路の構成」のとおりです。 電源シーケンスは次のとおりです。 入力電圧(VIN)を電源ICで各電圧に変換し、内部回路および各インターフェースに供給しています。
各インターフェースやスイッチング・レギュレータの最大出力電流値を超えないように、
外部機器の接続、供給電源の設計を行なってください。 外部インターフェースへの電源はGPIOによりオンオフ制御できるようになっており、
不要な場合はオフすることで、省電力化が可能です。 | |
---|
基板改版や部品変更により、基板上の部品位置、高さは変更になることがあります。
ケースや拡張基板を設計する場合、ある程度の余裕をもった寸法での設計をお願いいたします。 |
| |
---|
DXF形式の形状図を「アットマークテクノ Armadilloサイト」から「購入者向けの限定公開データ」としてダウンロード可能です。 |
Armadillo-IoT ゲートウェイ A6E のオプション品については、「オプション品」 を参照してください。 本製品はねじを使用しないスナップフィット方式を採用しており、容易に組み立てと分解が可能です。分解する際には手のけがやパーツの破損を防止するためマイナスドライバーなどの工具を使用してください。 表3.13 ケースモデル展開図パーツ一覧 番号 | 名称 | 説明 |
---|
1 | ケーストップ | ケース上側のパーツです。 ケースボトムとは4か所のツメで固定されます。 ケースを分解する際は、マイナスドライバーを使用してツメを破損させないよう慎重に取り外してください。 | 2 | ケースボトム | ケース下側のパーツです。 | 3 | フック | ケースをDINレールに固定するためのパーツです。 | 4 | 基板 | | 5 | カバーパーツA | ケース開口部のカバーです。 ケーストップとは1か所のツメで固定されます。 | 6 | カバーパーツB | ケース開口部のカバーです。 ケーストップとは1か所のツメで固定されます。 | 7 | カバーパーツC | ケース開口部のカバーです。 ケーストップとは1か所のツメで固定されます。 | 8 | カバーパーツD | ケース開口部のカバーです。 ケーストップとは1か所のツメで固定されます。 | 9 | LEDライトパイプ | カバーパーツCに装着するLEDのライトパイプです。強い衝撃を加えた場合、ライトパイプが外れる場合がありますので、図3.36「ケースモデル展開図」を参考にカバーパーツCの丸穴に差し込んでください。 |
フックは以下の図を参考に取り付けてください。 | |
---|
microSDカードの取り付けは、ケースの組み立て前に行う必要があります。取り付け手順については、を参照してください。 |
以下の手順に従い、ケースを組み立ててください。 -
基板をケーストップに入れる
-
ケースボトムをケーストップにはめ込み、基板を固定する
-
フックをケースボトムにはめ込む
-
カバーパーツをケーストップにはめ込む
| |
---|
WLAN+BT コンボモジュールを搭載した製品におきましては、ケーストップに貼り付けられているWLAN基板アンテナのケーブルが製品基板のANT3と接続しています。
ケースを分解する際は、ANT3に無理な力が加わらないよう慎重に作業してください。 |
| |
---|
ツメに強い力を加えますと破損する恐れがありますので、十分ご注意ください。 |
マイナスドライバーなどの工具を用意してください。以下の手順に従い、ケースを分解してください。 -
フックをケースボトムから取り外す
-
ケースボトムを取り外す
-
基板を取り外す
-
カバーパーツを取り外す
フックはツメで固定されていますので、図3.39「フックのツメ」を参考にツメを押しながらフックを引き出してください。 ケースボトムはツメ4か所で固定されていますので、図3.40「ケースボトムのツメ」を参考にマイナスドライバーをケースの隙間に差し込み順に外してください。 Cat.1モデル, Cat.M1モデルではアンテナコネクタがケース開口部より飛び出しているため、反対側のLANコネクタ側から先にケーストップから出すようにしてください。基板を取り外す際、LANコネクタの突起部がケーストップに当たらないよう、ケースを広げながら基板を取り外すようにしてください。 カバーはツメ1か所でケーストップに固定されています。図3.41「カバーのツメ」を参考にマイナスドライバーをケースの隙間に差し込み外してください。 3.6. インターフェースの使用方法とデバイスの接続方法Armadillo を用いた開発に入る前に、開発するシステムに接続する必要のある周辺デバイスをこのタイミングで接続しておきます。 以下では、各デバイスの接続方法と、使用方法について紹介します。図3.42「Armadillo-IoT ゲートウェイ A6Eのインターフェース 表面」及び図3.43「Armadillo-IoT ゲートウェイ A6Eのインターフェース 裏面」に Armadillo-IoT ゲートウェイ A6E のインターフェースを示します。 表3.14 Armadillo-IoT ゲートウェイ A6E インターフェース一覧 部品番号 | インターフェース名 | 型番 | メーカー |
---|
CON1 | SDインターフェース | SDHK-8BNS-K-303-TB(HF) | J.S.T.Mfg. | CON3 | nanoSIM インターフェース | SF72S006VBDR2500 | Japan Aviation Electronics Industry | CON4 | LANインターフェース | 08B0-1X1T-36-F | Bel Fuse Inc. | CON5 | 電源入力インターフェース | PJ-102AH | CUI | CON6 | 入出力インターフェース | 1-1776275-2 | TE Connectivity | CON7 | USBコンソールインターフェース | ZX80-B-5P(30) | HIROSE ELECTRIC | CON8 | 拡張インターフェース | A1-34PA-2.54DSA(71) | HIROSE ELECTRIC | CON9 | USBインターフェース | SS-52100-001 | Bel Fuse Inc. | CON10 | RTCバックアップインターフェース | BH-44C-5 | Adam Tech | CON11 | ANT2中継コネクタ | U.FL-R-SMT-1(10) | HIROSE ELECTRIC | CON12 | ANT2中継コネクタ | U.FL-R-SMT-1(10) | HIROSE ELECTRIC | ANT1 | LTEアンテナインターフェース | S-037-TGG | COSMTEC RESOURCES CO., LTD | ANT2 | LTEアンテナインターフェース | S-037-TGG | COSMTEC RESOURCES CO., LTD | ANT3 | WLAN/BT アンテナインターフェース | 453-00046R | Laird Connectivity | SYS | システムLED | SML-D12M1WT86 | ROHM | APP | アプリケーションLED | SML-D12M1WT86 | ROHM | WWAN | ワイヤレスWAN LED | SML-D12M1WT86 | ROHM | SW1 | ユーザースイッチ | SKHHDJA010 | ALPS ELECTRIC | SW2 | 起動デバイス設定スイッチ | DS01-254-S-01BE | CUI | SW3 | RS485終端抵抗設定スイッチ | DS01-254-S-01BE | CUI |
microSD/microSDHC/microSDXC カードを使用する際に必要な情報を以下に示します。
以降の説明では、共通の操作が可能な場合に、 microSD/microSDHC/microSDXC カードを microSD カードと表記します。 ハイスピード(最大クロック周波数: 49.5MHz)に対応したSDインターフェースです。 信号線はi.MX6ULLのSDホストコントローラ(uSDHC2)に接続されています。 SDカードに供給される電源はi.MX6ULLのNAND_ALEピン(GPIO4_IO10)で制御が可能です。
Highレベル出力で電源が供給され、Lowレベル出力で電源が切断されます。 | |
---|
CON1は活線挿抜に対応していません。microSDカードの挿抜は、電源を切断してから行ってください。 |
| |
---|
SD コントローラ(uSDHC2)は WLAN+BT コンボモジュールと排他使用となります。
そのため、WLAN 搭載モデルはインストールディスク以外で SD を使用できません。量産用インストールディスクを WLAN 搭載モデルで作成する場合は、「開発したシステムをインストールディスクにする」 をご覧ください。 |
-
機能
-
カードタイプ: microSD/microSDHC/microSDXC/microSDIO
-
バス幅: 1bit or 4bit
-
スピードモード: Default Speed(26MHz), High Speed(52MHz), UHS-I (50MHz)
-
カードディテクトサポート
-
インターフェース仕様
表3.15 CON1 信号配列 ピン番号 | ピン名 | I/O | 説明 |
---|
1 | DAT2 | In/Out | SDデータバス(bit2)、i.MX6ULLのNAND_DATA02ピンに接続 | 2 | CD/DAT3 | In/Out | SDデータバス(bit3)、i.MX6ULLのNAND_DATA03ピンに接続 | 3 | CMD | In/Out | SDコマンド/レスポンス、i.MX6ULLのNAND_WE_Bピンに接続 | 4 | VDD | Power | 電源(VCC_3.3V) | 5 | CLK | Out | SDクロック、i.MX6ULLのNAND_RE_Bピンに接続 | 6 | VSS | Power | 電源(GND) | 7 | DAT0 | In/Out | SDデータバス(bit0)、i.MX6ULLのNAND_DATA00ピンに接続 | 8 | DAT1 | In/Out | SDデータバス(bit1)、i.MX6ULLのNAND_DATA01ピンに接続 |
上からカバーを軽く押し、約1.2mmスライドさせて、ロックを解除します。
カバーを開けます。
| |
---|
カバーは過度な力で回転させたり、回転方向以外の方向へ力を加えると、
破損の原因となりますので、ご注意ください。 |
任意の角度までトレイを開いた状態で、microSDカードを挿抜します。
| |
---|
microSDカード挿入方向については、カバーに刻印されているカードマークを目安にしてください。
|
カバーを閉めます。
上からカバーを軽く押し、約1.2mmスライドさせて、ロックします。
| |
---|
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 ストレージの使用方法については、「コマンドラインからストレージを使用する」もあわせて参照してください。 CON4は10BASE-T/100BASE-TXに対応したLANインターフェースです。
カテゴリ5以上のEthernetケーブルを接続することができます。
AUTO-MDIX機能を搭載しており、ストレートケーブルまたはクロスケーブルを自動認識して送受信端子を切り替えます。 信号線はEthernet PHY(LAN8720AI-CP/Microchip Technology)を経由してi.MX6ULLのEthernetコントローラ(ENET1: 10/100-Mbps Ethernet MAC)に接続されています。 -
機能
-
通信速度: 100Mbps (100BASE-TX), 10Mbps (10BASE-T)
-
通信モード: Full-Duplex (全二重), Half-Duplex (半二重)
-
Auto Negotiationサポート
-
キャリア検知サポート
-
リンク検出サポート
-
インターフェース仕様(CON4)
表3.16 CON4 信号配列 ピン番号 | ピン名 | I/O | 説明 |
---|
1 | TX+ | In/Out | 送信データ(+) | 2 | TX- | In/Out | 送信データ(-) | 3 | RX+ | In/Out | 受信データ(+) | 4 | - | - | 5ピンと接続後に75Ω終端 | 5 | - | - | 4ピンと接続後に75Ω終端 | 6 | RX- | In/Out | 受信データ(-) | 7 | - | - | 8ピンと接続後に75Ω終端 | 8 | - | - | 7ピンと接続後に75Ω終端 |
表3.17 CON4 LAN LEDの動作 名称(色) | 状態 | 説明 |
---|
LANスピードLED(緑) | 消灯 | 10Mbpsで接続されている、もしくはEthernetケーブル未接続 | 点灯 | 100Mbpsで接続されている | LANリンクアクティビティLED(黄) | 消灯 | リンクが確立されていない | 点灯 | リンクが確立されている | 点滅 | リンクが確立されており、データを送受信している |
Armadillo-IoT ゲートウェイ A6E の WLAN を搭載しているモデルには、Laird Connectivity製 Sterling LWB5+ が搭載されています。Sterling LWB5+ のWLANは「ハードウェア仕様」に示す uSDHC2 に接続されています。 -
機能
-
IEEE 802.11a/b/g/n/ac 準拠
-
最大通信速度: 49.5Mbps(理論値)
-
動作モード: インフラストラクチャモード(STA/AP), アドホックモード
-
チャンネル(2.4GHz): 1-14
-
チャンネル(5GHz): 36-48, 52-64, 100-140
| |
---|
Sterling LWB5+の最大通信速度は 433.3Mbps(802.11ac, 1x1 SISO, HT80, MCS9, SGI) ですが、「ハードウェア仕様」に示す SD インターフェースに接続される為、49.5Mbpsに制限されます。 |
-
インタフェース仕様(ANT3)
ANT3(WLAN/BT アンテナインターフェース) は WLAN/BT データ通信時に利用する、アンテナコネクタです。MHF4 端子のアンテナを接続することができます。開発セットおよび量産用では PCB アンテナが接続されています。 RP-SMA端子のアンテナを接続する場合は、図3.51「ANT3 RP-SMA端子のアンテナ接続例」を参考にケーブルをご用意ください。
| |
---|
Sterling LWB5+ のファームウェアは、ATDEにインストールされているfirmware-brcm80211パッケージに含まれています。ファームウェアはLinuxカーネルイメージ内に改変無く配置されます。
firmware-ti-connectivityの著作権およびライセンス情報については、ATDE上で/usr/share/doc/firmware-brcm80211/copyrightを参照してください。 |
Armadillo-IoT ゲートウェイ A6E には、Laird Connectivity製 Sterling LWB5+ が搭載されています。Sterling LWB5+ の BT は UART2 に接続されています。 -
インターフェース仕様(ANT3)
- ANT3(WLAN/BT アンテナインターフェース) に関しては、「ハードウェア仕様」を参照ください。
コンテナ内から BT 使用するには、コンテナ作成時にホストネットワークを使用するために、
NET_ADMIN の権限を渡す必要があります。
図3.52「Bluetooth を扱うコンテナの作成例」に、alpine イメージから Bluetooth を扱うコンテナを作成する例を示します。 コンテナ内で必要なソフトウェアをインストールして、Bluetooth を起動します。 これにより、bluetoothctl で Bluetooth 機器のスキャンやペアリングなどが行えるようになります。
以下に、bluetoothctl コマンドで周辺機器をスキャンしてペアリングを行う例を示します。 |
コントローラを起動します。
| |
周辺機器をスキャンします。
| |
ペアリングしたい機器の MAC アドレスを指定してペアリングします。
| |
exit で bluetoothctl のプロンプトを終了します。
|
Armadillo-IoT ゲートウェイ A6E Cat.1 モデルには、Thales 製 ELS31-J が搭載されています。ELS31-J は、 OTG2 に接続されています。 Armadillo-IoT ゲートウェイ A6E Cat.M1 モデルには、Thales 製 EMS31-J が搭載されています。Cat.M1 モデルは、 Thales LTE module multiplex ドライバを使用し UART4 を ttyMux0、ttyMux1、ttyMux2 に多重化して使用します。 -
機能
-
LTE 通信
-
リセットドライバによる ELS31-J/EMS31-J の電源制御
-
インターフェース仕様(CON3)
CON3(nanoSIMインターフェース)は LTEデータ通信時に利用する、nanoSIM カード用インターフェースです。 表3.18 CON3 信号配列 ピン番号 | ピン名 | I/O | 説明 |
---|
C1 | SIM_VCC | Power | SIM電源、LTEモジュールのCCVCCに接続 | C2 | SIM_RST | Out | SIMリセット、LTEモジュールのCCRSTに接続 | C3 | SIM_CLK | Out | SIMクロック、LTEモジュールのCCCLKに接続 | C5 | GND | Power | 電源(GND) | C6 | SIM_VPP | - | 未接続 | C7 | SIM_I/O | In | SIMデータ、LTEモジュールのCCIOに接続 |
-
インターフェース仕様(CON11)
CON11(ANT2中継コネクタ)はLTEモジュール(ELS31-J)とANT2を接続するための中継コネクタで、LTEモジュールのアンテナピンと接続されています。
出荷時にはCON12に接続された同軸ケーブルが装着されています。 | |
---|
型番が AG627 または AG626 で始まる製品にのみ搭載されています。 |
-
インターフェース仕様(CON12)
CON12(ANT2中継コネクタ)はLTEモジュール(ELS31-J)とANT2を接続するための中継コネクタで、LTEモジュールのアンテナピンと接続されています。
出荷時にはCON11に接続された同軸ケーブルが装着されています。 | |
---|
型番が AG627 または AG626 で始まる製品にのみ搭載されています。 |
-
インターフェース仕様(ANT1)
ANT1(LTEアンテナインターフェース)はLTEデータ通信時に利用する、アンテナコネクタです。
SMAオス端子のアンテナを接続することができます。
アンテナコネクタの形状は図3.55「ANT1 接続可能なアンテナコネクタ形状」のとおりです。
アンテナコネクタからアンテナまでの経路は50Ω同軸ケーブルでの延長が可能です。
ただし、ケーブルロスが発生することにご注意ください。
同軸ケーブルで延長する場合は、図3.56「ANT1 50Ω同軸ケーブルでの延長例」を参考にケーブルをご用意ください。
| |
---|
Cat.1 モデルでLTE通信を使用する際はアンテナ2本が必須となります。 |
| |
---|
LTEモジュールメーカーにより、技適認証取得済みのアンテナについて抜粋したリストを
Armadilloサイトで公開しています。
付属のアンテナ以外をご検討の際に、ご活用ください。 当社にて全てのアンテナの動作を確認したものではありませんので、
通信性能の評価については、ユーザー様自身にて実施いただくようお願いいたします。 |
-
インターフェース仕様(ANT2)
ANT2はカスタマイズが可能なアンテナコネクタです。
各製品モデルでのANT2の搭載状況と用途、形状は表3.19「各製品モデルでのANT2搭載状況と用途」のとおりです。 表3.19 各製品モデルでのANT2搭載状況と用途
Cat.1モデルでは、アンテナコネクタからアンテナまでの経路は50Ω同軸ケーブルでの延長が可能です。ただし、ケーブルロスが発生することにご注意ください。
同軸ケーブルで延長する場合は、下図を参考にケーブルをご用意ください。
Cat.1モデル以外の製品でANT2は非搭載となっていますが、ANT2を搭載し各種アンテナインターフェースとして使用ができるカスタマイズ品を製造することが可能です。 | |
---|
詳細につきましてはアットマークテクノ営業部または各販売代理店へお問い合わせください。 |
ANT2をWLAN/BTアンテナにカスタマイズする場合の例を図3.58「ANT2カスタマイズ例:同軸ケーブル接続図」図3.59「ANT2カスタマイズ例:WLAN/BTアンテナインターフェース」に示します。
CON8(拡張インターフェース)にLPWA通信モジュールを搭載し、ANT2をLPWAアンテナにカスタマイズする場合の例を図3.60「ANT2カスタマイズ例:LPWAアンテナインターフェース」に示します。
| |
---|
LTEモジュールメーカーにより、技適認証取得済みのアンテナについて抜粋したリストを
Armadilloサイトで公開しています。
付属のアンテナ以外をご検討の際に、ご活用ください。 当社にて全てのアンテナの動作を確認したものではありませんので、
通信性能の評価については、ユーザー様自身にて実施いただくようお願いいたします。 |
3.6.5.2. ソフトウェア仕様(Cat.1 モデル)-
デバイスファイル
/dev/ttyACM0
-
ModemManager が
/dev/ttyCommModem のシンボリックリンクを作成し AT コマンド用ポートとして使用します。
-
/dev/ttymxc3
-
ネットワークデバイス
| |
---|
ttyACM0 は、他の USB デバイスを接続している場合、番号が変わる可能性があります。 |
3.6.5.3. ソフトウェア仕様(Cat.M1 モデル)-
デバイスファイル
/dev/ttyMux0
-
ModemManager が
/dev/ttyCommModem のシンボリックリンクを作成し AT コマンド用ポートとして使用します。
/dev/ttyMux1
/dev/ttyMux2
-
ModemManager 以外のアプリケーションから AT コマンドを入力するのに使用できます。
/dev/ttymxc3
-
Thales LTE module multiplex ドライバが使用します。
-
ネットワークデバイス
LTE モデム Thales 製 ELS31-J/EMS31-J に対して、以下の制御が可能です。 LTE モデムは、Armadillo 起動時に自動的に電源が投入され、 Armadillo が終了する際には自動的に電源が切られます。 また、「LTE再接続サービス」 でも、通信状態に応じて LTE モデムのリセットなどを実施しますので処理が重複しないように、下記制御を実施する際には、図6.118「LTE 再接続サービスを停止する」の手順を参考に再接続サービスを停止してから実施してください。 ネットワークの設定方法については「ネットワーク設定」を参照してください。 LTE 再接続サービスの設定、Cat.M1 モデル省電力設定、Cat.1 モデルファイアーウォール設定に関しては「LTE (Cat.1/Cat.M1 モデル)」を参照してください。 USB2.0に対応したUSBインターフェースです。 信号線はi.MX6ULLのUSBコントローラ(USB OTG1)に接続されています。 USB デバイスに供給される電源(USB_OTG1_VBUS)はi.MX6ULLのUART1_RTS_Bピン(GPIO1_IO19)で制御しており、Highレベル出力で電源が供給され、Lowレベル出力で電源が切断されます。 -
機能
-
Universal Serial Bus Specification Revision 2.0 準拠
-
Enhanced Host Controller Interface (EHCI)準拠
-
転送レート: USB2.0 High-Speed (480Mbps), Full-Speed (12Mbps), Low-Speed (1.5Mbps)
-
インターフェース仕様
表3.20 CON9 信号配列 ピン番号 | ピン名 | I/O | 説明 |
---|
1 | USB1_VBUS | Power | 電源(USB_OTG1_VBUS)、i.MX6ULLのUSB_OTG1_VBUSピンに接続 | 2 | USB1_DN | In/Out | USB1のマイナス側信号、i.MX6ULLのUSB_OTG1_DNピンに接続 | 3 | USB1_DP | In/Out | USB1のプラス側信号、i.MX6ULLのUSB_OTG1_DPピンに接続 | 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/ 下にある
ラベルと同名のファイルを指定することで確実に目的のデバイスを使用することができます。
3.6.7.1. ハードウェア仕様(CON6:DI)接点入力部はフォトカプラによる絶縁入力(電流シンク出力タイプに接続可能)となっています。
入力部を駆動するために電源は、外部から供給する必要があります。 -
機能
-
インターフェース仕様(CON6:接点入力)
表3.21 CON6 信号配列(接点入力関連) ピン番号 | ピン名 | I/O | 説明 |
---|
3 | COM | In | 接点入力プラスコモン | 4 | DI1 | In | 接点入力1 | 5 | DI2 | In | 接点入力2 |
表3.22 CON6 接続可能な電線 規格 | UL | IEC | 電線範囲 | 26~18 AWG | 0.12~0.9mm2 | 被覆剥き長さ | 5~6mm | 使用可能フェルール端子 | 型番 : MFL25-5BE
メーカー:ミスミ | 推奨ねじ締めトルク | 0.28Nm |
| |
---|
電線の先端に予備半田しないでください。正しい接続ができなくなります。 |
| |
---|
端子台に電線を接続する際、端子台に過度な力を加えないでください。
端子台が破損する恐れがあります。 |
入出力インターフェース(CON6)のピン4、ピン5を接点入力として使用できます。 ソフトウェアからは GPIO として制御可能であり、対応するGPIO 番号を次に示します。 表3.23 接点入力に対応する CON6 ピン番号 ピン番号 | ピン名 | GPIOチップ | GPIO番号 |
---|
4 | DI1 | gpiochip5 | 0 | 5 | DI2 | gpiochip5 | 1 |
| |
---|
接点入力に何も接続していない(開放状態)場合、取得できる入力レベルは "1" (HIGH レベル)となります。 |
| |
---|
接点入力機能は、デフォルトの状態ではゲートウェイコンテナが使用しています。そのため、入力レベルを確認するには「コンテナの終了」の手順でゲートウェイコンテナを終了させる必要があります。 |
コンテナで使用する
コンテナ内で動作するアプリケーションから 接点入力(GPIO) を扱うためには、Podman のイメージからコンテナを作成する際にホスト OS 側の /dev/gpiochipN を渡すと、GPION+1 を操作することができます。 ここでは接点入力で使用する gpiochip5 を渡した場合の例を記載します。
コンテナ内に入ってコマンドで GPIO を操作する例を以下に示します。
|
GPIO 番号 [GPIO] の値を取得します。
| |
取得した値を表示します。
|
C 言語プログラムから操作する場合は、GPIO 操作ライブラリである libgpiod を使用することができます。
Armadillo 上で使用する
gpioget コマンドを用いて入力レベルの確認ができます。"0"は LOW レベル、"1"は HIGH レベルを表わします。
3.6.8.1. ハードウェア仕様(CON6:接点出力)接点出力部はフォトリレーによる絶縁出力(無極性)となっています。
出力部を駆動するためには外部に電源が必要となります。
出力1点につき最大電流500mA(定格 48V)まで駆動可能です。 -
機能
-
インターフェース仕様(CON6:接点出力)
表3.24 CON6 信号配列(接点出力関連) ピン番号 | ピン名 | I/O | 説明 |
---|
6 | DO1A | - | 接点出力1A | 7 | DO1B | - | 接点出力1B | 8 | DO2A | - | 接点出力2A | 9 | DO2B | - | 接点出力2B |
表3.25 CON6 接続可能な電線 規格 | UL | IEC | 電線範囲 | 26~18 AWG | 0.12~0.9mm2 | 被覆剥き長さ | 5~6mm | 使用可能フェルール端子 | 型番 : MFL25-5BE
メーカー:ミスミ | 推奨ねじ締めトルク | 0.28Nm |
| |
---|
電線の先端に予備半田しないでください。正しい接続ができなくなります。 |
| |
---|
端子台に電線を接続する際、端子台に過度な力を加えないでください。
端子台が破損する恐れがあります。 |
入出力インターフェース(CON6)のピン6/ピン7、ピン8/ピン9を接点出力として使用できます。 ソフトウェアからは GPIO として制御可能であり、対応するGPIO 番号を次に示します。 表3.26 接点出力に対応する CON6 ピン番号 ピン番号 | ピン名 | GPIOチップ | GPIO番号 |
---|
6 | DO1A | gpiochip5 | 2 | 7 | DO1B | gpiochip5 | 2 | 8 | DO2A | gpiochip5 | 3 | 9 | DO2B | gpiochip5 | 3 |
コンテナで使用する
コンテナ内で動作するアプリケーションから接点出力を扱うためには、Podman のイメージからコンテナを作成する際にホスト OS 側の /dev/gpiochipN を渡すと、GPION+1 を操作することができます。 ここでは接点出力で使用する gpiochip5 を渡した場合の例を記載します。
コンテナ内に入ってコマンドで接点出力を操作する例を以下に示します。
|
GPIO 番号 [GPIO] の値を low に設定します。
|
C 言語プログラムから操作する場合は、GPIO 操作ライブラリである libgpiod を使用することができます。
Armadillo 上で使用する
gpioset コマンドを用いて、出力レベルを設定することができます。出力レベルには "0" または "1" を設定します。"0"は LOW レベル、"1"は HIGH レベルを表わします。
接点入力、接点出力をループバックして確認する
ピン1とピン3、ピン2とピン6、ピン4とピン7をそれぞれ接続することで、DI1、DO1をループバックして確認することが可能です。
Armadillo-IoT ゲートウェイ A6E のシリアルは、i.MX6ULLのUART (Universal Asynchronous Receiver/Transmitter) を利用しています。 Armadillo-IoT ゲートウェイ A6E の標準状態では、UART3 (CON7) をシリアルコンソールとして利用しています。UART5(CON6 のピン 10 ~ 12) を RS-485 のインタフェースとして利用できます。 拡張インターフェース(CON8)でシリアル(UART)を最大2ポート拡張することが可能です。信号線は i.MX6ULL の UART(UART1、UART7)に接続されています。 CON7 は USB コンソール用インターフェースです。 信号線は USB シリアル変換 IC(CP2102N/Sillicon Labs) を経由して i.MX6ULL の UART コントローラ (UART3) に接続されています。 -
機能
フォーマット
-
データビット長: 7 or 8ビット
-
ストップビット長: 1 or 2ビット
-
パリティ: 偶数 or 奇数 or なし
-
フロー制御: CTS/RTS or XON/XOFF or なし
-
最大ボーレート:4Mbps
| |
---|
UART3(CON7)は4Mbpsで利用することができません。USBシリアル変換IC(CP2102N/Silicon Labs)の最大ボーレートが3Mbpsである為です。 |
-
インターフェース仕様(CON7)
表3.27 CON7 信号配列 ピン番号 | ピン名 | 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) |
3.6.9.2. ハードウェア仕様(CON6:RS-485)RS485 は、入出力インターフェース(CON6)の 10 ~ 12 ピンを使用します。 終端抵抗 120Ω の ON/OFFをスイッチで切り替えることができます、設定方法は「ハードウェア仕様 (SW3:RS485 終端抵抗設定スイッチ)」を参照ください。 -
機能
-
最大データ転送レート : 5Mbps
-
半二重対応
-
RS-485 シリアルインターフェースのデバイスファイルは、/dev/ttymxc4 を使用します。
-
インターフェース仕様
表3.28 CON6 信号配列(RS-485関連) ピン番号 | ピン名 |
---|
10 | DATA+ | 11 | DATA- | 12 | GND |
表3.29 CON6 接続可能な電線 規格 | UL | IEC | 電線範囲 | 26~18 AWG | 0.12~0.9mm2 | 被覆剥き長さ | 5~6mm | 使用可能フェルール端子 | 型番 : MFL25-5BE
メーカー:ミスミ | 推奨ねじ締めトルク | 0.28Nm |
| |
---|
電線の先端に予備半田しないでください。正しい接続ができなくなります。 |
| |
---|
端子台に電線を接続する際、端子台に過度な力を加えないでください。
端子台が破損する恐れがあります。 |
3.6.9.3. ハードウェア仕様 (SW3:RS485 終端抵抗設定スイッチ)SW3はRS485の終端抵抗設定スイッチです。
SW3を操作することで、終端抵抗 120ΩのON/OFFを切り替えることができます。 -
-
終端抵抗 120Ω がONになります。
-
-
終端抵抗 120Ω がOFFになります。
| |
---|
終端はRS485の信号線の最遠端で行います。
Armadillo-IoT A6Eが最遠端になる場合は終端抵抗をONにしてください。 |
コンテナ内で動作するアプリケーションから RS-232C や RS-485 などのシリアル通信を行うためには、
Podman のイメージからコンテナを作成する際にホスト OS 側のデバイスファイル /dev/ttymxcN を渡す必要があります。
以下は、/dev/ttymxc0 を渡して alpine イメージからコンテナを作成する例です。 コンテナ内に入り、setserial コマンドを使って現在の設定を確認することができます。 Armadillo-IoT ゲートウェイ A6E のGPIOは、i.MX6ULL の GPIO(General Purpose Input/Output)および、Texas Instruments製TCA9534(GPIOエキスパンダー)を利用しています。 拡張インターフェース(CON8) で GPIO を最大 22 ポート拡張することが可能です。 -
デバイスファイル
-
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 を使用することができます。 Armadillo-IoT ゲートウェイ A6E の I2C インターフェースは、i.MX6ULL の I2C(I2C Controller) を利用します。また、i2c-gpioを利用することで、I2C バスを追加することができます。
Armadillo-IoT ゲートウェイ A6E で利用している I2C バスと、接続される I2C デバイスを次に示します。 表3.30 I2C デバイス I2C バス | I2C デバイス |
---|
アドレス | デバイス名 | | 0(I2C1) | 0x08 | PF3000 (PMIC) | 1(I2C2) | 0x20 | TCA9534 (GPIOエキスパンダー) | 0x32 | RV8803 (RTC) | 0x48 | SE050(セキュアエレメント) |
Armadillo-IoT ゲートウェイ A6E の標準状態では、CONFIG_I2C_CHARDEV が有効となっているためユーザードライバで I2C デバイスを制御することができます。ユーザードライバを利用する場合は、Linux カーネルで I2Cデバイスに対応するデバイスドライバを無効にする必要があります。 -
デバイスファイル
-
/dev/i2c-0 (I2C1)
-
/dev/i2c-1 (I2C2)
-
/dev/i2c-2 (I2C3)
-
/dev/i2c-3 (I2C4)
コンテナ内で動作するアプリケーションから I2C を扱うためには、Podman のイメージからコンテナを作成する際にホスト OS 側のデバイスファイル /dev/i2c-N を渡す必要があります。以下は、/dev/i2c-1 を渡して alpine イメージからコンテナを作成する例です。 コンテナ内に入り、i2c-tools に含まれる i2cdetect コマンドを使ってスレーブアドレスを確認することができます。 Armadillo-IoT ゲートウェイ A6E のリアルタイムクロックは、Micro Crystal製 RV-8803-C7 が搭載されておりこれを利用しています。
RV-8803-C7 は、「ハードウェア仕様」に示す I2C2 に接続されています。
i.MX6ULL の RTC 機能も存在します。 -
デバイスファイル
-
/dev/rtc ( /dev/rtc0 へのシンボリックリンク)
-
/dev/rtc0 (RV-8803-C7)
-
/dev/rtc1 (i.MX6ULL SNVS_HP Real Time Counter)
| |
---|
RTCが /dev/rtc0 となるよう、Device Treeでエイリアスを設定しています。そのため、i.MX6ULLのRTC機能は /dev/rtc1 となります。
エイリアスの設定は、 arch/arm/boot/dts/armadillo-iotg-a6e.dts で行っています。 |
アラーム割り込みは、デバイスファイル経由で利用することができます。 詳細な情報については、Linux カーネルのソースコードに含まれているドキュメント(Documentation/admin-guide/rtc.rst)やサンプルプログラム(tools/testing/selftests/rtc/rtctest.c)を参照してください。
コンテナで使用する
コンテナ内から RTC を扱うためには、Podman のイメージからコンテナを作成する際にホスト OS 側のデバイスファイル /dev/rtc0 を渡すと同時に、RTC への時刻の設定を行うための権限も渡す必要があります。
以下は、/dev/rtc0 を渡して alpine イメージからコンテナを作成する例です。権限として SYS_TIME も渡しています。
コンテナ内に入り、hwclock コマンドで RTC の時刻表示と設定ができます。
|
RTC に設定されている現在時刻を表示します。
| |
システム時刻を 2021 年 4 月 1 日 9 時 0 分 0 秒に設定します。
| |
システム時刻を RTC に反映させます。
| |
RTC に設定されている時刻が変更されていることを確認します。
|
Armadillo 上で RTC に時刻を設定する
Linuxの時刻には、Linuxカーネルが管理するシステムクロックと、RTCが管理するハードウェアクロックの2種類があります。RTCに時刻を設定するためには、まずシステムクロックを設定します。その後に、ハードウェアクロックをシステムクロックと一致させる手順となります。 システムクロックは、dateコマンドを用いて設定します。dateコマンドの引数には、設定する時刻を [MMDDhhmmCCYY.ss] というフォーマットで指定します。時刻フォーマットの各フィールドの意味を次に示します。 表3.31 時刻フォーマットのフィールド フィールド | 意味 |
---|
MM | 月 | DD | 日(月内通算) | hh | 時 | mm | 分 | CC | 年の最初の2桁(省略可) | YY | 年の最後の2桁(省略可) | ss | 秒(省略可) |
2023年3月2日12時34分56秒に設定する例を次に示します。
システムクロックを設定後、ハードウェアクロックを hwclock コマンドを用いて設定します。
|
現在のハードウェアクロックを表示します。
| |
ハードウェアクロックを協定世界時(UTC)で設定します。
| |
ハードウェアクロックが UTC で正しく設定されていることを確認します。
|
| |
---|
インターネットに接続できている場合は、chronyd により自動的に日時設定が行われます。そのため、手動で日時設定を行う必要はありません。 |
SW2は起動デバイス設定スイッチです。
SW2を操作することで、起動デバイスを設定することができます。 -
-
起動デバイスはeMMCになります。
-
-
起動デバイスはmicroSDになります。
SW1はユーザーが自由に利用できる押しボタンスイッチです。 -
インターフェース仕様(SW1)
表3.32 SW1 信号配列 部品番号 | 名称 | 説明 |
---|
SW1 | ユーザースイッチ | i.MX6ULL の JTAG_MOD ピンに接続
(Low: 押されていない状態、High: 押された状態) |
Linux では、ユーザー空間でイベント(Press/Release)を検出することができます。Linux では、GPIO 接続用キーボードドライバ(gpio-keys)で制御することができます。 ユーザースイッチと信号には、次に示すキーコードが割り当てられています。 表3.33 インプットデバイスファイルとイベントコード ユーザースイッチ | インプットデバイスファイル | イベントコード |
---|
SW1 | /dev/input/by-path/platform-gpio-keys-event
| 148 (KEY_PROG1) |
| |
---|
インプットデバイスは検出された順番にインデックスが割り振られます。USBデバイスなどを接続してインプットデバイスを追加している場合は、デバイスファイルのインデックスが異なる可能性があります。 |
スイッチのプッシュ/リリースイベントを取得するためには、 Podman のイメージからコンテナを作成する際にホスト OS 側の /dev/input ディレクトリを渡す必要があります。
以下は、/dev/input を渡して alpine イメージからコンテナを作成する例です。ここで渡された /dev/input ディレクトリは
コンテナ内の /dev/input にマウントされます。 コンテナ内に入り、evtest コマンドでイベントを確認できます。 |
SW1のボタン プッシュ イベントを検出したときの表示
| |
SW1のボタン リリース イベントを検出したときの表示
|
| |
---|
Armadillo Base OS では、スイッチの制御を簡単に実装できる buttond デーモンを用意しております。
詳細は「ボタンやキーを扱う」 を参照してください。 |
LED は SYS、APP、WWAN が実装されており、Armadillo Base OS にて表3.35「LED状態と製品状態の対応について」に示す状態を表示しています。 LTE モジュール非搭載の LAN モデル及び WLAN モデルは、 WWAN LED をユーザー開放しております。 -
インターフェース仕様
表3.34 LED 信号配列 部品番号 | 名称(色) | 説明 |
---|
SYS | システムLED(緑) | 電源(VCC_3.3V)の入力状態を表示、i.MX6ULLのUART2_CTS_Bピン(GPIO1_IO22)に接続
(Low: 消灯、High: 点灯) | APP | アプリケーションLED(緑) | アプリケーションの状態を表示、i.MX6ULLのUART2_RTS_Bピン(GPIO1_IO23)に接続
(Low: 消灯、High: 点灯) | WWAN | ワイヤレスWAN LED(緑) | LTE通信の状態を表示、i.MX6ULLのUART1_RX_DATAピン(GPIO1_IO17)に接続
(Low: 消灯、High: 点灯) |
Linuxでは、GPIO接続用LEDドライバ(leds-gpio)で制御することができます。 -
sysfs LEDクラスディレクトリ
-
/sys/class/leds/app
-
/sys/class/leds/sys
-
/sys/class/leds/wwan
表3.35 LED状態と製品状態の対応について LED状態\LED名称 | SYS | APP | WWAN |
---|
OFF | 電源OFF | アプリ起動不可 | SIM 未検出または認識中、または LTE モデム未検出 | ON | 電源ON | アプリ起動可能 | LTE 接続済み | Blink Slow | シャットダウン中 | アプリ起動完了 [] | SIM 検出、LTE 未接続 [] | Blink Fast | アップデート中 | アプリエラー [] | SIM 検出、LTE 未接続、電波品質が低い [] |
| |
---|
WLAN/LAN モデルでは WWAN KED を自由に使用することができます。 |
コンテナで使用する
LED を扱うためには、 Podman のイメージからコンテナを作成する際にホスト OS 側の /sys ディレクトリを渡す必要があります。
以下は、/sys を渡して alpine イメージからコンテナを作成する例です。ここで渡された /sys ディレクトリはコンテナ内の /sys にマウントされます。
コンテナ内に入り、brightness ファイルに値を書き込むことで LED の点灯/消灯を行うことができます。
0 を書き込むと消灯、0 以外の値 (1~255) を書き込むと点灯します。
以降の説明では、任意のLEDを示すLEDクラスディレクトリを /sys/class/leds/[LED]/ のように表記します。 [LED] の部分を適宜読みかえてください。
LEDを点灯/消灯する
LEDクラスディレクトリ以下の brightness ファイルへ値を書き込むことによって、LEDの点灯/消灯を行うことができます。
brightness に書き込む有効な値は 0~255です。 brightness に 0 以外の値を書き込むとLEDが点灯します。
| |
---|
Armadillo-IoT ゲートウェイ A6E のLEDには輝度制御の機能がないため、0(消灯)、1~255(点灯)の2つの状態のみ指定することができます。 |
brightness に0を書き込むとLEDが消灯します。
brightness を読み出すとLEDの状態が取得できます。
トリガを使用する
Linux では、LED をある特定のタイミングで光らせることができます。これを「トリガ」と呼びます。LEDクラスディレクトリ以下の trigger ファイルへ値を書き込むことによってLEDの点灯/消灯にトリガを設定することができます。 trigger でサポートされている値は以下の通りです。 表3.36 LEDトリガの種類 設定 | 説明 |
---|
none
| トリガを設定しません | mmc0
| eMMCのアクセスランプにします | mmc1
| microSDスロットのアクセスランプにします | timer
| 任意のタイミングで点灯/消灯を行います。この設定にすることにより、LEDクラスディレクトリ以下にdelay_on, delay_offファイルが出現し、それぞれ点灯時間, 消灯時間をミリ秒単位で指定します | heartbeat
| 心拍のように点灯/消灯を行います | default-on
| 主にLinuxカーネルから使用します。LEDが点灯します |
trigger ファイルを読み出すとサポートしているトリガと、現在有効のトリガが表示されます。 [] が付いているものが現在のトリガです。
以下のコマンドを実行すると、LEDが2秒点灯、1秒消灯を繰り返します。
CON8は機能拡張用のインターフェースです。複数の機能(マルチプレクス)を持つ、 i.MX6ULL の信号線が接続されており、GPIO、UART、I2C、SPI、CAN、PWM等の機能を拡張することができます。 表3.37 CON8 搭載コネクタと対向コネクタ例 名称 | 型番 | メーカー | 備考 |
---|
搭載コネクタ | A1-34PA-2.54DSA(71) | HIROSE ELECTRIC | 許容電流 3A(端子1本あたり) | 対向コネクタ | 6130xx21821 [] | Wurth Elektronik | - |
表3.38 CON8 信号配列 ピン番号 | ピン名 | I/O | 説明 |
---|
1 | VIN | Power | 電源出力(VIN) | 2 | GND | Power | 電源(GND) | 3 | VCC_5V | Power | 電源出力(VCC_5V) | 4 | GND | Power | 電源(GND) | 5 | VCC_3.3V | Power | 電源出力(VCC_3.3V) | 6 | GND | Power | 電源(GND) | 7 | GPIO1_IO01 | In/Out | 拡張入出力、i.MX6ULLのGPIO1_IO01ピンに接続 | 8 | GPIO1_IO02 | In/Out | 拡張入出力、i.MX6ULLのGPIO1_IO02ピンに接続 | 9 | GPIO1_IO03 | In/Out | 拡張入出力、i.MX6ULLのGPIO1_IO03ピンに接続 | 10 | GPIO1_IO04 | In/Out | 拡張入出力、i.MX6ULLのGPIO1_IO04ピンに接続 | 11 | GND | Power | 電源(GND) | 12 | I2C4_SCL | In/Out | 拡張入出力、i.MX6ULLのI2C4_SCLピンに接続 | 13 | I2C4_SDA | In/Out | 拡張入出力、i.MX6ULLのI2C4_SDAピンに接続 | 14 | GPIO3_IO05 | In/Out | 拡張入出力、i.MX6ULLのLCD_DATA00ピンに接続、基板上で10kΩプルダウンされています。 | 15 | GPIO3_IO06 | In/Out | 拡張入出力、i.MX6ULLのLCD_DATA01ピンに接続、基板上で10kΩプルアップ(VCC_3.3V)されています。 | 16 | GPIO3_IO07 | In/Out | 拡張入出力、i.MX6ULLのLCD_DATA02ピンに接続、基板上で10kΩプルダウンされています。 | 17 | GPIO3_IO08 | In/Out | 拡張入出力、i.MX6ULLのLCD_DATA03ピンに接続、基板上で10kΩプルダウンされています。 | 18 | GND | Power | 電源(GND) | 19 | GPIO3_IO10 | In/Out | 拡張入出力、i.MX6ULLのLCD_DATA05ピンに接続、起動デバイス設定スイッチ(SW2)がeMMC側に設定されている時10kΩプルアップ(VCC_3.3V)、SD側に設定されている時10kΩプルダウンされます。 | 20 | GPIO3_IO11 | In/Out | 拡張入出力、i.MX6ULLのLCD_DATA06ピンに接続、基板上で10kΩプルアップ(VCC_3.3V)されています。 | 21 | GPIO3_IO12 | In/Out | 拡張入出力、i.MX6ULLのLCD_DATA07ピンに接続、基板上で10kΩプルダウンされています。 | 22 | GPIO3_IO13 | In/Out | 拡張入出力、i.MX6ULLのLCD_DATA08ピンに接続、基板上で10kΩプルダウンされています。 | 23 | GPIO3_IO14 | In/Out | 拡張入出力、i.MX6ULLのLCD_DATA09ピンに接続、基板上で10kΩプルダウンされています。 | 24 | GPIO3_IO15 | In/Out | 拡張入出力、i.MX6ULLのLCD_DATA10ピンに接続、基板上で10kΩプルダウンされています。 | 25 | GPIO3_IO16 | In/Out | 拡張入出力、i.MX6ULLのLCD_DATA11ピンに接続、起動デバイス設定スイッチ(SW2)がeMMC側に設定されている時10kΩプルダウン、SD側に設定されている時10kΩプルアップ(VCC_3.3V)されます。 | 26 | GPIO3_IO20 | In/Out | 拡張入出力、i.MX6ULLのLCD_DATA15ピンに接続、基板上で10kΩプルダウンされています。 | 27 | GPIO3_IO21 | In/Out | 拡張入出力、i.MX6ULLのLCD_DATA16ピンに接続、基板上で10kΩプルダウンされています。 | 28 | GPIO3_IO22 | In/Out | 拡張入出力、i.MX6ULLのLCD_DATA17ピンに接続、基板上で10kΩプルダウンされています。 | 29 | GPIO4_IO25 | In/Out | 拡張入出力、i.MX6ULLのCSI_DATA04ピンに接続 | 30 | GPIO4_IO26 | In/Out | 拡張入出力、i.MX6ULLのCSI_DATA05ピンに接続 | 31 | GPIO4_IO27 | In/Out | 拡張入出力、i.MX6ULLのCSI_DATA06ピンに接続 | 32 | GPIO4_IO28 | In/Out | 拡張入出力、i.MX6ULLのCSI_DATA07ピンに接続 | 33 | GND | Power | 電源(GND) | 34 | GND | Power | 電源(GND) |
拡張基板の設計に関しては、「拡張基板の設計」も参照ください。 CON5 と CON6 の一部は電源入力用のインターフェースです。 -
インターフェース仕様(CON5)
CON5 には DC ジャックが実装されており、図3.104「ACアダプタの極性マーク」と同じ極性マークのあるACアダプタが使用できます。
対応プラグは内径2.1mm、外形5.5mmのものとなります。
-
インターフェース仕様(CON6:電源入力)
端子台を実装しています。
接続可能な電線については、表3.40「CON6 接続可能な電線」をご確認ください。 表3.39 電源入力関連 CON6 信号配列 ピン番号 | ピン名 | I/O | 説明 |
---|
1 | VIN | Power | 電源入力(+) | 2 | GND | Power | 電源入力(GND) | 12 | GND | Power | 電源入力(GND) |
表3.40 CON6 接続可能な電線 規格 | UL | IEC | 電線範囲 | 26~18 AWG | 0.12~0.9mm2 | 被覆剥き長さ | 5~6mm | 使用可能フェルール端子 | 型番 : MFL25-5BE
メーカー:ミスミ | 推奨ねじ締めトルク | 0.28Nm |
| |
---|
電線の先端に予備半田しないでください。正しい接続ができなくなります。 |
| |
---|
端子台に電線を接続する際、端子台に過度な力を加えないでください。
端子台が破損する恐れがあります。 |
| |
---|
CON5、CON6の電源ライン(VIN)は接続されており、同時に電源を供給することはできません。 |
| |
---|
CON5から電源供給する場合、ACアダプタのDCプラグをDCジャックに接続してから、ACプラグをコンセントに挿してください。 |
| |
---|
電源を再投入する際は、コンデンサに蓄えられた電荷を抜くため、電源を切断後、一定時間以上待つ必要があります。
開発セット付属のACアダプタの場合に必要な時間は以下のとおりです。 -
DCプラグ側で電源を切断した場合 : 約5秒
-
ACプラグ側で電源を切断した場合 : 約1分
コンデンサに蓄えられた電荷が抜ける前に電源を再投入した場合、
電源シーケンスが守られず、起動しない等の動作不具合の原因となります。 |
ここでは、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-IoT ゲートウェイ A6E を用いた製品のソフトウェア設計は、一般的な組み込み開発と基本的には変わりません。
しかし、 Armadillo Base OS という独自OSを搭載しているため、ソフトウェアの設計には特有のポイントがいくつかあります。
本章では、それらの設計時に考慮すべき Armadillo Base OS 特有のポイントについて紹介していきます。 3.7.1. 開発者が開発するもの、開発しなくていいものArmadillo Base OS では、組み込み機器において必要になる様々な機能を標準で搭載しています。 図3.107「開発者が開発するもの、開発しなくていいもの」と図3.108「ゲートウェイコンテナ使用時、開発者が開発するもの、開発しなくていいもの」は、 Armadillo Base OS 搭載製品において、開発者が開発するものと開発しなくていいものをまとめた図です。 開発しなくていいものについては設計を考える必要はありません。
開発するものに絞って設計を進めることができます。 | |
---|
拡張ボードを追加するためにデバイスツリーのカスタマイズが必要となる場合は、デバイスツリー(dtbo)の追加が必要となります。 使用するデバイスによっては、Linux カーネルドライバの追加が必要となり、Linux カーネルのカスタマイズが必要となります。 |
Armadillo Base OSでは基本的にユーザーアプリケーションを Podman コンテナ上で実行します。
そのため、実行環境として Armadillo Base OS を意識する必要はありません。 Podmanは、同じくコンテナを扱えるソフトウェアである Docker と基本的に互換性があります。 アットマークテクノでは、アットマークテクノが提供する Debian GNU/Linux ベースのコンテナイメージを提供しておりますが、それ以外のlink:Docker Hub などから使い慣れたディストリビューションのコンテナイメージを取得して開発することができます。 また Armadillo-IoT ゲートウェイ A6E では、ゲートウェイコンテナというコンテナイメージをプリインストールしています。必要な機能がゲートウェイコンテナに全て含まれているのであれば、VS Code にて設定を実施して Armadillo にインストールするだけでクラウドへの計測データーの送信や Armadillo の簡易な制御が可能となります。 3.7.2.1. LTE 通信を使用する場合に考慮すべきことLTE 通信は、周辺の状況や工事などによって長時間通信ができなくなる可能性があります。そのため、クラウドやサーバーへ送信すべきデーターを即時に送信できない可能性があります。 データーの再送処理や動作しているコンテナ内にキャッシュする処理を実装して、上記状況に備えてください。 Armadillo-IoT ゲートウェイ A6E には、ゲートウェイコンテナがプリインストールされています。
このコンテナを利用することで、インターフェースの操作やクラウドへのデータアップロードなどを簡単に行うことができます。 ゲートウェイコンテナを利用して実施できる内容は下記の通りです。 表3.41 利用できるインターフェース・機能 インターフェース | 機能 |
---|
RS485 (ModbusRTU) | レジスタ読み出し | レジスタ書き込み | 接点入力 2ch | ポーリング監視 | エッジ検出 | 接点出力 2ch | 指定レベル出力 | アプリケーションLED | 点灯/消灯操作 | ユーザースイッチ | 状態取得 |
表3.42 利用できるクラウドベンダー・サービス クラウドベンダー | クラウドサービス |
---|
AWS | AWS IoT Core | Azure | Azure IoT |
インターフェースやクラウドサービスの選択はコンフィグ設定で行う事ができます。
また、センサーデータのログ出力やネットワーク断時のキャッシュ機能にも対応しています。 詳細は、「ゲートウェイコンテナを動かす」 を参照してください。 Armadillo-IoT ゲートウェイ A6E は、バッテリー駆動などで必要となる、省電力・間欠動作での動作を行う為の制御を用意しております。
必要があれば、どのタイミングでスリープ・シャットダウンモードへ遷移するか、なにをトリガーとして起床するかを設計します。
次の章「間欠動作モード・起床条件と状態遷移図」にて、省電力・間欠動作の起床条件・状態遷移を説明します。詳細な使用方法は「省電力・間欠動作機能を使う」に記載しております。 3.7.3.1. 間欠動作モード・起床条件と状態遷移図Armadillo-IoT ゲートウェイ A6E の動作モード・起床条件と状態遷移を次に示します。 次に、各動作モードと利用することのできる起床条件について説明します。 「CPU:動作」、「LTE-M:動作」 状態のモードです。 Armadillo-IoT ゲートウェイ A6Eの電源投入後Linuxカーネルが起動し、まずはアクティブモードに遷移します。 任意のアプリケーションの実行や、外部センサー・デバイスの制御、LTE-MやEthernetでの通信が可能ですが、最も電力を消費するモードです。
アクティブモードの時間をより短くすることで、消費電力を押さえることができます。 「CPU:停止」、「LTE-M:停止」の状態であり最も消費電力を抑えることのできるモードです。 その反面、CPUを停止させ、Linuxカーネルをシャットダウンしている状態であるため、アクティブモードに遷移する場合はLinuxカーネルの起動分の時間がかかります。 シャットダウンモードからアクティブモードに遷移するには、RTCのアラーム割り込みを使用するか、一度電源を切断・再接続を行う必要があります。 「CPU:待機」、「LTE-M:停止」 状態のモードです。 CPU(i.MX6ULL)はパワーマネジメントのSuspend-to-RAM状態になり、LinuxカーネルはPauseの状態になります。
シャットダウンモードと比較すると消費電力は高いですが、Linuxカーネルの起動は不要であるため数秒程度でアクティブモードに遷移が可能です。
ユーザスイッチの投下、RTCアラーム割り込み、GPIO割り込み、USBデバイスの接続、UARTによるデータ受信、によってアクティブモードへの遷移ができます。 | |
---|
Armadillo Base OS バージョン 3.17.3-at5 以降、Cat.M1 モデルで LTE 接続中にスリープモードをご利用になる場合、スリープモードからアクティブモードへ遷移するタイミングで ping による LTE 通信の導通確認を実施します。 ping 導通確認先の IP アドレスは以下の順序・ルールで決定します。「LTE再接続サービス」 で使用している設定ファイルを参照しています。 -
/etc/atmark/connection-recover/gsm-ttyMux0_connection-recover.conf が存在してファイル内に PING_DEST_IP があれば、この値を使用します。
-
/etc/atmark/connection-recover.conf が存在してファイル内に PING_DEST_IP があれば、この値を使用します。
-
両方とも存在しない場合は、8.8.8.8 を導通先として使用します。
|
3.7.3.6. スリープ(SMS 起床可能)モード (Cat.M1 モデルのみ)「CPU:待機」、「LTE-M:待機」 状態のモードです。 スリープモードとの違いは、SMSの受信によって、アクティブモードへの遷移も可能である点です。
LTE-M:待機(PSM)の状態であるため、スリープモードよりも電力を消費します。 ユーザーアプリケーションのログは、不具合発生時の原因究明の一助になるため必ず残しておくことを推奨します。 ユーザーアプリケーションが出力するログは、「電源を切っても保持されるディレクトリ(ユーザーデータディレクトリ)」にも記載があるとおり、 /var/app/volumes/ 以下に配置するのが良いです。 コンテナの中から /var/app/volumes/ ディレクトリにアクセスすることになります。
手順についての詳細は実際に開発を行う箇所にて紹介します。
Ethernet、LTE、BT、WLANなどの無線系のログ
一般に不具合発生時によく疑われる箇所なので、最低でも接続・切断情報などのログを残しておくことをおすすめします。
ソフトウェアのバージョン
/etc/sw-versions というファイルが Armadillo Base OS 上に存在します。
これは、 SWUpdate に管理されている各ソフトウェアのバージョンが記録されているファイルです。
このファイルの内容をログに含めておくことで、当時のバージョンを記録することができます。
A/B 面どちらであったか
アップデート後になにか不具合があって、自動的にロールバックしてしまう場合があります。
後でログを確認する際に、当時 A/B 面どちらであったかで環境が大きく変わってしまい解析に時間がかかる場合があるので、どちらの面で動作していたかをログに残しておくことをおすすめします。 図3.110「現在の面の確認方法」に示すコマンドを実行することで、現在 A/B どちらの面で起動しているかを確認できます。
|
この実行結果から今の面は/dev/mmcblk0p1であることが分かります。
|
Armadillo のネットワークの設定を行います。 本章では、ABOS Web によるネットワーク設定をご紹介します。 コマンドラインによるネットワーク設定は「コマンドラインからネットワーク設定を行う」を参照ください。 | |
---|
閉塞 LTE 網を使用する料金プランをご契約で本サービスをご利用になられる際の注意点。 「LTE再接続サービス」をご利用になられる場合(Cat.1 モデルはデフォルトで有効となっております、Cat.M1 モデルはデフォルト無効です)、コネクション状態確認時 PING 送付先の初期値は 8.8.8.8 ですが、この IP アドレスに対して ping 導通ができない場合、ping 導通が可能となる IP アドレスを指定する必要があります。 設定方法は、「LTE再接続サービス」を参照ください。 |
Armadillo Base OS(以降、 ABOS) には、 Armadillo と作業用 PC が同一 LAN 内に存在していれば Web ブラウザからネットワークの設定や、 SWU イメージのインストールなどを行うことが可能となる、 ABOS Web という機能があります。
この機能は、バージョン v3.17.4-at.7 以降の ABOS に標準で組み込まれています。 現在、ネットワークに関して ABOS Web で設定できるのは以下のものです。 -
WWAN設定
-
WLAN設定
-
各接続設定(各ネットワークインターフェースの設定)
-
DHCPサーバー設定
-
NAT設定
-
VPN設定
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 が動作する Armadillo が、同じ LAN 上に複数あると、ABOS Web に接続する URL のホスト名部分(armadillo.local)は、2台めでは armadillo-2.local、3台めでは armadillo-3.local のように、違うものが自動的に割り当てられます。
どのホスト名が、どの Armadillo のものなのかを判別するのが難しいので、複数台の Armadillo で同時に ABOS Web を動かすときは、LAN に固定 IP アドレスを設定して、IP アドレスで指定できるようにするのがよいでしょう。 |
「SWUイメージの作成」で ABOS Web のログイン用パスワードを設定していない場合、 ABOS Web 初回ログイン時に、 "初回ログイン"のパスワード登録画面が表示されますので、パスワードを設定してください。 "初回ログイン"のパスワード登録画面で、"パスワード" フィールドと "パスワード(確認)" フィールドに、登録したいパスワードを入力してから、"登録" ボタンをクリックしてください。
パスワード登録完了画面が表示されたら、パスワード登録の完了です。 パスワード登録完了画面にある "ログインページ" というリンクをクリックすると、ログイン画面が表示されますので、先ほど登録したパスワードを入力して "ログイン" ボタンをクリックしてください。 ABOS Web に対応した Armadillo が正常に起動していれば、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.115「WWAN設定画面」に、WWAN 設定を行った状態を示します。 無線 LAN モジュールを搭載した Armadillo の、WLAN(無線 LAN)設定を行います。
この設定画面では、WLAN クライアント(子機)としての設定または、WLAN アクセスポイントとしての設定を行うことができます。
クライアントとアクセスポイントのどちらか一方について、接続設定の登録と接続の状態の表示、登録済み設定の削除を行なえます。
クライアントとアクセスポイントのどちらに設定するかは、"動作モード選択"欄で指定します。 クライアント設定とアクセスポイント設定の、それぞれについて、以下に説明します。 3.8.7.1. WLAN 設定(クライアントとしての設定)"動作モード選択"欄で"クライアントとして使用する"を選択すると、クライアント設定画面が表示されます。
もしアクセスポイントに設定済みの場合は、アクセスポイントの設定を削除してください。
そうしないと、動作モードをクライアントに切り替えることができません。
設定項目のうち、ネットワーク名(SSID) は、リストから選択してください。
WLAN アクセスポイントを Armadillo が何も検出できない場合は、このリストが空になります。
セキュリティ方式も、リストから選択してください。
DHCP と 固定 は、DHCP を選択すると DHCP サーバーから IP アドレスを取得します。
固定 を選択すると、固定 IP アドレス設定用の入力フィールドを表示します。
それぞれの入力フィールドに設定値を入力して "接続して保存" ボタンをクリックすると、WLAN クライアント設定を登録して、WLAN 接続動作を実行します。
WLAN 接続設定が行われ、WLAN 接続が確立した状態では、割当たっている IP アドレスなどを "現在のWLAN接続情報" に表示します。 ABOS-WEB上では複数のネットワーク設定を保存することが可能です。
設定項目のうちにネットワーク情報を入力した後、 "保存" ボタンをクリックすると、入力した内容の登録のみを行い、接続は行いません。
登録した設定の一覧は WLAN ページの中央にあるリストに表示されます。
このリストでは WLAN 設定の接続/編集/削除を行うことができます。
保存した設定に接続先を変更したい場合はリストから選択して、"接続" ボタンをクリックしてください。
保存した設定を編集したい場合はリストから選択して、"設定を編集" ボタンをクリックしてください。
保存した設定を削除したい場合はリストから選択して、"設定を削除" ボタンをクリックしてください。 図3.116「WLAN クライアント設定画面」に、WLAN クライアント設定を行った状態を示します。 登録済み WLAN クライアント設定を削除して、WLAN アクセスポイントとの接続を切断するには、"設定を削除" ボタンをクリックしてください。 3.8.7.2. WLAN 設定(アクセスポイントとしての設定)"動作モード選択"欄で"アクセスポイントとして使用する"を選択すると、アクセスポイント設定画面が表示されます。
もしクライアントに設定済みの場合は、クライアントの設定を削除してください。
そうしないと、動作モードをアクセスポイントに切り替えることができません。
設定項目のうち、ブリッジアドレス は、WLAN アクセスポイントに割り当てる IP アドレスを入力してください。
サブネットマスク は、アクセスポイントのサブネットのものを入力してください。
使用周波数は、5GHz と 2.4GHz のうち使用するものを選択してください。
両方の周波数を同時に使用することはできません。
使用チャンネルは、リストから選択してください。
SSID と パスワード に入力した値は、アクセスポイントに設定した Armadillo に WLAN 子機を接続する際に使用します。 それぞれの入力フィールドに設定値を入力して "設定" ボタンをクリックすると、WLAN アクセスポイント設定を登録して、WLAN アクセスポイント動作を開始します。
WLAN アクセスポイント設定が行われ、アクセスポイント動作中の状態では、"現在のアクセスポイント情報" に設定内容を表示します。 図3.117「WLAN アクセスポイント設定画面」に、WLAN アクセスポイント設定を行った状態を示します。 | |
---|
アクセスポイントモードのセキュリティ方式は、WPA2 を使用します。 |
3.8.8. 各接続設定(各ネットワークインターフェースの設定)設定されたネットワーク接続の一覧を表示します。表示した接続のそれぞれについて、接続の有効化(「接続」)や無効化(「切断」)、および接続設定内容の編集や削除を行うことができます。
接続の操作を行う時は、操作したい接続をラジオボタンで選択してください。 ここで、「ネットワーク接続」は、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 conneciton 1" です。
LAN ポートを二つ搭載した Armadillo では、二つめの LAN ポートに対応する "Wired connection 2" も有効です。
Armadillo を LAN と WWAN との間で IPv4 ルーターとして運用する場合は、LAN 接続の設定で IPv4 アドレスを固定 IP アドレスに設定して下さい。
図3.119「LAN 接続設定で固定 IP アドレスに設定した画面」に、LAN 接続の設定編集画面で固定 IP アドレスに設定した状態を示します。 WWAN 接続の接続名は、デフォルトでは "gsm-ttyCommModem" です。 WLAN 接続の接続名は、デフォルトでは、クライアントモードが "abos_web_wlan"、アクセスポイントモードが "abos_web_br_ap" です。 ネットワークインターフェースごとに、接続したネットワーク上で Armadillo を DHCP サーバーとして動作させる設定を行うことができます。
接続済みの DHCP サーバー情報を、画面上部の"現在のDHCP情報"に表示します。
DHCPサーバーの設定を登録する場合は、"DHCP情報入力"欄に設定内容を入力して"設定"ボタンをクリックしてください。
図3.120「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.123「VPN 設定」に、VPN 接続設定を行った状態を示します。 認証方式は、"ユーザ名とパスワード" と "証明書" のどちらか一方を選択できます。
認証方式が "証明書" の場合、.ovpn ファイルに証明書や鍵が埋め込まれていれば、それらのファイルを指定する必要はありません。 ABOS Web は、VPN 接続を設定する際に abos_web_openvpn という名前のコンテナを自動的に作成し、このコンテナで VPN クライアントを実行します。
VPN 接続動作を実行する時には、進行状況を示すログを表示します。 登録済み VPN 設定を削除して、VPN 接続を切断するには、"設定を削除" ボタンをクリックしてください。 各設定画面で行った設定の現在状態を、設定ごとに区切って一覧表示します。 3.9. Network Time Protocol (NTP, ネットワーク・タイム・プロトコル) の設定Armadillo Base OS では chronyd を使っています。 デフォルトの設定(使用するサーバーなど)は /lib/chrony.conf.d/ にあり、
変更用に /etc/chrony/conf.d/ のファイルも読み込みます。
/etc/chrony/conf.d/ ディレクトリに /lib/chrony.conf.d/ と同じファイル名の
設定ファイルを置いておくことで、デフォルトのファイルを読まないようになります。 例えば、 NTP サーバーの設定は servers.conf に記載されてますので、変更する際は
/etc/chrony/conf.d/servers.conf に記載します: |
コンフィグファイルを作成します。
| |
ファイルを保存します。
| |
chronyd サービスを再起動します。
| |
chronyc で新しいサーバーが使用されていることを確認します。
|
ATDE 上の VSCode でゲートウェイコンテナ内で動作するゲートウェイコンテナアプリケーションを開発する手順を示します。 3.10.1. ゲートウェイコンテナアプリケーション開発の流れゲートウェイコンテナアプリケーションを開発する流れは以下のようになります。 「VSCode のセットアップ」 の手順は完了している前提です。 VSCode の左ペインの [A6E] から [GW New Project] を実行し、表示されるディレクトリ選択画面からプロジェクトを保存する
ディレクトリを選択してください。実行するためには右に表示されている三角形ボタンを押してください。
保存先を選択すると、プロジェクト名を入力するダイアログが表示されるので、任意のプロジェクト名を入力してエンターキーを押してください。
ここでは、ホームディレクトリ直下に my_project として保存しています。 初期設定では主に Armadillo と SSH で接続するための秘密鍵と公開鍵の生成を行います。
mkswu を用いて Armadillo の初期設定用の SWU イメージを作成するため、事前に 「SWUイメージの作成」 を参照して SWU の初期設定を行ってください。
作成したプロジェクトディレクトリへ移動して VSCode を起動してください。 VSCode の左ペインの [my_project] から [Generate development swu] を選択します。
選択すると、 VSCode の下部に以下のようなターミナルが表示されます。 このターミナル上で以下のように入力してください。 |
パスフレーズを設定します。設定しない場合は何も入力せず Enter を押します。
| |
ここで何か任意のキーを押すとターミナルが閉じます。
|
Armadillo の初期設定を行う scripts/setup_armadillo.swu が作成されたことを確認してください。 ATDE 上で操作するためにゲートウェイコンテナアプリケーションプロジェクトのディレクトリに含まれています config/ssh_config ファイルを編集して IP アドレスを書き換えてください。 |
Armadillo の IP アドレスに置き換えてください。
|
ゲートウェイコンテナアプリケーションプロジェクトでは現在以下のタスクが実行可能です。
実行するためには VSCode の左ペインの [my_project] から選択します。
App run on Armadillo
ゲートウェイコンテナアプリケーションを実行します。
App stop on Armadillo
ゲートウェイコンテナアプリケーションを停止します。
Generate release swu
リリース用の SWU を作成します。
Gererate development swu
初期設定用の SWU を作成します。「初期設定」 で使用したタスクになります。
Get device certificate file from Armadillo
デバイス証明書を取得します。
3.10.3. Armadillo のセットアップ3.10.3.1. 初期設定用 SWU イメージの書き込みここでは、開発開始時の Armadillo 上でのセットアップ手順について説明します。
「SWUイメージの作成」 で作成した SWU の初期設定用の SWU イメージのインストールがまだの場合は先に実行してください。
その後、 「初期設定」 で作成した scripts/setup_armadillo.swu を 「SWU イメージのインストール」 を参照して Armadillo へインストールしてください。
Armadillo にパスフレーズを設定した場合は、アプリケーションを Armadillo へ転送する時にパスフレーズの入力を求められることがあります。 3.10.4. ゲートウェイコンテナアプリケーション開発ゲートウェイコンテナアプリケーションは、ゲートウェイコンテナ上で動作します。
ゲートウェイコンテナについての詳細は 「ゲートウェイコンテナの概要」 をご参照ください。 3.10.4.1. ゲートウェイコンテナの設定ファイルの編集ゲートウェイコンテナの設定ファイルは app/config ディレクトリに配置されています。 -
cloud_agent.conf: クラウド情報の設定
-
sengins_mgr.conf: インターフェース設定
クラウドと連携する場合、接続先クラウドの情報を入力する必要があります。
設定ファイルは Armadillo Base OS では /var/app/rollback/volumes/gw_container/config/cloud_agent.conf に存在し、VSCode では app/config/cloud_agent.conf に存在します。
接続先の クラウドサービス 種別
ゲートウェイコンテナが接続するクラウドサービスの種別を指定します。
設定ファイル中の以下の箇所が該当します。 [CLOUD]
SERVICE = ;AWS or AZURE 表3.43 [CLOUD] 設定可能パラメータ 項目 | 概要 | 設定値 | 内容 |
---|
SERVICE | 接続先クラウドサービスを指定 | AWS | AWS IoT Core に接続 | Azure | Azure IoT に接続 |
ログ出力
クラウド との接続状態や送受信したデータのログを ログファイルに保存したり、コンソールに出力することが可能です。
設定ファイル中の以下の箇所が該当します。 [LOG]
FILE_LOG = true
STREAM_LOG = true 表3.44 [CLOUD] 設定可能パラメータ 項目 | 概要 | 設定値 | 内容 |
---|
FILE_LOG | ログファイルに出力するか | (デフォルト)true | 出力する | false | 出力しない | STREAM_LOG | コンソールに出力するか | (デフォルト)true | 出力する | false | 出力しない |
AWS
ここでは、 AWS に接続する場合の設定内容を記載します。
設定ファイル中の以下の箇所が該当します。 [AWS]
AWS_IOT_HOST =
AWS_IOT_REGION =
AWS_IOT_ACCOUNTID =
AWS_IOT_ENDPOINT =
AWS_IOT_CERT_FILE = /cert/device/device_cert.pem
AWS_IOT_POLICY_FILE = /config/aws_iot_policy.json
AWS_IOT_SHADOW_ENDPOINT =
AWS_IOT_CA_FILE = /cert/ca/AmazonRootCA1.pem
AWS_IOT_PKCS11_PATH = /usr/lib/plug-and-trust/libsss_pkcs11.so
AWS_IOT_KEY_LABEL = sss:100100F0
AWS_ACCESS_KEY =
AWS_SECRET_KEY =
AWS_IOT_PORT = 443
AWS_IOT_PIN =
| |
---|
上記パラメータのうち、以下のパラメータはAWS IoT Core へのデバイス登録完了後クリアされます。
デバイスを AWS IoT Core から削除した場合など再度デバイス登録を行いたい場合は、再度設定してください。 -
AWS_IOT_ACCOUNTID
-
AWS_ACCESS_KEY
-
AWS_SECRET_KEY
|
Azure
ここでは、 Azure に接続する場合の設定内容を記載します。
設定ファイル中の以下の箇所が該当します。 [AZURE]
AZURE_IOT_DEVICE_DPS_ENDPOINT = global.azure-devices-provisioning.net
AZURE_IOT_DEVICE_DPS_ID_SCOPE =
AZURE_IOT_KEY_FILE = /cert/device/key.pem
AZURE_IOT_CERT_FILE = /cert/device/device_cert.pem 表3.46 [AZURE] 設定可能パラメータ 項目 | 概要 | 設定値・設定例 | 取得方法 |
---|
AZURE_IOT_DEVICE_DPS_ENDPOINT | DPS エンドポイント | (デフォルト)global.azure-devices-provisioning.net | 変更不要 | AZURE_IOT_DEVICE_DPS_ID_SCOPE | Azure IoT Central ID スコープ | (例)0ne12345678 | 図6.72「Azure IoT Hub と DPS の設定を実行する」 で表示された内容を使用 | AZURE_IOT_KEY_FILE | デバイスリファレンスキーファイルパス | (デフォルト)/cert/device/key.pem [] | 変更不要 | AZURE_IOT_CERT_FILE | デバイス証明書ファイルパス | (デフォルト)/cert/device/device_cert.pem [] | 変更不要 |
インターフェースの動作設定を行います。
設定ファイルは Armadillo Base OS では、`/var/app/rollback/volumes/gw_container/config/sensing_mgr.conf`に存在し、VSCode では `app/config/sensing_mgr.conf`に存在します。
全体動作設定
全体的な動作設定を行います。
設定ファイル中の以下の箇所が該当します。 [DEFAULT]
; cloud_config=true or false
cloud_config=false
; send_cloud=true or false
send_cloud=false
; cache=true or false
cache=false
; send_interval[sec]
send_interval=10
; data_send_oneshot=true or false
data_send_oneshot=false
; wait_container_stop[sec]
wait_container_stop=0 表3.47 [DEFAULT] 設定可能パラメータ 項目 | 概要 | 設定値 | 内容 |
---|
cloud_config | クラウドからの設定変更を許容するか | true | 許容する | (デフォルト)false | 無視する | send_cloud | クラウドにデータを送信するか | true | 送信する | (デフォルト)false | 送信しない | cache | キャッシュ実施可否 | true | キャッシュを実施する。ネットワーク状態の異常などによりクラウドへデーターを送信できない場合、キャッシュに計測データ―を一時保存し、ネットワーク復旧後にクラウドへ送信します。 | (デフォルト)false | キャッシュを実施しない | send_interval | データ送信間隔[sec] | 1~10 | この値に従って、クラウドへデータを送信する | data_send_oneshot | データ取得後コンテナを終了させるか | true | 1回データを取得し、コンテナを終了します。コンテナ終了通知をトリガに間欠動作を行う( 「状態遷移トリガにコンテナ終了通知を利用する」 )場合は、この設定にする必要があります。 | (デフォルト)false | コンテナの実行を継続する (設定したインターバルでデータを取得する) | wait_container_stop | コンテナ終了までの待ち時間[sec] | 0~60 | data_send_oneshot が true の場合、クラウドへのデータ送信後、設定した時間 wait してからコンテナを終了する [] |
| |
---|
クラウドへのデータ送信は send_interval で指定した間隔毎に行います。
値の取得間隔は、後述の通り各項目毎に指定することができます。
値を取得するタイミングとクラウドへのデータ送信のタイミングを近くするためには、
値の取得間隔より send_interval を短くするか、同じにすることを推奨します。 |
ログ出力
取得したデータのログを ログファイルに保存したり、コンソールに出力することが可能です。
設定ファイル中の以下の箇所が該当します。 [LOG]
file=true
stream=true 表3.48 [LOG] 設定可能パラメータ 項目 | 概要 | 設定値 | 内容 |
---|
FILE_LOG | ログファイルに出力するか | (デフォルト)true | 出力する | false | 出力しない | STREAM_LOG | コンソールに出力するか | (デフォルト)true | 出力する | false | 出力しない |
CPU_temp
CPU 温度読み出しに関する設定を行います。
設定ファイル中の以下の箇所が該当します。 [CPU_temp]
; type=polling or none
type=polling
; polling_interval[sec]
polling_interval=1 表3.49 [CPU_temp] 設定可能パラメータ 項目 | 概要 | 設定値 | 内容 |
---|
type | 動作種別 | (空欄) or none | CPU 温度取得を行わない | polling | ポーリング | polling_interval | データ取得間隔[sec] | 1~3600 | この値に従って、CPU 温度を読み出します |
接点入力
接点入力に関する設定を行います。
設定ファイル中の以下の箇所が該当します。 [DI1]
; type=polling or edge
type=
; interval[sec]
interval=
; edge_type=falling or rising or both
edge_type=
[DI2]
; type=polling or edge
type=
; interval[sec]
interval=
; edge_type=falling or rising or both
edge_type= 表3.50 [DI1,DI2] 設定可能パラメータ 項目 | 概要 | 設定値 | 内容 |
---|
type | 動作種別 | (空欄) or none | 接点入力状態取得を行わない | polling | ポーリング | edge | エッジ検出。データ取得間隔に設定した周期で値を取得し、前回取得時から指定方向に値が変化した場合、クラウドへデータ―を送信します。 | interval | データ取得間隔[sec] | 1~3600 | この値に従って、値を読み出します | edge_type | エッジ検出設定 | falling | 立ち下がりエッジ | rising | 立ち上がりエッジ | both | 両方 |
接点出力
接点出力に関する設定を行います。
設定ファイル中の以下の箇所が該当します。
表3.47「[DEFAULT] 設定可能パラメータ」 において、クラウドと通信しない場合はゲートウェイコンテナ起動後に設定した内容を出力します。クラウドと通信する場合は、「クラウドからの操作」 がトリガとなり、出力を開始します。 [DO1]
; output_state=high or low
output_state=
; output_time[sec]
output_time=
; output_delay_time[sec]
output_delay_time=
[DO2]
; output_state=high or low
output_state=
; output_time[sec]
output_time=
; output_delay_time[sec]
output_delay_time= 表3.51 [DO1,DO2] 設定可能パラメータ 項目 | 概要 | 設定値 | 内容 |
---|
output_state | 出力状態 | high | High 出力。クラウドからの設定内容更新が有効の場合に、クラウドからの設定変更が可能です。 | low | Low 出力。クラウドからの設定内容更新が有効の場合に、クラウドからの設定変更が可能です。 | disable | 「電源を安全に切るタイミングを通知する」 で接点出力を使用する場合など、ゲートウェイコンテナで接点出力を使用しないときに設定します。また、この値に設定すると、クラウドからの設定変更・動作指示は無視されます。 | 指定なし | ゲートウェイコンテナで接点出力の初期状態を設定しないときに使用します。接点出力を設定しないため、ゲートウェイコンテナ起動時の出力状態になります。クラウドからの設定内容更新が有効の場合に、クラウドからの設定変更が可能です。 | output_time | 出力時間[sec] | 1~3600 | 出力コマンド実行後に output_state で指定したレベルを出力する時間。 0 を指定すると出力値を固定します。 | output_delay_time | 出力遅延時間[sec] | 0~3600 | 出力コマンド実行後、指定した時間遅延して出力します。 |
設定と DO の出力タイミングの関連を 図3.135「DO の出力タイミング」 に示します。
(1) ゲートウェイコンテナはクラウドからの要求を取り込みます (2) クラウドからの要求を取り込んでから output_delay_time 経過後、出力を切り替えます (3) output_time 経過後出力を戻します
RS485
RS485 に関する設定を行います。
設定ファイル中の以下の箇所が該当します。
なお、RS485_Data1 から RS485_Data4 まで、4個のデータについて設定することができます。
デフォルトでは RS485_Data1 のみファイルに記載されているため、RS485_Data2, RS485_Data3, RS485_Data4 については適宜コピーして記載してください。 [RS485_Data1]
;[RS485_Data1] ~ [RS485_Data4]
method=none
baudrate=
data_size=
; parity=none or odd or even
parity=
; stop=1 or 2
stop=
device_id=
func_code=
register_addr=
register_count=
; endian=little or big
endian=
; interval[sec]
interval=
; data_offset is option
data_offset=
; data_multiply is option
data_multiply=
; data_devider is option
data_devider= 表3.52 [RS485_Data1, RS485_Data2, RS485_Data3, RS485_Data4] 設定可能パラメータ 項目 | 概要 | 設定値 | 内容 |
---|
method | 通信種別 | none | RS485を利用しない | rtu | Modbus-RTU | data_size | データサイズ | 8 | | baudrate | ボーレート | 1200~38400[bps] | 通信速度を指定します | parity | パリティビット | none | None | odd | Odd | even | Even | stop | ストップビット | 1 | 1 | 2 | 2 | device_id | Modbusスレーブ機器のデバイスID | 0x01 〜 0xF7 | | func_code | ファンクションコード | 0x03 or 0x04 | | register_addr | レジスタアドレス | 機器依存 | 値を読み出すレジスタのアドレスを指定 | register_count | 読み出しレジスタ数 | 1 or 2 | 一度に読み出すレジスタ数を指定 | endian | エンディアン設定 | little | リトルエンディアン | big | ビッグエンディアン | interval | データ取得間隔[sec] | 1~3600 | この値に従って、値を読み出します | data_offset | 読み出し値に加算する値 | 任意の値(整数値) | 指定は任意です。読み出したレジスタ値に加算する値を指定します | data_multiply | 読み出し値と乗算する値 | 任意の値(整数値) | 指定は任意です。読み出したレジスタ値と乗算する値を指定します | data_devider | 読み出し値と除算する値 | 任意の値(整数値) | 指定は任意です。読み出したレジスタ値と除算する値を指定します |
3.10.4.4. ゲートウェイコンテナアプリケーションの開始ゲートウェイコンテナアプリケーションのメインファイルは app/src/main.py です。
VSCode の左ペインの [my_project] から [App run on Armadillo] を実行すると、
変更内容を反映したゲートウェイコンテナアプリケーションが起動します。 VSCode のターミナルに以下のメッセージが表示されることがあります。
これが表示された場合は yes と入力して下さい。 3.10.4.5. ゲートウェイコンテナアプリケーションの停止VSCode の左ペインの [my_project] から [App stop on Armadillo] を選択すると、
ゲートウェイコンテナアプリケーションが停止します。 3.10.4.6. ゲートウェイコンテナアプリケーションが使用するデバイス証明書の取得VSCode の左ペインの [my_project] から [Get device certificate file from Armadillo] を実行すると、
ゲートウェイコンテナアプリケーションが使用するデバイス証明書を取得することができます。
取得したデバイス証明書は app/device/cert ディレクトリに保存されます。 開発したゲートウェイコンテナが想定通り動作しているかを確認してください。 ここでは完成したゲートウェイコンテナアプリケーションをリリース版としてビルドする場合の手順について説明します。 VSCode の左ペインの [my_project] から [Generate release swu] を実行すると、
リリース版の SWU イメージが作成されます。 作成した SWU イメージは scripts/ ディレクトリ下に release_gw-app.swu というファイル名で保存されます。 リリース版のゲートウェイコンテナアプリケーションを含んだ SWU イメージを Armadillo に展開します。
事前に 「SWUイメージの作成」 を参照して SWU の初期設定を行ってください。 VSCode の左ペインの [my_project] から [Generate release swu] を実行すると、
SWU イメージが作成されます。
リリース版のビルドで生成した SWU イメージを 「SWU イメージのインストール」 を参照して Armadillo へインストールすると、
Armadillo 起動時にアプリケーションも自動起動します。 ここではシェルスクリプトおよび Python を使った CUI アプリケーションの開発方法を紹介します。
開発手順としてはシェルスクリプトと Python で同じであるため、シェルスクリプトの場合の例で説明します。 3.11.1. CUI アプリケーション開発の流れArmadillo 向けに CUI アプリケーションを開発する場合の流れは以下のようになります。 VSCode の左ペインの [A6E] から [Shell New Project] を実行し、表示されるディレクトリ選択画面からプロジェクトを保存する
ディレクトリを選択してください。実行するためには右に表示されている三角形ボタンを押してください。
Python の場合は [Python New Project] を実行してください。
保存先を選択すると、プロジェクト名を入力するダイアログが表示されるので、任意のプロジェクト名を入力してエンターキーを押してください。
ここでは、ホームディレクトリ直下に my_project として保存しています。 ここでは、実際に Armadillo 上でサンプルアプリケーションを起動する場合の手順を説明します。
プロジェクトディレクトリへ移動し VSCode を起動します。 プロジェクトには下記のディレクトリがあります。 デフォルトのコンテナコンフィグでは app の src/main.sh または Python の場合に src/main.py を実行しますので、リネームが必要な場合にコンテナのコンフィグも修正してください。 このサンプルアプリケーションは、CPU と SOC の温度を /vol_data/log/temp.txt に出力し、
アプリケーション LED を点滅させます。 初期設定では主に Armadillo と SSH で接続するための秘密鍵と公開鍵の生成を行います。
作成したプロジェクトディレクトリへ移動して VSCode を起動してください。 VSCode の左ペインの [my_project] から [Setup environment] を実行します。 選択すると、 VSCode の下部に以下のようなターミナルが表示されます。 このターミナル上で以下のように入力してください。 |
パスフレーズを設定します。設定しない場合は何も入力せず Enter を押します。
| |
1 でパスフレーズを設定した場合は、確認のため再度入力してください。
| |
ここで何か任意のキーを押すとターミナルが閉じます。
|
パスフレーズを設定した場合は、アプリケーションを Armadillo へ転送する時にパス
フレーズの入力を求められることがあります。 | |
---|
ssh の鍵は $HOME/.ssh/id_ed25519_vscode (と id_ed25519_vscode.pub ) に保存されていますので、
プロジェクトをバックアップする時は $HOME/.ssh も保存してください。 |
3.11.3.4. アプリケーション実行用コンテナイメージの作成Armadillo 上でアプリケーションを実行するためのコンテナイメージを作成します。
ここで作成したコンテナイメージは SWU イメージを使用して Armadillo へインストールするため、
事前に 「SWUイメージの作成」 を参照して SWU の初期設定を行ってください。 コンテナイメージの作成および SWU イメージの作成も VSCode で行います。
VSCode の左ペインの [my_project] から [Generate development swu] を実行します。 コンテナイメージの作成にはしばらく時間がかかります。
VSCode のターミナルに以下のように表示されるとコンテナイメージの作成は完了です。 作成した SWU イメージは my_project ディレクトリ下に development.swu という
ファイル名で保存されています。 3.11.4. Armadillo 上でのセットアップ3.11.4.2. ssh 接続に使用する IP アドレスの設定VSCode 上で ABOSDE(Armadillo Base OS Development Environment) から、
ABOS Web が動作している Armadillo の一覧を確認し、
指定した Armadillo の IP アドレスを ssh 接続に使用することができます。
ただし、ATDE のネットワークを NAT に設定している場合は Armadillo がリストに表示されません。 図3.147「ABOSDE で ローカルネットワーク上の Armadillo をスキャンする」 の赤枠で囲われているボタンをクリックすることで、
ローカルネットワーク上で ABOS Web が実行されている Armadillo をスキャンすることができます。 図3.148「ABOSDE を使用して ssh 接続に使用する IP アドレスを設定する」 の赤枠で囲われているマークをクリックすることで、
指定した Armadillo の IP アドレスを ssh 接続に使用する IP アドレスに設定することができます。 図3.149「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」タスクを再実行してください。 |
VSCode の左ペインの [my_project] から [App run on Armadillo] を実行すると、
アプリケーションが Armadillo へ転送されて起動します。 VSCode のターミナルに以下のメッセージが表示されることがあります。
これが表示された場合は yes と入力して下さい。 アプリケーションを終了するには VSCode の左ペインの [my_project] から [App stop on Armadillo] を実行してください。 開発したアプリケーションが想定通り動作しているかを確認してください。 ここでは完成したアプリケーションをリリース版としてビルドする場合の手順について説明します。 VSCode の左ペインの [my_project] から [Generate release swu] を実行すると、
リリース版のアプリケーションを含んだ SWU イメージが作成されます。
事前に 「SWUイメージの作成」 を参照して SWU の初期設定を行ってください。 作成した SWU イメージは my_project ディレクトリ下に release.swu というファイル名で保存されています。 この SWU イメージを 「SWU イメージのインストール」 を参照して Armadillo へインストールすると、
Armadillo 起動時にアプリケーションも自動起動します。 3.11.8. Armadillo 上のコンテナイメージの削除development.swu または release.swu を Armadillo にインストールすることで保存されたコンテナイメージを削除する方法は、
「VSCode から実行する」 を参照してください。
Armadillo 上で動作するシステムの開発が完了したら、製造・量産に入る前に開発したシステムのテストを行ってください。 テストケースは開発したシステムに依ると思いますが、 Armadillo で開発したシステムであれば基本的にテストすべき項目について紹介します。 長期間のランニングテストは実施すべきです。 ランニングテストで発見できる現象としては、以下のようなようなものが挙げられます。
長期間稼働することでソフトウェアの動作が停止してしまう
開発段階でシステムを短い時間でしか稼働させていなかった場合、長期間ランニングした際になんらかの不具合で停止してしまう可能性が考えられます。 開発が完了したら必ず、長時間のランニングテストでシステムが異常停止しないことを確認するようにしてください。 コンテナの稼働情報は podman stats コマンドで確認することができます。
メモリリークが発生する
アプリケーションのなんらかの不具合によってメモリリークが起こる場合があります。 また、運用時の Armadillo は基本的に overlayfs で動作しています。
そのため、外部ストレージやボリュームマウントに保存している場合などの例外を除いて、動作中に保存したデータは tmpfs (メモリ)上に保存されます。
よくあるケースとして、動作中のログなどのファイルの保存先を誤り、 tmpfs 上に延々と保存し続けてしまうことで、メモリが足りなくなってしまうことがあります。 長時間のランニングテストで、システムがメモリを食いつぶさないかを確認してください。 メモリの空き容量は図3.155「メモリの空き容量の確認方法」に示すように free コマンドで確認できます。
開発したシステムが、想定した条件下で正しく動作することは開発時点で確認できていると思います。
しかし、そのような正常系のテストだけでなく、正しく動作しない環境下でどのような挙動をするのかも含めてテストすべきです。 よくあるケースとしては、動作中に電源やネットワークが切断されてしまった場合です。 電源の切断時には、 Armadillo に接続しているハードウェアに問題はないか、電源が復旧した際に問題なくシステムが復帰するかなどをよくテストすると良いです。 ネットワークの切断時には、再接続を試みるなどの処理が正しく実装されているか、 Armadillo と サーバ側でデータなどの整合性が取れるかなどをよくテストすると良いです。 この他にもシステムによっては多くの異常系テストケースが考えられるはずですので、様々な可能性を考慮しテストを実施してから製造・量産ステップに進んでください。 | |
| | | |
| |