Armadilloフォーラム

USBシリアル変換アダプタの接続先をUART1からUART8に変更したい

kdhiro

2022年3月4日 14時40分

640開発キットにてUSBシリアル変換アダプタの接続先がデフォルトでUART1(CON9の1,3,5,7,9)に
なっておりますが、これをUART8(CON9の15,16)に変更したい。目的は、UART1にI2C3を割り当て
たいためです。at-dtwebを使い、以前教えて頂いた手順でUART8を割り当てたつもりですが、
USBシリアル変換アダプタをUART8(RX, TXだけでなく、VCC, GNDも供給)に差し替えても通信が
できていないようです(minicomで起動ログが表示されない)。
何か、他にやらなければならないことがありますでしょうか?

コメント

koga

2022年3月6日 17時24分

アットマークテクノの古賀です。

kdhiroさん:
>640開発キットにてUSBシリアル変換アダプタの接続先がデフォルトでUART1(CON9の1,3,5,7,9)に
>なっておりますが、これをUART8(CON9の15,16)に変更したい。目的は、UART1にI2C3を割り当て
>たいためです。at-dtwebを使い、以前教えて頂いた手順でUART8を割り当てたつもりですが、
>USBシリアル変換アダプタをUART8(RX, TXだけでなく、VCC, GNDも供給)に差し替えても通信が
>できていないようです(minicomで起動ログが表示されない)。
>何か、他にやらなければならないことがありますでしょうか?

at-dtweb による Device Tree のカスタマイズだけでは、起動ログ出力先であるコンソールを切り替えることは、できないのです。ブートローダー(u-boot)が Linux カーネルを起動する際に Linux カーネルへ渡すブートパラメータの変更が必要です。UART8 ではなく UART3 の場合ですが、以下の Howto をご覧になって下さいませ:

 Armadillo-640: CON3、CON4(シリアルインターフェース)をコンソールとして利用する
 https://armadillo.atmark-techno.com/howto/armadillo-640-uart3-console

次の手順で、Linux のコンソールを UART8 に割り当てて下さい:

1.) USB シリアル変換アダプタを、CON9 の UART1 のピンに接続する。

2.) USB シリアル変換アダプタのスライドスイッチを操作して、 u-boot が保守モードで起動するようにする。
  https://manual.atmark-techno.com/armadillo-640/armadillo-640_product_ma…

3.) 電源投入して u-boot が保守モードで起動したら、上記 Howto と同様の手順で、optargsに console=ttymxc7,115200 を設定し(※ttymxc2 ではなく ttymxc7 を指定)、u-boot 環境変数を保存する。

4.) 一旦電源を切り、USB シリアル変換アダプタを、CON9 の 15, 16(および 7, 9?)に接続し直し、USB シリアル変換アダプタのスライドスイッチを操作して、u-boot が通常モードで起動するようにしてから電源投入する。

ただし、これだけですと、u-boot のコンソールが UART1 になっていますので、UART1 のピンに I2C3 を割り当てて接続した I2C 対向デバイスが、u-boot のログ出力によって誤動作する可能性があります。そのため、上記の Howto の手順で、u-boot のコンソールを UART3(CON3)に割り当てるのが良いかと思います。なお、u-boot のコンソールも UART8 にしたい場合は、上の Howto で書いている手順ではできず、u-boot のカスタマイズが必要です。というのは、現状、u-boot がコンソールに使用可能な UART としてサポートしているのが UART1 と UART3 だけだからです。そのため、コンフィグレーションメニューでの選択肢には、 UART1 と UART3 しか表示されません。

以上、参考になりましたら幸いです。

kdhiro

2022年3月7日 11時41分

ありがとうございます!大変に参考になります。コンソール可能なUARTはUART1とUART3ということで了解致しました。
使用しているI2Cデバイスのアドレスがハード固定で重複しており、I2Cの3系統での使用を検討していた次第です。
どのように進めていくか、検討をしていきます。ありがとうございます!