| |
工場出荷状態でフラッシュメモリに書き込まれているイメージファイルは、最新版ではない可能性があります。最新版のイメージファイルは、Armadilloサイトからダウンロード可能です。最新版のイメージファイルに書き換えてからのご使用を推奨します。
イメージファイルの書き換え方法は、6章ソフトウェアの更新と初期化を参照してください。
ここでは、ネットワークの設定方法やネットワークを利用するアプリケーションについて説明します。
Armadillo-IoT は、複数の種類のネットワークに接続することができます。接続可能なネットワークとLinuxから使用するネットワークデバイスの対応を次に示します。
表7.1 ネットワークとネットワークデバイス ネットワーク | ネットワークデバイス | 備考 |
---|
有線LAN | eth0 | | 無線LAN | wlan0 | TI製 WL1837MOD 搭載 | LTE |
ttyACM0 または ttyCommModem[]
| Gemalto製 ELS31-J 搭載 |
Armadillo-IoT ゲートウェイG3L では、通常のLinuxシステムと同様、ネットワークインターフェースの設定はNetworkManagerを使用します。NetworkManagerはデフォルトでeth0(LANのネットワークインターフェース)が自動でupし、DHCPでネットワーク設定を取得するようになっています。
NetworkManagerはすべてのネットワーク設定をコネクションとして管理します。コネクションには「どのようにネットワークへ接続するか」、「どのようにネットワークを作成するか」を記述し、/etc/NetworkManager/system-connections/ に保存します。
また、1つのデバイスに対して複数のコネクションを保存することは可能ですが、1つのデバイスに対して有効化にできるコネクションは1つだけです。
NetworkManagerは、従来の/etc/network/interfaces を使った設定方法もサポートしていますが、本書ではnmcliを用いた方法を中心に紹介します。
nmcli は NetworkManagerを操作するためのコマンドラインツールです。
図7.1「nmcli のコマンド書式」 に nmcli の書式を示します。このことから、nmcli は「オブジェクト(OBJECT)というものが存在し、それぞれのオブジェクトに対してコマンド(COMMAND)を実行する。」という書式でコマンドを入力することがわかります。また、オブジェクトそれぞれに help が用意されていることもここから読み取れます。
各オブジェクトについての詳しい情報は man nmcli を参照してください。
| |
---|
Armadillo-IoT には nmcli の他ユーザーフレンドリーな nmtui もインストールされていますが本書では取り扱いません。
|
ここでは nmcliの、基本的な使い方を説明します。
登録されているコネクションの一覧を確認するには、次のようにコマンドを実行します。
[]
コネクションを有効化するには、次のようにコマンドを実行します。[ID] には「コネクションの一覧」で確認したNAMEに表示される値を入力します。
コネクションを無効化するには、次のようにコマンドを実行します。
コネクションを作成するには、次のようにコマンドを実行します。
[ID] にはコネクションの名前(任意)、[type] には ethernet, wifi といった接続タイプ、[interface name] にはインターフェース名(デバイス)を入力します。具体的なコネクションの作成方法はそれぞれのデバイスの章で説明します。
| |
---|
/etc/NetworkManager/system-connections/ に[ID] の名前でコネクションファイルが作成されます。これをviなどで編集しコネクションを修正することも可能です。
|
コネクションを削除するには、次のようにコマンドを実行します。
| |
---|
/etc/NetworkManager/system-connections/ のコネクションファイルも同時に削除されます。
|
具体的なコネクションの修正方法を紹介します。
| |
---|
無線LAN、LTEの設定情報をnmcli connection modify コマンドで編集すると、パスフレーズ情報がリセットされます。
編集する際は、都度パスフレーズも同時に設定してください。
無線LANのパスフレーズ設定方法は、「無線LAN」を参照してください。
LTEのパスフレーズ設定方法は、「LTEのコネクション設定を編集する場合の注意事項」を参照してください。
|
| |
---|
ネットワーク接続に関する不明な点については、ネットワークの管理者へ相談してください。
|
有効化されているコネクションを修正した場合、かならず修正したコネクションを再度有効化してください。
デバイスの一覧(デバイス名、タイプ、状態、有効なコネクション)を確認するには、次のようにコマンドを実行します。
[]
デバイスを接続するには、次のようにコマンドを実行します。[ifname] には図7.12「デバイスの一覧」で確認したDEVICEに表示される値を入力します。
| |
---|
デバイスを接続するには、接続しようとしているデバイスの有効なコネクションが必要です。"Error: neither a valid connection nor device given" というメッセージが表示された場合には、nmcli connectionなどで有効なコネクションがあるかを確認してください。
|
デバイスを切断するには、次のようにコマンドを実行します。
ここでは有線LANの使用方法について説明します。
7.2.4.1. 有線LANインターフェース(eth0)のコネクションの作成
有線LANインターフェース用のコネクションを作成するには、次のようにコマンドを実行します。
有線LANで正常に通信が可能か確認します。設定を変更した場合、かならず変更したインターフェースを再度有効化してください。
同じネットワーク内にある通信機器とPING通信を行います。以下の例では、通信機器が「192.0.2.20」というIPアドレスを持っていると想定しています。PING通信を停止するには、Ctrl+c を入力してください。
| |
---|
有線LAN以外のコネクションが有効化されている場合、ネットワーク通信に有線LANが使用されない場合があります。確実に有線LANの接続確認をする場合は、事前に有線LAN以外のコネクションを無効化してください。
|
ここでは、Armadillo-IoT に搭載されている無線LANモジュールの使用方法について説明します。
例として、WPA2-PSK(AES)のアクセスポイントに接続します。WPA2-PSK(AES)以外のアクセスポイントへの接続方法などについては、man nm-settings を参考にしてください。また、以降の説明では、アクセスポイントのESSIDを[essid] 、パスフレーズを[passphrase] と表記します。
7.2.5.1. 無線LANアクセスポイントに接続する
無線LANアクセスポイントに接続するためには、次のようにコマンドを実行してコネクションを作成します。
作成されたコネクションの ID は nmcli connection コマンドで確認できます。
無線LANで正常に通信が可能か確認します。
同じネットワーク内にある通信機器とPING通信を行います。以下の例では、通信機器が「192.0.2.20」というIPアドレスを持っていると想定しています。
| |
---|
無線LAN以外のコネクションが有効化されている場合、ネットワーク通信に無線LANが使用されない場合があります。確実に無線LANの接続確認をする場合は、事前に無線LAN以外のコネクションを無効化してください。
|
ここでは、Armadillo-IoT に搭載されている LTEモジュール「Gemalto製LTE通信モジュールELS31-J」の使用方法について説明します。
| |
---|
LTEモジュール「Gemalto製LTE通信モジュールELS31-J」はドコモ相互接続性試験を完了しています。
|
| |
---|
LTEモジュールの制約により工場出荷状態では、Armadillo-IoT側から開始されたセッションによる内向きのパケットを除いて、LTE通信網側からのArmadillo-IoTに対するパケットが遮断されます。
このため、Armadillo-IoTにSSHサーバーやWebサーバー等を起動させ、グローバルIPが割り当てられる回線を利用しても、LTE通信網側からアクセスを行うことはできません。
LTE 通信網側からArmadillo-IoTに対してアクセスを行いたい場合は、「ELS31-J Firewall設定変更ツール」を使用して、ELS31-JのFirewall設定を変更してください。
|
7.2.6.1. LTE データ通信設定を行う前に
LTEデータ通信を利用するには、通信事業者との契約が必要です。契約時に通信事業者から貸与されたmicroSIM(UIMカード)とAPN情報を準備します。
| |
---|
Armadillo-IoTの電源が切断されていることを確認してからmicroSIM(UIMカード)を取り付けてください。
|
microSIM(UIMカード)の切り欠きを挿入方向と反対側に向け、端子面を上にして挿入してください。
APNの設定を行うには、次に示す情報が必要です。
APN ユーザー名 パスワード 認証方式(PAP または CHAP) PDP Type(IPのみサポート)
表7.3「APN情報設定例」の内容に設定する例を、図7.23「LTEのコネクションの作成」に示します。
コネクションの作成後は、自動的にデータ接続が行われます。また、一度コネクションを作成すると起動時は自動的にデータ接続が行われます。
表7.3 APN情報設定例 項目 | 設定 |
---|
APN | [apn] | ユーザー名 | [user] | パスワード | [password] | ネットワークデバイス | [wwan] |
コネクションの作成後、データ接続が完了する前には40秒程度かかります。この間、nmcli device コマンドを実行することで接続状態の確認を行うことができます。
代表的な[status]を次に示します。
表7.4 nmcli device コマンドで取得可能な代表的なstatus status |
---|
disconnected | connecting | connected |
ご利用になるサービスとの通信を検証する、ICMP に対応しているアドレス (8.8.8.8など) と PING 通信を行うなどの方法で LTE の接続を確認してください。
nmcliコマンドでデータ通信の終了を行う前に、LTEの再接続スクリプトを停止します。再接続スクリプトを停止せずにデータ通信の終了を実行した場合、同機能によって再度データ接続が開始されます。
LTEの再接続スクリプトを停止したのち、データ通信を終了します。
7.2.6.7. LTEのコネクション設定を編集する場合の注意事項
LTEの設定情報をnmcli connection modify コマンドで編集する場合、パスワード情報がリセットされます。次に示すコマンドを実行し、都度パスワードを再設定してください。
LTE再接続サービスはLTEのデータ接続の状態を定期的に監視し、切断を検出した場合に再接続を行うサービスです。
microSIMが接続されており、NetworkManagerの有効なLTEのコネクション設定がされているとき、定期的にコネクションの状態を監視します。
コネクションの状態を監視する周期はソフトウェアのバージョンによって異なります。ソフトウェアのバージョンとコネクションの状態を監視する周期の関係を表7.5「ソフトウェアバージョンとコネクション状態を監視周期」に示します。
表7.5 ソフトウェアバージョンとコネクション状態を監視周期 ソフトウェアバージョン | 監視周期(秒) |
---|
atmark-x1-base v1.4.1-1以前(ルートファイルシステム: debian-jessie-armhf_aiotg3l_20161221.tar.gz以前) | 300 | atmark-x1-base v1.5.0-1以降(ルートファイルシステム: debian-jessie-armhf_aiotg3l_20170419.tar.gz以降) | 120 |
コネクションが無効になっている場合、切断状態と判定しコネクションを有効にします。コネクションが有効になっている場合、特定の宛先にPINGを実行します。PINGがエラーになったとき切断状態と判定し、コネクションの無効化・有効化を行うことで再接続を実施します。
atmark-x1-base v1.5.0-1以降(ルートファイルシステム: debian-jessie-armhf_aiotg3l_20161221.tar.gz以降)に含まれる LTE再接続サービスでは、コネクションの無効化・有効化による再接続が2回以上失敗した場合、LTEモジュールの動作異常と判断し、LTEモジュールの電源をOFF・ONして再接続を実施します。
工場出荷状態で有効化されており、システム起動時にサービスが自動的に開始されます。PINGを実行する宛先は、デフォルトで"8.8.8.8"です。ご利用の環境に合わせて設定ファイル(/etc/connection-recover/gsm-ttyACM0_connection-recover.conf)を適宜変更してください。
LTE再接続サービスの状態を確認するには、次に示すコマンドを実行してください。
LTE再接続サービスを停止するには、次に示すコマンドを実行してください。
LTE再接続スクリプトを開始するには、次に示すコマンドを実行してください。
7.2.6.9. LTEでデータ通信をする場合のネットワーク構成について
Armadillo-IoT 搭載のLTEモジュール(ELS31-J)は、USBインターフェースでArmadillo-IoTのプロセッサ i.MX 7Dualと接続しています。USBインターフェースはUSB CDC ACM、USB CDC Ethernetとして動作します。デバイスファイルとネットワークインターフェースの割り当ては、「LTE」を参照してください。
Armadillo-IoTでは、このUSB CDC EthernetによってLTEモジュールとLinuxの間でLANを構成します。
それぞれのIPアドレスの割り当てを、図7.32「LTEでデータ通信をする場合のネットワーク構成」に示します。LinuxのIPアドレスを空間で示しているのは、LTEモジュール内部で動作しているDHCPサーバーがIPアドレスを提供するためです。
LTE回線側から提供されるIPアドレスはLTEモジュール内部で動作するモデムに割り当てられます。
USB CDC Ethernet側のネットワークと、LTE回線網側のネットワークがNATされており、LTEモジュール:192.168.15.1をArmadillo-IoTのデフォルトゲートウェイに設定すると、Armadillo-IoTから、LTE回線網側のアドレスへの通信を行うことができます。
また、LTEモジュール内部ではDNSサーバーが動作しています。
このDNSサーバーは、LTE通信網側から提供されるDNSサーバーを上位のDNSサーバーとして使用します。したがって、LTEでのデータ接続を行なうとNetworkManagerはArmadillo-IoTのDNSサーバーとして192.168.15.1を設定します。これによって、名前解決はLTE通信網から提供されるDNSサーバーによって行うことができます。
7.2.6.10. ModemManager について
ここでは ModemMamager と、mmcli について説明します。
Armadillo-IoT にはネットワークを管理する NetworkManager とは別に、モデムを管理する ModemManager がインストールされています。
ModemManager はモバイルブロードバンドデバイス(LTEモジュールなど)の操作および、接続状況の管理などを行います。
ModemManager のコマンドラインツールである mmcli を使用することで、LTE通信の電波強度やSIMカードの情報(電話番号やIMEIなど)を取得することが可能です。mmcli の詳しい使いかたについては man mmcli を参照してください。
7.2.6.10.1. 認識されているモデムの一覧を取得する認識されているモデムの一覧を取得するには、次のようにコマンドを実行します。 モデムの状態を取得するには、次のようにコマンドを実行します。 | |
---|
モデムの情報を取得するには、microSIMが取り付けられている必要があります。正しくmicroSIMが取り付けられていることを確認してください。
|
7.2.6.10.3. microSIMの情報を取得するmicroSIMの情報を取得するには、次のようにコマンドを実行します。 回線情報を取得するには、次のようにコマンドを実行します。 7.2.7. NetworkManagerによる設定例
ここでは、図7.37「ネットワーク構成図」を例にとってNetworkManagerを使った設定例を紹介します。
表7.6 ネットワークのアドレス情報 ノード名 | ネットワークデバイス | IPアドレス | ネットワークアドレス |
---|
Armadillo | eth0 | 192.168.0.2 | 192.168.0.0/24 | wlan0 | 172.16.xxx.xxx[] | 172.16.0.0/16[] | ttyACM0 または ttyCommModem[][] | xxx.xxx.xxx.xxx[] | xxx.xxx.xxx.xxx[] | Router | eth0 | 192.168.0.1 | 192.168.0.0/24 | eth1 | 192.168.10.1 | 192.168.10.0/24 | Server | eth0 | 192.168.10.2 | 192.168.10.0/24 | Access Point | eth0 | 172.16.0.1 | 172.16.0.0/16 |
図7.37「ネットワーク構成図」に示すネットワークを構築する際のネットワーク設定手順は以下のようになります。なお、作成したコネクションは/etc/NetworkManager/system-connections/ に保存され、Armadilloの再起動後も有効化されます。
手順7.1 ネットワーク設定手順
eth0, [wwan] , wlan0の状態がdisconnectedになっていることを確認します。
disconnected以外の状態になっていた場合、表7.7「デバイスの状態をdisconnectedにする方法」に従い、各デバイスの状態をdisconnectedにしてください。
表7.7 デバイスの状態をdisconnectedにする方法 デバイスの状態 | 対処方法 |
---|
unmanaged | /etc/network/interfaces にデバイスの設定が記述されていないか確認してください。記述されていた場合は、その記述を削除してください。 | unavailable | LANケーブルが抜けていないか確認してください。抜けていた場合、LANケーブルを接続してください。 | connecting | デバイスを使用したコネクションを有効化する処理が実行されています。図7.5「コネクションの無効化」を参照してコネクションを無効化してください。 | connected | デバイスを使用してコネクションが有効化されています。図7.5「コネクションの無効化」を参照してコネクションを無効化してください。 |
無線 LAN(wlan0)の設定を行います。
有線 LAN インターフェース(eth0)の設定を行います。
LTE(ttyACM0 または ttyCommModem[])の設定を行います。
eth0, [wwan] , wlan0の状態がconnectedになっていることを確認します。
ルーティングテーブルを確認します。
Armadilloでは、簡易ファイアーウォールが動作しています。設定されている内容を参照するには、図7.38「iptables」のようにコマンドを実行してください。
工場出荷イメージで利用することができるネットワークアプリケーションについて説明します。
| |
---|
ATDEとArmadilloのネットワーク設定がデフォルト状態であることを想定して記述しています。ネットワーク設定を変更している場合は適宜読み換えてください。
|
Armadilloでは、HTTPサーバーが動作しています。ATDEなどのPCのWebブラウザからArmadilloのURL (http://[ArmadilloのIPアドレス]/ にアクセスすると、lighttpdのトップページ(index.html)が表示されます。
7.2.10. Armadilloにファイルを転送する
ATDE上のテキストファイル(hello.txt)をArmadilloへ転送することを例に、ATDEからArmadilloへファイルを転送する方法を紹介します。
7.2.10.1. scp コマンドを使って転送するATDE から Armadillo へ scp コマンドを使ってファイルを転送するには、Armadillo に SSH Server がインストールされている必要があります。
apt-get コマンドで openssh-server をインストールしてください。
[]
Armadillo のIPアドレスを ip コマンドで確認します。ここで確認したIPアドレスはファイルを転送する時に使用します。
ATDE上で転送するテキストファイル(hello.txt)を作成します。
[PC ~]$ echo "Hello world." > hello.txt
作成したテキストファイルをscpコマンドで転送します。IPアドレスは先ほど ip コマンドで確認したものを入力します。
scp コマンドを実行するとパスワードが要求されますので、atmark ユーザーのパスワードを入力してください。 Armadillo にファイルが転送されたことを確認します。
Armadillo-IoT G3L は、「サブユニットCON2 Wi-SUNモジュールインターフェース」 に ROHM製 Wi-SUN モジュール「BP35A1」を搭載させることができます。
Wi-SUNモジュールはシリアル接続されているため、TTYデバイスファイル(/dev/ttymxc2)経由でデーター通信を行うことができます。
BP35A1を制御する例として、設定情報の取得を行います。
手順7.2 設定情報の取得
cu コマンドを実行して/dev/ttymxc2 に接続します。ボーレートは115200bpsです。
SKINFOコマンドを実行すると、BP35A1 の設定情報が表示されます。
cu を終了するには、"~."(チルダ「~」に続いてドット「.」)を入力します。
その他の ASCII コマンドや、BP35A1 の詳細な情報については ROHM 製ドキュメントを参照してください。
Armadillo-IoT でストレージとして使用可能なデバイスを次に示します。
表7.8 ストレージデバイス デバイス種類 | ディスクデバイス | 先頭パーティション | インターフェース |
---|
microSD/microSDHC/microSDXCカード | /dev/mmcblk*
[]
| /dev/mmcblk*p1 | microSDインターフェース (メインユニットCON12)
| USBフラッシュメモリ | /dev/sd*
[]
| /dev/sd*1 | USB ホストインターフェース (メインユニットCON11) |
ここでは、microSDHCカードを接続した場合を例にストレージの使用方法を説明します。以降の説明では、共通の操作が可能な場合に、microSD/microSDHC/microSDXCカードをmicroSDカードと表記します。
| |
---|
microSDXCカードを使用する場合は、事前に「ストレージのパーティション変更とフォーマット」を参照してフォーマットを行う必要があります。これは、LinuxカーネルがexFATファイルシステムを扱うことができないためです。通常、購入したばかりのmicroSDXCカードはexFATファイルシステムでフォーマットされています。
|
Linuxでは、アクセス可能なファイルやディレクトリは、一つの木構造にまとめられています。あるストレージデバイスのファイルシステムを、この木構造に追加することを、マウントするといいます。マウントを行うコマンドは、mountです。
mountコマンドの典型的なフォーマットは、次の通りです。
-t オプションに続くfstype には、ファイルシステムタイプを指定します[]。FAT32ファイルシステムの場合はvfat []、EXT4ファイルシステムの場合はext4 を指定します。
device には、ストレージデバイスのデバイスファイル名を指定します。microSDカードのパーティション1の場合は/dev/mmcblk0p1 、パーティション2の場合は/dev/mmcblk0p2 となります。
dir には、ストレージデバイスのファイルシステムをマウントするディレクトリを指定します。
microSDスロットにmicroSDHCカードを挿入した状態で図7.41「ストレージのマウント」に示すコマンドを実行すると、/mntディレクトリにmicroSDHCカードのファイルシステムをマウントします。microSDカード内のファイルは、/mntディレクトリ以下に見えるようになります。
ストレージを安全に取り外すには、アンマウントする必要があります。アンマウントを行うコマンドは、umountです。オプションとして、アンマウントしたいデバイスがマウントされているディレクトリを指定します。
7.3.2. ストレージのパーティション変更とフォーマット
通常、購入したばかりのmicroSDHCカードやUSBメモリは、一つのパーティションを持ち、FAT32ファイルシステムでフォーマットされています。
パーティション構成を変更したい場合、fdiskコマンドを使用します。fdiskコマンドの使用例として、一つのパーティションで構成されているmicroSDカードのパーティションを、2つに分割する例を図7.43「fdiskコマンドによるパーティション変更」に示します。一度、既存のパーティションを削除してから、新たにプライマリパーティションを二つ作成しています。先頭のパーティションには100MByte、二つめのパーティションに残りの容量を割り当てています。先頭のパーティションは/dev/mmcblk0p1、二つめは/dev/mmcblk0p2となります。fdiskコマンドの詳細な使い方は、manページ等を参照してください。
FAT32ファイルシステムでストレージデバイスをフォーマットするには、mkfs.vfatコマンドを使用します。また、EXT4ファイルシステムでフォーマットするには、mkfs.ext4コマンドを使用します。microSDカードのパーティション1をEXT4ファイルシステムでフォーマットするコマンド例を、次に示します。
Armadillo-IoT のLEDは、ソフトウェアで制御することができます。
利用しているデバイスドライバはLEDクラスとして実装されているため、LEDクラスディレクトリ以下のファイルによってLEDの制御を行うことができます。LEDクラスディレクトリと各LEDの対応を次に示します。
表7.9 LEDクラスディレクトリとLEDの対応 LEDクラスディレクトリ | インターフェース | デフォルトトリガ |
---|
/sys/class/leds/led3/ | ユーザーLED3 | none | /sys/class/leds/led4/ | ユーザーLED4 | default-on | /sys/class/leds/led5/ | ユーザーLED5 | none |
Armadillo-IoT の外観から見たユーザーLEDの位置を次に示します。
以降の説明では、任意のLEDを示すLEDクラスディレクトリを"/sys/class/leds/[LED] "のように表記します。
初期出荷状態のLEDの動作を次に示します。
表7.10 初期出荷状態のLEDの動作 インターフェース | 用途 | 詳細 |
---|
ユーザーLED3 | LTE LED |
LTEのデータ接続中に点灯、切断で消灯します
※ 回線の瞬断や再接続処理中等に、点灯状態であるにもかかわらずデータ通信ができない場合があります
| ユーザーLED4 | 電源LED | 本体の電源が入っていると点灯、電源の切断で消灯します | ユーザーLED5 | 未使用 | 常時消灯しています |
LEDクラスディレクトリ以下のbrightnessファイルへ値を書き込むことによって、LEDの点灯/消灯を行うことができます。brightnessに書き込む有効な値は0〜255です。
brightnessに0以外の値を書き込むとLEDが点灯します。
| |
---|
Armadillo-IoT のLEDには輝度制御の機能が無いため、0 (消灯)、1〜255 (点灯)の2つの状態のみ指定することができます。
|
brightnessに0を書き込むとLEDが消灯します。
brightnessを読み出すとLEDの状態が取得できます。
LEDクラスディレクトリ以下のtriggerファイルへ値を書き込むことによってLEDの点灯/消灯にトリガを設定することができます。triggerに書き込む有効な値を次に示します。
表7.11 triggerの種類 設定 | 説明 |
---|
none | トリガを設定しません。 | mmc0 | microSDインターフェース(メインユニットCON12)のアクセスランプにします。 | mmc2 | eMMCのアクセスランプにします。 | timer | 任意のタイミングで点灯/消灯を行います。この設定にすることにより、LEDクラスディレクトリ以下にdelay_on, delay_offファイルが出現し、それぞれ点灯時間, 消灯時間をミリ秒単位で指定します。 | heartbeat | 心拍のように点灯/消灯を行います。 | default-on | 主にLinuxカーネルから使用します。LEDが点灯します。 |
以下のコマンドを実行すると、LEDが2秒点灯、1秒消灯を繰り返します。
triggerを読み出すとLEDのトリガが取得できます。"[ ]"が付いているものが現在のトリガです。
Armadillo-IoT は、i.MX7DualのRTC機能を利用しています。
電源が切断されても時刻を保持させたい場合は、RTC バックアップインターフェース(CON9)に外付けバッテリー(CR2032 WK11/Hitachi Maxell[]等)を接続することができます。
Linuxの時刻には、Linuxカーネルが管理するシステムクロックと、RTCが管理するハードウェアクロックの2種類があります。RTCに時刻を設定するためには、まずシステムクロックを設定します。その後に、ハードウェアクロックをシステムクロックと一致させる手順となります。
システムクロックの設定方法は 「時刻の設定」 を参照してください。
システムクロックを設定後、ハードウェアクロックをhwclockコマンドを用いて設定します。
| |
---|
hwclockコマンドは、デフォルトで/dev/rtc (/dev/rtc0 のシンボリックリンク)を使用します。/dev/rtc0 にi.MX7DualのRTC機能が割り当てられるのは、linux-3.14-x1-at14 以降です。at13以前のバージョンでは、Board Management ICのRTC機能が割り当てられます。
|
Armadillo-IoT のユーザースイッチのデバイスドライバは、インプットデバイスとして実装されています。インプットデバイスのデバイスファイルからボタンプッシュ/リリースイベントを取得することができます。
ユーザースイッチのインプットデバイスファイルと、各スイッチに対応したイベントコードを次に示します。
表7.12 インプットデバイスファイルとイベントコード ユーザースイッチ | インプットデバイスファイル | イベントコード |
---|
SW2 | /dev/input/event1 | code 356 (KEY_POWER2) |
| |
---|
インプットデバイスは検出された順番にインデックスが割り振られます。USBデバイスなどを接続してインプットデバイスを追加している場合は、デバイスファイルのインデックスが異なる可能性があります。
|
ユーザースイッチのボタンプッシュ/リリースイベントを確認するために、ここではevtest コマンドを利用します。evtest を停止するには、Ctrl+c を入力してください。
Armadillo-IoT は、BMIC(Board Management IC)のADコンバーター機能により、電源電圧を取得することができます。
電源電圧は、分圧されてADコンバーターへ入力されています。電源電圧を取得するためには、まずADコンバーターへの入力電圧を取得する必要があります。
ADコンバーターは IIO(Industrial I/O) デバイスとして実装しています。
/sys/bus/iio/devices/iio:device0/ ディレクトリ以下のファイルから入力電圧を算出することができます。
| |
---|
IIO デバイスは、デバイスを認識した順番で iio:deviceN (N は'0'からの連番)となります。IIO デバイスは、IIOデバイス名から特定することができます。BMICのADコンバーターの IIO デバイス名は "3-0012"です。
|
ADコンバータへの入力電圧は、AD変換値と最小入力電圧変動から算出する事ができます。
/sys/bus/iio/devices/iio:device0/ ディレクトリ以下にある、入力電圧の算出に必要なファイルを次に示します。
表7.13 入力電圧の算出に必要なファイル ファイル | 説明 |
---|
in_voltage0_raw | シングルエンド入力 CH0(電源電圧)のAD変換値 | in_voltage_scale | シングルエンド入力の最小入力電圧変動 |
例として、電源電圧の取得方法について記載します。
図7.54「ADコンバーターへの入力電圧を取得する」の例では、ADコンバーターの入力電圧は、約 1.261V (1766 × 0.714111328 [mV])である事がわかります。
ADコンバーターへの入力電圧から、電源電圧を求める計算式を次に示します。
図7.54「ADコンバーターへの入力電圧を取得する」を例にとると、ADコンバーターの入力電圧1.261Vから、電源電圧は約11.770Vであることを求めることができます。
| |
---|
awk コマンドを利用して、次のように電源電圧を表示することができます。
|
vintrigger コマンドを利用して、電源電圧が指定した電圧になった場合に任意のコマンドを実行させることができます。
| |
---|
vintrigger を複数起動することはできません。
vintrigger はatmark-x1-base v1.5.2-1以降(debian-jessie-armhf_aiotg3l_20180131.tar.gz 以降)で使用可能です。
|
vintrigger コマンドのヘルプは次の通りです。
30秒間隔で電源電圧を監視し、11000mV(11V)以下になった場合に、LED5を点灯させる例を次に示します。
| |
---|
vintrigger コマンドのログは/var/log/syslog 及び/var/log/daemon.log ファイルに出力されます。
|
Armadillo-IoT には、RS422/RS485 のシリアルポートが 1 ポート登載されています。シリアルポートのデバイスドライバは、TTYデバイスとして実装されているためTTYデバイスファイルから制御を行うことができます。
シリアルポートインターフェースと、TTYデバイスファイルの対応を次に示します。
表7.14 シリアルポートインターフェースとTTYデバイスファイル シリアルポートインターフェース | TTYデバイスファイル |
---|
CON4 | /dev/ttymxc1 |
7.8.1. RS422/RS485の通信設定を変更する
変更が可能なRS485設定とその初期値を表7.15「RS485設定と初期値」に示します。flagsは各ビットごとの論理和を示します。
表7.15 RS485設定と初期値 設定 | 説明 | 初期値 |
---|
flags | ENABLED(bit0) |
0: RS485無効
1: RS485有効
| 1 | RTS_ON_SEND(bit1) |
0: データ送信時のRTS(Driver Enable)がLow
1: データ送信時のRTS(Driver Enable)がHigh
| 1 | RTS_AFTER_SEND(bit2) |
0: データ非送信時のRTS(Driver Enable)がLow
1: データ非送信時のRTS(Driver Enable)がHigh
| 0 | RX_DURING_TX(bit4) |
0: 半二重通信
1: 全二重通信
| 0 | delay_rts_before_send | 送信前遅延時間(ミリ秒) | 0 | delay_rts_after_send | 送信後遅延時間(ミリ秒) | 0 |
| |
---|
flagsのRTS_ON_SENDとRTS_AFTER_SENDは初期値を変更しないでください。変更した場合はデータ送信を行うことができなくなります。
|
| |
---|
RS485をコンソールとして利用することはできません。
|
RS485設定は、アプリケーションプログラムまたは、Linuxカーネル起動オプションで変更することができます。
アプリケーションプログラムの作成方法については、Linuxカーネルのソースコードに含まれているドキュメント(Documentation/serial/serial-rs485.txt )を参照してください。
Linux カーネル起動オプションでは、次のオプション指定子でRS485設定を行います。
表7.16 Linuxカーネル起動オプションからのRS485設定 オプション指定子 | 説明 |
---|
imx.rs485_uart2 |
CON4のUART2(ttymxc1)のRS485設定を指定します。
|
RS485設定のフォーマットは次の通りです。
例として、RS485設定を全二重通信にする場合は、保守モードで起動してから次のようにコマンドを実行してください。
| |
| | | |
| |