Armadilloフォーラム

Armadillo-410でUART4を使用するには

funayama

2014年6月18日 14時06分

お世話様です。

現在Armadillo-410では、pin:57(TxD)、pin58(RxD)にUART4としてGPSが接続されています。
(※Armadillo-410 ハードウェアマニュアル Ver 1.0.1、P.28、表6.6のマルチプレクスBの形)

①使用できるデバイスファイルは標準のttymxc3でよろしいのでしょうか。

 /dev/ttymxc3   UART4
 (※Armadillo-400シリーズ ソフトウェアマニュアル Ver 1.8.1)

②コンフィグレーションの設定方法をご教授下さい。
カーネルコンフィグレーションで、”ARMADILLO400_UART4_CON11”を"y”とすることだけでよろしいのでしょうか。

(※Armadillo-410上で見ると、この/dev/ttymxc3が存在しません)
(※Armadillo-410 ハードウェアマニュアル Ver 1.0.1では、P.67の
  A440との対応説明しかcon11は出てこないのですが...)

よろしくお願いいたします。

コメント

at_daisuke.sasaki

2014年6月19日 18時36分

佐々木大輔です。

> 現在Armadillo-410では、pin:57(TxD)、pin58(RxD)にUART4としてGPSが接続されています。
> (※Armadillo-410 ハードウェアマニュアル Ver 1.0.1、P.28、表6.6のマルチプレクスBの形)
>
> ①使用できるデバイスファイルは標準のttymxc3でよろしいのでしょうか。

UART4を使用する場合のデバイスファイルは「/dev/ttymxc3」で正しいです。

> ②コンフィグレーションの設定方法をご教授下さい。
> カーネルコンフィグレーションで、”ARMADILLO400_UART4_CON11”を"y”とすることだけでよろしいのでしょうか。

「make menuconfig」のインターフェースを使用したカーネルコンフィグレーションでは
「Enable UART4 at CON11」と「UART4」にチェックを入れれば良いです。
 ※「Enable UART4 at CON11」にチェックを入れると「UART4」にもチェックが入ります。

Linux Kernel v2.6.26-at19 Configuration
    System Type  --->
        Freescale MXC Implementations  --->
            MX25 Options  --->
                Armadillo-400 Board options  --->
                    [*] Enable UART4 at CON11 チェックを追加
                    [*] UART4           チェックを追加         

上記menuconfigを実施すると、以下のコンフィグが"y"となります。

ARMADILLO400_UART4_CON11
ARMADILLO400_CON11_44_UART4_RXD
ARMADILLO400_CON11_45_UART4_TXD
SERIAL_MXC_SELECT4
ARMADILLO400_UART4_WAKE_SRC_SELECT
SERIAL_MXC_WAKE_SRC_SELECT4

funayama

2014年7月5日 10時53分

佐々木さん

大変遅くなり申し訳ありません。

デバイスファイルttymxc3が見えるようになりました。
ありがとうございました。

funayama

2014年7月7日 2時08分

お世話になっております。

続きの質問になります。
冒頭で記述していますが、
現在Armadillo-410では、pin:57(TxD)、pin58(RxD)にUART4としてGPSが接続されています。
デバイスファイル(/dev/ttymxc3)を指定しOpenし正常終了するのですが、
UART4の通信がうまくいきません。

GPSに対するコマンドを送信(write)し応答を待つところで(read)で、だんまりになってしまいます。
ちなみに、デバイスファイルをttymxc2にしたところ同じ現象となります(当然相手がいませんので)。

シリアル通信のプログラムは、「Armadillo実践開発ガイド 第2部 6.5.1 シリアルエコーサーバー」
のソースプログラムをベースに、read()とwrite()の処理の部分を逆にして、
GPSコマンドをwrite()して、何もせずread()を呼び出しています。

UART4、もしくは、pin57,pin58との接続が有効になっていないような気もしています。

解決策をご教授下さい。
よろしくお願いいたします。

funayama

2014年7月12日 15時37分

お世話になっております。
UART4についてハード側の問題解決により送受信ができるようになりました。
お騒がせ致しました。

ただ、GPS利用に関してPPSの割込みを受けて受信しないと正しく情報が
取得できない問題があります。
今、GPSのPPS出力が
A410 pin53
につながっております。
その信号から割込みを発生させ、そのタイミングで受信を行おうと思うのですが、
どのような設定が必要でしょうか。
ご教授下さい。よろしくお願いいたします。

funayama

2014年7月13日 1時25分

お世話になっております。

GPIOに関する投稿を見つけ、同じようにやったところうまく受信ができるようになりました。
・A410  CON2_53 GPIO1_1
・拡張ボード CON11_49 GPIO1_1
ATDE3:
 /linux-2.6.26-at19/arch/arm/machh-mx25/Kconfig
で該当箇所を変更することで、
Armadillo-410:
 /sys/class/gpio/CON11_49
が現れました。
fd=open("/sys/class/gpio/CON11_49/direction", O_RDWR);
write(fd,"in",2);  // 入力に設定
open("/sys/class/gpio/CON11_49/edge", O_RDWR);
write(fd,"rising",6);  // 立ち上がりエッジに設定
も、うまく行き、
poll(&pfd,1,-1); // 割り込み待ち
で、PPSのタイミングに合わせてreadできるようになりました。
ありがとうございました。