ブログ

Armadillo-IoT(A6):コンソールを拡張インタフェースのUARTに変更する

at_kazutaka.bito
2022年9月5日 9時47分

Armadillo-IoT(A6)の開発/メンテナンス等に使用するデフォルトのコンソールは、RS232Cインタフェースに設定されています。
ここでは、コンソールを拡張インタフェースのUARTに変更する方法を説明します。
活用例)
RS232Cインタフェースをコンソールではなく、他機器とのシリアル通信にしたい場合
→コンソールを拡張インタフェースのUARTに変更し、RS232Cインタフェースを他機器とのシリアル通信専用にする

補足)
拡張インタフェースのUARTをコンソールとした後、このコンソールを使ってPCとシリアル通信するには拡張インタフェースの
端子配置に合わせてUARTの信号に配線する必要があります。
ここでは、 USBシリアル変換アダプタ(Armadillo-640用)とブレッドボード用の延長ワイヤーとUSB(Aオス-miniB)ケーブルを
組み合わせてUSBでPCに接続します。

以下、1~3の手順はATDE8上で実施します。

1. ブートローダーのコンソールをUART1に設定する

ATDE上に、 Armadillo-IoT ゲートウェイ A6 ブートローダーのソースファイルをダウンロードします。

atmark@atde8:~$ wget https://armadillo.atmark-techno.com/files/downloads/armadillo-iot-a6/source/u-boot-a600-v2018.03-at[version].tar.gz

[version]の部分は製品アップデートで更新されるため、ダウンロードしたファイル名で読み替えください。

Armadillo-IoT ゲートウェイ A6製品マニュアル「11.1. ブートローダーをビルドする」内の
「1.ソースコードの準備」「2.デフォルトコンフィギュレーションの適用」を実行します。

atmark@atde8:~$ tar xf u-boot-a600-v2018.03-at[version].tar.gz
atmark@atde8:~$ cd u-boot-a600-v2018.03-at[version]
atmark@atde8:~/u-boot-a600-v2018.03-at[version]$ make ARCH=arm armadillo-iotg-a6_defconfig

コンフィギュレーションの設定画面を開きます。

atmark@atde8:~/u-boot-a600-v2018.03-at[version]$ make ARCH=arm menuconfig


コンフィギュレーションの設定画面で「ARM architecture」->「Console UART select(UART3)」の設定箇所で
「UART3」(デフォルト)が選択されている箇所で「UART1」を選択してください。

ARM architecture ->
  Console UART select (UART3) --->
    (X) UART1 <-を選択
    () UART3

コンフィギュレーションの設定画面を終了します。

2. ブートローダーの環境変数でコンソールをUART1に設定する

LinuxのコンソールをUART1に設定するようにブートローダーの環境変数optargsを設定します。
補足)
ブートローダーの環境変数optargsに設定されたパラメータ(ここでは、UART1をコンソールにした設定)が
ブートパラメータとしてLinuxカーネルに渡されます。

ブートローダーのソースコード
u-boot-a600-v2018.03-at[version]/include/configs/armadillo-640.h

#define CONFIG_EXTRA_ENV_SETTINGS \
    "setup_mmcargs=setenv bootargs root=/dev/mmcblk" MMCDEV "p2 rootwait ${optargs};\0"\

の箇所に、下記のようにoptargs(コンソールをUART1(ttymxc0)、ボーレートを115200)を設定する行を追加します。

#define CONFIG_EXTRA_ENV_SETTINGS \
    "optargs=console=ttymxc0,115200\0" \
    "setup_mmcargs=setenv bootargs root=/dev/mmcblk" MMCDEV "p2 rootwait ${optargs};\0"\


Armadillo-IoT ゲートウェイ A6製品マニュアル「11.1. ブートローダーをビルドする」内の
「3.ビルド」を実行します。

atmark@atde8:~/u-boot-a600-v2018.03-at[version]$ make CROSS_COMPILE=arm-linux-gnueabihf-

ビルドが終了すると、U-Bootディレクトリにイメージファイルが作成されています。

atmark@atde8:~/u-boot-a600-v2018.03-at[version]$ ls u-boot.imx
u-boot.imx


3. カーネルの起動後に拡張インタフェースのUART1が使用できるようにする

カーネル起動後に拡張インタフェースのUART1を使用するには、デバイスツリーを設定する必要があります。
Armadillo-IoT ゲートウェイ A6製品マニュアル「22.3. Device Treeをカスタマイズする」 の「22.3.2. at-dtwebの起動」までを
実施します。

at-dtwebの画面でUART1の機能をドラッグし、拡張インタフェースの該当端子(白地の箇所)にドロップします。


同マニュアルの「22.3.3.5. DTS/DTBの生成」の手順を実施すると、
拡張インタフェースのUART1が使用可能なデバイスツリーが生成されます。

atmark@atde8:~/linux-v4.14-at[version]$ ls arch/arm/boot/dts/armadillo-iotg-a6-at-dtweb.dtb
armadillo-iotg-a6-at-dtweb.dtb


以下、4の手順はArmadillo-IoT(A6)上で実施します。

4. 拡張インタフェースのUART1をコンソールとするためのイメージに書き換え

Armadillo-IoT ゲートウェイ A6製品マニュアル「12.2.1. ブートローダーイメージの書き換え」を参考に
Armadillo-IoT(A6)のブートローダーを上記の手順2で作成したイメージ(u-boot.imx)に書き換えます。

Armadillo-IoT ゲートウェイ A6製品マニュアル「12.2.3. DTBの書き換え」を参考に
Armadillo-IoT(A6)のデバイスツリーを上記の手順3で作成したイメージ(armadillo-iotg-a6-at-dtweb.dtb)に書き換えます。

以上で、拡張インタフェースのUART1をコンソールとする設定は完了です。

Armadillo-IoT A6のコンソールとしてシリアル通信する場合は、下記のUSBシリアル変換アダプタ(SA-SCUSB-10)に
USB(Aオス-miniB)ケーブル経由でPCに接続します。

注)標準のインストールディスクでインストールし直して、コンソールをRS232Cに戻す場合

標準のインストールディスクでインストールし直す場合、下記のように実施します。

例)インストールディスクがUSBメモリの場合
1. Armadilloの電源が切断されていることを確認します。接続されていた場合は、電源を切断してください。
2. インストールディスクイメージを書き込んだ USBメモリを、 ArmadilloのUSBインタフェースに差し込んでください。
3. SW1(ユーザースイッチ)を押しながら Armadill に電源を投入します。
4. 本ブログで接続しているコンソール(拡張インタフェースのUART)のu-bootのログインプロンプトで下記のように実行します。

=> setenv optargs
=> run usbboot

インストールが始まりますが、ここからコンソールにログが出ないため、進捗状況はLEDで判断します。
赤LED消灯、緑LED点滅:実行中
赤LED点灯、緑LED点灯:正常終了
正常終了後、Armadilloの電源をOFF→ONすると、デフォルトのコンソール(RS232C)に戻ります。