| | 本章では、ここまでの内容で紹介しきれなかった、より細かな Armadillo の設定方法や、開発に役立つヒントなどを紹介します。 各トピックを羅列していますので、目次の節タイトルからやりたいことを探して辞書的にご使用ください。 Armadillo BaseOS ではルートファイルシステムに overlayfs を採用しています。 そのため、ファイルを変更した後 Armadillo の電源を切ると変更内容は保持されません。
開発中などに rootfs の変更内容を保持するには、変更したファイルに対して persist_file コマンドを使用します。 開発以外の時は安全のため、ソフトウェアアップデートによる更新を実行してください。
SWUpdate に関しては 「アップデート機能について」 を参照してください。 rootfs の内容を変更しても、ソフトウェアアップデートを実施した際に変更した内容が保持されない可能性があります。
ソフトウェアアップデート実施後も変更内容を保持する手順に関しては 「swupdate_preserve_files について」 を参照してください。 persist_file コマンドの概要を 図6.1「persist_file のヘルプ」 に示します。
ファイルの保存・削除手順例
|
追加・変更したファイルを rootfs へコピーします。
| |
-r を指定すると、ひとつ前の rm -f コマンドで削除したファイルがrootfsからも削除されますのでご注意ください。
| |
すでに rootfs に存在するファイルも一度削除してからコピーするため、このようなメッセージが表示されます。
|
ソフトウェアアップデート後も変更を維持する手順例
|
何らかのファイルの内容を変更します。
| |
-P オプションを付与して persist_file を実行します。
| |
swupdate_preserve_files に追加されたことを確認します。
|
変更ファイルの一覧表示例
|
rootfs のファイルを見せないディレクトリは opaque directory と表示されます。
| |
削除したファイルは whiteout と表示されます。
|
パッケージをインストールする時はapkコマンドを使用してメモリ上にインストールできますが、
persist_file コマンドで rootfs に直接インストールすることも可能です。
|
この例では Armadillo を再起動せずにインストールしたコマンドを使用できましたが、Armadillo の再起動が必要となるパッケージもありますので、その場合は Armadillo を再起動してください。
|
Armadillo Base OS において、ユーザーアプリケーションは基本的にコンテナ内で実行されます。
3章開発編で紹介した開発手順では、基本的に SWUpadate を使用してコンテナを生成・実行していました。 以下では、より自由度の高いコンテナの操作のためにコマンドラインからの操作方法について紹介します。 6.2.1. Podman - コンテナ仮想化ソフトウェアとはコンテナとはホスト OS 上に展開される仮想的なユーザ空間のことです。
コンテナを使用することで複数の Armadillo-610 でも同一の環境がすぐに再現できます。
ゲスト OS を必要としない仮想化であるため、アプリケーションの起動が素早いという特徴があります。 Podman とはこのようなコンテナを管理するためのソフトウェアであり、使用方法は
コンテナ管理ソフトウェアの 1 つである Docker と互換性があります。 この章では、コンテナ仮想化ソフトウェアの 1 つである Podman の基本的な使い方について説明します。
Armadillo-610 で実行させたいアプリケーションとその実行環境自体を 1 つの Podman イメージとして扱うことで、
複数の Armadillo-610 がある場合でも、全てのボード上で同一の環境を再現させることが可能となります。 この章全体を通して、イメージの公開・共有サービスである Docker Hub から取得した、Alpine Linux のイメージを
使って説明します。 イメージからコンテナを作成するためには、podman_start コマンドを実行します。
podman や docker にすでに詳しいかたは podman run コマンドでも実行できますが、ここでは 「コンテナ起動設定ファイルを作成する」 で紹介するコンテナの自動起動の準備も重ねて podman_start を使います。
イメージは Docker Hub から自動的に取得されます。
ここでは、簡単な例として "ls /" コマンドを実行するコンテナを作成します。 |
コンテナのコンフィグを作成します。このファイルでは、コンテナのイメージやコマンド、デバイスへのアクセス権限を設定します。詳しい設定の説明には 「コンテナ起動設定ファイルを作成する」 を参照ください。
| |
コンテナのイメージを取得します。イメージが Armadillo に置いてない場合は「Error: docker.io/alpine: image not known」の様なエラーで失敗します。
| |
コンテナを起動します。これは Armadillo 起動時に自動的に起動されるコンテナと同じものになります。自動起動が不要な場合には set_autostart no で無効化できます。
| |
podman logs コマンドで出力を確認します。
|
"ls /" を実行するだけの "my_container" という名前のコンテナが作成されました。
コンテナが作成されると同時に "ls /" が実行され、その結果がログに残ります。
ここで表示されているのは、コンテナ内部の "/" ディレクトリのフォルダの一覧です。 | |
---|
podman_start でコンテナが正しく起動できない場合は podman_start -v <my_container> で podman run のコマンドを確認し、 podman logs <my_container> で出力を確認してください。
|
コンテナを作成するためのイメージは、イメージ一覧を表示する podman images コマンドで確認できます。 podman images コマンドの詳細は --help オプションで確認できます。 作成済みコンテナ一覧を表示するためには podman ps コマンドを実行します。 一覧表示により、コンテナ名やコンテナ ID を確認することができます。-a オプションを付けない場合は、動作中のコンテナのみ表示されます。
podman ps コマンドの詳細は --help オプションで確認できます。 作成済みのコンテナを起動するためには podman start コマンドを実行します。 -a オプションを与えると、コンテナ内で実行されたアプリケーションの出力を確認できます。 ここで起動している my_container は、起動時に "ls /" を実行するようになっているので、その結果が出力されます。
podman start コマンドの詳細は --help オプションで確認できます。 動作中のコンテナを停止するためには podman stop コマンドを実行します。 podman stop コマンドの詳細は --help オプションで確認できます。 コンテナに対して変更が行われた状態で、そのままコンテナを停止してしまうと変更が失なわれてしまいます。 変更を保存するには二つの方法があります。
podman commit コマンドで保存する。
podman commitで保存する度に、変更が行なわれた差分が保存されます。
繰り返し差分を保存すると、イメージサイズが大きくなってしまいます。
ストレージ容量が不足する場合は、ベースとなるOSのイメージから作り直してください。
「電源を切っても保持されるディレクトリ(ユーザーデータディレクトリ)」を使用する。
podman_start の add_volumes コマンドでコンテナに Armadillo Base OS のディレクトリをコンテナで使うことができます。
保存するデータの性質によって、保存先を選択してください。 -
/var/app/volumes/myvolume : アップデートした場合はコピーされません。
ログやデータベースなど、アプリケーションが作成し続けるようなデータの保存に向いています。
-
myvolume か /var/app/rollback/volumes/myvolume : アップデートの際にコピーしてアップデートを行うので、アップデート中でも安全に使いつづけます。
アプリケーションと一緒にアップデートするようなデータの保存に向いています。
6.2.2.7. コンテナの自動作成やアップデートpodman run, podman commitでコンテナを作成できますが、定期的にアップデートをする際には
コンテナの作成やアップデートを自動化できると便利です。 これを実現するために、Dockerfileとpodman buildを使います。この手順はArmadilloで実行可能です。
イメージを docker.io のイメージから作りなおします
イメージを前のバージョンからアップデートします
この場合、 podman_partial_image コマンドを使って、差分だけをインストールすることもできます。 [armadillo ~/podman-build-update]# podman_partial_image -b my_image:1 \
-o my_image_2_partial.tar my_image:2
[armadillo ~/podman-build-update]# ls -lh
-rw-r--r-- 1 root root 88 Dec 21 15:24 Dockerfile
-rw-r--r-- 1 root root 9.4M Dec 21 15:26 my_image_1.tar
-rw-r--r-- 1 root root 9.4M Dec 21 15:26 my_image_2.tar
-rw-r--r-- 1 root root 51K Dec 21 15:26 my_image_2_partial.tar
作成した .tar アーカイブは 「mkswu の .desc ファイルを編集する」 の swdesc_embed_container と swdesc_usb_container で使えます。 作成済みコンテナを削除する場合は podman rm コマンドを実行します。 podman ps コマンドの出力結果より、コンテナが削除されていることが確認できます。
podman rm コマンドの詳細は --help オプションで確認できます。 [armadillo ~]# podman rm --help podmanのイメージを削除するには podman rmi コマンドを実行します。
イメージを削除するためには、そのイメージから作成したコンテナを先に削除しておく必要があります。
podman rmi コマンドにはイメージ ID を指定する必要があるため、podman images コマンドで確認します。 podman images コマンドの出力結果より、コンテナが削除されていることが確認できます。
podman rmi コマンドの詳細は --help オプションで確認できます。 | |
---|
SWU で転送されたイメージは podman images で Read-Only として表示されますので、
podman rmi を実行するとエラーとなります。
その場合は abos-ctrl podman-rw rmi をご使用ください。 abos-ctrl podman-rw については 「イメージを eMMC に保存する」 を参照してください。
|
実行中のコンテナに接続し、コンテナ内で指定したコマンドを実行するには podman exec コマンドを実行します。
podman exec コマンドでコンテナ内部のシェルを起動すると、コンテナ内部を操作できるようになります。ここでは、sleep infinity コマンドを
実行して待ち続けるだけのコンテナを作成し、そのコンテナに対して podman exec コマンドでシェルを起動する例を示します。 podman_start コマンドでコンテナを作成し、その後作成したコンテナ内で sh を実行しています。
sh を実行すると、コンテナ内のプロンプトが表示されコンテナ内部を操作できるようになります。
上記ではコンテナ内で、ps コマンドを実行しています。コンテナ作成時に実行した sleep と podman exec で実行した
sh がプロセスとして存在していることが確認できます。
コンテナ内のシェルから抜ける時は exit コマンドを実行します。 podman exec コマンドから抜けても、コンテナがまだ実行中です。コンテナを停止したい場合は podman stop sleep_container か podman kill sleep_container で停止して podman rm sleep_container でそのコンテナを削除してください。
podman exec コマンドの詳細は --help オプションで確認できます。 複数のコンテナを実行している環境で、それらのコンテナ間で通信を行う方法を示します。
これにより、例えば SQL サーバを実行しているコンテナに対し別のコンテナから接続するといった
使い方ができます。 コンテナには作成した時点でローカル IP アドレスが割り当てられるので、コンテナの名前かその IP アドレスで通信を行うことができます。 準備として、2 つのコンテナを作成します。 コンテナに割り当てられた IP アドレスを確認するには podman inspect コマンドを実行します。 これらの IP アドレスを使って、一方のコンテナからもう一方のコンテナへ対し ping コマンドで疎通確認を行うことができます。 このように、my_container_1(10.88.0.108) から my_container_2(10.88.0.109) への通信が確認できます。 6.2.2.12. podでコンテナのネットワークネームスペースを共有するpodman_start で pod 機能を使うことができます。
pod を使うことで、複数のコンテナが同じネットワークネームスペースを共有することができます。
同じ pod の中のコンテナが IP の場合 localhost で、 unix socket の場合 abstract path で相互に接続することができます。
コンテナと同じく、 /etc/atmark/containers/[NAME].conf ファイルを作って、 set_type pod を設定することで pod を作成します。 pod を使う時にコンテナの設定ファイルに set_pod [NAME] の設定を追加します。 ネットワークネームスペースは pod を作成するときに必要なため、 ports , network と ip の設定は pod
のコンフィグファイルに入れなければなりません。 必要であれば、他の podman pod create のオプションを add_args で設定することができます。 .conf ファイルで使用できる各種パラメータについては、「コンテナ起動設定ファイルを作成する」を参照してください。
podman_start で podman の network も作成ことができます。
デフォルトの 10.88.0.0/16 が使えない場合、あるいはコンテナ同士で接続できないようにしたい場合は使ってください。 コンテナと同じく、 /etc/atmark/containers/[NAME].conf ファイルを作って、 set_type network を設定することで network を作成します。 そのネットワークを使う時にコンテナの設定ファイルに set_network [NAME] の設定をいれます。 ネットワークのサブネットは set_subnet [SUBNET] で設定します。
この設定は set_type network の後しか使えませんので、set_type はファイルの最初のところに使ってください 他の podman network create のオプションが必要であれば、 add_args で設定することができます。 .conf ファイルで使用できる各種パラメータについては、「コンテナ起動設定ファイルを作成する」を参照してください。
podman では REST API による管理アクセスも可能です。 自分のコンテナから他のコンテナの管理が必要な場合に、ホストの podman サービスを有効にして、
コンテナに /run/podman をボリュームマウントすれば podman --remote で管理できます。 | |
---|
コンテナの設定によって podman の socket へのパスが自動設定されない場合もあります。
podman --remote でエラーが発生した場合に CONTAINER_HOST=unix:/path/to/podman.sock で
socket へのパスを設定してください。 |
Armadillo のホスト側の udev rules からコンテナを起動する場合は podman_start 等を直接実行すると
udev の子プロセス管理によってコンテナが停止されますので、その場合はサービスを有効にし、
podman_start --create <container> コマンドまたは set_autostart create の設定でコンテナを生成した上
podman --remote start <container> で起動してください。 6.2.2.15. リモートリポジトリにコンテナを送信する
イメージをリモートリポジトリに送信する:
[armadillo ~]$ podman image push <localimage> docker://<registry>/<remoteimage>:<tag>
set_pull always を設定しないかぎり、SWUpdateでダウンロードの命令を送らないとアップデートを行いません。
(mkswuについては「Armadillo のソフトウェアをアップデートする」を参考にしてください) [ATDE ~/mkswu]$ cp /usr/share/mkswu/examples/pull_container_nginx.desc .
[ATDE ~/mkswu]$ cp -r /usr/share/mkswu/examples/nginx_start .
[ATDE ~/mkswu]$ cat pull_container_nginx.desc
swdesc_option version=1
swdesc_pull_container "docker.io/nginx:alpine"
swdesc_files --extra-os nginx_start
[ATDE ~/mkswu]$ mkswu pull_container_nginx.desc
Enter pass phrase for /home/atmark/mkswu/swupdate.key:
pull_container_nginx.swu を作成しました。
6.2.2.16. イメージを eMMC に保存するArmadillo Base OS のデフォルトでは、Podman のデータは tmpfs に保存されます。 起動時にコンテナを起動するにはイメージを eMMC に書き込む必要があります。
開発が終わって運用の場合は 「イメージを SWUpdate で転送する」 でコンテナのイメージを転送します。この場合は読み取り専用の app パーティションのサブボリュームに展開します。 開発の時に以下の abos-ctrl podman-rw か abos-ctrl podman-storage --disk のコマンドを使って直接にイメージを編集することができます。 | |
---|
ここで紹介する内容はコンテナのイメージの管理の説明です。データベース等のコンテナから書き込みが必要な場合には 「コンテナの変更を保存する」 にあるボリュームの説明を参照してください。 |
abos-ctrl podman-rw を使えば、read-only になっているイメージを扱う事ができます。
abos-ctrl podman-storage はメモリとディスクの切り替えの他に、読み書きストレージから読み取り専用ストレージへのコピーもできます。
|
イメージを書き込み可能ストレージに取得します。
| |
abos-ctrl podman-storage をオプション無しで実行します。
| |
書き込み可能ストレージにイメージがある場合に対応を聞かれます。今回はコピー(copy)します。
| |
abos-ctrl podman-storage にオプションを指定しなかったので、ストレージが tmpfs のままになります。すでに --disk で切り替えた場合にディスクのままでも可能です。
| |
コピーの確認します。イメージが読み取り専用(R/O, Read only)になりました。
|
| |
---|
podman が壊れやすいので、デフォルトの「abos-ctrl podman-storage --tmpfs」で運用することを推奨しますが、tmpfs の容量が小さくてイメージの操作には向いてません。 開発時には「abos-ctrl podman-storage --disk」の状態で作業を行い、運用時には「abos-ctrl podman-storage --tmpfs」に戻してください。
戻る際に「copy」を選択肢する場合は一時的なストレージをそのまま使いつづけますので、すべての変更が残ります。 |
| |
---|
SWUpdate でアップデートをインストールする際には、/var/lib/containers/storage_readonly ディレクトリの不要になったイメージを自動的に削除します。 自動起動させる予定がなくても、「コンテナ起動設定ファイルを作成する」 を参考にして、 /etc/atmark/containers/*.conf を使ってください。 set_autostart no を設定することで自動実行されません。 |
6.2.2.17. イメージを SWUpdate で転送する
イメージをファイルに保存する:
[armadillo ~]$ podman image save -o <myimage>.tar <localimage>
ファイルをSWUpdateのイメージに入れる。
二つのやり方があります:
swuイメージ内に組み込む
[ATDE ~/mkswu]$ cp /usr/share/mkswu/examples/embed_container_nginx.desc .
[ATDE ~/mkswu]$ cp -r /usr/share/mkswu/examples/nginx_start .
[ATDE ~/mkswu]$ cat embed_container_nginx.desc
swdesc_option version=1
swdesc_embed_container "nginx_alpine.tar"
swdesc_files --extra-os nginx_start
[ATDE ~/mkswu]$ podman pull --arch arm64 docker.io/nginx:alpine
[ATDE ~/mkswu]$ podman run --rm docker.io/nginx:alpine uname -m
aarch64
[ATDE ~/mkswu]$ podman save docker.io/nginx:alpine > nginx_alpine.tar
[ATDE ~/mkswu]$ mkswu embed_container_nginx.desc
Enter pass phrase for /home/atmark/mkswu/swupdate.key:
embed_container_nginx.swu を作成しました
USBドライブに保存する
[ATDE ~/mkswu]$ cp /usr/share/mkswu/examples/usb_container_nginx.desc .
[ATDE ~/mkswu]$ cp -r /usr/share/mkswu/examples/nginx_start .
[ATDE ~/mkswu]$ cat usb_container_nginx.desc
swdesc_option version=1
swdesc_usb_container "nginx_alpine.tar"
swdesc_files --extra-os nginx_start
[ATDE ~/mkswu]$ podman pull --arch arm64 docker.io/nginx:alpine
[ATDE ~/mkswu]$ podman run --rm docker.io/nginx:alpine uname -m
aarch64
[ATDE ~/mkswu]$ podman save docker.io/nginx:alpine > nginx_alpine.tar
[ATDE ~/mkswu]$ mkswu -o usb_container_nginx.swu usb_container_nginx.desc
Enter pass phrase for /home/atmark/mkswu/swupdate.key:
以下のファイルをUSBメモリにコピーしてください:
'/home/atmark/mkswu/usb_container_nginx.swu'
'/home/atmark/mkswu/nginx_alpine.tar'
'/home/atmark/mkswu/.usb_container_nginx/nginx_alpine.tar.sig'
usb_container_nginx.swu を作成しました。
6.2.2.18. 開発時に有用な—privilegedオプションコンテナに、全権限と全てのデバイスへのアクセスを許可するオプション --privileged があります。このオプションを利用すると、コンテナに与えるべき最小の権限を洗い出す必要が無いため、開発時に有用です。 実運用の際、このオプションを利用することはセキュリティー上問題がある為、開発時にのみご利用ください。コンテナに必要な最低限の権限を与えることをおすすめします。 6.2.3. コンテナとコンテナに関連するデータを削除する | |
---|
全てのコンテナとコンテナイメージ、コンテナに関するデータが削除されるため、充分に注意して使用してください。 |
VSCode 上で ABOSDE(Armadillo Base OS Development Environment) から、
Armadillo のコンテナイメージを全て削除する SWU イメージを作成することができます。 VSCode の左ペインの [COMMON PROJECT COMMAND] から [Generate Container Clear Swu] を実行すると、SWU イメージが作成されます。
SWU イメージは ~/mkswu/container_clear.swu に保存されます。 この SWU イメージを 「SWU イメージのインストール」 を参照して Armadillo へインストールしてください。 abos-ctrl container-clear を使用すると、コンテナ、コンテナイメージ、コンテナに関するデータを削除することができます。
abos-ctrl container-clear は以下の通り動作します。
Armadillo Base OSでは、/etc/atmark/containers/*.confファイルに指定されているコンテナがブート時に自動的に起動します。
nginx.confの記載例を以下に示します。 .conf ファイルは以下のパラメータを設定できます。
set_image [イメージ名]
イメージの名前を設定できます。 例: set_image docker.io/debian:latest , set_image localhost/myimage イメージをrootfsとして扱う場合に --rootfs オプションで指定できます。 例: set_image --rootfs /var/app/volumes/debian add_ports [ホストポート]:[コンテナポート]
設定したポートで外部からコンテナへのアクセスが可能となります。 デフォルトはTCPで、UDPも /udp を付けて使えます。スペースで分けて複数のポートを設定することができます。 以下の例では、ポート80、443(web)、UDPの69(tftp)にアクセスすることができ、コンテナのポート22(ssh)にはポート2222からアクセスすることができます。 例: add_ports 80:80 443:443 2222:22 69:69/udp | |
---|
pod を使う場合、このオプションはpodの設定にしないと有効になりませんのでご注意ください。 |
add_devices [ホストパス]:[コンテナパス]
コンテナでデバイスを作成して、使用可能となります。 コンテナパスを設定しない場合はホストと同じパスを使います。 複数のデバイスを作成したい場合はスペースで分けて設定してください。 例: add_devices /dev/galcore /dev/v4l/by-id/usb-046d_HD_Pro_Webcam_C920_78DA8CAF-video-index0:/dev/video3 ホストパスに「:」を含む場合は add_device "[ホストパス]" "[コンテナパス]" で追加できます。 例: add_device "/dev/v4l/by-path/platform-xhci-hcd.1.auto-usb-0:1.1:1.0-video-index1" "/dev/video3" コンテナパスに「:」を含むようなパスは設定できません。 add_volumes [ホストパス]:[コンテナパス]:[オプション]
指定するパスをコンテナ内でマウントして、データの保存や共有することができます。 ホストパスは以下のどちらかを指定してください。
/var/app/rollback/volumes/<folder> か <folder> :
アップデートの際に新しくコピー(snapshot)した場合、コピー先のみ変更しますので、
アップデート中でもこのデータを使うことができます。
途中で電源が落ちた場合でも、このデータに影響はありません。 SWUpdateでアップデートするデータに向いています。
/var/app/volumes/<folder> : appパーティションに書きます。
アップデートの際にコピーされませんので、アップデート中の新たな変更は
更新されたコンテナ内のアプリケーションで見れます。 ログやデータベースに向いています。 -
/tmp/<folder> : 複数のコンテナでメモリファイルシステムを共有したい場合に使ってください。
-
/opt/firmware : 学習能力に必要なファムウェアライブラリーのパス。
コンテナパスを設定しない場合はホストパスと同じパスを使います。 オプションは podman run の --volume のオプションになりますので、 ro (read-only), nodev , nosuid , noexec , shared , slave 等を設定できます。 例:add_volumes /var/app/volumes/database:/database : ロールバックされないデータを/databaseで保存します。 例: add_volumes assets:/assets:ro,nodev,nosuid /opt/firmware : アプリケーションのデータを/assetsで読み取り、/opt/firmwareのファームウェアを使えます。 「:」はホスト側のパスとコンテナのパスを別ける意味があるため、ファイル名やデバイス名に「:」を使うことはできません。 | |
---|
複数のコンテナでマウントコマンドを実行することがあれば、shared のフラグで起動後のマウントを共有することができます。
|
マウントを行うコンテナに shared の設定とマウント権限 (SYS_ADMIN ) を与えます。
| |
マウントを使うコンテナに slave だけを設定すれば一方にしか共有されません。
| |
USB デバイスをマウントします。
| |
マウントされたことを確認します。
|
|
add_hotplugs [デバイスタイプ]
コンテナ起動後に挿抜を行なっても認識される(ホットプラグ)デバイスを設定できます。 通常、コンテナ内からデバイスを扱うためには、あらかじめ Armadillo 本体に当該のデバイスを接続した状態で、コンテナを起動する必要がありますが、 add_hotplugs を使用することでホットプラグに対応できます。 例: add_hotplugs input add_hotplugs に指定できる主要な文字列とデバイスファイルの対応について、表6.1「add_hotplugsオプションに指定できる主要な文字列」に示します。
表6.1 add_hotplugsオプションに指定できる主要な文字列 文字列 | 引数の説明 | 対象のデバイスファイル |
---|
input | マウスやキーボードなどの入力デバイス | /dev/input/mouse0, /dev/input/event0 など | video4linux | USB カメラなどの video4linux デバイスファイル | /dev/video0 など | sd | USB メモリなどの SCSI ディスクデバイスファイル | /dev/sda1 など |
表6.1「add_hotplugsオプションに指定できる主要な文字列」に示した文字列の他にも、/proc/devicesの数字から始まる行に記載されている文字列を指定することができます。
図6.37「/proc/devicesの内容例」に示す状態の場合、デバイスタイプを示す文字列としては、各行の先頭の数字を除いた mem や pty などを指定できることがわかります。 デバイスタイプと実際のデバイスファイルの対応については、 カーネルドキュメント: devices.txt(Github) を参照してください。 複数のデバイスタイプを指定したい場合はスペースで分けて設定してください。 例: add_hotplugs input video4linux sd set_network [ネットワーク名]
この設定に「networkの作成」で作成したネットワーク以外に none と host の特殊な設定も選べます。 none の場合、コンテナに localhost しかないネームスペースに入ります。
host の場合はOSのネームスペースをそのまま使います。
例: set_network mynetwork set_ip [アドレス]
コンテナの IP アドレスを設定することができます。 例: set_ip 10.88.0.100 | |
---|
コンテナ間の接続が目的であれば、podを使ってlocalhostかpodの名前でアクセスすることができます。 |
set_readonly yes
コンテナ内からのファイルシステムへの書き込み許可を設定します。 デフォルトで書き込み可能となっています。 コンテナ内からのファイルシステムへの書き込みを禁止することで、
tmpfs として使うメモリの消費を明示的に抑えることができますが、
アプリケーションによっては読み込み専用のファイルシステムでは動作しない可能性もあります。 6.2.4.11. イメージの自動ダウンロード設定set_pull [設定]
この設定を missing にすると、イメージが見つからない場合にイメージを自動的にダウンロードします。 always にすると、イメージがすでにダウンロード済みでも起動前に必ず更新の確認を取ります。
デフォルトでは never で、イメージが見つからない場合にエラーを表示します。 例:set_pull missing か set_pull always set_restart [設定]
コンテナが停止した時にリスタートさせます。 podman kill か podman stop で停止する場合、この設定と関係なくリスタートしません。
デフォルトで on-failure になっています。 例: set_restart always か set_restart no 6.2.4.13. 信号を受信するサービスの無効化set_init no
コンテナのメインプロセスが PID 1 で起動していますが、その場合のデフォルトの信号の扱いが変わります: SIGTERM などのデフォルトハンドラが無効です。 そのため、init 以外のコマンドを set_command で設定する場合は podman-init のプロセスを PID 1 として立ち上げて、設定したコマンドをその子プロセスとして起動します。 例: set_init no set_autostart no または set_autostart create
Armadillo の起動時にコンテナを自動起動しないように設定できます。 create を指定した場合はコンテナは生成されており、podman start <name> で起動させることができます。
no を指定した場合は podman_start <name> で起動させることができます。
| |
---|
コンフィグに記載していないイメージはアップデートの際に削除されますので、そういったイメージに対して設定してください。 |
set_command [コマンド]
コンテナを起動するときのコマンド。設定されなかった場合、コンテナイメージのデフォルトを使います。 例: set_command /bin/sh -c "echo bad example" 6.2.4.16. podman run に引数を渡す設定add_args [引数]
ここまでで説明した設定項目以外の設定を行いたい場合は、この設定で podman run に直接引数を渡すことができます。 例:add_args --cap-add=SYS_TTY_CONFIG --env=XDG_RUNTIME_DIR=/run/xdg_home 6.2.5. アットマークテクノが提供するイメージを使うアットマークテクノは、動作確認環境として使用できる Debian ベースのイメージを提供しています。
ここでは以下の 3 つの手順について説明します。 -
ABOSDE からインストールする方法
-
Docker ファイルからイメージをビルドする方法
-
すでにビルド済みのイメージを使う方法
6.2.5.1. ABOSDE からインストールする「VSCode を使用して Armadillo のセットアップを行う」を参照して、 Armadillo のセットアッププロジェクトを作成しておいてください。 VSCode の左ペインの [my_project] から [Generate at-debian-image container setup swu] を実行してください。 作成した SWU ファイルは container_setup/at-debian-image/at-debian-image.swu に保存されています。
この SWU イメージを 「SWU イメージのインストール」 を参照して Armadillo へインストールしてください。 6.2.5.2. Docker ファイルからイメージをビルドするArmadillo-610 コンテナ から
「Debian [VERSION] サンプル Dockerfile」 ファイル (at-debian-image-dockerfile-[VERSION].tar.gz) をダウンロードします。
その後 podman build コマンドを実行します。 podman images コマンドにより at-debian-image がビルドされたことが確認できます。
library/debian イメージはベースとなっている Debian イメージです。 Armadillo-610 コンテナ から
「Debian [VERSION] サンプルコンテナイメージ」 ファイル (at-debian-image-[VERSION].tar) をダウンロードします。
その後 podman load コマンドを実行します。 podman images コマンドにより at-debian-image がビルドされたことが確認できます。 6.2.6. alpine のコンテナイメージをインストールするalpine のコンテナイメージは、 ABOSDE を用いてインストールすることが可能です。
「VSCode を使用して Armadillo のセットアップを行う」を参照して、 Armadillo のセットアッププロジェクトを作成しておいてください。 VSCode の左ペインの [my_project] から [Generate alpine container setup swu] を実行してください。 作成した SWU ファイルは container_setup/alpine/alpine.swu に保存されています。
この SWU イメージを 「SWU イメージのインストール」 を参照して Armadillo へインストールしてください。 この章では、コンテナ内のネットワークを扱う方法について示します。 6.2.7.1. コンテナの IP アドレスを確認する基本的にコンテナの IP アドレスは Podman イメージからコンテナを作成したときに自動的に割り振られます。
コンテナに割り振られている IP アドレスはホスト OS 側からは podman inspect コマンドを用いて、以下のように確認することができます。 コンテナ内の ip コマンドを用いて確認することもできます。 6.2.7.2. コンテナに固定 IP アドレスを設定する | |
---|
podman はデフォルトで 10.88.0.0/16 を使います。 他に使用しているIPアドレスと被った場合等はコンテナに別のIPアドレスを設定してください。 |
コンテナに固定 IP アドレスを設定するためには、最初にユーザ定義のネットワークを作成する必要があります。
以下に 192.168.1.0/24 にユーザ定義のネットワークを作成する例を示します。 コンテナを作成する際に、上記で作成したネットワークと設定したい IP アドレスを渡すことで、
コンテナの IP アドレスを固定することができます。
以下の例では、IPアドレスを 192.168.1.10 に固定します。 コンテナの IP アドレスが、192.168.1.10 に設定されていることが確認できます。 この章では、コンテナ内で様々なサーバを構築する方法について示します。
この章で取り上げているサーバは alpine の apk コマンドでインストールすることが可能です。 ここでは、HTTP サーバとして Apache と lighttpd の 2 種類を使用する場合について説明します。 alpine イメージからコンテナを作成し、そのコンテナ内に Apache をインストールします。
コンテナ作成の際に、ホスト OS の 8080 番ポートをコンテナ内の 80 番ポートに転送する指定を行っています。 他の PC などの Web ブラウザから、ホスト OS の IP アドレスの 8080 番ポートに接続すると、
動作確認用ページが表示されます。
デフォルトでは、/var/www/localhost/htdocs ディレクトリにファイルを置くことで Web ブラウザから閲覧できます。
Apache の詳細な設定は、/etc/apache2 ディレクトリにある設定ファイルを編集することで変更可能です。 alpine イメージからコンテナを作成し、そのコンテナ内に lighttpd をインストールします。
コンテナ作成の際に、ホスト OS の 8080 番ポートをコンテナ内の 80 番ポートに転送する指定を行っています。 lighttpd はデフォルトでは動作確認用ページが用意されていないため、上記の手順では簡単なページを
/var/www/localhost/htdocs ディレクトリの下に配置しています。
他の PC などの Web ブラウザから、ホスト OS の IP アドレスの 8080 番ポートに接続すると表示されます。
lighttpd の詳細な設定は、/etc/lighttpd ディレクトリにある設定ファイルを編集することで変更可能です。 ここでは、FTP サーバとして vsftp を使用する場合について説明します。
alpine イメージからコンテナを作成し、そのコンテナ内に vsftpd をインストールします。
コンテナ作成の際に、FTP 通信で使用するポートについてホスト OS 側からコンテナ内のポートに転送する指定と、
コンテナ内の環境変数として PASV_ADDRESS にホスト OS 側の IP アドレスの指定を行っています。 コンテナ内にユーザアカウントを作成し、このユーザで ftp ログインできるようにします。 作成したユーザで ftp ログインできるように、vsftpd の設定ファイルを編集します。 編集した設定ファイルを指定して vftpd を起動することにより、ftp 接続可能となります。
ftp ログイン時のアカウントは前述の手順で作成したものを使用します。 ここでは、Samba サーバの構築方法について説明します。
alpine イメージからコンテナを作成し、そのコンテナ内に samba をインストールします。
コンテナ作成の際に、samba で使用するポートについてホスト OS 側からコンテナ内のポートに転送する指定を行っています。 コンテナ内にユーザアカウントを作成し、このユーザで samba にログインできるようにします。 samba を起動すると、前述の手順で作成したユーザアカウントで他の PC などからログインすることができます。 共有するディレクトリの指定などの詳細設定は /etc/samba/smb.conf ファイルを編集することで変更可能です。 ここでは、RDMS として sqlite を使用する場合について説明します。
alpine イメージからコンテナを作成し、そのコンテナ内に sqlite をインストールします。 コンテナ内に入り、sqlite3 コマンドを実行すると sqlite のプロンプトが表示され
データベースの操作ができるようになります。 この章では、コンテナ内で動作するアプリケーションから Armadillo-610 に接続されたディスプレイに
出力を行う方法について示します。 6.2.9.1. X Window System を扱うコンテナ内から、X Window System を起動し画面表示を行う例を示します。
ここではアットマークテクノが提供するイメージからコンテナを作成します。
このイメージに関しては 「アットマークテクノが提供するイメージを使う」 を参照してください。 |
X Window System に必要な tty を設定します。どこからも使われていない tty とします。
| |
画面描画先となるフレームバッファを設定します。
| |
キーボードやマウスなどを使用可能にするためのデバイスを設定します。
| |
ホスト OS 側の /run/udev をコンテナ内からマウントするように設定します。
| |
X Window System の動作に必要な権限を設定します。
|
次に、以下のように X Window System を起動します。
オプションである vt に設定する値は、コンテナ作成時に渡した tty の数字にします。 Armadillo-610 に接続しているディスプレイ上に、デスクトップ画面が表示されます。 コンテナ内で動作するアプリケーションからフレームバッファに直接描画するためには、Podman のイメージからコンテナを作成する際にホスト OS 側の
デバイスファイル /dev/fbN を渡す必要があります。以下は、/dev/fb0 を渡して alpine イメージからコンテナを作成する例です。 コンテナ内に入って、ランダムデータをフレームバッファに描画する例を以下に示します。
これにより、接続しているディスプレイ上の表示が変化します。 タッチパネルが組み込まれているディスプレイを接続している環境で、
コンテナ内からタッチイベントを取得するためには、Podman のイメージからコンテナを作成する際に
ホスト OS 側の /dev/input を渡す必要があります。 X Window System などの GUI 環境と組み合わせて使うことで、タッチパネルを利用した GUI アプリケーションの操作が可能となります。 この章では、コンテナ内からパワーマネジメント機能を使う方法について示します。 パワーマネジメント機能を使ってサスペンド状態にするには、Podman のイメージからコンテナを作成する際に
ホスト OS 側の /sys ディレクトリを渡す必要があります。
以下は、/sys を渡して alpine イメージからコンテナを作成する例です。ここで渡された /sys ディレクトリは
コンテナ内の /sys にマウントされます。 コンテナ内から、/sys/power/state に次の文字列を書き込むことにより、サスペンド状態にすることができます。 表6.3 対応するパワーマネジメント状態 パワーマネジメント状態 | 文字列 | 説明 |
---|
Suspend-to-RAM
| mem
| 最も消費電力を抑えることができる | Power-On Suspend
| standby
| Suspend-to-RAM よりも短時間で復帰することができ、Suspend-to-Idle よりも消費電力を抑えることができる | Suspend-to-Idle
| freeze
| 最も短時間で復帰することができる |
| |
---|
サスペンド状態を128秒以上継続する場合は、Suspend-to-RAM か +Power-On Suspend+を利用してください。 +Suspend-to-Idle+を利用している状態で128秒経過すると再起動してしまいます。 |
例として、標準状態の Armadillo-610 開発セットにおいて、サスペンド状態から起床要因として利用可能なデバイスを以下に示します。 -
UART1 (Armadillo-610 拡張ボード: CON3)
-
起床要因
-
データ受信
-
有効化
[armadillo ~]# echo enabled > /sys/class/tty/ttymxc0/power/wakeup
-
USB OTG2 (Armadillo-610 拡張ボード: CON6)
-
起床要因
-
USBデバイスの挿抜
-
有効化
[armadillo ~]# echo enabled > /sys/bus/platform/devices/2184200.usb/power/wakeup
[armadillo ~]# echo enabled > /sys/bus/platform/drivers/ci_hdrc/ci_hdrc.1/power/wakeup
[armadillo ~]# echo enabled > /sys/bus/platform/drivers/ci_hdrc/ci_hdrc.1/usb2/power/wakeup
-
RTC(i.MX6ULL)
-
起床要因
-
アラーム割り込み
-
有効化
デフォルトで有効化されています -
実行例
-
RTC(NR3225SA)
-
起床要因
-
アラーム割り込み
-
有効化
[armadillo ~]# echo enabled > /sys/bus/i2c/devices/1-0032/power/wakeup -
実行例
RTC(i.MX6ULL)とRTC(NR3225SA)はサスペンド状態だけではなく、poweroffコマンドを使用した電源の切断状態から復帰が可能です。
RTC_BATピンからバックアップ電源が供給されている状態で、ONOFFピンまたはpoweroffコマンドを使用して電源を切った場合、
5V電源を入れなおしても再起動しません。この状態から再起動する方法は上記のRTC(i.MX6ULL)、RTC(NR3225SA)または以下を参照してください。 詳細は、「外部からの電源制御」参照してください。 Armadillo-610のパワーマネジメント機能は、LinuxのSPM(System Power Management)およびDPM(Device Power Management)を利用しています。パワーマネジメント状態を省電力モードに遷移させることにより、Armadillo-610の消費電力を抑えることができます。 パワーマネジメント状態を省電力モードに遷移させると、アプリケーションの実行は一時停止し、Linuxカーネルはサスペンド状態となります。起床要因が発生すると、Linuxカーネルのリジューム処理が行われた後、アプリケーションの実行を再開します。 6.2.11. コンテナからのpoweroff及びrebootArmadillo Base OSはbusybox initでshutdownとrebootを対応します。 busybox initでPID 1にsignalを送ることでshutdownやrebootとなります。
コンテナからsignalを送るように、pid namespaceを共有する必要がありますが、共有されたらkillで実行できます。 この章では、コンテナ内で動作しているアプリケーションに何らかの異常が発生し停止してしまった際に、
ソフトウェアウォッチドックタイマーを使って、システムを再起動する方法について示します。 6.2.12.1. ソフトウェアウォッチドッグタイマーを扱うコンテナ内で動作するアプリケーションからソフトウェアウォッチドックタイマーを扱うためには、Podman のイメージからコンテナを作成する際にホスト OS 側の
デバイスファイル /dev/watchdogN を渡す必要があります。以下は、/dev/watchdog0 を渡して alpine イメージからコンテナを作成する例です。 ソフトウェアウォッチドックタイマーは、プログラム内からデバイスファイル /dev/watchdog0 を open した時点で起動します。
コンテナ内に入ってソフトウェアウォッチドックタイマーを echo コマンドで起動する例を以下に示します。 ソフトウェアウォッチドックタイマーを起動した後、/dev/watchdog0 に任意の文字を書き込むことで
ソフトウェアウォッチドッグタイマーをリセットすることができます。
10 秒間任意の文字の書き込みがない場合は、システムが再起動します。 ソフトウェアウォッチドックタイマーを停止したい場合は、/dev/watchdog0 に V を書き込みます。 6.3. swupdate がエラーする場合の対処SWU イメージのインストール動作は、「SWU イメージとは」で述べたように swupdate が実行します。
mkswu で作成した SWU イメージの内容が適切でなかったり、あるいは、ストレージの空き容量が不足していたりするなど、いくつかの理由で swupdate のインストール動作が失敗することがあります。
インストールに失敗すると、swupdate は /var/log/messages にエラーメッセージのログを残しますので、エラーメッセージを見ると、エラーの内容・原因が分かります。 エラーの原因ごとに、エラーメッセージとエラーの内容および対処方法を記した FAQ ページ (https://armadillo.atmark-techno.com/faq/swupdate-troubleshooting-abos) を公開しています。
SWU イメージのインストールに失敗して対処法が分からないときは、この FAQ ページをご覧ください。 6.4. mkswu の .desc ファイルを編集するmkswu で SWU イメージを生成するためには、 desc ファイルを正しく作成する必要があります。
以下では、 desc ファイルの記法について紹介します。 swdesc_option component=<component>
swdesc_option version=<version>
か
swdesc_xxx --version <component> <version> [options]
<component>は以下のどれかにしてください (デフォルトでは .desc ファイルのファイル名を使います)
base_os : rootfs (Armadillo Base OS)を最初から書き込む時に使います。現在のファイルシステムは保存されていない。
この場合、/etc/swupdate_preserve_filesに載ってるファイルのみをコピーして新しいbase OSを展開します。 このcomponentがないと現在のrootfsのすべてがコピーされます。
extra_os.<文字列> : rootfsの変更を行う時に使います。<文字列> には任意の文字列を指定します。
rootfsを変更を行う時に使います。 swdesc_* コマンドに --extra-os オプションを追加すると、 component に自動的に extra_os. を足します。
<文字列> (コンテナの名前などの任意の文字列): rootfsの変更がないときに使います。
このcomponentを使うとrootfsの変更ができませんのでご注意ください。
アップデートを行う際にこのバージョンと現在のバージョンを比べてアップデートの判断を行います。
<component> がまだインストールされてなかった時や <version> が上がる時にインストールします。 デフォルトではダウングレードはできませんが、 --install-if=different オプションを追加することで <version> が変わる際にインストール可能になります。 アップデートの一部をインストールすることもありますので、複数の component で管理し、いくつかの古いバージョンに対応するアップデートも作成可能です。
6.4.2. Armadillo へファイルを転送する
swdesc_tar と swdesc_files でファイルを転送します。
swdesc_tar [--dest <dest>] <tar_file>
swdesc_files [--dest <dest>] [--basedir <basedir>] \
<file> [<more files>] swdesc_tar の場合、予め用意されてあるtarアーカイブをこのままデバイスで展開します。
--dest <dest> で展開先を選ぶことができます。デフォルトは / (--extra-os を含め、バージョンの component は base_os か extra_os.* の場合)か /var/app/rollback/volumes/ (それ以外のcomponent)。
後者の場合は /var/app/volumes と /var/app/rollback/volumes 以外は書けないので必要な場合に --extra-os を使ってください。
swdesc_files の場合、mkswu がアーカイブを作ってくれますが同じ仕組みです。
--basedir <basedir> でアーカイブ内のパスをどこで切るかを決めます。
-
例えば、
swdesc_files --extra-os --basedir /dir /dir/subdir/file ではデバイスに /subdir/file を作成します。
-
デフォルトは <file> から設定されます。ディレクトリであればそのまま basedir として使います。それ以外であれば親ディレクトリを使います。
6.4.3. Armadillo 上で任意のコマンドを実行する
swdesc_command や swdesc_script でコマンドを実行します。
swdesc_command <command> [<more commands>]
swdesc_script <script> アップデート先の環境でコマンドやスクリプトファイルを実行します。 バージョンの component は base_os と extra_os 以外の場合、 /var/app/volumes と /var/app/rollback/volumes 以外は変更できないのでご注意ください。 コマンドの実行が失敗した場合、アップデートも失敗します。
6.4.4. Armadillo にファイルを転送し、そのファイルをコマンド内で使用する
swdesc_exec でファイルを配り、コマンド内でそのファイルを使用します。
swdesc_exec <file> <command> swdesc_command と同じくコマンドを実行しますが、<file> を先に転送してコマンド内で転送したファイル名を"$1"として使えます。
6.4.5. 起動中の Armadillo で任意のコマンドを実行する
swdesc_command_nochroot , swdesc_script_nochroot , swdesc_exec_nochroot で起動中のシステム上でコマンドを実行します。
このコマンドは nochroot なしのバージョンと同じ使い方で、現在起動中のシステムに変更や確認が必要な場合にのみ使用してください。 | |
---|
nochroot コマンドは確認を一切しないため、Armadillo が起動できない状態になる可能性もあります。充分にご注意ください。
例が必要な場合は /usr/share/mkswu/examples/firmware_update.desc を参考にしてください。 |
6.4.6. Armadillo にコンテナイメージを転送する
swdesc_embed_container , swdesc_usb_container , swdesc_pull_container で予め作成したコンテナを転送します。
swdesc_embed_container <container_archive>
swdesc_usb_container <container_archive>
swdesc_pull_container <container_url> 例は「リモートリポジトリにコンテナを送信する」、「イメージを SWUpdate で転送する」を参考にしてください。
6.4.7. Armadillo のブートローダーを更新するコマンドの他には、設定変数もあります。以下の設定は /home/atmark/mkswu/mkswu.conf に設定できます。 -
DESCRIPTION="<text>" : イメージの説明、ログに残ります。
-
PRIVKEY=<path> , PUBKEY=<path> : 署名鍵と証明書
PRIVKEY_PASS=<val> : 鍵のパスワード(自動用)
openssl のPass Phraseをそのまま使いますので、pass:password , env:var や file:pathname のどれかを使えます。
pass や env の場合他のプロセスに見られる恐れがありますのでfileをおすすめします。
-
ENCRYPT_KEYFILE=<path> : 暗号化の鍵
6.4.9. Armadillo 上のコンテナイメージと自動起動用confファイルを削除する以下のオプションも mkswu.conf に設定できますが、.descファイルにも設定可能です。swdesc_option で指定することで、
誤った使い方をした場合 mkswu の段階でエラーを出力しますので、必要な場合は使用してください。 6.4.10. SWUpdate 実行中/完了後の挙動を指定する以下のオプションは Armadillo 上の /etc/atmark/baseos.conf に、例えば MKSWU_POST_ACTION=xxx として設定することができます。 その場合に swu に設定されなければ /etc の設定で実行されますので、
アットマークテクノが用意している Base OS のアップデートでも動作の変更は可能です。
swu に特定のオプションが設定された場合は設定されたオプションが優先されますので、一時的な変更も可能です。 -
swdesc_option POST_ACTION=container : コンテナのみのアップデート後に再起動を行いません。
コンテナの中身だけをアップデートする場合、Armadillo-610を再起動せずにコンテナだけを再起動させます。
-
swdesc_option POST_ACTION=poweroff : アップデート後にシャットダウンを行います。
-
swdesc_option POST_ACTION=wait : アップデート後に自動的に再起動は行われず、次回起動時にアップデートが適用されます。
-
swdesc_option POST_ACTION=reboot : デフォルトの状態に戻します。アップデートの後に再起動します。
swdesc_option NOTIFY_STARTING_CMD="command" , swdesc_option NOTIFY_SUCCESS_CMD="command" , swdesc_option NOTIFY_FAIL_CMD="command" : アップデートをインストール中、成功した場合と失敗した場合に実行されるコマンドです。
コマンドを実行する事で、アプリケーションやユーザーにアップデートを知らせることができます。 LEDで知らせる例を /usr/share/mkswu/examples/enable_notify_led.desc に用意してあります。
/usr/share/mkswu/examples/enable_sshd.desc を参考にします。
descファイルを編集する必要がありませんが自分の公開鍵を指定された場所に配置してください。 [ATDE ~/mkswu]$ cp -r /usr/share/mkswu/examples/enable_sshd* .
[ATDE ~/mkswu]$ cat enable_sshd.desc
swdesc_option component=extra_os.sshd version=1
# add your public key in enable_sshd/root/.ssh/authorized_keys
if [ -z "$SWDESC_TEST" ]; then
grep -qE '^ssh-' enable_sshd/root/.ssh/authorized_keys \
|| error "Add your keys in enable_sshd/root/.ssh/authorized_keys"
fi
swdesc_files --dest /root enable_sshd/root
swdesc_command "ssh-keygen -A" \
"rc-update add sshd"
[ATDE ~/mkswu]$ cp ~/.ssh/id_rsa.pub \
enable_sshd/root/.ssh/authorized_keys
[ATDE ~/mkswu]$ mkswu enable_sshd.desc
Enter pass phrase for /home/atmark/mkswu/swupdate.key:
enable_sshd.swu を作成しました。 |
自分の公開鍵を転送します。デフォルトのオプションなので enable_sshd/root ディレクトリの中身をこのまま /root に転送されます。
| |
再起動する度に新しいサーバーの鍵が変わらないように、アップデートの時に一回作成します。
| |
サービスを有効にします。
| |
自分の公開鍵を指定された場所に配置します。
| |
イメージを作成します。パスワードは証明鍵のパスワードです。
|
6.4.11.2. 例: Armadillo Base OSアップデートここでは、「Armadilloのソフトウェアをビルドする」でメインシステム向けのビルドで作成したファイルを使用します。 /usr/share/mkswu/examples/OS_update.desc を参考にします。
[ATDE ~/mkswu]$ cp /usr/share/mkswu/examples/OS_update.desc update-[VERSION].desc
[ATDE ~/mkswu]$ vi update-[VERSION].desc
# uboot image can be generated with atmark imx-boot script
swdesc_uboot imx-boot_armadillo_x2
# base OS is a tar that will be extracted on a blank filesystem,
# after copying just a few key config files.
#
# OS updates are only installed if version is greater than previous update
# so if you install your own updates atmark-techno provided Armadillo Base OS
# updates might not get installed
swdesc_tar "baseos-x2-[VERSION].tar.zst" \
--version base_os [VERSION]
[ATDE ~/mkswu]$ mkswu update-[VERSION].desc
Enter pass phrase for /home/atmark/mkswu/swupdate.key:
update-[VERSION].swu を作成しました。 |
imx-bootでビルドしたイメージを使います。
| |
build-rootfsでビルドしたイメージを使います。
| |
バージョンが上がるときにしかインストールされませんので、現在の/etc/sw-versionsを確認して適切に設定してください。
| |
イメージを作成します。パスワードは証明鍵の時のパスワードです。
|
6.4.11.3. 例: swupdate_preserve_files で Linux カーネル以外の Armadillo-610 向けのイメージをインストールする方法Armadillo-610 向けのアップデートイメージに Linux カーネルが含まれています。 swupdate_preserve_files を使って、以下のコマンドでインストール後に現在のカーネルをコピーして更新させないようにします。
[armadillo ~]# echo 'POST /boot' >> /etc/swupdate_preserve_files
[armadillo ~]# echo 'POST /lib/modules' >> /etc/swupdate_preserve_files
[armadillo ~]# persist_file /etc/swupdate_preserve_files |
swupdate_preserve_files に /boot と /lib/modules を保存するように追加します。
| |
変更した設定ファイルを保存します
|
| |
---|
/usr/share/mkswu/examples/kernel_update*.desc のように update_preserve_files.sh のヘルパーで、パスを自動的に /etc/swupdate_preserve_files に追加することができます。
[ATDE ~/mkswu]$ cat example.desc
swdesc_script "$SCRIPT_DIR/examples/update_preserve_files.sh" -- \
"POST /boot" \
"POST /lib/modules" |
スクリプトの内容確認する場合は /usr/share/mkswu/examples/update_preserve_files.sh を参照してください。
|
|
| |
---|
Armadillo Base OS のカーネルを再び使用したい場合は同じスクリプトの --del オプションで行を削除することができます。 [ATDE ~/mkswu]$ cat example.desc
swdesc_script "$SCRIPT_DIR/examples/update_preserve_files.sh" -- \
--del "POST /boot" "POST /lib/modules" |
6.5. swupdate_preserve_files についてextra_os のアップデートで rootfs にファイルを配置することができますが、次の OS アップデートの際に削除される可能性があります。
デフォルトでは、 /etc/atmark と、 swupdate 、 sshd やネットワークの設定を保存しますがそれ以外はコピーされてません。 そうでないファイルを更新する際には /etc/swupdate_preserve_files に記載します。「例: swupdate_preserve_files で Linux カーネル以外の Armadillo-610 向けのイメージをインストールする方法」 を参考にしてください。 コピーのタイミングによって、以下のどれかを使用してください:
単にファイルを記載する
この場合、アップデートする前にファイルをコピーします。 baseos のイメージと同じ swu にアップデートしたいファイルを記載していても、
このファイルが Armadillo Base OS に含まれないのであれば問題なくアップデートできます。 例: echo "/root/.profile" >> /etc/swupdate_preserve_files
POST のキーワードの後に記載する
この場合、アップデートの最後でコピーします。 Armadillo Base OS に含まれてるファイルであれば、インストール前にコピーしても保存されないのでコピーのタイミングをずらします。 そのコピーが最後に行われるので、同じアップデートでファイルの変更ができません。アップデートを別けて、 baseos のイメージをインストールしてからこのファイルを更新することができます。 例: echo "POST /etc/conf.d/podman-atmark" >> /etc/swupdate_preserve_files
mkswu --show [file.swu] で SWU イメージの内容を確認することができます。
出力は desc ファイルに似ていますが、そのまま desc ファイルとして利用できませんので確認用としてお使いください。 [ATDE ~/mkswu]$ mkswu --show enable_sshd.swu
enable_sshd.swu
# built with mkswu 4.1
swdesc_files --dest /root enable_sshd/root
--version extra_os.sshd 1
(encrypted)
swdesc_command ssh-keygen -A && rc-update add sshd default
--version extra_os.sshd 1 mkswu --init の時に暗号化を有効にする場合は AES でファイルを暗号化します。
現在使われてる SWUpdate の暗号化はコマンドやメタデータを含む sw-description ファイルは暗号化されてません。
そのため、通信の暗号化(HTTPSで送信するなど)を使うことを推奨します。 6.8. Web UI から Armadillo をセットアップする (ABOS Web)ABOS Web は、Web ブラウザから Armadillo の動作設定を行う機能で、ABOS (Armadillo Base OS) を搭載する全ての Armadillo に対応しています。 詳細は、「ABOS Web とは」を参照してください。 ABOS Web は、ABOS の詳細や Linux のコマンドシェルの操作に詳しくない方でも、簡単に Armadillo のセットアップを行なえることを目的にしています。
そのための、Armadillo の動作設定を行う機能ですから、動作設定以外のこと、たとえば、Armadillo の動作状態を監視したりすることは、できません。
さらに、Armadillo をインターネットから設定操作する、リモート操作もできません。
セキュリティの観点から、ABOS Web は、同じ LAN 内からの接続しか受け付けないように実装しています。 ABOS Web でできる Armadillo の設定については、「ABOS Web の設定機能一覧と設定手順」を参照してください。
なお、ABOS Web は OSS で提供していますので、現在の ABOS Web に無い設定機能を、ご自分で実装して機能追加することも可能です。 6.8.2. ABOS Web の設定機能一覧と設定手順現在、ネットワークに関して ABOS Web で設定できるのは以下のものです。 -
WWAN設定
-
WLAN設定
-
各接続設定(各ネットワークインターフェースの設定)
-
DHCPサーバー設定
-
NAT設定
-
VPN設定
これらについては、「ネットワーク設定」で紹介していますので、そちらを参照してください。 ネットワーク以外にも ABOS Web は以下の機能を持っています。 -
コンテナ管理
-
SWUインストール
-
時刻設定
-
アプリケーション向けのインターフェース (Rest API)
-
カスタマイズ
本章では、これらのネットワーク以外の設定項目について紹介します。 ABOS Web から Armadillo 上のコンテナを一覧表示して、コンテナごとに起動・停止を行うことができます。 ABOS Web のトップページから、"コンテナ管理"をクリックすると、図6.73「コンテナ管理」の画面に遷移します。 この画面では、ABOS 上にあるコンテナ全てについて、イメージ名やコンテナ名、現在状態を一覧表示します。
コンテナの一覧表示欄で選択したコンテナに対し、起動と停止、および、コンテナから出力されたログの表示を行うことができます。 | |
---|
「VPN設定」に記載のとおり、VPN 接続を設定すると、abos_web_openvpn のコンテナが作成されます。
VPN 接続中は、このコンテナが動作状態になっており、このコンテナをコンテナ管理画面で停止すると、VPN 接続が切断されます。 |
ABOS Web から PC 上の SWU イメージや HTTP サーバー上の SWU イメージを Armadillo にインストールすることができます。 SWU イメージについては、「SWU イメージとは」を参照してください。 ABOS Web のトップページから、"SWU インストール"をクリックすると、図6.74「SWU インストール」の画面に遷移します。 この画面では、PC 上の SWU イメージファイルまたは、HTTP サーバー上の SWU イメージファイルの URL を指定して、Armadillo にインストールすることができます。
Armadillo のソフトウェアのアップデート用に最初に行う設定で作成する initial_setup.swu が、まだ Armadillo にインストールされていなければ、"mkswu --init で作成した initial_setup.swu をインストールしてください。" というメッセージを画面上部に表示します。 SWU イメージのインストール動作を実行する時には、進行状況を示すログを表示します。
"現在の SWU で管理されているバージョン" 欄には、ABOS の各ソフトウェアコンポーネントの名前とバージョン情報を一覧表示します。 6.8.6. アプリケーション向けのインターフェース (Rest API)コンテナやスクリプトから ABOS Web の一部の機能を使用できます。 6.8.6.1. Rest API へのアクセス権の管理Rest API は ABOS Web のパスワードと Rest API 用のトークンで認証されます。 また、接続可能なネットワークにも制限をかけております。初期状態では、同一サブネットからのアクセスのみ許容しています。
同一サブネット外の IP アドレスからアクセスしたい場合は設定が必要です。
設定方法は 「ABOS Web へのアクセス」 を参照してください。 各リクエストは以下のどちらかの Authorization ヘッダーで認証されます: -
Basic (パスワード認証): curl の -u :<password> 等で認証可能です。<password> の文字列は ABOS Web で設定したパスワードです。
-
Bearer (トークン認証): curl の -H "Authorization: Bearer <token> 等で認証可能です。<token> は /api/tokens であらかじめ生成した文字列です。
また、トークンには権限も設定できます。Admin で生成されたトークンはすべてのインターフェースにアクセスできますが、
一部のインターフェースしか使用しない場合はそのインターフェースに必要な権限だけを持つトークンを生成してください。 トークンの管理は ABOS Web の「設定管理」ページで行えます: | |
---|
ABOS Web の バージョン 1.2.3 以降では、Token ID の横にあるクリップボードアイコンをクリックするとクリップボードにコピーすることができます。 |
6.8.6.2. Rest API 使用例の前提条件各 Rest API の使用例を説明します。使用例では以下を前提としています。: -
ABOS Web に
https://armadillo.local:58080 でアクセスします。
-
「
AUTH 」環境変数に ABOS Web で生成したトークンを設定します。
例: AUTH="Authorization: Bearer 35ac39a8-1eeb-4bb2-84d2-cb542cdbc873"
-
curl コマンドを省略するため、以下のように alias を使用します:
[ATDE ~]$ alias curl_rest='curl -k -H "$AUTH" -w "\nhttp code: %{http_code}\n" ' | |
---|
この章で説明する例では、curl のオプションに -k を指定して証明書を無視するようにしています。
もし、証明書を使用したい場合は以下のように設定してください。 [ATDE ~]$ openssl s_client -showcerts -connect armadillo.local:58080 </dev/null 2>/dev/null | openssl x509 -outform PEM > abosweb.pem
[ATDE ~]$ CERT="$PWD/abosweb.pem"
[ATDE ~]$ alias curl_rest='curl -H "$AUTH" --cacert "$CERT" -w "\nhttp code: %{http_code}\n" ' |
インターフェースの一部にはパラメータを取るものがあります。パラメータがある場合は json (Content-Type を application/json に設定する)と
form(デフォルトの application/x-www-form-urlencoded でのパラメータ)のどちらでも使用可能です。 インターフェースの出力がある場合は json object で出力されます。
今後のバージョンアップで json object のキーが増える可能性があるため、
出力された値を処理する場合はその点に留意してください。 エラーの場合は json object の「error 」キーに文字列のエラーが記載されています。
http のステータスコードも 50x になります。 エラーの例: [ATDE ~]$ curl_rest -X DELETE https://armadillo.local:58080/api/tokens/3b2d830d-2f64-4e76-9e59-316da82eefc4
{"error":"No such token"}
http code: 500 6.8.6.4. Rest API : トークン管理トークン管理のためのインターフェースは以下のとおりです:
トークン一覧
GET "/api/tokens"
必要権限: Admin
パラメータ: 無し
出力: トークンリスト
[ATDE ~]$ curl_rest https://armadillo.local:58080/api/tokens
{"tokens":[{"token":"35ac39a8-1eeb-4bb2-84d2-cb542cdbc873","permissions":["Admin"]},{"token":"5c426ce5-8fcb-4e54-9ff6-80aba50935ee","permissions":["Reboot","NetworkView"]}]}
http code: 200
トークン取得
GET "/api/tokens/<token>"
必要権限: Admin
パラメータ: 無し
出力: トークン情報
[ATDE ~]$ curl_rest https://armadillo.local:58080/api/tokens/35ac39a8-1eeb-4bb2-84d2-cb542cdbc873
{"token":"35ac39a8-1eeb-4bb2-84d2-cb542cdbc873","permissions":["Admin"]}
http code: 200
トークン生成
POST "/api/tokens"
必要権限: Admin
パラメータ: 付与したい permissions 権限リスト(ない場合は「Admin」で生成されます)
出力: 生成されたトークン情報
[ATDE ~]$ curl_rest -H "Content-type: application/json" -d '{"permissions": ["SwuInstall", "ContainerView"]}' https://armadillo.local:58080/api/tokens
{"token":"3b2d830d-2f64-4e76-9e59-316da82eefc4","permissions":["SwuInstall","ContainerView"]}
http code: 200
トークン編集 (存在しない場合は指定のトークンで生成されます)
POST "/api/tokens/{token_id}"
必要権限: Admin
パラメータ: 付与したい permissions 権限リスト(ない場合は編集しません)
出力: 編集か生成されたトークン情報
[ATDE ~]$ curl_rest -X POST -d permissions=Poweroff -d permissions=ContainerAdmin https://armadillo.local:58080/api/tokens/3b2d830d-2f64-4e76-9e59-316da82eefc4
{"token":"3b2d830d-2f64-4e76-9e59-316da82eefc4","permissions":["Poweroff","ContainerAdmin"]}
トークン削除
DELETE "/api/tokens/{token_id}"
必要権限: Admin
パラメータ: 無し
出力: 無し
[ATDE ~]$ curl_rest -X DELETE https://armadillo.local:58080/api/tokens/3b2d830d-2f64-4e76-9e59-316da82eefc4
http code: 200
abos-web パスワード変更
POST "/api/password"
必要権限: Admin
パラメータ: password でハッシュ済みのパスワード文字列か hashed=false が設定されている場合は平文の文字列
出力: 無し
[ATDE ~]$ PWD_HASH=$(openssl passwd -6)
Password:
Verifying - Password:
[ATDE ~]$ echo $PWD_HASH
$6$LuXQduN7L3PwbMaZ$txrw8vLJqEVUreQnZhM0CYMQ5U5B9b58L0mpVRULDiVCh2O46GKscq/xsDPskjxg.x8ym0ri1/8NqFBu..IZE0
[ATDE ~]$ curl_rest --data-urlencode "password=$PWD_HASH" -X POST https://armadillo.local:58080/api/password
http code: 200
インストール済み SWU のバージョン情報取得
GET "/api/swu/versions"
必要権限: SwuView
パラメータ: 無し
出力: Swupdate の各バージョン情報
[ATDE ~]$ curl_rest https://armadillo.local:58080/api/swu/versions
{"extra_os.custom":"54","extra_os.container":"1","custom":"54","extra_os.initial_setup":"4","boot":"2020.4-at19","base_os":"3.18.4-at.6","extra_os.sshd":"1"}
http code: 200 -
アップデートステータス取得
GET "/api/swu/status"
必要権限: SwuView
パラメータ: 無し
出力: rollback_ok : ロールバック状態 (false の場合は rollback されています)、last_update_timestamp : UTC の unix epoch (数字での日付)、
last_update_versions : 最新のアップデートで更新されたバージョン情報 (コンポーネント → [更新前のバージョン, 更新後のバージョン]。
更新前に存在しなかったコンポーネントの場合は null で記載されています)
[ATDE ~]$ curl_rest https://armadillo.local:58080/api/swu/status
{"rollback_ok":true,"last_update_timestamp":1703208559,"last_update_versions":{"custom":[null,"54"],"extra_os.custom":["53","54"]}}
http code: 200
SWU をファイルアップロードでインストール
POST "/api/swu/install/upload"
必要権限: SwuInstall
パラメータ: multipart/form-data で swu の転送
出力: swupdate プロセスの出力 (stdout または stderr )、またはアップデートプロセスの出力ステータス (exit_code または exit_signal )
[ATDE ~]$ curl_rest -F swu=@"$HOME/mkswu/file.swu" https://armadillo.local:58080/api/swu/install/upload
{"stdout":"SWUpdate v2023.05_git20231025-r0\n"}
{"stdout":"\n"}
{"stdout":"Licensed under GPLv2. See source distribution for detailed copyright notices.\n"}
{"stdout":"\n"}
{"stdout":"[INFO ] : SWUPDATE running : [main] : Running on AGX4500 Revision at1\n"}
{"stdout":"[INFO ] : SWUPDATE started : Software Update started !\n"}
{"stdout":"[INFO ] : SWUPDATE running : [install_single_image] : Installing pre_script\n"}
{"stdout":"[INFO ] : SWUPDATE running : [read_lines_notify] : No base os update: copying current os over\n"}
: (省略)
{"stdout":"[INFO ] : SWUPDATE running : [install_single_image] : Installing post_script\n"}
{"stdout":"[INFO ] : SWUPDATE running : [read_lines_notify] : Removing unused containers\n"}
{"stdout":"[INFO ] : SWUPDATE running : [read_lines_notify] : swupdate triggering reboot!\n"}
{"stderr":"Killed\n"}
{"exit_code":0}
http code: 200
SWU を URL でインストール
POST "/api/swu/install/url"
必要権限: SwuInstall
パラメータ: url=<SWU をダウンロードできる URL>
出力: swupdate プロセスの出力 (stdout または stderr )、またはアップデートプロセスの出力ステータス (exit_code または exit_signal )
[ATDE ~]$ curl_rest -d url=https://url/to/file.swu https://armadillo.local:58080/api/swu/install/url
{"stdout":"Downloading https://url/to/file.swu...\n"}
{"stdout":"SWUpdate v2023.05_git20231025-r0\n"}
{"stdout":"\n"}
{"stdout":"Licensed under GPLv2. See source distribution for detailed copyright notices.\n"}
{"stdout":"\n"}
{"stdout":"[INFO ] : SWUPDATE running : [main] : Running on AGX4500 Revision at1\n"}
{"stdout":"[INFO ] : SWUPDATE started : Software Update started !\n"}
{"stdout":"[INFO ] : SWUPDATE running : [install_single_image] : Installing pre_script\n"}
{"stdout":"[INFO ] : SWUPDATE running : [read_lines_notify] : No base os update: copying current os over\n"}
: (省略)
{"stdout":"[INFO ] : SWUPDATE running : [install_single_image] : Installing post_script\n"}
{"stdout":"[INFO ] : SWUPDATE running : [read_lines_notify] : Removing unused containers\n"}
{"stdout":"[INFO ] : SWUPDATE running : [read_lines_notify] : swupdate triggering reboot!\n"}
{"stderr":"Killed\n"}
{"exit_code":0}
http code: 200
6.8.6.6. Rest API : コンテナ操作
コンテナ一覧
GET "/api/containers"
必要権限: ContainerView
パラメータ: 無し
出力: 各コンテナの id , name , state , command , image 情報
[ATDE ~]$ curl_rest https://armadillo.local:58080/api/containers
{"containers":[{"id":"02616122dcea5bd75c551b29b2ef54f54e09f59c50ce3282684773bc6bfb86a8","name":"python_app","state":"running","command":["python3","/vol_app/src/main.py"],"image":"localhost/python_arm64_app_image:latest"}]}
http code: 200
コンテナログ取得
GET "/api/containers/{container}/logs"
必要権限: ContainerView
パラメータ: follow=true (podman logs -f と同様の効果)
出力: podman logs プロセスの出力 (stdout または stderr )、またはアップデートプロセスの出力ステータス (exit_code または exit_signal )
[ATDE ~]$ curl_rest https://armadillo.local:58080/api/containers/python_app/logs
{"stdout":"Some message\n"}
{"exit_code":0}
http code: 200 follow=true を付与する例 [ATDE ~]$ curl_rest https://armadillo.local:58080/api/containers/python_app/logs?follow=true
{"stdout":"Some message\n"}
Ctrl-C で終了
コンテナ起動
POST "/api/containers/{container}/start"
必要権限: ContainerAdmin
パラメータ: 無し
出力: 無し
[ATDE ~]$ curl_rest -X POST https://armadillo.local:58080/api/containers/python_app/start
http code: 200
コンテナ停止
POST "/api/containers/{container}/stop"
必要権限: ContainerAdmin
パラメータ: 無し
出力: 無し
[ATDE ~]$ curl_rest -X POST https://armadillo.local:58080/api/containers/python_app/stop
http code: 200
6.8.6.7. Rest API : ネットワーク設定
ネットワーク接続一覧
GET "/api/connections"
必要権限: NetworkView
パラメータ: 無し
出力: ネットワーク接続一覧と各接続の uuid , name , state , ctype , あれば device 情報
[ATDE ~]$ curl_rest https://armadillo.local:58080/api/connections
{"connections":[{"name":"Wired connection 1","state":"activated","uuid":"18d241f1-946c-3325-974f-65cda3e6eea5","ctype":"802-3-ethernet","device":"eth0"},{"name":"lo","state":"activated","uuid":"529ec241-f122-4cb2-843f-ec9787b2aee7","ctype":"loopback","device":"lo"},{"name":"podman0","state":"activated","uuid":"be4583bc-3498-4df2-a31c-773d781433aa","ctype":"bridge","device":"podman0"},{"name":"veth0","state":"activated","uuid":"03446b77-b1ab-47d0-98fc-f167c3f3778a","ctype":"802-3-ethernet","device":"veth0"},{"name":"Wired connection 2","state":"","uuid":"181f44df-850e-36c1-a5a4-6e461c768acb","ctype":"802-3-ethernet"},{"name":"Wired connection 3","state":"","uuid":"e4381368-6351-3985-ba6e-2625c62b8d39","ctype":"802-3-ethernet"}]}
http code: 200
ネットワーク接続詳細取得
GET "/api/connections/{connection}"
必要権限: NetworkView
パラメータ: 無し(URL の connection は UUID または接続名で使用可能)
出力: 接続の詳細情報(Network Manager のプロパティ)
[ATDE ~]$ curl_rest https://armadillo.local:58080/api/connections/Wired%20connection%201
{"name":"Wired connection 1","state":"activated","uuid":"18d241f1-946c-3325-974f-65cda3e6eea5","ctype":"802-3-ethernet","device":"eth0","props":{"802-3-ethernet.accept-all-mac-addresses":"-1","802-3-ethernet.auto-negotiate":"no","802-3-ethernet.cloned-mac-address":"","802-3-ethernet.duplex":"","802-3-ethernet.generate-mac-address-mask":"","802-3-ethernet.mac-address":"","802-3-ethernet.mac-address-blacklist":"","802-3-ethernet.mtu":"auto","802-3-ethernet.port":"","802-3-ethernet.s390-nettype":"","802-3-ethernet.s390-options":"","802-3-ethernet.s390-subchannels":"","802-3-ethernet.speed":"0","802-3-ethernet.wake-on-lan":"default","802-3-ethernet.wake-on-lan-password":"","GENERAL.CON-PATH":"/org/freedesktop/NetworkManager/Settings/1","GENERAL.DBUS-PATH":"/org/freedesktop/NetworkManager/ActiveConnection/6","GENERAL.DEFAULT":"yes","GENERAL.DEFAULT6":"no","GENERAL.DEVICES":"eth0","GENERAL.IP-IFACE":"eth0","GENERAL.MASTER-PATH":"","GENERAL.NAME":"Wired connection 1","GENERAL.SPEC-OBJECT":"","GENERAL.STATE":"activated","GENERAL.UUID":"18d241f1-946c-3325-974f-65cda3e6eea5","GENERAL.VPN":"no","GENERAL.ZONE":"","IP4.ADDRESS[1]":"198.51.100.123/16","IP4.DNS[1]":"192.0.2.1","IP4.DNS[2]":"192.0.2.2","IP4.GATEWAY":"198.51.100.1","IP4.ROUTE[1]":"dst = 198.51.100.0/16, nh = 0.0.0.0, mt = 100","IP4.ROUTE[2]":"dst = 0.0.0.0/0, nh = 198.51.100.1, mt = 100","IP6.ADDRESS[1]":"fe80::211:cff:fe00:b13/64","IP6.GATEWAY":"","IP6.ROUTE[1]":"dst = fe80::/64, nh = ::, mt = 1024","connection.auth-retries":"-1","connection.autoconnect":"yes","connection.autoconnect-priority":"-999","connection.autoconnect-retries":"-1","connection.autoconnect-slaves":"-1","connection.dns-over-tls":"-1","connection.gateway-ping-timeout":"0","connection.id":"Wired connection 1","connection.interface-name":"eth0","connection.lldp":"default","connection.llmnr":"-1","connection.master":"","connection.mdns":"-1","connection.metered":"unknown","connection.mptcp-flags":"0x0","connection.multi-connect":"0","connection.permissions":"","connection.read-only":"no","connection.secondaries":"","connection.slave-type":"","connection.stable-id":"","connection.timestamp":"1703208824","connection.type":"802-3-ethernet","connection.uuid":"18d241f1-946c-3325-974f-65cda3e6eea5","connection.wait-activation-delay":"-1","connection.wait-device-timeout":"-1","connection.zone":"","ipv4.addresses":"198.51.100.123/16","ipv4.auto-route-ext-gw":"-1","ipv4.dad-timeout":"-1","ipv4.dhcp-client-id":"","ipv4.dhcp-fqdn":"","ipv4.dhcp-hostname":"","ipv4.dhcp-hostname-flags":"0x0","ipv4.dhcp-iaid":"","ipv4.dhcp-reject-servers":"","ipv4.dhcp-send-hostname":"yes","ipv4.dhcp-timeout":"0","ipv4.dhcp-vendor-class-identifier":"","ipv4.dns":"192.0.2.1,192.0.2.2","ipv4.dns-options":"","ipv4.dns-priority":"0","ipv4.dns-search":"","ipv4.gateway":"198.51.100.1","ipv4.ignore-auto-dns":"no","ipv4.ignore-auto-routes":"no","ipv4.link-local":"0","ipv4.may-fail":"yes","ipv4.method":"manual","ipv4.never-default":"no","ipv4.replace-local-rule":"-1","ipv4.required-timeout":"-1","ipv4.route-metric":"-1","ipv4.route-table":"0","ipv4.routes":"","ipv4.routing-rules":"","ipv6.addr-gen-mode":"eui64","ipv6.addresses":"","ipv6.auto-route-ext-gw":"-1","ipv6.dhcp-duid":"","ipv6.dhcp-hostname":"","ipv6.dhcp-hostname-flags":"0x0","ipv6.dhcp-iaid":"","ipv6.dhcp-send-hostname":"yes","ipv6.dhcp-timeout":"0","ipv6.dns":"","ipv6.dns-options":"","ipv6.dns-priority":"0","ipv6.dns-search":"","ipv6.gateway":"","ipv6.ignore-auto-dns":"no","ipv6.ignore-auto-routes":"no","ipv6.ip6-privacy":"-1","ipv6.may-fail":"yes","ipv6.method":"auto","ipv6.mtu":"auto","ipv6.never-default":"no","ipv6.ra-timeout":"0","ipv6.replace-local-rule":"-1","ipv6.required-timeout":"-1","ipv6.route-metric":"-1","ipv6.route-table":"0","ipv6.routes":"","ipv6.routing-rules":"","ipv6.token":"","proxy.browser-only":"no","proxy.method":"none","proxy.pac-script":"","proxy.pac-url":""}}
http code: 200
ネットワーク接続の変更
PATCH "/api/connections/{connection}"
必要権限: NetworkAdmin
パラメータ: Network Manager で編集可能な値
出力: 無し
[ATDE ~]$ curl_rest -X PATCH -d ipv4.method=manual -d ipv4.addresses=198.51.100.123/16 https://armadillo.local:58080/api/connections/Wired%20connection%201
http code: 200
6.8.6.8. Rest API : 時刻の設定-
時刻の状況確認
GET "/api/time/ntp_info"
必要権限: TimeView
パラメータ: 無し
出力: time_now : epoch 形式の現在時刻、ntp_server_ip : 現在同期中のサーバーアドレス。同期されていない場合は「null」となります。
ntp_server_offset : 現在同期中のサーバーとの時刻の遅れ(マイナスの場合は Armadillo がサーバーより早いです)
[ATDE ~]$ curl_rest https://armadillo.local:58080/api/time/ntp_info
{"ntp_server_ip":"203.0.113.10","ntp_server_offset":"-0.000015824","time_now":1710139558}
http code: 200 -
NTP の設定確認
GET "/api/time/ntp_config"
必要権限: TimeView
パラメータ: 無し
出力: servers : 同期する対象、initstepslew : Armadillo 起動時に同期するかどうかの設定
[ATDE ~]$ curl_rest https://armadillo.local:58080/api/time/ntp_config
{"servers":["pool pool.ntp.org iburst"],"initstepslew":"10 pool.ntp.org"}
http code: 200 -
NTP の設定
POST "/api/time/ntp_config"
必要権限: TimeAdmin
パラメータ: servers : 同期する対象、initstepslew : Armadillo 起動時に同期するかどうかの設定。パラメータを送信しない場合は設定されません。
値が空の場合は設定が削除されて、「 default 」の場合は Armadillo Base OS のデフォルトに戻ります。
出力: 取得時と同じ
[ATDE ~]$ curl_rest https://armadillo.local:58080/api/time/ntp_config -X POST -d "servers=server 203.0.113.10 iburst" -d "servers=server 203.0.113.11 iburst" -d "initstepslew="
{"servers":["server 203.0.113.10 iburst","server 203.0.113.11 iburst"],"initstepslew":null}
http code: 200
[ATDE ~]$ curl_rest https://armadillo.local:58080/api/time/ntp_config -X POST -d "servers=default&initstepslew=default"
{"servers":["pool pool.ntp.org iburst"],"initstepslew":"10 pool.ntp.org"}
http code: 200 -
タイムゾーンの確認
GET "/api/time/timezone"
必要権限: TimeView
パラメータ: 無し
出力: timezone : 使用されているタイムゾーン
[ATDE ~]$ curl_rest https://armadillo.local:58080/api/time/timezone
{"timezone":"Asia/Tokyo"}
http code: 200 -
タイムゾーンの設定
POST "/api/time/timezone"
必要権限: TimeAdmin
パラメータ: timezone : 設定するタイムゾーン
出力: 無し
[ATDE ~]$ curl_rest https://armadillo.local:58080/api/time/timezone -X POST -d "timezone=Asia/Tokyo"
http code: 200 -
時刻を強制的に設定する
POST "/api/time/set"
必要権限: TimeAdmin
パラメータ: timestamp : epoch 形式の時刻
出力: 無し
[ATDE ~]$ curl_rest https://armadillo.local:58080/api/time/set -X POST -d "timestamp=$(date +%s)"
http code: 200
再起動
POST "/api/reboot"
必要権限: Reboot
パラメータ: 無し
出力: 無し
[ATDE ~]$ curl_rest -X POST https://armadillo.local:58080/api/reboot
http code: 200
停止
POST "/api/poweroff"
必要権限: Poweroff
パラメータ: 無し
出力: 無し
[ATDE ~]$ curl_rest -X POST https://armadillo.local:58080/api/poweroff
http code: 200
6.9. ABOSDE から ABOS Web の機能を使用するABOSDE は以下に示す ABOS Web の情報取得や動作を行うことができます。 -
Armadillo の SWU バージョンを取得する
-
Armadillo のコンテナの情報を取得する
-
Armadillo のコンテナを起動・停止する
-
Armadillo のコンテナのログを取得する
-
Armadillo に SWU をインストールする
ABOSDE は ABOS Web の Rest API を用いて通信を行っていますので、ABOS Web にパスワードでログインができる状態である必要があります。
ABOS Web へのログインを行っていない場合は「ABOS Web とは」を参考にしてください。 ABOSDE から ABOS Web の機能を使用するには通信を行う対象の Armadillo を選択する必要があります。
図6.81「ABOSDE で ローカルネットワーク上の Armadillo をスキャンする」 の赤枠で囲まれているボタンをクリックすることで、ローカルネットワーク上で ABOS Web が動作している Armadillo をスキャンすることができます。
ただし、ATDE のネットワークを NAT に設定している場合は Armadillo がリストに表示されません。 ABOSDE から ABOS Web に初めて通信を行う時、ABOS Web は通信に使用するためのトークンを発行します。
そのため、ABOSDE では 図6.82「ABOSDE の ABOS Web パスワード入力画面」 のように ABOS Web のパスワードを求められますので、設定したパスワードを入力してください。 6.9.2. Armadillo のコンテナの情報を取得するローカルネットワーク上の Armadillo をスキャンした後に、
図6.84「ABOSDE で Armadillo のコンテナ情報を取得」 の赤枠で囲まれているボタンをクリックすることで、選択した Armadillo のコンテナの情報を取得できます。
表示されるコンテナの情報は以下の通りとなります。 -
state : コンテナが起動中の場合は running、コンテナが停止中の場合は exited
-
image : コンテナのイメージ名
-
command : コンテナ起動時に実行しているコマンド
6.9.5. Armadillo に SWU をインストールするローカルネットワーク上の Armadillo をスキャンした後に、
図6.88「ABOSDE で Armadillo に SWU をインストール」 の赤枠で囲まれているボタンをクリックすることで、選択した Armadillo に SWU をインストールすることができます。
SWU インストールのログは VSCode 画面下部の OUTPUT に表示されます。 6.10. ssh 経由で Armadillo Base OS にアクセスするArmadillo-610 にはopensshがインストールされていますが、デフォルトではSSHサーバーが起動していません。 SSHサーバーを自動的に起動するようにするためには、以下のコマンドを実行してください。 [armadillo:~]# rc-update add sshd
* service sshd added to runlevel default
[armadillo ~]# persist_file /etc/runlevels/default/sshd
[ 2819.277066] EXT4-fs (mmcblk2p1): re-mounted. Opts: (null)
[armadillo ~]# reboot 上記の例では、再起動後も設定が反映されるように、 persist_file コマンドでeMMCに設定を保存しています。 6.11. コマンドラインからネットワーク設定をする基本的に、 Armadillo-610 のネットワーク設定は、「ネットワーク設定」で紹介したとおり、 ABOS Web で行います。
しかし、 ABOS Webで対応できない複雑なネットワーク設定を行いたい場合などは、コマンドラインからネットワークの設定を行うことも可能です。 ここでは、コマンドラインからネットワークを設定する方法について説明します。 Armadillo-610 は、1つの Ethernet ポートが搭載されています。
Linuxからは、 eth0 に見えます。 表6.4 ネットワークとネットワークデバイス ネットワーク | ネットワークデバイス | 出荷時の設定 |
---|
Ethernet | eth0
| DHCP |
Armadillo-610 の IP アドレスを確認するには、ip addr コマンドを使用します。 inet となっている箇所が IP アドレスです。
特定のインターフェースのみを表示したい場合は、以下のようにします。
Armadillo-610 では、通常の Linux システムと同様、ネットワークインターフェースの設定は NetworkManager を使用します。
NetworkManager はすべてのネットワーク設定をコネクションとして管理します。コネクションには「どのようにネットワークへ接続するか」、
「どのようにネットワークを作成するか」を記述し、 /etc/NetworkManager/system-connections/ に保存します。
また、1つのデバイスに対して複数のコネクションを保存することは可能ですが、1つのデバイスに対して有効化にできるコネクションは1つだけです。 NetworkManager は、従来の /etc/network/interfaces を使った設定方法もサポートしていますが、本書では nmcli を用いた方法を中心に紹介します。 nmcli は NetworkManager を操作するためのコマンドラインツールです。
図6.91「nmcli のコマンド書式」に nmcli の書式を示します。このことから、 nmcli は「オブジェクト (OBJECT) というものが存在し、
それぞれのオブジェクトに対してコマンド (COMMAND) を実行する。」という書式でコマンドを入力することがわかります。
また、オブジェクトそれぞれに help が用意されていることもここから読み取れます。
ここでは nmcli の、基本的な使い方を説明します。 登録されているコネクションの一覧を確認するには、次のようにコマンドを実行します。
[] 表示された NAME については、以降 [ID] として利用することができます。 コネクションを有効化するには、次のようにコマンドを実行します。 コネクションを無効化するには、次のようにコマンドを実行します。 コネクションを作成するには、次のようにコマンドを実行します。 [ID] にはコネクションの名前(任意)、[type] には ethernet、wifi といった接続タイプ、
[interfacename] にはインターフェース名(デバイス)を入力します。
これにより /etc/NetworkManager/system-connections/ に[ID]の名前でコネクション
ファイルが作成されます。このファイルを vi などで編集し、コネクションを修正する
ことも可能です。 Armadillo-610 を再起動したときにコネクションファイルが消えてしまわないように、
persist_file コマンドで永続化する必要があります。
persist_file コマンドに関する詳細は「persist_file について」を参照してください。 | |
---|
別の Armadillo-610 からコネクションファイルをコピーした場合は、コネクションファイルの
パーミッションを 600 に設定してください。
600 に設定後、 nmcli c reload コマンドでコネクションファイルを再読込します。 [armadillo ~]# chmod 600 /etc/NetworkManager/system-connections/<コネクションファイル名>
[armadillo ~]# persist_file /etc/NetworkManager/system-connections/<コネクションファイル名>
[armadillo ~]# nmcli c reload swu イメージを使用してコネクションファイルのアップデートを行う場合は、
swu イメージに含めるコネクションファイルのパーミッションを 600 に設定してから、
swu イメージを作成してください。
アップデート実行時には swu イメージ作成時のパーミッションが維持されるため、
上記のコマンド実行手順は不要です。
swu イメージに関しては 「アップデート機能について」 を参考にしてください。 |
コネクションを削除するには、次のようにコマンドを実行します。 これにより /etc/NetworkManager/system-connections/ のコネクションファイルも同時に削除されます。
コネクションの作成と同様に persist_file コマンドで永続化する必要があります。 DHCP に設定する例を、図6.101「DHCP の設定」に示します。 | |
---|
-ipv4.addresses のように、プロパティ名の先頭に "-" を付けることで設
定したプロパティを削除することができます。反対に "+" を付けることで
プロパティを追加することができます。
|
有効化されているコネクションを修正した場合、かならず修正したコネクションを再
度有効化してください。 デバイスの一覧(デバイス名、タイプ、状態、有効なコネクション)を確認するには、次のようにコマン
ドを実行します。 デバイスを接続するには、次のようにコマンドを実行します。 | |
---|
デバイスを接続するには、接続しようとしているデバイスの有効なコネク
ションが必要です。"Error: neither a valid connection nor device
given" というメッセージが表示された場合には、 nmcli connection など
で有効なコネクションがあるかを確認してください。 |
デバイスを切断するには、次のようにコマンドを実行します。 有線 LAN で正常に通信が可能か確認します。設定を変更した場合、必ず変更したインターフェースを再度有効化してください。 同じネットワーク内にある通信機器と PING 通信を行います。以下の例では、通信機器が「192.0.2.20」という IP アドレスを持っていると想定しています。 |
-I オプションでインターフェースを指定できます。
|
| |
---|
有線 LAN 以外のインターフェースが有効化されている場合、ルーティングの設定などにより、ネットワーク通信に有線 LAN が使用されない場合があります。
設定を必ず確認してください。確実に有線 LAN の接続確認をする場合は、有線 LAN 以外のインターフェースを無効化してください。 |
ここでは、microSDHC カードを接続した場合を例にストレージの使用方法を説明します。
以降の説明では、共通の操作が可能な場合に、microSD/microSDHC/microSDXCカードを microSD カードと表記します。 Linux では、アクセス可能なファイルやディレクトリは、一つの木構造にまとめられています。あるストレージデバイスのファイルシステムを、
この木構造に追加することを、マウントするといいます。マウントを行うコマンドは、 mount です。 mount コマンドの典型的なフォーマットは、次の通りです。
-t オプションに続く fstype には、ファイルシステムタイプを指定します。ファイルシステムタイプの指定は省略可能です。
省略した場合、mount コマンドはファイルシステムタイプを推測します。この推測は必ずしも適切なものとは限りませんので、
事前にファイルシステムタイプが分かっている場合は明示的に指定してください。
FAT32 ファイルシステムの場合は vfat 、EXT3 ファイルシステムの場合は ext3 を指定します。
| |
---|
通常、購入したばかりの microSDHC カードは FAT32 または exFAT ファイルシステムでフォーマットされています。 |
device には、ストレージデバイスのデバイスファイル名を指定します。microSD カードのパーティション1の場合は /dev/mmcblk1p1 、
パーティション2の場合は /dev/mmcblk1p2 となります。
dir には、ストレージデバイスのファイルシステムをマウントするディレクトリを指定します。
SD インターフェース (CON1) に microSD カードを挿入し、以下に示すコマンドを実行すると、
/mnt ディレクトリに microSD カードのファイルシステムをマウントすることができます。
microSDカード内のファイルは、/mnt ディレクトリ以下に見えるようになります。 ストレージを安全に取り外すには、アンマウントという作業が必要です。アンマウントを行うコマンドは、 umount です。
オプションとして、アンマウントしたいデバイスがマウントされているディレクトリを指定します。 6.12.3. ストレージのパーティション変更とフォーマット通常、購入したばかりの microSD カードや USB メモリは、一つのパーティションを持ち、FAT32ファイルシステムでフォーマットされています。 パーティション構成を変更したい場合、 fdisk コマンドを使用します。 fdisk コマンドの使用例として、
一つのパーティションで構成されている microSD カードのパーティションを、2つに分割する例を図6.110「fdiskコマンドによるパーティション変更」に示します。
一度、既存のパーティションを削除してから、新たにプライマリパーティションを二つ作成しています。先頭のパーティションには 100MByte、
二つめのパーティションに残りの容量を割り当てています。先頭のパーティションは /dev/mmcblk1p1 、二つめは /dev/mmcblk1p2 となります。 FAT32 ファイルシステムでストレージデバイスをフォーマットするには、 mkfs.vfat コマンドを使用します。
また、EXT2 や EXT3、EXT4 ファイルシステムでフォーマットするには、mkfs.ext2 や mkfs.ext3 、
mkfs.ext4 コマンドを使用します。
microSD カードのパーティション1を EXT4 ファイルシステムでフォーマットするコマンド例を次に示します buttond サービスを使用することで、ボタンやキー入力をトリガーとする処理を簡単に実装できます。
/etc/atmark/buttond.conf に BUTTOND_ARGS を指定することで、動作を指定することができます:
以下にデフォルトを維持したままで SW1 の短押しと長押しのそれぞれの場合にコマンドを実行させる例を示します。 |
buttond の設定ファイルを編集します。この例では、短押しの場合 /tmp/shotpress に、5 秒以上の長押しの場合 /tmp/longpress に日付を出力します。
| |
設定ファイルを保存します。
| |
buttond サービスを再起動させます。ここでは再起動後短押しを 2 回、長押しを 1 回行ったとします。
| |
押された回数を確認します。
|
| |
---|
Debian 版と ABOS 3.18.4-at.4 以前では、 SW1 の押下を ENTER キーのリリースとして割り当てていました。
ABOS 3.18.4-at.4 以降の ABOS で同じ動作にしたい場合は armadillo-600-button-enter.dtbo を /boot/overlays.txt に追加してください。
詳細は 「DT overlay によるカスタマイズ」 を参照ください。 |
USB キーボードや他の入力デバイスにも対応できます。
デバイスを接続してから、 buttond でデバイス名とキーコードを確認します。
|
buttond を -vvv で冗長出力にして、すべてのデバイスを指定します。
| |
希望のキーを押すと、LEFTCTRL が三つのパスで認識されました。 一番安定する by-id のパスを控えておきます。
|
USB デバイスを外すこともありますので、-i (inotify) で管理されてる入力デバイスとして追加します。
そうしないとデバイスを外したときにbuttondが停止します。
6.13.3. Armadillo 起動時にのみボタンに反応する方法Armadillo 起動時にのみ、例として SW1 の長押しに反応する方法を紹介します。 /etc/local.d/boot_switch.start に稼働期間を指定した buttond を起動させる設定を記載します。
buttond が起動してから 10秒以内に SW1 を一秒以上長押しすると myapp のコンテナの親プロセスに USR1 信号を送ります(アプリケーション側で信号を受信して、デバッグモードなどに切り替える想定です)。
SW1 が Armadillo 起動前に押された場合は、buttond の起動一秒後に実行されます。 |
SW1 の入力を /dev/input/by-path/platform-gpio-keys-event ファイルの PROG1 として認識できます。
| |
buttond 起動後 10 秒経過すると終了します。
| |
SW1 を一度検知した後すぐに終了します。
| |
サービスとして動作させる必要がないため & を付けてバックグラウンド起動します。
|
6.14. 動作中の Armadillo の温度を測定するこの章では、Armadillo Base OS 搭載製品を組み込んだユーザー製品の熱設計時に役立つ温度プロファイラツールである「atmark-thermal-profiler」について紹介します。 Armadillo は製品ごとに動作温度範囲が設定されていますが、それらはあくまでも標準筐体に放熱材と共に取り付けて使用した場合の目安であり、実運用時には自作の筐体の使用や放熱の有無などで記載のスペック通りにならない場合があります。
また、 Armadillo には CPU または SoC が特定の温度以上になると、自動的にシャットダウンするサーマルシャットダウン機能が搭載されています。
そのため、現実的には Armadillo を組み込んだ製品を運用時と同等の環境で動作させつつ、実際に温度を計測して実運用時の CPU 及び SoC 温度がどの程度まで上がるか、サーマルシャットダウンは起こらないかを確かめる必要があります。 Armadillo Base OS 搭載製品では、動作中の Armadillo の各種温度等を取得しCSV形式で出力する atmark-thermal-profiler を利用することができますので、温度測定に役立てることができます。 6.14.2. atmark-thermal-profiler をインストールするatmark-thermal-profiler は apk パッケージで公開されていますので、apk add コマンドでインストールすることが可能です。 | |
---|
atmark-thermal-profiler はデバッグ(開発)用途で温度情報を収集及び解析するツールです。
atmark-thermal-profiler は、他の apk パッケージと同様に persist_file -a コマンドで永続的にインストールしておくことが可能ですが、
ログの保存のために Armadillo が起動している間 eMMC への書き込みを続けるので、 Armadillo を組み込んだ製品の運用時に動かしたままにしておくことは推奨しません。 atmark-thermal-profiler を永続的にインストールする場合は、運用時には必ず削除してください。 |
6.14.4. atmark-thermal-profiler が出力するログファイルを確認するatmark-thermal-profiler は、インストール直後から自動的に温度やCPU負荷率、Load Averageなどの情報を30秒に1度の周期で集め、/var/log/thermal_profile.csvに追記していきます。 thermal_profile.csv の1行目はヘッダ行です。
各列についての説明を表6.6「thermal_profile.csvの各列の説明」に記載します。 表6.6 thermal_profile.csvの各列の説明 ヘッダ | 説明 |
---|
DATE | その行のデータ取得日時です。 "年-月-日T時:分:秒+タイムゾーン" の形式で出力されます。 | ONESHOT | この列が1の行のデータは、サーマルシャットダウンを含むシャットダウンが実行された時に取得されたことを示します。 | CPU_TEMP | 計測時点の CPU 温度を示します。単位は℃です。 | SOC_TEMP | 計測時点の SoC 温度を示します。単位は℃です。製品よっては非対応で、その場合は空白になります。 | LOAD_AVE | 計測時点から直近1分間のLoad Averageです。 | CPU_1 | 計測時点のCPU使用率1位のプロセスです。 | CPU_2 | 計測時点のCPU使用率2位のプロセスです。 | CPU_3 | 計測時点のCPU使用率3位のプロセスです。 | CPU_4 | 計測時点のCPU使用率4位のプロセスです。 | CPU_5 | 計測時点のCPU使用率5位のプロセスです。 | USE_1 | 計測時点のCPU使用率1位のプロセスのCPU使用率です。 | USE_2 | 計測時点のCPU使用率2位のプロセスのCPU使用率です。 | USE_3 | 計測時点のCPU使用率3位のプロセスのCPU使用率です。 | USE_4 | 計測時点のCPU使用率4位のプロセスのCPU使用率です。 | USE_5 | 計測時点のCPU使用率5位のプロセスのCPU使用率です。 |
atmark-thermal-profiler を使用して得られたログファイルの内容を分析してみます。 6.14.5.1. サーマルシャットダウン温度の確認予め、使用している Armadillo が何℃でサーマルシャットダウンするか確認しておきます。
ここでは、 Armadillo Base OS を搭載している Armadillo-IoT ゲートウェイ G4 を例とします。
他の製品では得られる結果が異なる場合があることに注意してください。 |
CPU のサーマルシャットダウン温度です。ミリ℃で表記されているので、105℃でサーマルシャットダウンすることがわかります。
| |
SoC のサーマルシャットダウン温度です。ミリ℃で表記されているので、105℃でサーマルシャットダウンすることがわかります。
|
atmark-thermal-profiler が出力するログ(thermal_profile.csv)はCSVファイルなので、各種表計算ソフトでインポートしてグラフ化することが可能です。
これにより Armadillo 動作中の温度の変化が可視化され、得られる情報が見やすくなります。 図6.121「Armadillo-IoT ゲートウェイ G4で取得した温度のグラフ」は Armadillo-IoT ゲートウェイ G4上で一定期間 atmark-thermal-profiler を実行して取得した thermal_profile.csv を Google スプレッドシートでグラフ化したものです。
例のために、途中で stress-ng コマンドを実行して CPU に負荷を与えた後、 stress-ng コマンドを停止して CPU と SoC の温度が下がるのを待った際のデータです。 グラフの縦軸は温度(℃)で、横軸は時間です。青い線は CPU の温度、赤い線は SoC の温度を表しています。
このグラフと、「サーマルシャットダウン温度の確認」で得たサーマルシャットダウン温度を見比べると、 CPU に負荷をかけた際であっても SoC の温度は 60℃ 前後ほどまでしか上がらず、 この条件で動く Armadillo が温度的にどれほど余裕を持っているかをひと目で確認できます。 atmark-thermal-profiler は、時間毎の温度だけでなく CPU 使用率と CPU 使用率の高いプロセスについても取得して記録します。
CPU 使用率については thermal_profile.csv の CPU_1〜CPU_5 列と、 USE_1〜USE_5 列を参照してください。
各列について詳しくは表6.6「thermal_profile.csvの各列の説明」にまとまっています。 一般的に CPU 使用率が高くなると、 CPU 周辺の温度も高くなります。
そのため、測定した温度が高い場合は、 CPU 使用率の高いプロセスに注目して、 CPU を無駄に使用している意図しない処理が行なわれていないかなどを確認することをおすすめします。 Armadillo-610の温度センサーは、i.MX6ULLのTEMPMON(Temperature Monitor)を利用しています。 起動直後の設定では、ARMまたはSoCの測定温度が 105°C以上になった場合、Linuxカーネルはシステムを停止します。 -
機能
-
sysfs thermalクラスディレクトリ
-
/sys/class/thermal/thermal_zone0
6.15. Armadillo Base OS をアップデートするArmadillo Base OS は SWUpdate によってアップデートすることができます。 アップデートする際には、rootfs ファイルシステムにインストールされたファイルをすべて消して、アップデートの中身と /etc/swupdate_preserve_files に記載されているファイルで新しい rootfs を作ります。「swupdate_preserve_files について」 を参照してください。 アップデートでファイルを削除してしまった場合に abos-ctrl mount-old で前のシステムを read-only でマウントして、
削除されたファイルをコピーすることもできます。 Armadillo Base OS の ルートファイルシステムが壊れて起動できなくなった場合に自動的に前のバージョンで再起動します。 自分で確認する必要がある場合に abos-ctrl status でロールバックされてるかどうかの確認ができます。 必要な場合(例えば、自分のアプリケーションがアップデート直後に問題があった場合)、 abos-ctrl rollback で手動のロールバックも可能です。ロールバックにエラーがなければ、再起動してロールバックを完了します。 なお、/var/at-log/atlog に切り替えの際に必ずログを書きますので、調査の時に使ってください。 6.17. Armadillo 起動時にコンテナの外でスクリプトを実行する起動時に何かスクリプトを走らせるためにはコンテナとして実行することを推奨します。 「コンテナ起動設定ファイルを作成する」 を参照してください。 コンテナで実行不可能な場合に、「local」サービスを使うことができます: /etc/local.d ディレクトリに
.start ファイルを置いておくと起動時に実行されて、 .stop ファイルは終了時に実行されます。 |
スクリプトを作ります。
| |
スクリプトを実行可能にします。
| |
スクリプトを保存して、再起動します。
| |
実行されたことを確認します。
|
u-boot の環境変数を変更するには /boot/uboot_env.d/ ディレクトリに環境変数が書かれた設定ファイルを配置します。 ファイルの構文は fw_setenv が扱うことができるもので、以下のとおりです: -
# で始まる行はコメントと扱われる為、無視されます。また、 環境変数への代入を示す = がない場合も無視されます。
-
[変数]=[値] で変数を設定します。スペースや引用符を含め他の文字は有効ですので、変数の名前と値に不要な文字を入れないように注意してください。
-
[変数]= で変数を消します。値がない場合に変数が消去されます。
このファイルによるアップデート内容は swupdate でアップデートする際に適用されます。 実行中のシステムに影響がありませんので、設定ファイルを swupdate で転送しない場合はファイル永続化後に fw_setenv -s /boot/uboot_env.d/[ファイル名] で変数を書き込んでください。 swupdate でファイルを転送した場合には、変数はすぐに利用されます。 |
コンフィグファイルを生成します。
| |
ファイルを永続化します。
| |
変数を書き込みます。
| |
書き込んだ変数を確認します。
|
| |
---|
mkswu バージョン 4.4 以降が必要です。必要な場合はアップデートしてください。 [ATDE ~]$ sudo apt update && sudo apt upgrade 書き方は、 /usr/share/mkswu/examples/uboot_env.desc を参考にしてください。 |
| |
---|
「ブートローダーをビルドする」 の際に u-boot のデフォルトを変更した場合や、u-boot のプロンプトで「setenv」や「saveenv」を実行しても、 /boot/uboot_env.d/00_defaults によって変更がアップデートの際にリセットされます。 00_defaults のファイルは Base OS の一部で更新されることもありますので、変更を望む場合は別のファイルを作って設定してください。
ファイルはアルファベット順で処理されます。 00_defaults にある変数を後のファイルにも設定した場合はそのファイルの値だけが残ります。
|
主要なu-bootの環境変数を以下に示します。 表6.7 u-bootの主要な環境変数 環境変数 | 説明 | デフォルト値 |
---|
console | コンソールのデバイスノードと、UARTのボーレート等を指定します。 | ttymxc0,115200 | bootcount | 起動回数を示します。初回起動時に1となり、起動に失敗する度にインクリメントされます。ユーザーランドのbootcountサービスが起動されると、この値はクリアされます。この値が"bootlimit"を越えた場合はロールバックします。ロールバックの詳細については、「ロールバック(リカバリー)」を参照してください。 | 1 | bootlimit | "bootcount"のロールバックを行うしきい値を指定します。 | 3 | bootdelay | 保守モードに遷移するためのキー入力を待つ時間を指定します(単位:秒)。次の値は特別な意味を持ちます。
-
-1: キー入力の有無に関らず保守モードに遷移します。
-
-2: キー入力の有無に関らず保守モードに遷移しません。
-
-3: キー入力の有無に関らず保守モードに遷移しません。ただし、SW1が押下されている場合は保守モードに遷移します。
| 0 | image | Linuxカーネルイメージファイルのパスです。"mmcdev"で指定されたデバイスの、"mmcpart"で指定されたパーティションのルートディレクトリからの相対パスで指定します。 | boot/uImage | fdt_file | DTBファイルのパスです。"mmcdev"で指定されたデバイスの、"mmcpart"で指定されたパーティションのルートディレクトリからの相対パスで指定します。 | boot/armadillo.dtb | overlays_list | DT overlayの設定ファイルのパスです。"mmcdev"で指定されたデバイスの、"mmcpart"で指定されたパーティションのルートディレクトリからの相対パスで指定します。DT overlayの詳細については、「DT overlay によるカスタマイズ」を参照してください。 | boot/overlays.txt | mmcautodetect | mmcデバイスの自動検出機能の有効/無効を指定します。yesを指定した場合のみ、u-bootが起動されたmmcデバイスが自動的にmmcdevとして利用されます。 | yes | mmcdev | "image"や"fdt_file"で指定されたファイルが配置してあるmmcデバイスのインデックスを指定します。インデックスとmmcデバイスの対応は次の通りです。
-
0: eMMC
-
1: microSD/microSDHC/microSDXC カード
"mmcautodetect"にyesが指定されている場合は、u-bootの起動時に上書きされます。 | 0 | mmcpart | "image"や"fdt_file"で指定されたファイルが配置してある、"mmcdev"で指定されたmmcデバイスのパーティション番号を指定します。"mmcautodetect"にyesが指定されている場合は、u-bootの起動時に上書きされます。 | 1 | mmcroot | ルートファイルシステムが配置されているデバイスノードと、マウントオプションを指定します。"mmcautodetect"にyesが指定されている場合は、u-bootの起動時に上書きされます。overlayfsが正しく機能しなくなる場合があるので、roの指定は変更しないでください。 | /dev/mmcblk0p1 rootwait ro | optargs | Linuxカーネル起動時パラメータを指定します。"quiet"を削除すると、コンソールに起動ログが出力されるようになりますが、起動時間が長くなります。 | quiet | loadaddr | LinuxカーネルがRAMにロードされる物理アドレスを指定します。 | 0x80800000 | fdt_addr | DTBがRAMにロードされる物理アドレスを指定します。 | 0x83500000 | overlay_addr | DT overlayのワーク領域として利用されるRAMの物理アドレスを指定します。 | 0x83520000 |
本章では、microSDカードから直接起動(以降「SDブート」と表記します)する手順を示します。
SDブートを活用すると、microSDカードを取り替えることでシステムイメージを変更することができます。
本章に示す手順を実行するためには、容量が8Gbyte以上のmicroSDカードを必要とします。 | |
---|
SDブートを行った場合、ブートローダーの設定は microSDカード に保存されます。 |
ブートディスクイメージのビルドします
「Alpine Linux ルートファイルシステムをビルドする」 で説明されているソースツリー alpine/build-rootfs にあるスクリプト build_image と 「ブートローダーをビルドする」 でビルドした u-boot-dtb.imx を利用します。 [ATDE ~/build-rootfs-[VERSION]]$ sudo ./build_image.sh --board a600 \
--boot ~/u-boot-[VERSION]/u-boot-dtb.imx
: (省略)
[ATDE ~/build-rootfs-[VERSION]]$ ls baseos-640*img
baseos-640-[VERSION].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 ~]$ sudo dd if=~/build-rootfs-[VERSION]/baseos-640-[VERSION].img \
of=/dev/sdb bs=1M oflag=direct status=progress microSDカードの性能にもよりますが、書き込みには5分程度かかります。
| |
---|
microSDカードのパーティション構成は次のようになっています。 表6.8 microSDカードのパーティション構成 パーティション | オフセット | サイズ | 説明 |
---|
- | 0 | 10MiB | ブートローダー | 1 | 10MiB | 300MiB | A/B アップデートのA面パーティション | 2 | 310MiB | 300MiB | A/B アップデートのB面パーティション | 3 | 610MiB | 50MiB | ログ用パーティション | 4 | 660MiB | 200MiB | ファームウェア | 5 | 860MiB | 残り | アプリケーション用パーティション |
gdiskで確認すると次のようになります。 [ATDE ~]$ sudo gdisk -l /dev/sdb
GPT fdisk (gdisk) version 1.0.8
Partition table scan:
MBR: protective
BSD: not present
APM: not present
GPT: present
Found valid GPT with protective MBR; using GPT.
Disk /dev/mmcblk1: 15319040 sectors, 7.3 GiB
Sector size (logical/physical): 512/512 bytes
Disk identifier (GUID): 309AD967-470D-4FB2-835E-7963578102A4
Partition table holds up to 128 entries
Main partition table begins at sector 2 and ends at sector 33
First usable sector is 34, last usable sector is 15319006
Partitions will be aligned on 2048-sector boundaries
Total free space is 20446 sectors (10.0 MiB)
Number Start (sector) End (sector) Size Code Name
1 20480 634879 300.0 MiB 8300 rootfs_0
2 634880 1249279 300.0 MiB 8300 rootfs_1
3 1249280 1351679 50.0 MiB 8300 logs
4 1351680 1761279 200.0 MiB 8300 firm
5 1761280 60485632 28.0 GiB 8300 app |
「ブートディスクの作成」で作成したブートディスクから起動する方法を説明します。 -
Armadillo-610に電源を投入する前に、ブートディスクをCON1(microSD スロット)に挿入します。
また、JP1 をジャンパでショートします。
電源を投入します。
U-Boot 2020.04-at15 (Jun 09 2023 - 18:46:32 +0900)
CPU: i.MX6ULL rev1.1 at 396 MHz
Model: Atmark Techno {product}
DRAM: 512 MiB
setup_rtc_disarm_alarm: Can't find bus
WDT: Started with servicing (10s timeout)
PMIC: PFUZE3000 DEV_ID=0x30 REV_ID=0x11
MMC: FSL_SDHC: 0, FSL_SDHC: 1
Loading Environment from MMC... OK
In: mxc_serial
Out: mxc_serial
Err: mxc_serial
switch to partitions #0, OK
mmc1 is current device
flash target is MMC:1
Net: eth0: ethernet@2188000
Fastboot: Normal
Saving Environment to MMC... Writing to MMC(1)... OK
Normal Boot
Hit any key to stop autoboot: 0
switch to partitions #0, OK
mmc1 is current device
Cannot lookup file boot/boot.scr
6859976 bytes read in 1420 ms (4.6 MiB/s)
Booting from mmc ...
37363 bytes read in 93 ms (391.6 KiB/s)
Loading fdt boot/armadillo.dtb
Cannot lookup file boot/overlays.txt
## Booting kernel from Legacy Image at 80800000 ...
Image Name: Linux-5.10.180-2-at
Created: 2023-06-09 9:48:24 UTC
Image Type: ARM Linux Kernel Image (uncompressed)
Data Size: 6859912 Bytes = 6.5 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 9ef1d000, end 9ef49fff ... OK
Starting kernel ...
...中略...
Welcome to Alpine Linux 3.17
Kernel 5.10.180-2-at on an armv7l (/dev/ttymxc0)
armadillo login:
6.20. Armadilloのソフトウェアをビルドするここでは、Armadillo-610で使用するソフトウェアのビルド方法を説明します。 ここでは、Armadillo-610向けのブートローダーイメージをビルドする方法を説明します。
ソースコードの取得
Armadillo Base OS対応 Armadillo-610 ブートローダー から
「ブートローダー ソース」ファイル (u-boot-[VERSION].tar.gz) を次のようにダウンロードします。 [ATDE ~]$ wgets https://armadillo.atmark-techno.com/files/downloads/armadillo-610/source/u-boot-[VERSION].tar.gz
[ATDE ~]$ tar xf u-boot-[VERSION].tar.gz
[ATDE ~]$ cd u-boot-[VERSION]
デフォルトコンフィギュレーションの適用
図6.126「デフォルトコンフィギュレーションの適用」に示すコマンドを実行します。
ビルド
次のコマンドを実行します。 [ATDE ~/u-boot-[VERSION]]$ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf-
:
: (省略)
:
LD u-boot
OBJCOPY u-boot-nodtb.bin
CAT u-boot-dtb.bin
MKIMAGE u-boot-dtb.imx
OBJCOPY u-boot.srec
COPY u-boot.bin
SYM u-boot.sym
CFGCHK u-boot.cfg
インストール
ビルドしたブートローダーは、以下に示すどちらかの方法でインストールしてください。
swupdate でインストールする
mkswu の初期化を行った後に 提供されているスクリプトを使ってSWUイメージを作成してください。 [ATDE ~/u-boot-[VERSION]]$ echo 'swdesc_boot u-boot-dtb.imx' > boot.desc
[ATDE ~/u-boot-[VERSION]]$ mkswu boot.desc
boot.swu を作成しました。 作成された boot.swu のインストールについては 「SWU イメージのインストール」 を参照ください。
「ブートディスクの作成」 でインストールする
手順を参考にして、ビルドされた u-boot-dtb.imx を使ってください。
ここでは、Armadillo-610向けのLinuxカーネルイメージをビルドする方法を説明します。 | |
---|
Armadillo-610では、
基本的にはLinuxカーネルイメージをビルドする必要はありません。
「Alpine Linux ルートファイルシステムをビルドする」の手順を実施することで、
標準のLinuxカーネルイメージがルートファイルシステムに組み込まれます。 標準のLinuxカーネルイメージは、アットマークテクノが提供する
linux-at というAlpine Linux用のパッケージに含まれています。 カスタマイズしたLinuxカーネルイメージを利用する場合は、
以下に示す手順を参照してください。 |
ソースコードの取得
Armadillo Base OS対応 Armadillo-610 Linuxカーネル から
「Linuxカーネル」ファイル (linux-at-a6-[VERSION].tar) をダウンロードして、次のコマンドを実行します。 [ATDE ~]$ tar xf linux-at-a6-[VERSION].tar
[ATDE ~]$ tar xf linux-at-a6-[VERSION]/linux-[VERSION].tar.gz
[ATDE ~]$ cd linux-[VERSION]
デフォルトコンフィギュレーションの適用
次のコマンドを実行します。 [ATDE ~/linux-[VERSION]]$ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- armadillo-640_defconfig
カーネルコンフィギュレーションの変更
次のコマンドを実行します。
カーネルコンフィギュレーションの変更を行わない場合はこの手順は不要です。 [ATDE ~]$ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- menuconfig コマンドを実行するとカーネルコンフィギュレーション設定画面が表示されます。
カーネルコンフィギュレーションを変更後、"Exit"を選択して
「Do you wish to save your new kernel configuration? (Press <ESC><ESC> to continue kernel configuration.)」で"Yes"とし、
カーネルコンフィギュレーションを確定します。 .config - Linux/arm 5.10.145 Kernel Configuration
─────────────────────────────────────────────
┌────────── Linux/arm 5.10.145 Kernel Configuration ──────────┐
│ Arrow keys navigate the menu. <Enter> selects submenus ---> (or empty submenus │
│ ----). Highlighted letters are hotkeys. Pressing <Y> includes, <N> excludes, <M>│
│ modularizes features. Press <Esc><Esc> to exit, <?> for Help, </> for Search. │
│ Legend: [*] built-in [ ] excluded <M> module < > module capable │
│ ┌───────────────────────────────────────┐ │
│ │ General setup ---> │ │
│ │ System Type ---> │ │
│ │ Bus support ---> │ │
│ │ Kernel Features ---> │ │
│ │ Boot options ---> │ │
│ │ CPU Power Management ---> │ │
│ │ Floating point emulation ---> │ │
│ │ Power management options ---> │ │
│ │ Firmware Drivers ---> │ │
│ │ [ ] ARM Accelerated Cryptographic Algorithms ---- │ │
│ │ General architecture-dependent options ---> │ │
│ │ [*] Enable loadable module support ---> │ │
│ │ [*] Enable the block layer ---> │ │
│ │ IO Schedulers ---> │ │
│ │ Executable file formats ---> │ │
│ │ Memory Management options ---> │ │
│ │ [*] Networking support ---> │ │
│ │ Device Drivers ---> │ │
│ │ File systems ---> │ │
│ │ Security options ---> │ │
│ │ -*- Cryptographic API ---> │ │
│ │ Library routines ---> │ │
│ │ Kernel hacking ---> │ │
│ │ │ │
│ └───────────────────────────────────────┘ │
├──────────────────────────────────────────┤
│ <Select> < Exit > < Help > < Save > < Load > │
└──────────────────────────────────────────┘ | |
---|
Linux Kernel Configuration メニューで"/"キーを押下すると、カーネルコンフィギュレーションの検索を行うことができます。
カーネルコンフィギュレーションのシンボル名(の一部)を入力して"Ok"を選択すると、
部分一致するシンボル名を持つカーネルコンフィギュレーションの情報が一覧されます。 |
ビルド
次のコマンドを実行します。 [ATDE ~/linux-[VERSION]]$ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf-
[ATDE ~/linux-[VERSION]]$ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- LOADADDR=0x82000000 uImage
インストール
ビルドしたカーネルは、以下に示すどちらかの方法でインストールしてください。
swupdate でインストールする
mkswu の初期化を行った後に 提供されているスクリプトを使ってSWUイメージを作成してください。
作成された kernel.swu のインストールについては 「SWU イメージのインストール」 を参照ください。
build_rootfs で新しいルートファイルシステムをビルドする場合は build_rootfs を展開した後に以下のコマンドでインストールしてください。
|
build_rootfs のディレクトリ名を設定します。これによって、長いディレクトリ名を何度も入力する必要が無くなります。
| |
アットマークテクノが提供するカーネルをインストールしない様に、 linux-at-a6@atmark と記載された行を削除します。
| |
別のカーネルをすでにインストールしている場合は、新しいモジュールをインストールする前に古いモジュールを削除する必要があります。
|
6.20.3. Alpine Linux ルートファイルシステムをビルドするここでは、alpine/build-rootfsを使って、
Alpine Linux ルートファイルシステムを構築する方法を説明します。 alpine/build-rootfs は、ATDE 上で Armadillo-610 用の Alpine Linux ルートファイルシステムを構築することができるツールです。
ルートファイルシステムのビルドに必要な Podman のインストール
次のコマンドを実行します。 [ATDE ~]$ sudo apt install podman btrfs-progs xxhash
alpine/build-rootfsの入手
Armadillo Base OS対応 Armadillo-610 開発用ツール から
「Alpine Linuxルートファイルシステムビルドツール」 ファイル (build-rootfs-[VERSION].tar.gz) を次のようにダウンロードします。 [ATDE ~/]$ wget https://armadillo.atmark-techno.com/files/downloads/armadillo-610/tool/build-rootfs-latest.tar.gz
[ATDE ~/]$ tar xf build-rootfs-latest.tar.gz
[ATDE ~/]$ cd build-rootfs-[VERSION]
Alpine Linux ルートファイルシステムの変更
a600ディレクトリ以下のファイルを変更することで、
ルートファイルシステムをカスタマイズすることができます。 | |
---|
commonとa600 ディレクトリ直下にあるfixupやpackagesなどの同名ファイルは、それぞれのファイルを連結して利用されます。パッケージの削除などを行う場合は、commonディレクトリ以下のファイルも確認してください。 commonとa600内のサブディレクトリにある同名ファイルは、a600のファイルが利用されます。 |
build-rootfsに含まれるファイルの説明は次の通りです。 表6.9 build-rootfsのファイル説明 ファイル | 説明 |
---|
a600/resources/* | 配置したファイルやディレクトリは、そのままルートファイルシステム直下にコピーされます。
ファイルを追加する場合は、このディレクトリに入れてください。 | a600/packages | このファイルに記載されているパッケージはルートファイルシステムにインストールされます。
パッケージを追加する場合はこのファイルに追加してください。 | a600/fixup | このファイルに記載されているコマンドはパッケージのインストールが完了した後に実行されます。 | a600/image_firstboot/* | 配置したファイルやディレクトリは、「ブートディスクの作成」や「初期化インストールディスクの作成」の手順
のようにブートディスクイメージを作成する際、そのままルートファイルシステム直下にコピーされます。 | a600/image_installer/* | 配置したファイルやディレクトリは、「初期化インストールディスクの作成」の手順
のようにインストールディスクイメージを作成する際、
そのままインストーラーにコピーされます。ルートファイルシステムに影響はありません。 | a600/image_common/* | 配置したファイルやディレクトリは、ブートディスクイメージおよびインストールディスクイメージを
作成する際、ルートファイルシステム、インストーラにそれぞれコピーされます。 |
| |
---|
利用可能なパッケージは以下のページで検索することができます。 Alpine Linuxルートファイルシステムを起動している
Armadilloでも検索することができます。 [armadillo ~]# apk update
[armadillo ~]# apk search ruby
ruby-test-unit-rr-1.0.5-r0
ruby-rmagick-5.1.0-r0
ruby-public_suffix-5.0.0-r0
:
: (省略)
:
ruby-mustache-1.1.1-r5
ruby-nokogiri-1.13.10-r0 |
ビルド
次のコマンドを実行します。 パッケージをインターネット上から取得するため回線速度に依存しますが、
ビルドには数分かかります。 [ATDE ~/build-rootfs-[VERSION]]$ sudo ./build_rootfs.sh -b a600
use default(outdir=/home/atmark/git/build-rootfs)
use default(output=baseos-600-ATVERSION.tar.zst)
:
: (略)
:
> Creating rootfs archive
-rw-r--r-- 1 root root 231700480 Nov 26 07:18 rootfs.tar
ERROR: No such package: .make-alpine-make-rootfs
============================================
footprint[byte] tarball[byte] packages
229904000 74942331 alpine-base coreutils chrony ...(省略)
============================================
done. | |
---|
リリース時にバージョンに日付を含めたくないときは --release を引数に追加してください。 |
| |
---|
任意のパス、ファイル名で結果を出力することもできます。 [ATDE ~/build-rootfs-[VERSION]]$ ./build_rootfs.sh -b a600 ~/alpine.tar.zst
:
: (略)
:
[ATDE ~/build-rootfs-[VERSION]]$ ls ~/alpine.tar.zst
~/alpine.tar.zst |
「Alpine Linux ルートファイルシステムビルドツール」のバージョンが3.18-at.7以降を使用している場合は、ビルドが終わると SBOM も [output].spdx.json として出力されます。
ライセンス情報等を記載するためのコンフィグファイルはデフォルトは baseos_sbom.yaml となっています。コンフィグファイルを変更する場合は --sbom-config <config> に引数を入れてください。
SBOM が不要な場合は --nosbom を引数に追加してください。 SBOM のライセンス情報やコンフィグファイルの設定方法については 「ビルドしたルートファイルシステムの SBOM を作成する」 をご覧ください。
インストール
ビルドしたルートファイルシステムは、以下に示すどちらかの方法でインストールしてください。
swupdate でインストールする
mkswu の初期化を行った後に 提供されているスクリプトを使ってSWUイメージを作成してください。 [ATDE ~/build-rootfs-[VERSION]]$ vi OS_update.desc
swdesc_tar --version base_os [VERSION] \
--preserve-attributes baseos-600-[VERSION].tar.zst
[ATDE ~/build-rootfs-[VERSION]]$ mkswu OS_update.desc
OS_update.swu を作成しました。 作成された OS_update.swu のインストールについては 「SWU イメージのインストール」 を参照ください。
「ブートディスクの作成」 でインストールする
手順を実行すると、ビルドされた baseos-600-[VERSION].tar.zst が自動的に利用されます。
6.20.4. ビルドしたルートファイルシステムの SBOM を作成するここでは例として、「Alpine Linux ルートファイルシステムをビルドする」 で作成した OS_update.swu の SBOM を作成します。
SBOM を作成するには、作成する対象のファイルとライセンス情報等を記載するためのコンフィグファイルが必要となります。
また、baseos-600-[VERSION].package_list.txt から、パッケージの情報を記載することができます。 ライセンス情報等を記載するためのコンフィグファイルの例は以下のコマンドで確認することができます。
各項目に関する説明はコメントに記載しておりますので、必要に応じて値を変更してください。
各項目の詳細な説明については SPDX specification v2.2.2 (https://spdx.github.io/spdx-spec/v2.2.2/) をご覧ください。 [ATDE ~/build-rootfs-[VERSION]]$ cat submodules/make-sbom/config.yaml 作成した コンフィグファイルとパッケージ情報から SBOM を作成するには以下のコマンドを実行します。 [ATDE ~/build-rootfs-[VERSION]]$ ./make_sbom.sh -i OS_update.swu -c <コンフィグファイル> -p baseos-600-[VERSION].package_list.txt
INFO:root:created OS_update.swu.spdx.json このツールで作成される SBOM は json 形式で ISO/IEC5962で国際標準となっているSPDX2.2のフォーマットに準拠しています。 アットマークテクノが提供している SBOM は
ソフトウェアダウンロード
の各ソフトウェアダウンロードページからダウンロードすることができます。 6.21. eMMC の GPP(General Purpose Partition) を利用するGPP に squashfs イメージを書き込み、Armadillo の起動時に自動的にマウントする方法を紹介します。 6.21.1. squashfs イメージを作成するこの作業は ATDE 上で行います。 squashfs-tools パッケージに含まれている mksquashfs コマンドを使用して squashfs イメージを作成します。 6.21.2. squashfs イメージを書き込む以降の作業は Armadillo 上で行います。 「squashfs イメージを作成する」で作成した squashfs イメージを、USB メモリ利用するなどして Armadillo-610 にコピーし、GPP に書き込みます。 | |
---|
ユーザー領域として使用可能なGPPは /dev/mmcblk0gp3 のみです。 GPPへの書き込みを行う際は、誤って /dev/mmcblk0gp0 などに書き込みを行わないよう、十分に注意してください。 |
[armadillo]# mount /dev/sda1 /mnt
[armadillo]# dd if=/mnt/squashfs.img of=/dev/mmcblk0gp3 conv=fsync
[armadillo]# umount /mnt GPP の全ブロックに対して Temporary Write Protection をかけることにより、GPP への書き込みを制限することができます。
Temporary Write Protection は電源を切断しても解除されません。 Temporary Write Protection をかけるには、mmc-utils パッケージに含まれている mmc コマンドを使用します。 GPP の全ブロックに対して Temporary Write Protection をかけるには、次のようにコマンドを実行します。 |
/dev/mmcblk0gp3 のブロック数を確認します。コマンドの出力を見ると /dev/mmcblk0gp3 が 16384 ブロックあることがわかります。
| |
/dev/mmcblk0gp3 の全ブロックに Temporary Write Protection をかけます。
|
| |
---|
Temporary Write Protection を解除するには、次のコマンド実行します。 [armadillo]# mmc writeprotect user set none 0 16384 /dev/mmcblk0gp3 |
6.21.4. 起動時に squashfs イメージをマウントされるようにする/etc/fstab を変更し、起動時に squashfs イメージがマウントされるようにします。
[armadillo]# mkdir -p /opt/sample
[armadillo]# persist_file /opt/sample/
[armadillo]# vi /etc/fstab
:
:(省略)
:
/dev/mmcblk0gp3 /opt/sample squashfs defaults,nofail 0 0
[armadillo]# persist_file /etc/fstab |
squashfs イメージをマウントするディレクトリを作成します
| |
最終行にこの行を追加します。これで、/dev/mmcblk0gp3 が /opt/sample にマウントされるようになります。
|
Armadillo の再起動後、 /opt/sample/README の内容が正しければ完了です。 [armadillo]# reboot
:
: (省略)
:
[armadillo]# ls /opt/sample
README
[armadillo]# cat /opt/sample/README
complete mounting squashfs on eMMC(GPP) Armadillo-610 ではシステムが出力するログの一部は、
一般的な /var/log ディレクトリではなく、/var/at-log ディレクトリに出力されます。
/var/at-log は、ルートファイルシステムとは別のパーティションになっているので、
ルートファイルシステムに障害が発生した場合でも、/var/at-log のパーティションが無事であれば、
ログファイルを取り出して、不具合等の解析に利用することができます。 | |
---|
通常のログは /var/log/messages に出力されます。 /var/log/messages はファイルサイズが 4MB になるとローテートされ /var/log/messages.0 に移動されます。 /var/log/messages.0 が存在する状態で、更に /var/log/messages のファイルサイズが 4MB になった場合は、 /var/log/messages の内容が /var/log/messages.0 に上書きされます。 /var/log/messages.1 は生成されません。 |
ログファイルは /var/at-log ディレクトリ内に atlog というファイル名で作成されているので、
これを任意のディレクトリにコピーすることで取り出せます。
もし、eMMC 上のルートファイルシステムが壊れてしまい起動できない場合は、
microSD カードから起動することでログファイルを取り出すことができます。 | |
---|
/var/at-log/atlog はファイルサイズが 3MB になるとローテートされ /var/at-log/atlog.1 に移動されます。 /var/at-log/atlog.1 が存在する状態で、更に /var/at-log/atlog のファイルサイズが 3MB になった場合は、 /var/at-log/atlog の内容が /var/at-log/atlog.1 に上書きされます。 /var/at-log/atlog.2 は生成されません。 |
ログファイルの内容はテキストデータであり、以下のようなフォーマットになっています。 atlog には以下の内容が保存されています。 -
インストール状態のバージョン情報
-
swupdate によるアップデートの日付とバージョン変更
-
abos-ctrl / uboot の rollback 日付
-
uboot で wdt による再起動が合った場合にその日付
ログ出力先である /var/at-log ディレクトリには、
GPP である /dev/mmcblk0gp1 パーティションがマウントされています。
このパーティションに論理的な障害が発生した場合は、/dev/mmcblk0gp1 の
データを /dev/mmcblk0gp2 にコピーし、/dev/mmcblk0gp1 は FAT ファイルシステムで
フォーマットされます。
このパーティションの障害チェックはシステム起動時に自動的に実行されます。 viエディタは、Armadilloに標準でインストールされているテキストエディタです。本書では、Armadilloの設定ファイルの編集などにviエディタを使用します。 viエディタは、ATDEにインストールされてるgeditやemacsなどのテキストエディタとは異なり、モードを持っていることが大きな特徴です。viのモードには、コマンドモードと入力モードがあります。コマンドモードの時に入力した文字はすべてコマンドとして扱われます。入力モードでは文字の入力ができます。 本章で示すコマンド例はATDEで実行するよう記載していますが、Armadilloでも同じように実行することができます。 viを起動するには、以下のコマンドを入力します。 file にファイル名のパスを指定すると、ファイルの編集(+file+が存在しない場合は新規作成)を行います。viはコマンドモードの状態で起動します。
文字を入力するにはコマンドモードから入力モードへ移行する必要があります。コマンドモードから入力モードに移行するには、表6.10「入力モードに移行するコマンド」に示すコマンドを入力します。入力モードへ移行後は、キーを入力すればそのまま文字が入力されます。 表6.10 入力モードに移行するコマンド コマンド | 動作 |
---|
i | カーソルのある場所から文字入力を開始 | a | カーソルの後ろから文字入力を開始 |
入力モードからコマンドモードに戻りたい場合は、ESCキーを入力することで戻ることができます。現在のモードが分からなくなった場合は、ESCキーを入力し、一旦コマンドモードへ戻ることにより混乱を防げます。 | |
---|
日本語変換機能をOFFに viのコマンドを入力する時はATDEの日本語入力システム(Mozc)をOFFにしてください。日本語入力システムのON/OFFは、半角/全角キーで行うことができます。 |
「i」、「a」それぞれのコマンドを入力した場合の文字入力の開始位置を図6.134「入力モードに移行するコマンドの説明」に示します。 | |
---|
viでの文字削除 コンソールの環境によってはBS(Backspace)キーで文字が削除できず、「^H」文字が入力される場合があります。その場合は、「文字の削除」で説明するコマンドを使用し、文字を削除してください。 |
方向キーでカーソルの移動ができますが、コマンドモードで表6.11「カーソルの移動コマンド」に示すコマンドを入力することでもカーソルを移動することができます。 表6.11 カーソルの移動コマンド コマンド | 動作 |
---|
h | 左に1文字移動 | j | 下に1文字移動 | k | 上に1文字移動 | l | 右に1文字移動 |
ファイルの保存、終了を行うコマンドを表6.13「保存・終了コマンド」に示します。 表6.13 保存・終了コマンド コマンド | 動作 |
---|
:q!
| 変更を保存せずに終了 | :w[file]
| ファイルを+file+に指定して保存 | :wq
| ファイルを上書き保存して終了 |
保存と終了を行うコマンドは「 : 」(コロン)からはじまるコマンドを使用します。" : "キーを入力すると画面下部にカーソルが移り入力したコマンドが表示されます。コマンドを入力した後Enterキーを押すことで、コマンドが実行されます。 Armadillo-610 で採用している CPU (i.MX6ULL) には、一度しか書き込むことのできない eFuse が搭載されています。 eFuse には、 CPUがブートする時の設定や MAC アドレスなどが書かれます。Armadillo-610 は組み込み機器を作り込むエンジニアを対象にした製品ですので、 eFuse もユーザーに開放し、細かな制御を可能にしています。しかし eFuse はその性質上、一度書き間違うと直すことができません。十分に注意してください。 | |
---|
eFUSEは一度書き込むと元に戻すことができません。eFUSEの設定によってはArmadillo-610が正常に動作しなくなる可能性がありますので、書き込みを行う際には細心の注意を払うようお願いいたします。eFUSEの設定によって異常が起こった場合は保証対象外となります。 |
MACアドレスは Armadillo-610 の出荷時に書き込まれているので、新たに書き込む必要はありません。この章では U-Boot を使って eFuse の書き換えを行い、ブートモードを制御する方法を説明します。 eFuse を変更する場合は、必ず「i.MX 6ULL Applications Processor Reference Manual」を参照してください。重要な章は、以下の 4つです。 -
Chapter 5: Fusemap
-
Chatper 8: System Boot
-
Chapter 37: On-Chip OTP Controller
-
Chapter 58: Ultra Secured Digital Host Controller
以降、本章では i.MX 6ULL Applications Processor Reference Manual を「リファレンスマニュアル」と呼びます。 | |
---|
章番号や章タイトルは、i.MX 6ULL Applications Processor Reference Manual Rev. 1, 11/2017 現在の情報です。異るリビジョンのリファレンスマニュアルでは、章番号およびタイトルが異なる場合があります。 |
i.MX6ULL にはブートモードを決める BOOT_MODE0 と BOOT_MODE1 というピンがあります。 Armadillo-610 では、BOOT_MODE0 は 0 、BOOT_MODE1 は 1 となるよう回路が設計されており、ブートモードは必ず Internal Boot モードとなります。 6.24.1.1. Internal Boot モードInternal Bootモードでは、 on-chip boot ROMに書き込まれているコードが実行し、ブート可能なデバイスを検索します。リファレンスマニュアル「8.5 Boot devices (internal boot)」に、i.MX6ULL がブートできるデバイスの一覧が記載されています。Armadillo-610 では、そのうちオンボードeMMC と microSDカードに対応しています。 Internal Bootモードでは、GPIO によって eFuseの設定を上書き (override) できるようになっています。この機能は eFuse の BT_FUSE_SEL が 0 の場合のみ有効となります。eFuse の設定とは異なり何度も再設定できる点では便利ですが、overrideに対応したピンには i.MX6ULL の電源投入時に決まった信号を入力しておかなければいけないため、ハードウェア設計上は不便になります。 Armadillo-610では、GPIO による override を利用することで、仕様が確定していない段階ではブートデバイスを自由に何度も切り替えることを可能にしつつ、BT_FUSE_SEL を 1 にして GPIO による override を無効化することで、仕様が確定した段階では自由なハードウェア設計が可能になるよう配慮しています。また、GPIO による override を無効化することで、フィールドに出した製品が悪意ある人によって意図していないブートをし、被害が出ることを防ぐことができます。(もちろん、ブート後に root アカウントを乗っ取られるような作りでは、意味がありませんが…) Internal Bootモードでは、GPIO によって eFuseの設定を上書き (override) できるようになってると紹介しましたが、Armadillo-610 では、Armadillo-610 拡張ボードの JP1 はまさにこの機能を使っています。 JP1 は BJP1(Armadillo-610 CON2_42ピン) に接続されており、 LCD1_DATA05 と LCD1_DATA11 の制御をしていますが、これらのピンはそれぞれ BOOT_CFG1[5] と BOOT_CFG2[3] を override しています。「8.3.2 GPIO boot overrides」の 表「8-3. GPIO override contact assignments」を確認してください。 ややこしい事に、この BOOT_CFG で始まる eFUSE は、リファレンスマニュアルの中では eFuse のアドレスでも表記されています。 BOOT_CFG1 は eFuse のアドレスで言うと 0x450 の下位 8 bit つまり 0x450[7:0] であり、 BOOT_CFG2 は上位 8 bit つまり 0x450[15:8] にあたります。これは「5.1 Boot Fusemap」の表「5-5. SD/eSD Boot Fusemap」または表「5-6. MMC/eMMC Boot Fusemap」を確認することでわかります。 さらにややこしい事に、eFuse を書き込む場合にはこれら全ての値が使えず、On-Chip OTP Controller の bank と word の値が必要になります。これらの値は リファレンスマニュアルの「On-Chip OTP Controller」を参照してください。後で出てきますが Boot From Fuses で使用する BT_FUSE_SEL という eFuse のように GPIO による override ができないものもあります。 表6.14 GPIO override と eFuse 信号名 | eFuse名 | eFuseアドレス | OCOTP名 | Bank | Word |
---|
LCD1_DATA05
| BOOT_CFG1[5]
| 0x450[5]
| OCOTP_CFG4 | 0 | 5 | LCD1_DATA11
| BOOT_CFG2[3]
| 0x450[11]
| OCOTP_CFG4 | 0 | 5 | N/A | BT_FUSE_SEL
| 0x460[4]
| OCOTP_CFG5 | 0 | 6 |
Armadillo-610 ではSDカード または eMMC からのブートになるので、ブートデバイスを選択する eFuse BOOT_CFG1[7:4] は、010x または 011x になります。 リファレンスマニュアル「8.5.3.1 Expansion device eFUSE configuration」には、さらに詳しく SD/MMCデバイスの設定について記載されています。テーブル「8-15. USDHC boot eFUSE descriptions」によれば、eFuse の 0x450[7:6] が 01 の場合に SD/MMC デバイスからブートすることを決めています。さらに 0x450[5] が 0 なら SDが、 0x450[5] が 1 なら MMC が選択されます。つまり、4から 7 bit までの間で 5 bit 目だけが MMC か SD かを決めています。 BOOT_CFG1[5] が 0 の場合はコントローラーは SDデバイスが繋がっている前提で、 BOOT_CFG1[5] が 1 の場合は MMCデバイスが繋っている前提で動作します。 i.MX6ULL には、SD/MMC のコントローラーである uSDHC が 2つ搭載されています。 Armadillo-610では、eMMC が uSDHC1に、 microSDカードが uSDHC2 に接続されています。ブート時にどちらのコントローラーからブートするかを決めている eFuse が 0x450[12:11] です。 0x450[12:11] が 00 であれば uSDHC1 つまりオンボード eMMC から、01 であれば uSDHC2 つまり microSDカードからブートします。言い換えると Armadillo-610 でオンボード eMMC からブートしたい場合は、0x450[5] を 1 に、 0x450[12:11] を 00 にします。逆に microSDカードから起動したい場合は 0x450[5] を 0 に、0x450[12:11] を 01 にします。 表6.15 ブートデバイスと eFuse ブートデバイス | eFuse 0x450[5] | 0x450[12:11] |
---|
オンボード eMMC | 1
| 00
| microSDカード | 0
| 01
|
Armadillo-610 では、U-Boot のコマンドによって eFuseの書き換えをサポートしています。 「スライドスイッチの設定について」 を参照してU-Boot を保守モードで起動してください。 eFuse の書き換えは、 fuse コマンドを使います。 | |
---|
U-Boot の fuse コマンドのソースコードは、以下の 2つです。 -
cmd/fuse.c
-
drivers/misc/mxc_ocotp.c
|
=> help fuse
fuse - Fuse sub-system
Usage:
fuse read <bank> <word> [<cnt>] - read 1 or 'cnt' fuse words,
starting at 'word'
fuse sense <bank> <word> [<cnt>] - sense 1 or 'cnt' fuse words,
starting at 'word'
fuse prog [-y] <bank> <word> <hexval> [<hexval>...] - program 1 or
several fuse words, starting at 'word' (PERMANENT)
fuse override <bank> <word> <hexval> [<hexval>...] - override 1 or
several fuse words, starting at 'word'
=> -
fuse read
-
eFuse の値を Shadow Registerから読み出します。i.MX6ULL の eFuse は、すべて Shadow Register を持ち、起動時に eFuse から Shadow Register に値がコピーされます。詳しくはリファレンスマニュアル「37.3.1.1 Shadow Register Reload」を確認してください。
-
fuse sense
-
eFuse の値を eFuse から読み出します
-
fuse prog
-
eFuse の値を書き換えます
fuse コマンドは、 bank 、 word 、cnt 、 hexval を引数に取ります。
-
bank
-
eFuse のバンク番号
-
word
-
eFuse のワード番号
-
cnt
-
eFuse を読み出す個数
-
hexval
-
書き込む値
6.24.4. eFuse の設定によるブートデバイスの選択eFuse の設定によるブートデバイスの選択を可能にするには、 eFuse に書き込んだ値が正しいことを i.MX6ULL に教える必要があります。そのための eFuse が BT_FUSE_SEL (0x460[4] ) です。Armadillo-610 では、このビットが 1 であれば、GPIO による override が無効になり eFuse の設定にしたがってブートデバイスが選択されるようになります。 オンボード eMMC からだけブートさせたい場合は、ブートデバイスの種類で MMC と、コントローラーで uSDHC1 を選択することで可能です。忘れずに BT_FUSE_SEL を 1 にします。 オンボード eMMC のスペックは、以下の通りです。リファレンスマニュアル 8.5.3 Expansion device および 表「5-6. MMC/eMMC Boot Fusemap」を確認してください。「可変」列が「不」となっている値は、変更しないでください。例えば、オンボード eMMC は 1.8 V に対応していません。 bit 9 の SD Voltage Selection で 1 の 1.8 V では動作しません。 表6.16 オンボード eMMC のスペック 名前 | Bit | eFuse | 値 | bit列 | 可変 |
---|
BOOT_CFG2
| [15:13]
| Bus Width | 8 bit | 010
| 不 | [12:11]
| Port Select | uSDHC1 | 00
| 不 | [10]
| Boot Frequencies | 500 / 400 MHz | 00
| 可 | [9]
| SD Voltage Selection | 3.3 V | 0
| 不 | [8]
| - | - | 0
| - | BOOT_CFG1
| [7:5]
| eMMC | - | 011
| 不 | [4]
| Fast Boot | Regular | 0
| 可 | [3]
| SD/MMC Speed | High | 0
| 不 | [2]
| Fast Boot Acknowledge Disable | Enabled | 0
| 可 | [1]
| SD Power Cycle Enable | Enabled | 1
| 可 | [0]
| SD Loopback Clock Source Sel | SD Pad | 0
| 不 |
値を見易いように、 BOOT_CFG2 を上にしています。 BOOT_CFG1 と BOOT_CFG2 は、OCOTP_CFG4 にマップされており Bank 0 Word 5 です。つまり 010000000 01100010 の 16 bit (0x4062 ) を Bank 0 Word 5 に書き込めば良いことが分ります。 BOOT_CFG3 と BOOT_CFG4 はここでは無視します。 BT_FUSE_SEL は Bank 0 Word 6 の 4 bit 目になるので 0x10 を書き込みます。
=> fuse read 0 5
Reading bank 0:
Word 0x00000005: 00000000
=> fuse prog 0 5 0x4060
Programming bank 0 word 0x00000005 to 0x00004060...
Warning: Programming fuses is an irreversible operation!
This may brick your system.
Use this command only if you are sure of what you are doing!
Really perform this fuse programming? <y/N>
y
=> fuse read 0 6
Reading bank 0:
Word 0x00000006: 00000000
=> fuse prog -y 0 6 0x10
Programming bank 0 word 0x00000006 to 0x00000010...
=> fuse read 0 6
Reading bank 0:
Word 0x00000006: 00000010
(電源入れなおしても、SDからブートしない) | |
---|
fuse prog にオプション -y を付けると 「 Really perform this fuse programming? <y/N> 」と聞かれません。
|
これで eMMC からしか起動しない Armadillo-610 ができあがりました。 | |
---|
eMMC からしか起動しないので、あやまって eMMCに書き込まれている U-Boot を消してしまうと、二度と起動しないようになります。注意してください。 |
| |
---|
eMMC Fast Boot機能を使う場合や Power Cycle を Enable にする場合は、当該ビットを 1 に変更してください。 |
同じ要領で、SDからだけしかブートしないようにすることも可能です。しかし eFuse によるブートデバイスの固定は、意図しないブートを防ぐことが目的です。 Armadillo-610 で microSDからのブートに固定することは可能ですが、別の microSDカードを挿入されてしまうと、その別の microSDカードからブートしてしまうので目的を達成できません。理解してお使いください。 書き込んだ eFuse の値を変更されてしまっては、Boot From Fuseモードにしている意味がありません。i.MX6ULLでは eFuse を変更できなくするビットも用意されています。 リファレンスマニュアル「5.3 Fusemap Descriptions Table」を確認してください。 本章では、Armadillo-610のオプション品について説明します。 表6.17 Armadillo-610関連のオプション品 FT232RLを搭載したUSB-シリアル変換アダプタです。シリアルの信号レベルは3.3V CMOSです。 -
-
オープン
-
-
GNDショート
シリアルインターフェース(Armadillo-610拡張ボード: CON3)に接続した場合、
USBシリアル変換アダプタのスイッチで、電源投入時の起動モードを設定することが可能です。
スライドスイッチの状態に対応した起動モードは以下のとおりです。 表6.18 USBシリアル変換アダプタのスライドスイッチによる起動モードの設定 スライドスイッチ | 起動モード |
---|
オープン | オートブートモード | GNDショート | 保守モード |
| |
---|
USBシリアル変換アダプタは、Armadillo-610の電源を切断した状態で接続してください。
故障の原因となる可能性があります。 |
| |
---|
USBシリアル変換アダプタは、試作・開発用の製品です。外観や仕様を予告なく変更する場合がありますので、ご了承ください。 |
6.25.2. Armadillo-610 拡張ボードArmadillo-610 拡張ボードはArmadillo-610を搭載する拡張ボードを設計開発するためのリファレンスボードです。
電源、LAN、USB、SD、LCD []、RS485、オーディオ、絶縁デジタル入出力、リアルタイムクロック、スイッチ、LED等の動作を確認することが可能です。
Armadillo-610 拡張ボードはArmadillo-610 開発セットに同梱されます。 | |
---|
Armadillo-610 拡張ボードはArmadillo-610がないと機能しない製品ですので、
Armadillo-610を搭載した状態での仕様を説明します。 |
Armadillo-610 拡張ボードの主な仕様は次のとおりです。 表6.19 Armadillo-610 拡張ボードの仕様 LAN(Ethernet) | 100BASE-TX/10BASE-T x 1、AUTO-MDIX対応 | シリアル(UART) | 3.3V CMOSレベル x 1、RS485 x 1 | USB | USB 2.0 Host(High Speed) x 2、USB 2.0 OTG(High Speed) x 1 | SD | SDスロット x 1 [] | カレンダ時計 | リアルタイムクロック搭載、バックアップ用コネクタ搭載 [] | オーディオ | モノラルスピーカー出力 x 1 | ビデオ | LCDオプションセット(7インチタッチパネルWVGA液晶)接続可能 [] | 接点入出力 | 入力 x 2、出力 x 2 | Groveインターフェース | Groveコネクタ x 4 []
UART x 1、I2C x 1、A/D x 2 | 拡張インターフェース | UART、SD、LCD、I2S、S/PDIF、MQS、I2C、SPI、CAN、A/D、PWM、GPIO等 [] | スイッチ | ユーザースイッチ x 1、 リセットスイッチ x 1、パワースイッチ x 1 | LED | ユーザーLED x 1 | 電源電圧 | DC 9〜24V±10%(メイン電源)、DC 2.0~3.5V(RTCバックアップ)、DC 2.75~3.3V(i.MX6ULL内蔵RTCバックアップ) | 消費電力 | 約1.2W(待機時)、約1.8W(LAN通信時) [] | 使用温度範囲 | +10~+40℃(結露なきこと) | 外形サイズ | 115 x 160 mm(突起部を除く) |
| |
---|
Armadillo-610 開発ボードは設計開発用のリファレンスボードです。
仕様や外観を予告なく変更する場合があります。 |
Armadillo-610 拡張ボードのブロック図は次のとおりです。 Armadillo-610 拡張ボードの電源回路の構成は次のとおりです。 Armadillo-610 拡張ボードのインターフェース仕様について説明します。 表6.20 Armadillo-610 拡張ボードのインターフェース一覧 [] 部品番号 | インターフェース名 | 型番 | メーカー |
---|
CON1 | SDインターフェース | CIM-K03NS | MITSUMI ELECTRIC | CON2 | LANインターフェース | TM11R-5M2-88-LP | HIROSE ELECTRIC | CON3 | シリアルインターフェース | DF13A-7P-1.25H(51) | HIROSE ELECTRIC | CON4 | Armadillo-610インターフェース | DF40HC(3.0)-100DS-0.4V(51) | HIROSE ELECTRIC | CON5 | USBホストインターフェース | UBA-4RS-D14T-4D(LF)(SN) | J.S.T. Mfg. | CON6 | USB OTGインターフェース | UB-MC5ABR3-SD204-4S-1 | J.S.T. Mfg. | CON7 | Groveインターフェース | 1125R-4P | Shenzhen NS-TECH Co.,Ltd | CON8 | 1125R-4P | Shenzhen NS-TECH Co.,Ltd | CON9 | 1125R-4P | Shenzhen NS-TECH Co.,Ltd | CON10 | 1125R-4P | Shenzhen NS-TECH Co.,Ltd | CON11 | LCDインターフェース | XF2M-5015-1A | OMRON | CON12 | 電源入力インターフェース | PJ-102AH | CUI | CON13A | 電源出力インターフェース | TBL002A-350-14GY-2GY | CUI | CON13B | DIDOインターフェース | CON13C | RS485インターフェース | CON13D | オーディオインターフェース | CON14 | 電源出力インターフェース | A2-2PA-2.54DSA(71) | HIROSE ELECTRIC | CON15 | RTCバックアップインターフェース | CH7410-2032LF | TAKACHI | CON16 | B2B-EH(LF)(SN) | J.S.T. Mfg. | CON17 | 内蔵RTCバックアップインターフェース | B2B-EH(LF)(SN) | J.S.T. Mfg. | CON18 | WLANインターフェース | AXK6F34347YG | Panasonic | CON19 | 拡張インターフェース | XG4C-1031 | OMRON | CON20 | XG4C-4031 | OMRON | CON21 | XG4C-1031 | OMRON | CON22 | XG4C-1031 | OMRON | CON23 | リセットインターフェース | A2-2PA-2.54DSA(71) | HIROSE ELECTRIC | CON24 | 電源入力インターフェース | A2-6PA-2.54DSA(71) | HIROSE ELECTRIC | JP1 | 起動デバイス設定ジャンパ | A2-2PA-2.54DSA(71) | HIROSE ELECTRIC | SW1 | ユーザースイッチ | SKHLACA010 | ALPS ELECTRIC | SW2 | リセットスイッチ | SKHLACA010 | ALPS ELECTRIC | SW3 | ONOFFスイッチ | SKHLACA010 | ALPS ELECTRIC | LED1 | LANスピードLED | SML-310MTT86 | ROHM | LED2 | LAN リンクアクティビティ LED | SML-310YTT86 | ROHM | LED3 | ユーザー LED | SML-310MTT86 | ROHM | TH7 | Armadillo-610用スタッド | TH-1.6-3.0-M3 | Mac-Eight | TH8 | TH-1.6-3.0-M3 | Mac-Eight | TH13 | WLANモジュール用スタッド | TH-1.6-1.5-M2 | Mac-Eight | TH14 | TH-1.6-1.5-M2 | Mac-Eight |
6.25.2.5. CON1 (SDインターフェース)CON1はハイスピード(最大クロック周波数: 49.5MHz)に対応したSDインターフェースです。
信号線はi.MX6ULLのSDホストコントローラ(uSDHC2)に接続されます。 SDカードに供給される電源はi.MX6ULLのUART2_RTS_Bピン(GPIO1_IO23)で制御が可能です。
Highレベル出力で電源が供給され、Lowレベル出力で電源が切断されます。 | |
---|
SDコントローラ(uSDHC2)はSDインターフェース(Armadillo-610: CON1)でも使用しており、
同時に使用することはできません。
こちらのSDを有効にした場合、SDインターフェース(Armadillo-610: CON1)はブート時のみ利用され、ブート以降はこちらが利用されます。 |
表6.21 CON1 信号配列 ピン番号 | ピン名 | I/O | 説明 |
---|
1 | CD/DAT3 | In/Out | SDデータバス(bit3)、i.MX6ULLのLCD_DATA23ピンに接続 | 2 | CMD | In/Out | SDコマンド/レスポンス、i.MX6ULLのLCD_DATA18ピンに接続 | 3 | VSS | Power | 電源(GND) | 4 | VDD | Power | 電源(+3.3V) | 5 | CLK | Out | SDクロック、i.MX6ULLのLCD_DATA19ピンに接続 | 6 | VSS | Power | 電源(GND) | 7 | DAT0 | In/Out | SDデータバス(bit0)、i.MX6ULLのLCD_DATA20ピンに接続 | 8 | DAT1 | In/Out | SDデータバス(bit1)、i.MX6ULLのLCD_DATA21ピンに接続 | 9 | DAT2 | In/Out | SDデータバス(bit2)、i.MX6ULLのLCD_DATA22ピンに接続 | 10 | CD1 | In | カード検出、i.MX6ULLのUART3_RTS_Bピンに接続
(Low: カード挿入、High: カード未挿入) | 11 | CD2 | 12 | WP1 | Power | 電源(GND) | 13 | 14 | WP2 | In | ライトプロテクト検出、i.MX6ULLのUART3_CTS_Bピンに接続
(Low: 書き込み可能、High: 書き込み不可能) | 15 | GND | Power | 電源(GND) | 16 | 17 | 18 | 19 |
6.25.2.6. CON2(LANインターフェース)CON2は10BASE-T/100BASE-TXに対応したLANインターフェースです。
カテゴリ5以上のEthernetケーブルを接続することができます。
AUTO-MDIX機能を搭載しており、ストレートケーブルまたはクロスケーブルを自動認識して送受信端子を切り替えます。 信号線はEthernet PHY(LAN8720AI-CP/Microchip Technology)を経由してi.MX6ULLのEthernetコントローラ(ENET1)に接続されます。 表6.22 CON2 信号配列 ピン番号 | ピン名 | I/O | 説明 |
---|
1 | TX+ | In/Out | 送信データ(+) | 2 | TX- | In/Out | 送信データ(-) | 3 | RX+ | In/Out | 受信データ(+) | 4 | ー | ー | CON2の5ピンと接続後に75Ω終端 | 5 | ー | ー | CON2の4ピンと接続後に75Ω終端 | 6 | RX- | In/Out | 受信データ(-) | 7 | ー | ー | CON2の8ピンと接続後に75Ω終端 | 8 | ー | ー | CON2の7ピンと接続後に75Ω終端 |
6.25.2.7. CON3(シリアルインターフェース)CON3は非同期(調歩同期)シリアルインターフェースです。
信号はi.MX6ULLのUARTコントローラ(UART1)に接続されます。
CON3の6ピンはi.MX6ULLのUART2_CTS_Bピン(GPIO1_IO22)に接続されており、Lowレベル入力で保守モード、
Highレベル入力でオートブートモードで起動します。 | |
---|
シリアルインターフェース(Armadillo-610 拡張ボード: CON3)にUSBシリアル変換アダプタを接続する際は、
ケーブルの根本を軽く握り、指先でコネクタを押すようにして挿入してください。
取り外しの際は、全ケーブルが均等に引きぬかれるようにケーブルをつかみ、引き抜いてください。
また、両コネクタを水平にして挿入・抜去してください。
30°以上傾けた状態での斜め挿入・抜去は、端子変形、ケース破損の原因となります。
|
表6.23 CON3 信号配列 ピン番号 | ピン名 | I/O | 説明 |
---|
1 | UART_RXD | In | 受信データ、i.MX6ULLのUART1_RX_DATAピンに接続 | 2 | GND | Power | 電源(GND) | 3 | UART_TXD | Out | 送信データ、i.MX6ULLのUART1_TX_DATAピンに接続 | 4 | +3.3V_IO | Power | 電源(+3.3V_IO) | 5 | UART_CTS | In | 送信可能、CON3の7ピンと接続 | 6 | BOOTLOADER_EN_B | In | 起動モード設定、i.MX6ULLのUART2_CTS_Bピンに接続
(Low: 保守モード、High: オートブートモード) | 7 | UART_RTS | Out | 送信要求、CON3の5ピンと接続 |
6.25.2.8. CON4(Armadillo-610インターフェース)CON4はArmadillo-610と接続するためのインターフェースです。 表6.24 CON4 信号配列 ピン番号 | ピン名 | I/O | 説明 |
---|
1 | USB_OTG1_DP | In/Out | USB1のプラス側信号、CON6の3ピンに接続 | 2 | USB_OTG1_DN | In/Out | USB1のマイナス側信号、CON6の2ピンに接続 | 3 | GND | Power | 電源(GND) | 4 | USB_OTG2_DN | In/Out | USB2のマイナス側信号、USB HUBのUSBUP_DMピンに接続 | 5 | USB_OTG2_DP | In/Out | USB2のプラス側信号、USB HUBのUSBUP_DPピンに接続 | 6 | GND | Power | 電源(GND) | 7 | USB_OTG1_VBUS | Power | 電源(USB_OTG1_VBUS)、CON6の1ピンに接続 | 8 | USB_OTG2_VBUS | Power | 電源(USB_OTG2_VBUS)、CON5の1ピンと5ピンに接続 | 9 | SPEEDLED | In | LANスピードLED用信号、Ethernet PHYのLED2ピンに接続 | 10 | LINK_ACTLED | In | LANリンクアクティビティLED用信号、Ethernet PHYのLED1ピンに接続 | 11 | USB1_PWREN | In | USB1用パワースイッチ切り替え信号、パワースイッチのイネーブルピンに接続
(High: 電源供給、Low: 電源切断) | 12 | USB2_PWREN | In | USB2用パワースイッチ切り替え信号、パワースイッチのイネーブルピンに接続
(High: 電源供給、Low: 電源切断) | 13 | RTC_INT_B | Out | リアルタイムクロック割り込み信号、リアルタイムクロックの割り込みピンに接続 | 14 | ADC_IN4 | In/Out | 拡張入出力、CON11の34ピン、CON20の37ピン、CON10の1ピンに接続 | 15 | ADC_IN3 | In/Out | 拡張入出力、CON11の35ピン、CON20の38ピン、CON9の1ピンに接続 | 16 | ADC_IN2 | In/Out | 拡張入出力、CON11の36ピン、CON20の39ピン、CON9の2ピンに接続 | 17 | ADC_IN1 | In/Out | 拡張入出力、CON11の37ピン、CON20の40ピン、CON10の2ピンに接続 | 18 | LCD_DATA00 | In/Out | 拡張入出力、CON11の13ピン、CON20の13ピンに接続 | 19 | LCD_DATA01 | In/Out | 拡張入出力、CON11の14ピン、CON20の14ピンに接続 | 20 | LCD_DATA02 | In/Out | 拡張入出力、CON11の15ピン、CON20の15ピンに接続 | 21 | LCD_DATA03 | In/Out | 拡張入出力、CON11の16ピン、CON20の16ピンに接続 | 22 | LCD_DATA04 | In/Out | 拡張入出力、CON11の17ピン、CON20の17ピンに接続 | 23 | LCD_DATA05 | In/Out | 拡張入出力、CON11の18ピン、CON20の18ピンに接続 | 24 | LCD_DATA06 | In/Out | 拡張入出力、CON11の20ピン、CON20の20ピンに接続 | 25 | LCD_DATA07 | In/Out | 拡張入出力、CON11の21ピン、CON20の21ピンに接続 | 26 | LCD_DATA08 | In/Out | 拡張入出力、CON11の22ピン、CON20の22ピンに接続 | 27 | LCD_DATA09 | In/Out | 拡張入出力、CON11の23ピン、CON20の23ピンに接続 | 28 | LCD_DATA10 | In/Out | 拡張入出力、CON11の24ピン、CON20の24ピンに接続 | 29 | LCD_DATA11 | In/Out | 拡張入出力、CON11の25ピン、CON20の25ピンに接続 | 30 | LCD_DATA12 | In/Out | 拡張入出力、CON11の27ピン、CON20の27ピンに接続 | 31 | LCD_DATA13 | In/Out | 拡張入出力、CON11の28ピン、CON20の28ピンに接続 | 32 | LCD_DATA14 | In/Out | 拡張入出力、CON11の29ピン、CON20の29ピンに接続 | 33 | LCD_DATA15 | In/Out | 拡張入出力、CON11の30ピン、CON20の30ピンに接続 | 34 | LCD_DATA16 | In/Out | 拡張入出力、CON11の31ピン、CON20の31ピンに接続 | 35 | LCD_DATA17 | In/Out | 拡張入出力、CON11の32ピン、CON20の32ピンに接続 | 36 | GND | Power | 電源(GND) | 37 | LCD_CLK | In/Out | 拡張入出力、CON11の8ピン、CON20の7ピンに接続 | 38 | LCD_HSYNC | In/Out | 拡張入出力、CON11の9ピン、CON20の8ピンに接続 | 39 | LCD_VSYNC | In/Out | 拡張入出力、CON11の10ピン、CON20の9ピンに接続 | 40 | LCD_ENABLE | In/Out | 拡張入出力、CON11の11ピン、CON20の10ピンに接続 | 41 | PWM5_OUT | In/Out | 拡張入出力、CON11の12ピン、CON20の11ピンに接続 | 42 | BJP1 | Out | 起動デバイス設定用信号、JP1に接続 | 43 | EXT_SW1 | Out | ユーザースイッチ、SW1に接続 | 44 | EXT_RESET_B | Out | システムリセット、CON23の1ピンに接続 | 45 | +3.3V_IO | Power | 電源(+3.3V_IO) | 46 | +3.3V_IO | Power | 電源(+3.3V_IO) | 47 | VIN | Power | 電源(VIN) | 48 | VIN | Power | 電源(VIN) | 49 | VIN | Power | 電源(VIN) | 50 | VIN | Power | 電源(VIN) | 51 | GND | Power | 電源(GND) | 52 | GND | Power | 電源(GND) | 53 | +5V_IO | Power | 電源(+5V_IO) | 54 | +5V_IO | Power | 電源(+5V_IO) | 55 | I2C2_SDA | In/Out | I2Cデータ信号、CON11の49ピン、CON21の10ピン、CON8の2ピン、リアルタイムクロックのSDAピンに接続 | 56 | I2C2_SCL | In | I2Cクロック信号、CON11の48ピン、CON21の9ピン、CON8の1ピン、リアルタイムクロックのSCLピンに接続 | 57 | SAI1_TX_SYNC | In/Out | 拡張入出力、CON11の47ピン、CON21の8ピンに接続 | 58 | SAI1_TX_BCLK | In/Out | 拡張入出力、CON11の46ピン、CON21の7ピンに接続 | 59 | SAI1_RX_DATA | In/Out | 拡張入出力、CON11の45ピン、CON21の6ピンに接続 | 60 | SAI1_TX_DATA | In/Out | 拡張入出力、CON11の44ピン、CON21の5ピンに接続 | 61 | SAI1_RX_SYNC | In/Out | 拡張入出力、CON11の43ピン、CON21の4ピンに接続 | 62 | SAI1_MCLK | In/Out | 拡張入出力、CON11の42ピン、CON21の3ピン、CON7の1ピンに接続 | 63 | GPIO4_IO24 | In/Out | 拡張入出力、CON11の41ピン、CON20の36ピンに接続 | 64 | GPIO4_IO21 | In/Out | 拡張入出力、CON11の40ピン、CON20の35ピンに接続 | 65 | GPIO4_IO18 | In/Out | 拡張入出力、CON11の39ピン、CON20の34ピンに接続 | 66 | RS485_DE | In | RS485送信イネーブル信号、RS485トランシーバのDEピン、CON22の6ピンに接続 | 67 | RS485_RE_N | In | RS485受信イネーブル信号、RS485トランシーバのREピン、CON22の5ピンに接続 | 68 | RS485_RX | Out | RS485受信データ、RS485トランシーバのROピン、CON22の4ピンに接続 | 69 | RS485_TX | In | RS485送信データ、RS485トランシーバのDIピン、CON22の3ピンに接続 | 70 | SD2_DATA3 | In/Out | SDデータバス(bit3)、CON1の1ピンに接続 | 71 | SD2_DATA2 | In/Out | SDデータバス(bit2)、CON1の9ピンに接続 | 72 | SD2_DATA1 | In/Out | SDデータバス(bit1)、CON1の8ピンに接続 | 73 | SD2_DATA0 | In/Out | SDデータバス(bit0)、CON1の7ピンに接続 | 74 | SD2_CLK | In | SDクロック、CON1の5ピンに接続 | 75 | GND | Power | 電源(GND) | 76 | SD2_CMD | In/Out | SDコマンド/レスポンス、CON1の2ピンに接続 | 77 | PWRON | Out | パワーマネジメントICのPWRON信号、SW2に接続 | 78 | ONOFF | Out | i.MX6ULLのON/OFF信号、SW3に接続 | 79 | RTC_BAT | Power | 電源(RTC_BAT)、CON17の1ピンに接続 | 80 | EXT_LED1 | In | LED3に接続(High: 点灯、Low: 消灯) | 81 | AMP_SD_B | In | オーディオアンプのシャットダウンピンに接続
(High: オーディオ開始、Low: オーディオ停止) | 82 | DO1 | In | CON13のDO1制御ピンに接続
(High: DO1ショート、Low: DO1オープン) | 83 | DEBUG_UART_TX | In | 送信データ、CON3の3ピンに接続 | 84 | DO2 | In | CON13のDO制御ピンに接続
(High: DO2ショート、Low: DO2オープン) | 85 | DEBUG_UART_RX | Out | 受信データ、CON3の1ピンに接続 | 86 | SD_PWREN | In | SD用パワースイッチ切り替え信号、パワースイッチのイネーブルピンに接続
(High: 電源供給、Low: 電源切断) | 87 | MAINT_EN_B | Out | 起動モード設定、CON3の6ピンに接続 | 88 | DI2 | Out | DI2入力、CON13の4ピンに接続 | 89 | DI1 | Out | DI1入力、CON13の5ピンに接続 | 90 | MQS | In | オーディオ入力、オーディオアンプに接続 | 91 | SD2_WP | Out | ライトプロテクト検出、CON1の14ピン、CON19の10ピンに接続 | 92 | SD2_CD_B | Out | カード検出、CON1の10ピン、CON19の9ピンに接続 | 93 | WLAN_PWREN | In | WLAN用パワースイッチ切り替え信号、パワースイッチのイネーブルピンに接続
(High: 電源供給、Low: 電源切断) | 94 | USB1_OTG_ID | Out | CON6の4ピンに接続 | 95 | GND | Power | 電源(GND) | 96 | Ether_RXN | In/Out | Ethernet 送信/受信データ(-) CH2、Ethernetトランスに接続 | 97 | Ether_RXP | In/Out | Ethernet 送信/受信データ(+) CH2、Ethernetトランスに接続 | 98 | GND | Power | 電源(GND) | 99 | Ether_TXN | In/Out | Ethernet 送信/受信データ(-) CH1、Ethernetトランスに接続 | 100 | Ether_TXP | In/Out | Ethernet 送信/受信データ(+) CH1、Ethernetトランスに接続 |
6.25.2.9. CON5(USBホストインターフェース)CON5はUSBホストインターフェースです。
2段のコネクタを実装しており、信号線はUSB HUBを経由してi.MX6ULLのUSBコントローラ(USB OTG2)に接続されます。 供給される電源はi.MX6ULLのCSI_MCLKピン(GPIO4_IO17)で制御が可能で、
Highレベル出力で電源が供給され、Lowレベル出力で電源が切断されます。
データ転送モード
-
High Speed(480Mbps)
-
Full Speed(12Mbps)
-
Low Speed(1.5Mbps)
表6.25 CON5 信号配列 ピン番号 | ピン名 | I/O | 説明 |
---|
1 | +5V | Power | 電源(+5V) | 2 | USB_L_DN | In/Out | USB下段のマイナス側信号、USB HUB(Port2)を経由してi.MX6ULLのUSB_OTG2_DNピンに接続 | 3 | USB_L_DP | In/Out | USB下段のプラス側信号、USB HUB(Port2)を経由してi.MX6ULLのUSB_OTG2_DPピンに接続 | 4 | GND | Power | 電源(GND) | 5 | +5V | Power | 電源(+5V) | 6 | USB_U_DN | In/Out | USB上段のマイナス側信号、USB HUB(Port3)を経由してi.MX6ULLのUSB_OTG2_DNピンに接続 | 7 | USB_U_DP | In/Out | USB上段のプラス側信号、USB HUB(Port3)を経由してi.MX6ULLのUSB_OTG2_DPピンに接続 | 8 | GND | Power | 電源(GND) |
6.25.2.10. CON6(USB OTGインターフェース)CON6はUSB OTGインターフェースです。
信号線はi.MX6ULLのUSBコントローラ(USB OTG1)に接続されます。 供給される電源はi.MX6ULLのUART1_RTS_Bピン(GPIO1_IO19)およびCON6の4ピン(USB_ID)により制御が可能です。
i.MX6ULLののUART1_RTS_Bピン(GPIO1_IO19)からHighレベル出力かつCON6の4ピン(USB_ID)からLowレベル入力で電源が供給され、CON6の4ピン(USB_ID)がオープンで電源切断されます。
データ転送モード
-
High Speed(480Mbps)
-
Full Speed(12Mbps)
-
Low Speed(1.5Mbps)
表6.26 CON6 信号配列 ピン番号 | ピン名 | I/O | 説明 |
---|
1 | +5V | Power | 電源(+5V_IO) | 2 | USB_DN | In/Out | USBのマイナス側信号、USB HUBを経由してi.MX6ULLのUSB_OTG1_DNピンに接続 | 3 | USB_DP | In/Out | USBのプラス側信号、USB HUBを経由してi.MX6ULLのUSB_OTG1_DPピンに接続 | 4 | USB_ID | In | USBのID信号、i.MX6ULLのGPIO1_IO24ピンに接続 | 5 | GND | Power | 電源(GND) |
6.25.2.11. CON7、CON8、CON9、CON10(Groveインターフェース)CON7、CON8、CON9、CON10はSeeed社が推奨するコネクタ規格「Groveシステム」に対応した
Groveモジュール接続用のインターフェースです。 マルチプレクスの設定で機能を割り当てることで、GPIO、UART、I2C、A/Dで拡張する
Groveモジュールを接続することができます。 | |
---|
CON11(LCDインターフェース)、CON20(拡張インターフェース)、CON21(拡張インターフェース)と
共通の信号線が接続されているため、同時に使用できません。
また、CON8のI2C信号は基板上のリアルタイムクロックにも接続されておりますので、
マルチプレクスの設定を変更する際には、ご注意ください。 |
表6.27 CON7 信号配列 ピン番号 | ピン名 | I/O | 説明 |
---|
1 | UART5_RX | I/O | 拡張入出力、i.MX6ULLのCSI_DATA01ピンに接続 | 2 | UART5_TX | I/O | 拡張入出力、i.MX6ULLのCSI_DATA00ピンに接続 | 3 | +3.3V_IO | Power | 電源(+3.3V_IO) | 4 | GND | Power | 電源(GND) |
表6.28 CON8 信号配列 ピン番号 | ピン名 | I/O | 説明 |
---|
1 | I2C2_CLK | I/O | 拡張入出力、i.MX6ULLのCSI_HSYNCピンに接続 | 2 | I2C2_SDA | I/O | 拡張入出力、i.MX6ULLのCSI_VSYNCピンに接続 | 3 | +3.3V_IO | Power | 電源(+3.3V_IO) | 4 | GND | Power | 電源(GND) |
表6.29 CON9 信号配列 ピン番号 | ピン名 | I/O | 説明 |
---|
1 | ADC_IN3 | I/O | 拡張入出力、i.MX6ULLのGPIO1_IO03ピンに接続 | 2 | ADC_IN2 | I/O | 拡張入出力、i.MX6ULLのGPIO1_IO02ピンに接続 | 3 | +3.3V_IO | Power | 電源(+3.3V_IO) | 4 | GND | Power | 電源(GND) |
表6.30 CON10 信号配列 ピン番号 | ピン名 | I/O | 説明 |
---|
1 | ADC_IN4 | I/O | 拡張入出力、i.MX6ULLのGPIO1_IO04ピンに接続 | 2 | ADC_IN1 | I/O | 拡張入出力、i.MX6ULLのGPIO1_IO01ピンに接続 | 3 | +3.3V_IO | Power | 電源(+3.3V_IO) | 4 | GND | Power | 電源(GND) |
6.25.2.12. CON11(LCDインターフェース)CON11はデジタルRGB入力を持つ液晶パネルモジュールなどを接続することができる、LCDインターフェースです。
信号線はi.MX6ULLのLCDインターフェース(eLCDIF)等に接続されます。 LCDオプションセット(7インチタッチパネルWVGA液晶)(型番: OP-LCD70EXT-00)、
Armadillo-400シリーズLCDオプションセット(4.3インチタッチパネルWQVGA液晶)(型番: OP-A400-LCD43EXT-L01)を
接続可能です。 オプションセットの詳細につきましては「LCDオプションセット(7インチタッチパネルWVGA液晶)」、「Armadillo-400シリーズLCDオプションセット」をご確認ください。 | |
---|
LCDオプションセット(7インチタッチパネルWVGA液晶)を使用する場合、
I2C2_SCL信号がバックライト用のPWM信号として使用されるため、
基板上のリアルタイムクロックが使用できなくなります。 |
| |
---|
Armadillo-400シリーズLCDオプションセットを使用する場合、
LCDオプションセット側にもリアルタイムクロックが接続されており、
アドレスが被っているため、アクセスすると信号が衝突します。
リアルタイムクロックにアクセスしない、もしくはどちらかのリアルタイムクロックを切り離してご使用ください。
Armadillo-610 拡張ボード側はR146、R147(基板裏)の抵抗を未実装にすることでリアルタイムクロックを切り離すことが可能です。 |
| |
---|
CON7、CON8、CON9、CON10(Groveインターフェース)、CON20(拡張インターフェース)、
CON21(拡張インターフェース)と共通の信号線が接続されているため、同時に使用できません。
また、48、49ピンの信号線は基板上のリアルタイムクロックにも接続されており、
I2Cで使用しておりますので、マルチプレクスの設定を変更する際には、ご注意ください。 |
表6.31 CON11 信号配列 ピン番号 | ピン名 | I/O | 説明 |
---|
1 | +5V | Power | 電源出力(+5V) | 2 | +5V | Power | 電源出力(+5V) | 3 | +5V | Power | 電源出力(+5V) | 4 | +3.3V | Power | 電源出力(+3.3V) | 5 | +3.3V | Power | 電源出力(+3.3V) | 6 | GND | Power | 電源(GND) | 7 | GND | Power | 電源(GND) | 8 | LCD_CLK | In/Out | 拡張入出力、i.MX6ULLのLCD_CLKピンに接続 | 9 | LCD_HSYNC | In/Out | 拡張入出力、i.MX6ULLのLCD_HSYNCピンに接続 | 10 | LCD_VSYNC | In/Out | 拡張入出力、i.MX6ULLのLCD_VSYNCピンに接続 | 11 | LCD_ENABLE | In/Out | 拡張入出力、i.MX6ULLのLCD_ENABLEピンに接続 | 12 | PWM5_OUT | In/Out | 拡張入出力、i.MX6ULLのNAND_DQSピンに接続 | 13 | LCD_DATA00 | In/Out | 拡張入出力、i.MX6ULLのLCD_DATA00ピンに接続 | 14 | LCD_DATA01 | In/Out | 拡張入出力、i.MX6ULLのLCD_DATA01ピンに接続 | 15 | LCD_DATA02 | In/Out | 拡張入出力、i.MX6ULLのLCD_DATA02ピンに接続 | 16 | LCD_DATA03 | In/Out | 拡張入出力、i.MX6ULLのLCD_DATA03ピンに接続 | 17 | LCD_DATA04 | In/Out | 拡張入出力、i.MX6ULLのLCD_DATA04ピンに接続 | 18 | LCD_DATA05 | In/Out | 拡張入出力、i.MX6ULLのLCD_DATA05ピンに接続 | 19 | GND | Power | 電源(GND) | 20 | LCD_DATA06 | In/Out | 拡張入出力、i.MX6ULLのLCD_DATA06ピンに接続 | 21 | LCD_DATA07 | In/Out | 拡張入出力、i.MX6ULLのLCD_DATA07ピンに接続 | 22 | LCD_DATA08 | In/Out | 拡張入出力、i.MX6ULLのLCD_DATA08ピンに接続 | 23 | LCD_DATA09 | In/Out | 拡張入出力、i.MX6ULLのLCD_DATA09ピンに接続 | 24 | LCD_DATA10 | In/Out | 拡張入出力、i.MX6ULLのLCD_DATA10ピンに接続 | 25 | LCD_DATA11 | In/Out | 拡張入出力、i.MX6ULLのLCD_DATA11ピンに接続 | 26 | GND | Power | 電源(GND) | 27 | LCD_DATA12 | In/Out | 拡張入出力、i.MX6ULLのLCD_DATA12ピンに接続 | 28 | LCD_DATA13 | In/Out | 拡張入出力、i.MX6ULLのLCD_DATA13ピンに接続 | 29 | LCD_DATA14 | In/Out | 拡張入出力、i.MX6ULLのLCD_DATA14ピンに接続 | 30 | LCD_DATA15 | In/Out | 拡張入出力、i.MX6ULLのLCD_DATA15ピンに接続 | 31 | LCD_DATA16 | In/Out | 拡張入出力、i.MX6ULLのLCD_DATA16ピンに接続 | 32 | LCD_DATA17 | In/Out | 拡張入出力、i.MX6ULLのLCD_DATA17ピンに接続 | 33 | GND | Power | 電源(GND) | 34 | ADC_IN4 | In/Out | 拡張入出力、i.MX6ULLのGPIO1_IO04ピンに接続、0.01uFのコンデンサが接続されています。 | 35 | ADC_IN3 | In/Out | 拡張入出力、i.MX6ULLのGPIO1_IO03ピンに接続、0.01uFのコンデンサが接続されています。 | 36 | ADC_IN2 | In/Out | 拡張入出力、i.MX6ULLのGPIO1_IO02ピンに接続、0.01uFのコンデンサが接続されています。 | 37 | ADC_IN1 | In/Out | 拡張入出力、i.MX6ULLのGPIO1_IO01ピンに接続、0.01uFのコンデンサが接続されています。 | 38 | GND | Power | 電源(GND) | 39 | GPIO4_IO18 | In/Out | 拡張入出力、i.MX6ULLのCSI_PIXCLKピンに接続 | 40 | GPIO4_IO21 | In/Out | 拡張入出力、i.MX6ULLのCSI_DATA00ピンに接続 | 41 | GPIO4_IO24 | In/Out | 拡張入出力、i.MX6ULLのCSI_DATA03ピンに接続 | 42 | SAI1_MCLK | In/Out | 拡張入出力、i.MX6ULLのCSI_DATA01ピンに接続 | 43 | SAI1_RX_SYNC | In/Out | 拡張入出力、i.MX6ULLのCSI_DATA02ピンに接続 | 44 | SAI1_TX_DATA | In/Out | 拡張入出力、i.MX6ULLのCSI_DATA07ピンに接続 | 45 | SAI1_RX_DATA | In/Out | 拡張入出力、i.MX6ULLのCSI_DATA06ピンに接続 | 46 | SAI1_TX_BCLK | In/Out | 拡張入出力、i.MX6ULLのCSI_DATA05ピンに接続 | 47 | SAI1_TX_SYNC | In/Out | 拡張入出力、i.MX6ULLのCSI_DATA04ピンに接続 | 48 | I2C2_SCL | In/Out | 拡張入出力、i.MX6ULLのCSI_HSYNCピンに接続 | 49 | I2C2_SDA | In/Out | 拡張入出力、i.MX6ULLのCSI_VSYNCピンに接続 | 50 | GND | Power | 電源(GND) |
6.25.2.13. CON12(電源入力インターフェース)CON12は電源供給用のインターフェースです。
DCジャックが実装されており、図6.149「ACアダプタの極性マーク」と同じ極性マークのあるACアダプタが使用できます。 | |
---|
ACアダプタから電源を供給する際、DCプラグをArmadillo-610 拡張ボードのDCジャックに接続してから、ACプラグをコンセントに接続してください。
突入電流により、故障する可能性があります。 |
表6.32 CON12 信号配列 ピン番号 | ピン名 | I/O | 説明 |
---|
1 | EXT_VIN | Power | 電源(EXT_VIN) | 2 | GND | Power | 電源(GND) | 3 | GND | Power | 電源(GND) |
6.25.2.14. CON13A(電源出力インターフェース)CON13Aは電源出力用インターフェースです。
端子台が実装されています。CON12から入力した電源が出力されます。 | |
---|
電源入力として使用することも可能ですが、
同時にCON12から電源供給しないようご注意ください。 |
表6.33 CON13A 信号配列 ピン番号 | ピン名 | I/O | 説明 |
---|
1 | EXT_VIN | Power | 電源(EXT_VIN) | 2 | GND | Power | 電源(GND) |
6.25.2.15. CON13B(DIDOインターフェース)CON13Bは絶縁デジタル入出力インターフェースです。 デジタル入力部はフォトカプラによる絶縁入力となっています。
入力部を駆動するためには外部に電源(定格電圧 DC 3.3~12V)が必要となります。 デジタル出力部はフォトリレーによる絶縁出力(無極性)となっています。
出力部を駆動するためには外部に電源が必要となります。
出力1点につき最大電流200mA(最大電圧 DC 48V)まで駆動可能です。 | |
---|
動作確認時にはCON13A(電源出力インターフェース)から電源を取るのが便利です。 |
表6.34 CON13B 信号配列 ピン番号 | ピン名 | I/O | 説明 |
---|
3 | GND_ISO | Power | 電源(GND_ISO) | 4 | DI1 | In | デジタル入力1 | 5 | DI2 | In | デジタル入力2 | 6 | DO1A | ー | デジタル出力1A | 7 | DO1B | ー | デジタル出力1B | 8 | DO2A | ー | デジタル出力2A | 9 | DO2B | ー | デジタル出力2B |
| |
---|
CON13の3ピンのGND_ISOは絶縁されています。 |
6.25.2.16. CON13C(RS485インターフェース)CON13CはRS485(半二重)のシリアルインターフェースです。
信号線はRS485トランシーバを経由して、i.MX6ULLのUARTコントローラ(UART2)に接続されています。 表6.35 CON13C 信号配列 ピン番号 | ピン名 | I/O | 説明 |
---|
10 | DATA- | In/Out | 送受信データ(-) | 11 | DATA+ | In/Out | 送受信データ(+) | 12 | GND | Power | 電源(GND) |
6.25.2.17. CON13D(オーディオインターフェース)CON13Dはモノラルのオーディオ出力インターフェースです。
1.4Wオーディオアンプを経由してi.MX6ULLのMedium Quality Sounc(MQS)に接続されています。
8Ωスピーカーが接続可能です。 | |
---|
Armadillo-610 開発セットに付属しているのは、8Ωスピーカーです。 |
表6.36 CON13D 信号配列 ピン番号 | ピン名 | I/O | 説明 |
---|
13 | SPEAKER+ | Out | スピーカー出力(+) | 14 | SPEAKER- | Out | スピーカー出力(-) |
6.25.2.18. CON14(電源出力インターフェース)CON14は電源出力インターフェースです。
Armadillo-610で生成する+5V_IOが接続されています。 表6.37 CON14 信号配列 ピン番号 | ピン名 | I/O | 説明 |
---|
1 | +5V_IO | Power | 電源(+5V_IO) | 2 | GND | Power | 電源(GND) |
6.25.2.19. CON15、CON16(RTCバックアップインターフェース)CON15、CON16はArmadillo-610 拡張ボードに搭載している
リアルタイムクロックのバックアップ用インターフェースです。 別途バックアップ用の電源を接続することで、Armadillo-610の電源(VIN)が切断された場合でも、
時刻データを保持することが可能です。 Armadillo-610 拡張ボードに搭載しているリアルタイムクロックは、i.MX6ULL内蔵のリアルタイムクロックよりも消費電力が少なく、精度が良いものとなっております。 表6.38 CON16 信号配列 ピン番号 | ピン名 | I/O | 説明 |
---|
1 | EXT_RTC_BAT | Power | 電源(EXT_RTC_BAT) | 2 | GND | Power | 電源(GND) |
表6.39 CON15、CON16 対応電池の例とバックアップ時間 対応電池 | バックアップ時間(参考値) |
---|
CR2032 | 6.2年 |
| |
---|
CON15、CON16は共通の端子に接続されており、同時に使用できません。 |
| |
---|
リアルタイムクロックの平均月差は周囲温度25℃で±8秒程度(参考値)です。
時間精度は周囲温度に大きく影響を受けますので、
ご使用の際は十分に特性の確認をお願いします。 |
| |
---|
CON15、CON16はリチウムコイン電池からの電源供給を想定しています。
リチウムコイン電池以外から電源を供給する場合、
回路図、部品表にて搭載部品をご確認の上、絶対定格値を超えない範囲でご使用ください。 |
6.25.2.20. CON17(内蔵RTCバックアップインターフェース)CON17はi.MX6ULLの低消費電力ドメインにあるSRTC(Secure Real Time Clock)のデータ等を保持するための
バックアップ用インターフェースです。 別途バックアップ用の電源を接続することで、Armadillo-610の電源(VIN)が切断された場合でも、
データを保持することが可能です。 RTC_BATピンからバックアップ電源が供給されている状態で、ONOFFピンまたはpoweroffコマンドを使用して電源を切った場合、
5V電源を入れなおしても再起動しません。この状態から再起動するには、以下を参照してください。 -
RTC_BATピンからバックアップ電源を切り離し、5V電源をONにする。
-
ONOFFピンの制御による電源のON
詳細は、「外部からの電源制御」参照してください。 -
RTC(i.MX6ULL)のアラーム割り込みによる電源のON
詳細は、「起床要因を有効化する」を参照してください。 -
RTC(NR3225SA)のアラーム割り込みによる電源のON
詳細は、「起床要因を有効化する」を参照してください。 表6.40 CON17 信号配列 ピン番号 | ピン名 | I/O | 説明 |
---|
1 | RTC_BAT | Power | 電源(RTC_BAT)、Armadillo-610のパワーマネジメントICのLICELLピンに接続 | 2 | GND | Power | 電源(GND) |
表6.41 CON17 対応電池の例とバックアップ時間 対応電池 | バックアップ時間(参考値) |
---|
CR2032 | 約4か月 [] |
| |
---|
低消費電力モードに速やかに移行するためには、バックアップ電源(RTC_BAT)を供給した直後に一度、
Armadillo-610への供給電源(VIN)を100ミリ秒以上供給する必要があります。 |
| |
---|
RTC_BATの入力電圧範囲は2.75〜3.3Vです。内部デバイスが正常に動作しなくなる可能性がありますので、
入力電圧範囲内でご使用ください。 |
| |
---|
内蔵リアルタイムクロックの平均月差は周囲温度25℃で±70秒程度(参考値)です。
時間精度は周囲温度に大きく影響を受けますので、
ご使用の際は十分に特性の確認をお願いします。 |
6.25.2.21. CON18(WLANインターフェース)CON18はArmadillo-WLANモジュール(AWL13)接続用のインターフェースです。AWL13はArmadillo Base OS で非対応の為、利用することができません。 無線LAN機能を拡張する場合、動作確認済みデバイスである、Ezurio製のSterling LWB5+での拡張がおすすめです。
詳細につきましては、「無線LAN/BT」をご確認ください。 | |
---|
Armadillo-WLANモジュール(AWL13)は販売を終了いたしました。
詳細は変更通知: No.2023-001をご確認ください。 |
表6.42 CON18 信号配列 ピン番号 | ピン名 | I/O | 説明 |
---|
1 | SDDATA1 | - | 未接続 | 2 | SDDATA0 | - | 未接続 | 3 | GND | Power | 電源(GND) | 4 | GND | Power | 電源(GND) | 5 | USB_DM | In/Out | USBマイナス側信号 | 6 | USB_DP | In/Out | USBプラス側信号 | 7 | SDCLK | - | 未接続 | 8 | +3.3V | Power | 電源(+3.3V) | 9 | NC | - | 未接続 | 10 | SDCMD | - | 未接続 | 11 | SDDATA3 | - | 未接続 | 12 | SDDATA2 | - | 未接続 | 13 | UART_RXD | - | 未接続 | 14 | UART_TXD | - | 未接続 | 15 | BOOT_SEL1 | Out | 起動モード設定、USB起動モードに設定 | 16 | BOOT_SEL0 | Out | 17 | HOST_SEL | Out | 18 | FLASH_RXD | - | 未接続 | 19 | FLASH_CSB | - | 未接続 | 20 | FLASH_CLK | - | 未接続 | 21 | FLASH_TXD | Out | 47kΩプルダウン | 22 | FLASH_SEL | - | 未接続 | 23 | GPIO0 | - | 未接続 | 24 | GPIO1 | - | 未接続 | 25 | M_ANA | - | 未接続 | 26 | GPIO2 | - | 未接続 | 27 | GPIO6 | - | 未接続 | 28 | HRST | Out | +3.3Vに接続 | 29 | PRST | - | 未接続 | 30 | TMS | - | 未接続 | 31 | TCK | - | 未接続 | 32 | TDI | - | 未接続 | 33 | TDO | - | 未接続 | 34 | TRSTB | - | 未接続 |
6.25.2.22. CON19(拡張インターフェース)CON19はSD用の機能を割り当て可能な信号線を接続した、
SD拡張用のインターフェースです。 | |
---|
CON1(SDインターフェース)と共通の信号線が接続されているため、
同時に使用できません。
R78〜R83、R86、R87(CON1周辺、R79以外は基板裏)の抵抗を未実装にすることで、CON1(SDインターフェース)と切り離すことが可能です。 |
表6.43 CON19 信号配列 ピン番号 | ピン名 | I/O | 説明 |
---|
1 | +3.3V_IO | Power | 電源(+3.3V_IO) | 2 | GND | Power | 電源(GND) | 3 | SD2_CLK | In/Out | 拡張入出力、i.MX6ULLのLCD_DATA19ピンに接続 | 4 | SD2_CMD | In/Out | 拡張入出力、i.MX6ULLのLCD_DATA18ピンに接続 | 5 | SD2_DATA0 | In/Out | 拡張入出力、i.MX6ULLのLCD_DATA20ピンに接続 | 6 | SD2_DATA1 | In/Out | 拡張入出力、i.MX6ULLのLCD_DATA21ピンに接続 | 7 | SD2_DATA2 | In/Out | 拡張入出力、i.MX6ULLのLCD_DATA22ピンに接続 | 8 | SD2_DATA3 | In/Out | 拡張入出力、i.MX6ULLのLCD_DATA23ピンに接続 | 9 | SD2_CD_B | In/Out | 拡張入出力、i.MX6ULLのUART3_RTS_Bピンに接続 | 10 | SD2_WP | In/Out | 拡張入出力、i.MX6ULLのUART3_CTS_Bピンに接続 |
6.25.2.23. CON20(拡張インターフェース)CON20は主にLCDやタッチパネル用の機能を割り当て可能な信号線を接続した、
LCD拡張用インターフェースです。 | |
---|
CON7、CON9、CON10(Groveインターフェース)、CON11(LCDインターフェース)と
共通の信号線が接続されているため、同時に使用できません。 |
表6.44 CON20 信号配列 ピン番号 | ピン名 | I/O | 説明 |
---|
1 | +5V | Power | 電源出力(+5V) | 2 | +5V | Power | 電源出力(+5V) | 3 | +3.3V | Power | 電源出力(+3.3V) | 4 | +3.3V | Power | 電源出力(+3.3V) | 5 | GND | Power | 電源(GND) | 6 | GND | Power | 電源(GND) | 7 | LCD_CLK | In/Out | 拡張入出力、i.MX6ULLのLCD_CLKピンに接続 | 8 | LCD_HSYNC | In/Out | 拡張入出力、i.MX6ULLのLCD_HSYNCピンに接続 | 9 | LCD_VSYNC | In/Out | 拡張入出力、i.MX6ULLのLCD_VSYNCピンに接続 | 10 | LCD_ENABLE | In/Out | 拡張入出力、i.MX6ULLのLCD_ENABLEピンに接続 | 11 | PWM5_OUT | In/Out | 拡張入出力、i.MX6ULLのNAND_DQSピンに接続 | 12 | GND | Power | 電源(GND) | 13 | LCD_DATA00 | In/Out | 拡張入出力、i.MX6ULLのLCD_DATA00ピンに接続 | 14 | LCD_DATA01 | In/Out | 拡張入出力、i.MX6ULLのLCD_DATA01ピンに接続 | 15 | LCD_DATA02 | In/Out | 拡張入出力、i.MX6ULLのLCD_DATA02ピンに接続 | 16 | LCD_DATA03 | In/Out | 拡張入出力、i.MX6ULLのLCD_DATA03ピンに接続 | 17 | LCD_DATA04 | In/Out | 拡張入出力、i.MX6ULLのLCD_DATA04ピンに接続 | 18 | LCD_DATA05 | In/Out | 拡張入出力、i.MX6ULLのLCD_DATA05ピンに接続 | 19 | GND | Power | 電源(GND) | 20 | LCD_DATA06 | In/Out | 拡張入出力、i.MX6ULLのLCD_DATA06ピンに接続 | 21 | LCD_DATA07 | In/Out | 拡張入出力、i.MX6ULLのLCD_DATA07ピンに接続 | 22 | LCD_DATA08 | In/Out | 拡張入出力、i.MX6ULLのLCD_DATA08ピンに接続 | 23 | LCD_DATA09 | In/Out | 拡張入出力、i.MX6ULLのLCD_DATA09ピンに接続 | 24 | LCD_DATA10 | In/Out | 拡張入出力、i.MX6ULLのLCD_DATA10ピンに接続 | 25 | LCD_DATA11 | In/Out | 拡張入出力、i.MX6ULLのLCD_DATA11ピンに接続 | 26 | GND | Power | 電源(GND) | 27 | LCD_DATA12 | In/Out | 拡張入出力、i.MX6ULLのLCD_DATA12ピンに接続 | 28 | LCD_DATA13 | In/Out | 拡張入出力、i.MX6ULLのLCD_DATA13ピンに接続 | 29 | LCD_DATA14 | In/Out | 拡張入出力、i.MX6ULLのLCD_DATA14ピンに接続 | 30 | LCD_DATA15 | In/Out | 拡張入出力、i.MX6ULLのLCD_DATA15ピンに接続 | 31 | LCD_DATA16 | In/Out | 拡張入出力、i.MX6ULLのLCD_DATA16ピンに接続 | 32 | LCD_DATA17 | In/Out | 拡張入出力、i.MX6ULLのLCD_DATA17ピンに接続 | 33 | GND | Power | 電源(GND) | 34 | GPIO4_IO18 | In/Out | 拡張入出力、i.MX6ULLのCSI_PIXCLKピンに接続 | 35 | GPIO4_IO21 | In/Out | 拡張入出力、i.MX6ULLのCSI_DATA00ピンに接続 | 36 | GPIO4_IO24 | In/Out | 拡張入出力、i.MX6ULLのCSI_DATA03ピンに接続 | 37 | ADC_IN4 | In/Out | 拡張入出力、i.MX6ULLのGPIO1_IO04ピンに接続、0.01uFのコンデンサが接続されています。 | 38 | ADC_IN3 | In/Out | 拡張入出力、i.MX6ULLのGPIO1_IO03ピンに接続、0.01uFのコンデンサが接続されています。 | 39 | ADC_IN2 | In/Out | 拡張入出力、i.MX6ULLのGPIO1_IO02ピンに接続、0.01uFのコンデンサが接続されています。 | 40 | ADC_IN1 | In/Out | 拡張入出力、i.MX6ULLのGPIO1_IO01ピンに接続、0.01uFのコンデンサが接続されています。 |
6.25.2.24. CON21(拡張インターフェース)CON21は主にオーディオ用の機能を割り当て可能な信号線を接続した、
オーディオ拡張用インターフェースです。 | |
---|
CON7(Groveインターフェース)、CON11(LCDインターフェース)と
共通の信号線が接続されているため、同時に使用できません。
また、9、10ピンの信号線は基板上のリアルタイムクロックにも接続されており、
I2Cで使用しておりますので、マルチプレクスの設定を変更する際には、ご注意ください。 |
表6.45 CON21 信号配列 ピン番号 | ピン名 | I/O | 説明 |
---|
1 | +3.3V_IO | Power | 電源出力(+3.3V_IO) | 2 | GND | Power | 電源(GND) | 3 | SAI1_MCLK | In/Out | 拡張入出力、i.MX6ULLのCSI_DATA01ピンに接続 | 4 | SAI1_RX_SYNC | In/Out | 拡張入出力、i.MX6ULLのCSI_DATA02ピンに接続 | 5 | SAI1_TX_DATA | In/Out | 拡張入出力、i.MX6ULLのCSI_DATA07ピンに接続 | 6 | SAI1_RX_DATA | In/Out | 拡張入出力、i.MX6ULLのCSI_DATA06ピンに接続 | 7 | SAI1_TX_BCLK | In/Out | 拡張入出力、i.MX6ULLのCSI_DATA05ピンに接続 | 8 | SAI1_TX_SYNC | In/Out | 拡張入出力、i.MX6ULLのCSI_DATA04ピンに接続 | 9 | I2C2_SCL | In/Out | 拡張入出力、i.MX6ULLのCSI_HSYNCピンに接続 | 10 | I2C2_SDA | In/Out | 拡張入出力、i.MX6ULLのCSI_VSYNCピンに接続 |
6.25.2.25. CON22(拡張インターフェース)CON22はSPI、I2C、UART等に割り当て可能な信号線を接続した、拡張用インターフェースです。 | |
---|
CON13B(DIDOインターフェース)、CON13C(RS485インターフェース)と共通の信号線が接続されているため、
同時に使用できません。
R93〜R96、R105、R108、R110、R112(CON13周辺)の抵抗を未実装にすることで、CON13と切り離すことが可能です。 |
表6.46 CON22 信号配列 ピン番号 | ピン名 | I/O | 説明 |
---|
1 | +3.3V_IO | Power | 電源出力(+3.3V_IO) | 2 | GND | Power | 電源(GND) | 3 | RS485_TX | In/Out | 拡張入出力、i.MX6ULLのNAND_DATA04ピンに接続 | 4 | RS485_RX | In/Out | 拡張入出力、i.MX6ULLのNAND_DATA05ピンに接続 | 5 | RS485_RE_N | In/Out | 拡張入出力、i.MX6ULLのNAND_DATA06ピンに接続 | 6 | RS485_DE | In/Out | 拡張入出力、i.MX6ULLのNAND_DATA07ピンに接続 | 7 | DI1 | In/Out | 拡張入出力、i.MX6ULLのUART2_TX_DATAピンに接続 | 8 | DI2 | In/Out | 拡張入出力、i.MX6ULLのUART2_RX_DATAピンに接続 | 9 | DO1 | In/Out | 拡張入出力、i.MX6ULLのUART5_TX_DATAピンに接続 | 10 | DO2 | In/Out | 拡張入出力、i.MX6ULLのUART5_RX_DATAピンに接続 |
6.25.2.26. CON23(リセットインターフェース)CON23はリセット入出力用のインターフェースです。
EXT_RESET_NピンはArmadillo-610上のパワーマネジメントICのRESETBMCUピン、i.MX6ULLのPOR_Bピンに接続されています。 リセット回路の詳細につきましては、図3.44「リセット回路の構成」をご参照ください。 表6.47 CON23 信号配列 ピン番号 | ピン名 | I/O | 説明 |
---|
1 | EXT_RESET_N | In/Out | リセット信号、パワーマネジメントICのRESETBMCUピン、i.MX6ULLのPOR_Bピンに接続 | 2 | GND | Power | 電源(GND) |
6.25.2.27. CON24(電源入力インターフェース)CON24は電源供給用のインターフェースです。
電源回路の詳細につきましては、図6.138「Armadillo-610 拡張ボードの電源回路の構成」をご参照ください。 | |
---|
出荷時、CON24(電源入力インターフェース)から電源供給することはできません。
R155を実装、R156未実装にすることで、CON24の1ピンからArmadillo-610の電源(VIN)に
電源を供給することが可能になります。
回路図をご確認の上、絶対定格値を超えない範囲でご使用ください。
Armadillo-610の入力電圧範囲(VIN)は3.6〜4.5Vです。 |
表6.48 CON24 信号配列 ピン番号 | ピン名 | I/O | 説明 |
---|
1 | BAT_IN | Power | 電源(BAT_IN)、R155(出荷時未実装)を経由してパワーマネジメントICのVINピンに接続 | 2 | GND | Power | 電源(GND) | 3 | +5V | Power | 電源(+5V) | 4 | GND | Power | 電源(GND) | 5 | NC | - | 未接続 | 6 | NC | - | 未接続 |
6.25.2.28. JP1(起動デバイス設定ジャンパ)JP1は起動デバイス設定ジャンパです。
JP1の状態で、起動デバイスを設定することができます。 表6.49 JP1 信号配列 部品番号 | 説明 |
---|
JP1 | ロジックICを経由して、i.MX6ULLのLCD_DATA05ピン、LCD_DATA_DATA11ピンに接続 |
表6.50 ジャンパの設定と起動デバイス JP1 | 起動デバイス |
---|
オープン | eMMC | ショート | microSD |
| |
---|
eFUSEで起動デバイスを設定している場合、JP1の設定は無視されます。JP1をショート状態にすると、
プルアップ抵抗により消費電流が増加するため、JP1はオープン状態で使用することをお勧めします。 |
| |
---|
eFUSEは一度書き込むと元に戻すことができません。
eFUSEの設定によってはArmadillo-610が正常に動作しなくなる可能性がありますので、
細心の注意を払って書き込みを行うようお願いいたします。
eFUSEの設定によって異常が起こった場合は保証対象外となります。 |
SW1はユーザー側で自由に利用できる押しボタンスイッチです。 表6.51 SW1 信号配列 部品番号 | 説明 |
---|
SW1 | i.MX6ULLのJTAG_MODピンに接続(押されていない状態: Low、押された状態: High) |
SW2はリセット用の押しボタンスイッチです。
ボタンを押すとパワーマネジメントICからの電源が切断されます。 動作の詳細については、「外部からの電源制御」をご確認ください。 表6.52 SW2 信号配列 部品番号 | 説明 |
---|
SW2 | パワーマネジメントICのPWRONピンとi.MX6ULLのPMIC_ON_REQピンに接続(押されていない状態: リセット解除、 押された状態: リセット状態) |
6.25.2.31. SW3(ONOFFスイッチ)SW3はボタンの長押しで電源を制御する押しボタンスイッチです。 動作の詳細については、「外部からの電源制御」をご確認ください。 表6.53 SW3 信号配列 部品番号 | 説明 |
---|
SW3 | i.MX6ULLのONOFFピンに接続 |
6.25.2.32. LED1、LED2(LAN LED)LED1、LED2はCON2(LANインターフェース)のステータスLEDです。CON2(LANインターフェース)の上部に表示されます。
信号線はEthernet PHY(LAN8720AI-CP/Microchip Technology)のLEDピンに接続されます。 表6.54 LAN LEDの動作 LED | 名称(色) | 状態 | 説明 |
---|
LED1 | LANスピードLED(緑) | 消灯 | 10Mbpsで接続されている、もしくはEthernetケーブル未接続 | 点灯 | 100Mbpsで接続されている | LED2 | LANリンクアクティビティ(黄) | 消灯 | リンクが確立されていない | 点灯 | リンクが確立されている | 点滅 | リンクが確立されており、データを送受信している |
LED3ユーザー側で自由に利用できるLEDです。 表6.55 LED3 部品番号 | 名称(色) | 説明 |
---|
LED3 | ユーザー LED(緑) | i.MX6ULLのGPIO1_IO08ピンに接続、(Low: 消灯、High: 点灯) |
6.25.3. LCDオプションセット(7インチタッチパネルWVGA液晶)ノリタケ伊勢電子製のタッチパネルLCDとフレキシブルフラットケーブル(FFC)のセットです。
LCDインターフェース(Armadillo-610 拡張ボード: CON11)に接続して使用することが可能です。 ソフトウェアからの利用方法については、「LCD を使用する」を参照してください。 | |
---|
LCDオプションセット(7インチタッチパネルWVGA液晶)を使用する場合、
Armadillo-610 拡張ボード搭載のリアルタイムクロックが使用できません。 |
表6.56 LCDオプションセット(7インチタッチパネルWVGA液晶)について 商品名 | LCDオプションセット(7インチタッチパネルWVGA液晶) | 型番 | OP-LCD70EXT-L00 | 内容 | 7インチ タッチパネルLCD、FFC |
表6.57 LCDの仕様 型番 | GT800X480A-1013P | メーカー | ノリタケ伊勢電子 | タイプ | TFT-LCD | 表示サイズ | 7インチ | 外形サイズ | 164.8 x 99.8 mm | 解像度 | 800 x 480 pixels | 表示色数 | 約1677万色 | 使用温度範囲 | -20〜+70℃ | 輝度 | 850cd/m2 (Typ.) 25℃ | 電源 | DC 5V±5%/500mA (Typ.), DC 3.3V±3%/35mA (Typ.) | 映像入力インターフェース | RGBパラレル(18bit/24bit)[] | タッチパネルインターフェース | I2C(HID準拠) | タッチ方式 | 投影型静電容量方式 | マルチタッチ | 最大10点対応 |
| |
---|
タッチパネルLCDをご使用になる前に、『GT800X480A-1013P 製品仕様書』にて注意事項、詳細仕様、取扱方法等をご確認ください。 『GT800X480A-1013P 製品仕様書』は「アットマークテクノ Armadilloサイト」の「[オプション] LCDオプションセット (7インチタッチパネルWVGA液晶) 製品仕様書」からダウンロード可能です。 |
6.25.4. Armadillo-400シリーズLCDオプションセット4.3インチタッチパネルLCD、LCD拡張ボード、フレキシブルフラットケーブル(FFC)のセットです。 LCD拡張ボードにはLCD接続インターフェースの他にオーディオコーデック、リアルタイムクロック(RTC)を搭載しています。
LCDインターフェース(Armadillo-610 拡張ボード: CON11)に接続して使用することが可能です。 | |
---|
LCD拡張ボードの回路図、部品表は「アットマークテクノ Armadilloサイト」からダウンロード可能です。 |
| |
---|
本製品はArmadillo-400シリーズ用に準備されたLCDオプションセットですが、Armadillo-600シリーズでも利用可能です。 |
表6.58 Armadillo-400シリーズLCDオプションセットについて 商品名 | Armadillo-400シリーズLCDオプションセット | 型番 | OP-A400-LCD43EXT-L01 | 内容 | 4.3インチ タッチパネルLCD、FFC、LCD固定用両面テープ |
表6.59 LCD拡張ボードの仕様 LCD | 型番 | FG040346DSSWBG04 [] | メーカー | Data Image | LCDバックライト | バックライト用LEDドライバ搭載 | オーディオ | 型番 | WM8978GEFL/V | メーカー | Wolfson | リアルタイムクロック | 型番 | S-35390A | メーカー | ABLIC | RTCバックアップ | 300秒(Typ.)、60秒(Min.)、電池ホルダ搭載、外部バッテリ接続コネクタ搭載可能(対応電池: CR2032等) | RTC平均月差(参考値) | 約30秒@25℃ | 電源電圧 | DC 3.3±0.2V(メイン電源)、DC 2.8〜5.5V(LCDバックライト)、DC 2.0〜3.5V(RTCバックアップ) | 消費電力 | 約0.8W(LCD消費分を含む) | 使用温度範囲 | -20~+70℃(結露なきこと) | 外形サイズ | 106 x 82 mm(突起部を除く) |
| |
---|
RTCの時間精度やバックアップ時間は周囲温度、電圧印加時間等に大きく影響を受けます。ご使用の際には十分に特性の確認をお願いします。 |
表6.60 LCDの仕様 型番 | FG040346DSSWBG04 | メーカー | Data Image | タイプ | TFT-LCD | 表示サイズ | 4.3インチ | 外形サイズ | 105.5(W) x 67.2(H) x 4.3(D) mm | 解像度 | 480 x 272 pixels | 表示色数 | 約1677万色 | 使用温度範囲 | -20〜+70℃ | 輝度 | 320cd/m2 (Typ.) | 映像入力インターフェース | RGBパラレル(24bit)[] | タッチ方式 | 4線抵抗膜方式 |
| |
---|
LCDオプションセットは製品リビジョンによって一部仕様が違いますのでご注意ください。
本章には、「製品リビジョンF」以降についての情報を記載しています。
製品リビジョンにつきましては、「アットマークテクノ Armadilloサイト」[https://armadillo.atmark-techno.com/]
からダウンロードできる「Armadillo-400シリーズLCDオプションセット変更履歴表」にて
ご確認ください。 |
LCD拡張ボードのインターフェース仕様について説明します。 表6.61 LCD拡張ボード インターフェース一覧 [] 部品番号 | インターフェース名 | 型番 | メーカー |
---|
CON1 | Armadillo接続インターフェース | XF2M-5015-1A | OMRON | CON2 | LCD拡張インターフェース(専用) | FH19SC-40S-0.5SH(05) | HIROSE ELECTRIC | CON3 | モノラルマイク入力 | SJ-3524-SMT | CUI Inc | CON4 | ステレオヘッドホン出力 | SJ-3524-SMT | CUI Inc | CON5 | スピーカー出力 | S2B-PH-K-S(LF)(SN) | J.S.T.Mfg. | CON6 | LCD拡張インターフェース(汎用) | RF-H402TD-1130 | J.S.T.Mfg. | CON7 | 拡張インターフェース | RF-H102TD-1130 | J.S.T.Mfg. | CON8 | RTCバックアップインターフェース | HU2032 | TAKACHI | CON9 | DF13-2P-1.25DS(20) | HIROSE ELECTRIC | CON10 | B2B-EH(LF)(SN) | J.S.T.Mfg. | SW1 | ユーザースイッチ | SKHHLMA010 | ALPS | SW2 | SKHHLMA010 | ALPS | SW3 | SKHHLMA010 | ALPS | SW4 | SKHHLMA010 | ALPS | SW5 | SKHHLMA010 | ALPS | SW6 | SKHHLMA010 | ALPS | LED1 | 電源LED | SML-310MT | ROHM | LED2 | ユーザーLED | OSNG3133A | OPTO SUPPLY | LED3 | OSNG3133A | OPTO SUPPLY |
6.25.4.4. CON1(Armadillo接続インターフェース)CON1はArmadilloと接続するためのインターフェースです。50ピン(0.5mmピッチ)のフレキシブルフ
ラットケーブルにより、LCDインターフェース(Armadillo-610 拡張ボード: CON11)と接続可能です。 LCD、タッチパネル、オーディオコーデック、リアルタイムクロックの各信号線が接続されています。 表6.62 CON1 信号配列 ピン番号 | ピン名 | I/O | 説明 |
---|
1 | GND | Power | 電源(GND) | 2 | I2C3_SDA | In/Out | コーデック I2Cデータ、コーデックのSDINピンに接続、1kΩプルアップ(+3.3V) | 3 | I2C3_SCL | In | コーデック I2Cクロック、コーデック ICのSCLKピンに接続、1kΩプルアップ(+3.3V) | 4 | AUD5_TXFS | In | コーデック TXFS、コーデックのLRCピンに接続 | 5 | AUD5_TXC | In | コーデック TXC、コーデックのBCLKピンに接続 | 6 | AUD5_RXD | Out | コーデック RXD、コーデックのADCDATピンに接続 | 7 | AUD5_TXD | In | コーデック TXD、コーデックのDACDAT ピンに接続 | 8 | AUD_RXFS | In/Out | R50の実装によりリアルタイムクロックの割り込みピンに接続 | 9 | AUD5_SYSCLK | In | コーデック SYSCLK、コーデックのMCLKピンに接続 | 10 | GPIO2_30 | In/Out | タクトスイッチ出力、SW3の2ピン、CON6の7ピンに接続 | 11 | GPIO2_29 | In/Out | タクトスイッチ出力、SW2の2ピン、CON6の8ピンに接続 | 12 | GPIO2_20 | In/Out | タクトスイッチ出力、SW1の2ピン、CON6の9ピンに接続 | 13 | GND | Power | 電源(GND) | 14 | TOUCH_YN | In/Out | タッチパネル YN、CON2の40ピン、CON6の10ピンに接続 | 15 | TOUCH_YP | In/Out | タッチパネル YP、CON2の38ピン、CON6の11ピンに接続 | 16 | TOUCH_XN | In/Out | タッチパネル XN、CON2の39ピン、CON6の12ピンに接続 | 17 | TOUCH_XP | In/Out | タッチパネル XP、CON2の37ピン、CON6の13ピンに接続 | 18 | GND | Power | 電源(GND) | 19 | LCD_LD17 | In | LCD 拡張 I/F LD17、CON2の12ピン、CON6の15 ピンに接続 | 20 | LCD_LD16 | In | LCD 拡張 I/F LD16、CON2の11ピン、CON6の16ピンに接続 | 21 | LCD_LD15 | In | LCD 拡張 I/F LD15、CON2の10ピン、CON6の17ピンに接続 | 22 | LCD_LD14 | In | LCD 拡張 I/F LD14、CON2の9ピン、CON6の18ピンに接続 | 23 | LCD_LD13 | In | LCD 拡張 I/F LD13、CON2の8ピン、CON6の19ピンに接続 | 24 | LCD_LD12 | In | LCD 拡張 I/F LD12、CON2の7ピン、CON6の20ピンに接続 | 25 | GND | Power | 電源(GND) | 26 | LCD_LD11 | In | LCD 拡張 I/F LD11、CON2の20ピン、CON6の22ピンに接続 | 27 | LCD_LD10 | In | LCD 拡張 I/F LD10、CON2の19ピン、CON6の23ピンに接続 | 28 | LCD_LD9 | In | LCD 拡張 I/F LD9、CON2の18ピン、CON6の24ピンに接続 | 29 | LCD_LD8 | In | LCD 拡張 I/F LD8、CON2の17ピン、CON6の25ピンに接続 | 30 | LCD_LD7 | In | LCD 拡張 I/F LD7、CON2の16ピン、CON6の26ピンに接続 | 31 | LCD_LD6 | In | LCD 拡張 I/F LD6、CON2の15ピン、CON6の27ピンに接続 | 32 | GND | Power | 電源(GND) | 33 | LCD_LD5 | In | LCD 拡張 I/F LD4、CON2の28ピン、CON6の29ピンに接続 | 34 | LCD_LD4 | In | LCD 拡張 I/F LD4、CON2の27ピン、CON6の30ピンに接続 | 35 | LCD_LD3 | In | LCD 拡張 I/F LD3、CON2の26ピン、CON6の31ピンに接続 | 36 | LCD_LD2 | In | LCD 拡張 I/F LD2、CON2の25ピン、CON6の32ピンに接続 | 37 | LCD_LD1 | In | LCD 拡張 I/F LD1、CON2の24ピン、CON6の33ピンに接続 | 38 | LCD_LD0 | In | LCD 拡張 I/F LD0、CON2の23ピン、CON6の34ピンに接続 | 39 | PWMO1 | In | LCD 拡張 I/F PWMO1、CON6の36ピン、LEDドライバのFBピンに接続 | 40 | LCD_OE_ACD | In | LCD 拡張 I/F OE_ACD、CON2の34ピン、CON6の37 ピンに接続 | 41 | LCD_VSYN | In | LCD 拡張 I/F VSYN、CON2の33ピン、CON6の38ピンに接続 | 42 | LCD_HSYN | In | LCD 拡張 I/F HSYN、CON2の32ピン、CON6の39ピンに接続 | 43 | LCD_LSCLK | In | LCD 拡張 I/F LSCLK、CON2の30ピン、CON6の40ピンに接続 | 44 | GND | Power | 電源(GND) | 45 | GND | Power | 電源(GND) | 46 | +3.3V | Power | 電源(+3.3V) | 47 | +3.3V | Power | 電源(+3.3V) | 48 | VIN | Power | 電源(VIN) | 49 | VIN | Power | 電源(VIN) | 50 | VIN | Powe | 電源(VIN) |
6.25.4.5. CON2(LCD拡張インターフェース)CON2はLCD(FG040346DSSWBG04/Data Image)と接続するためのインターフェースです。 | |
---|
CON2とCON6には、共通の信号が接続されていますので同時に使用できません。
CON6を使用する場合は、CON2からLCDを取り外してください。 |
表6.63 CON2 信号配列 ピン番号 | ピン名 | I/O | 説明 |
---|
1 | BL_LED_K | Power | LEDドライバ電源(ー端子) | 2 | BL_LED_A | Power | LEDドライバ電源(+端子) | 3 | GND | Power | 電源(GND) | 4 | +3.3V | Power | 電源(+3.3V) | 5 | GND | Power | 電源(GND) | 6 | GND | Power | 電源(GND) | 7 | LCD_LD12 | Out | LCD 拡張 I/F LD12、CON1の24ピン、CON6の20ピンに接続 | 8 | LCD_LD13 | Out | LCD 拡張 I/F LD13、CON1の23ピン、CON6の19ピンに接続 | 9 | LCD_LD14 | Out | LCD 拡張 I/F LD14、CON1の22ピン、CON6の18ピンに接続 | 10 | LCD_LD15 | Out | LCD 拡張 I/F LD15、CON1の21ピン、CON6の17ピンに接続 | 11 | LCD_LD16 | Out | LCD 拡張 I/F LD16、CON1の20ピン、CON6の16ピンに接続 | 12 | LCD_LD17 | Out | LCD 拡張 I/F LD17、CON1の19ピン、CON6の15ピンに接続 | 13 | GND | Power | 電源(GND) | 14 | GND | Power | 電源(GND) | 15 | LCD_LD6 | Out | LCD 拡張 I/F LD6、CON1の31ピン、CON6の27ピンに接続 | 16 | LCD_LD7 | Out | LCD 拡張 I/F LD7、CON1の30ピン、CON6の26ピンに接続 | 17 | LCD_LD8 | Out | LCD 拡張 I/F LD8、CON1の29ピン、CON6の25ピンに接続 | 18 | LCD_LD9 | Out | LCD 拡張 I/F LD9、CON1の28ピン、CON6の24ピンに接続 | 19 | LCD_LD10 | Out | LCD 拡張 I/F LD10、CON1の27ピン、CON6の23ピンに接続 | 20 | LCD_LD11 | Out | LCD 拡張 I/F LD11、CON1の26ピン、CON6の22ピンに接続 | 21 | GND | Power | 電源(GND) | 22 | GND | Power | 電源(GND) | 23 | LCD_LD0 | Out | LCD 拡張 I/F LD0、CON1の38ピン、CON6の34ピンに接続 | 24 | LCD_LD1 | Out | LCD 拡張 I/F LD1、CON1の37ピン、CON6の33ピンに接続 | 25 | LCD_LD2 | Out | LCD 拡張 I/F LD2、CON1の36ピン、CON6の32ピンに接続 | 26 | LCD_LD3 | Out | LCD 拡張 I/F LD3、CON1の35ピン、CON6の31ピンに接続 | 27 | LCD_LD4 | Out | LCD 拡張 I/F LD4、CON1の34ピン、CON6の30ピンに接続 | 28 | LCD_LD5 | Out | LCD 拡張 I/F LD5、CON1の33ピン、CON6の29ピンに接続 | 29 | GND | Power | 電源(GND) | 30 | DISP | In/Out | 10kΩプルアップ(+3.3V) | 31 | LCD_LSCLK | Out | LCD 拡張 I/F LSCLK、CON1の43ピン、CON6の40ピンに接続 | 32 | LCD_HSYN | Out | LCD 拡張 I/F HSYN、CON1の42ピン、CON6の39ピンに接続 | 33 | LCD_VSYN | Out | LCD 拡張 I/F VSYN、CON1の41ピン、CON6の38ピンに接続 | 34 | LCD_OE_ACD | Out | LCD 拡張 I/F OE_ACD、CON1の40ピン、CON6の37ピンに接続 | 35 | NC | ー | ー | 36 | GND | Power | 電源(GND) | 37 | TOUCH_XP | In/Out | タッチパネル XP、 CON1の17ピン、CON6の13ピンに接続 | 38 | TOUCH_YP | In/Out | タッチパネル YP、 CON1の15ピン、CON6の11ピンに接続 | 39 | TOUCH_XN | In/Out | タッチパネル XN、 CON1の16ピン、CON6の12ピンに接続 | 40 | TOUCH_YN | In/Out | タッチパネル YN、 CON1の14ピン、CON6の10ピンに接続 |
6.25.4.6. CON3(モノラルマイク入力)CON3はモノラルマイク入力です。 表6.64 CON3 信号配列 ピン番号 | ピン名 | I/O | 説明 |
---|
1 | GND | Power | 電源(GND) | 2 | MIC_IN | In | コーデックのLIPピンに接続 | 3 | ー | ー | ー | 10 | ー | ー | ー |
6.25.4.7. CON4(ステレオヘッドホン出力)CON4はステレオヘッドホン出力です。 表6.65 CON4 信号配列 ピン番号 | ピン名 | I/O | 説明 |
---|
1 | GND | Power | 電源(GND) | 2 | HP_L_OUT | Out | コーデックのLOUT1ピンに接続 | 3 | HP_R_OUT | Out | コーデックのROUT1ピンに接続 | 10 | HP_DET | In | コーデックのL2/GPIO2ピンに接続 |
CON5はスピーカー出力です。部品は実装されていません。 表6.66 CON5 信号配列 ピン番号 | ピン名 | I/O | 説明 |
---|
1 | SPK_N | Out | コーデックのLOUT2ピンに接続 | 2 | SPK_P | Out | コーデックのROUT2ピンに接続 |
6.25.4.9. CON6(LCD拡張インターフェース)CON6はLCDと接続するためのインターフェースです。部品は実装されていません。 | |
---|
CON2とCON6には、共通の信号が接続されていますので同時に使用できません。
CON6を使用する場合は、CON2からLCDを取り外してください。 |
表6.67 CON6 信号配列 ピン番号 | ピン名 | I/O | 説明 |
---|
1 | VIN | Power | 電源(VIN) | 2 | VIN | Power | 電源(VIN) | 3 | +3.3V | Power | 電源(+3.3V) | 4 | +3.3V | Power | 電源(+3.3V) | 5 | GND | Power | 電源(GND) | 6 | GND | Power | 電源(GND) | 7 | GPIO2_30 | In/Out | タクトスイッチ出力、SW3の2ピン、CON1の10ピンに接続 | 8 | GPIO2_29 | In/Out | タクトスイッチ出力、SW2の2ピン、CON1の11ピンに接続 | 9 | GPIO2_20 | In/Out | タクトスイッチ出力、SW1の2ピン、CON1の12ピンに接続 | 10 | TOUCH_YN | In/Out | タッチパネル YN、 CON1の14ピン、CON1の40ピンに接続 | 11 | TOUCH_YP | In/Out | タッチパネル YP、 CON1の15ピン、CON1の38ピンに接続 | 12 | TOUCH_XN | In/Out | タッチパネル XN、 CON1の16ピン、CON1の39ピンに接続 | 13 | TOUCH_XP | In/Out | タッチパネル XP、 CON1の17ピン、CON1の37ピンに接続 | 14 | GND | Power | 電源(GND) | 15 | LCD_LD17 | Out | LCD 拡張 I/F LD17、CON2の12 ピン、CON1の19ピンに接続 | 16 | LCD_LD16 | Out | LCD 拡張 I/F LD16、CON2の11 ピン、CON1の20ピンに接続 | 17 | LCD_LD15 | Out | LCD 拡張 I/F LD15、CON2の10 ピン、CON1の21ピンに接続 | 18 | LCD_LD14 | Out | LCD 拡張 I/F LD14、CON2の9 ピン、CON1の22ピンに接続 | 19 | LCD_LD13 | Out | LCD 拡張 I/F LD13、CON2の8 ピン、CON1の23ピンに接続 | 20 | LCD_LD12 | Out | LCD 拡張 I/F LD12、CON2の7 ピン、CON1の24ピンに接続 | 21 | GND | Power | 電源(GND) | 22 | LCD_LD11 | Out | LCD 拡張 I/F LD11、CON2の20ピン、CON1の26ピンに接続 | 23 | LCD_LD10 | Out | LCD 拡張 I/F LD10、CON2の19ピン、CON1の27ピンに接続 | 24 | LCD_LD9 | Out | LCD 拡張 I/F LD9、CON2の18ピン、CON1の28ピンに接続 | 25 | LCD_LD8 | Out | LCD 拡張 I/F LD8、CON2の17ピン、CON1の29ピンに接続 | 26 | LCD_LD7 | Out | LCD 拡張 I/F LD7、CON2の16ピン、CON1の30ピンに接続 | 27 | LCD_LD6 | Out | LCD 拡張 I/F LD6、CON2の15ピン、CON1の31ピンに接続 | 28 | GND | Power | 電源(GND) | 29 | LCD_LD5 | Out | LCD 拡張 I/F LD5、CON2の28ピン、CON1の33ピンに接続 | 30 | LCD_LD4 | Out | LCD 拡張 I/F LD4、CON2の27ピン、CON1の34ピンに接続 | 31 | LCD_LD3 | Out | LCD 拡張 I/F LD3、CON2の26ピン、CON1の35ピンに接続 | 32 | LCD_LD2 | Out | LCD 拡張 I/F LD2、CON2の25ピン、CON1の36ピンに接続 | 33 | LCD_LD1 | Out | LCD 拡張 I/F LD1、CON2の24ピン、CON1の37ピンに接続 | 34 | LCD_LD0 | Out | LCD 拡張 I/F LD0、CON2の23ピン、CON1の38ピンに接続 | 35 | GND | Power | 電源(GND) | 36 | PWMO1 | Out | LCD 拡張 I/F PWMO1、CON1の39ピン、LEDドライバのFBピンに接続 | 37 | LCD_OE_ACD | Out | LCD 拡張 I/F OE_ACD、CON1の40ピン、CON1の34ピンに接続 | 38 | LCD_VSYN | Out | LCD 拡張 I/F VSYN、CON1の41ピン、CON1の33ピンに接続 | 39 | LCD_HSYN | Out | LCD 拡張 I/F HSYN、CON1の42ピン、CON1の32ピンに接続 | 40 | LCD_LSCLK | Out | LCD 拡張 I/F LSCLK、CON1の43ピン、CON1の31ピンに接続 |
6.25.4.10. CON7(拡張インターフェース)CON7はユーザー側で自由に利用できるスイッチ、LED拡張用のインターフェースです。部品は実装されていません。 表6.68 CON7 信号配列 ピン番号 | ピン名 | I/O | 説明 |
---|
1 | LED2 | In | LED2に接続 (Low:消灯、 High:点灯) | 2 | NC | ー | ー | 3 | LED3 | In | LED3に接続 (Low:消灯、 High:点灯) | 4 | NC | ー | ー | 5 | SW4 | In/Out | SW4の2ピンに接続 | 6 | NC | ー | ー | 7 | SW5 | In/Out | SW5の2ピンに接続 | 8 | NC | ー | ー | 9 | SW6 | In/Out | SW6の2ピンに接続 | 10 | NC | ー | ー |
6.25.4.11. CON8、CON9、CON10(RTCバックアップインターフェース)CON8、CON9、CON10はRTCのバックアップ電源供給用のインターフェースです。
電源(+3.3V)が切断されても長期間時刻データを保持させたい場合に、
別途バックアップ用のバッテリを接続することで、時刻データを保持することが可能です。
3つの形状のインターフェースがありますので、お使いのバッテリに合わせてご使用ください。
CON9、CON10に部品は実装されていません。 表6.69 CON8 信号配列 ピン番号 | ピン名 | I/O | 説明 |
---|
1 | RTC_BAT | Power | 電源(RTC_BAT)、リアルタイムクロックの電源ピンに接続 | 2 | RTC_BAT | Power | 電源(RTC_BAT)、リアルタイムクロックの電源ピンに接続 | 3 | GND | Power | 電源(GND) |
| |
---|
CON8、CON9、CON10は共通の端子に接続されており、同時に使用することはできません。 |
| |
---|
CON8、CON9、CON10はリチウムコイン電池からの電源供給を想定したインターフェースです。
リチウムコイン電池以外から電源を供給する場合、回路図、部品表にて搭載部品をご確認の上、絶対定格値を超えない範囲でご使用ください。 |
表6.70 CON9、CON10 信号配列 ピン番号 | ピン名 | I/O | 説明 |
---|
1 | RTC_BAT | Power | 電源(RTC_BAT)、リアルタイムクロックの電源ピンに接続 | 2 | GND | Power | 電源(GND) |
6.25.4.12. SW1、SW2、SW3、SW4、SW5、SW6(ユーザースイッチ)SW1、SW2、SW3、SW4、SW5、SW6はユーザー側で自由に利用できるスイッチです。
SW4、SW5、SW6に部品は実装されていません。 表6.71 SW1、SW2、SW3、SW4、SW5、SW6の機能 部品番号 | 説明 |
---|
SW1 | CON1の12ピン、CON6の9ピンに接続 (Low:押された状態、 Open:押されていない状態) | SW2 | CON1の11ピン、CON6の8ピンに接続 (Low:押された状態、 Open:押されていない状態) | SW3 | CON1の10ピン、CON6の7ピンに接続 (Low:押された状態、 Open:押されていない状態) | SW4 | CON7の5ピンに接続 (Low:押された状態、 Open:押されていない状態) | SW5 | CON7の7ピンに接続 (Low:押された状態、 Open:押されていない状態) | SW6 | CON7の9ピンに接続 (Low:押された状態、 Open:押されていない状態) |
LED1は電源LEDです。 表6.72 LED1の機能 部品番号 | 名称(色) | 説明 |
---|
LED1 | 電源LED(緑) | 電源(+3.3V)ON: 点灯、電源(+3.3V)OFF: 消灯 |
6.25.4.14. LED2、LED3ユーザー(LED)LED2、LED3はユーザー側で自由に利用できるLEDです。部品は実装されていません。 表6.73 LED2、LED3の機能 部品番号 | 名称(色) | 説明 |
---|
LED2 | ユーザーLED(ー) | CON7の1ピンと接続(High: 点灯、Low: 消灯) | LED3 | CON7の3ピンと接続(High: 点灯、Low: 消灯) |
タッチパネルLCDとLCD拡張ボードは図6.176「タッチパネルLCDとLCD拡張ボードの接続」のように接続します。 -
-
LCD拡張ボード CON2のロックレバーを上げる
-
-
タッチパネルLCDのフレキシブル基板(FPC)が止まるところまで挿入
-
-
LCD拡張ボード CON2のロックレバーを下げる
| |
---|
LCD拡張ボード CON2のロックレバーは指でつまむ等の操作は避け、親指や人指し指の爪により、跳ね上げる感じで操作してください。強い力を加えると、コネクタが破損する恐れがあります。 |
タッチパネルLCDをLCD拡張ボードに両面テープで固定する場合、図6.177「両面テープの貼付位置」の位置に貼付するのがおすすめです。 -
-
両面テープ貼付位置
-
-
絶縁テープ
| |
---|
付属の両面テープは以下の理由から量産時の使用を推奨しておりません。 -
経年劣化により両面テープの粘着力が低下し、タッチパネルLCDが剥がれる可能性があります。
-
弾力性のある両面テープでタッチパネルLCDをLCD拡張ボードに固定した場合、
タッチパネルに強い力が加わった際に、タッチパネルLCDのフレームとLCD拡張ボードの基板配線が接触し、故障の原因となる可能性があります。
LCD拡張ボードにはLCDの固定に利用可能な穴を複数設けておりますので、ご利用ください。 |
| |
---|
タッチパネルLCD裏面の絶縁テープはLCD拡張ボード CON2とのショートを防止するために貼付していますので、剥がさないでください。 |
Armaidllo-610 拡張ボードとLCD拡張ボードは図6.178「Armadillo-610とLCD拡張ボードの接続」を参考にし、Armadillo-610 拡張ボードのCON11の1ピンとLCD拡張ボードのCON1の50ピンが対応するように、FFCを接続します。
FFCは電極が上になるようにします。 | |
---|
必ず1ピンと50ピンが対応するように、接続してください。
1ピンと1ピンが対応するように接続した場合、電源とGNDがショートし、
故障の原因となります。 |
| |
---|
FFCの電極を上下逆に接続した場合、実装部品と電極が接触し、
故障する可能性があります。 |
-
-
両面テープ
-
-
固定部品
| |
| | | |
| |