ブログ

Armadillo-IoT A6:U1モデルのCON4を外部機器との通信インタフェースとして使用する

at_takuma.fukuda
2021年8月3日 18時06分

Armadillo-IoT A6 U1モデルにはCON4にRS232Cインタフェースがあります。
CON4は標準ではコンソールとして使用していますが、
外部機器との通信インタフェースとしても使用する事が出来ます。

※注意事項※
CON4を外部機器との通信インタフェースとして使用する場合、コンソールが無くなるため、
Armadillo-IoT A6を直接制御する方法が無くなります。
ブートローダを操作することも出来なくなるため、
そのままではマイクロSDカードスロットを使ったインストール以外に外部から干渉する方法が無くなってしまいます。
openssh-serverをインストールするなど、予め外部から制御する手段を用意しておくことをお勧めいたします。

Linuxカーネルの改造

CON3をコンソールとする設定は、DTBで行われています。
Linuxカーネルのソースコードに含まれる、以下のdtsファイルを編集することで設定を無効化出来ます。
arch/arm/boot/dts/armadillo-iotg-a6.dts
ファイル中の以下を削除もしくはコメントアウトし、Linuxカーネルをビルドし直してください。

stdout-path = &uart3;

ビルドしたカーネルイメージとDTBをArmadillo-IoT A6に書き込むと、CON3がLinuxのコンソールでは無くなります。

ブートローダーの改造

上記でLinuxの設定を変更できましたが、これだけではArmadillo-IoT A6起動時にCON3に対してブートローダーの起動メッセージが出力されてしまいます。
そのためブートローダーも併せて変更する必要があります。
ブートローダーはコンフィギュレーションの変更のみでコンソール設定を変更できます。
まずは以下のようにデフォルトコンフィギュレーションを適用してください。

[ATDE ~/u-boot-a600-v2018.03-at[version]]$ make ARCH=arm armadillo-640_defconfig
*armadillo-iotg-a6_defconfigではなくarmadillo-640_defconfigであることにご注意ください。

コンフィグメニュー画面を表示し、以下の項目を有効化してください。

make ARCH=arm menuconfig
 
Console --->
[*] Support a silent console
[*] Only silence the U-Boot console
[*] Changes to the 'silent' environment variable update immediately
[*] Allow flags to take effect on relocation

上記設定の上、ビルドしたものをArmadillo-IoT A6に書き込むとブートローダーもCON3に対して入出力を行わなくなります。

動作確認

CON3を外部機器との通信用のRS232Cポートとして使用可能となっていることを確認する最も簡単な方法をご案内します。
設定変更を行ったArmadillo-IoT A6を起動し、SSH等で外部からログインしてください。
通常のコンソール操作時と同じように、PCとArmadillo-IoT A6をRS232Cケーブル+USB-RS232C変換アダプタで接続してください。
PC上でシリアル通信ソフトを起動し、USB-RS232Cアダプタのポートを選択してください。
通信速度の設定は任意です。(こちらでは以下の設定そのままで通信確認を行いました。)
Armadillo-IoT A6マニュアル 表4.5 シリアル通信設定
Armadillo-IoT A6上で以下のコマンドを実行し、Connectedと表示されることを確認してください。

cu -l /dev/ttymxc2 -s 115200
*末尾はシリアル通信ソフトに設定した任意の通信速度と同じ値を設定してください。ここでは115200です。

シリアル通信ソフトで任意の文字列を入力してEnterキーを押します。
Armadillo-IoT A6のコンソール側に同じ文字列が出力されたら通信成功です。