ブログ

Armadillo-IoT(G3):RS232Cアドオン(OP-AGA-RS00-00)のCON3/CON4(テストインタフェース)の活用例(UART3編)

at_kazutaka.bito
2020年11月9日 11時28分

Armadillo-IoT(G3)と組み合わせて利用可能な RS232Cアドオン(OP-AGA-RS00-00)
CON3/CON4(テストインタフェース)のスルーホールで、
Armadillo-IoTゲートウェイ G3 マルチプレクス表のUART、I2C、GPIO等の機能(※)が使用できます。

※)同表の「RS232C RS00」列で使用されている端子以外で使用可能な機能。

ここでは、Armadillo-IoT(G3)のアドオンインタフェース(CON2)に接続した場合に、
RS232CアドオンのテストインタフェースでUART3(※)を使用可能にします。

※)RS232Cアドオンは、Armadillo-IoT(G3)のアドオンインタフェース(CON1)および
Armadillo-X1のアドオンインタフェース(CON7)でも使用できますが、これらのアドオンインタフェースには
UART3は割り当てられていないため、本方法は使用できません。

1.RS232CアドオンのテストインタフェースでUART3に使用可能な端子

Armadillo-IoTゲートウェイ G3 マルチプレクス表のUART3の列より、Armadillo-IoT(G3)の
アドオンインタフェース(CON2)の下記の端子でUART3が使用可能になっています。
 36ピン:UART3_RX_DATA
 37ピン:UART3_TX_DATA

Armadillo-IoT ゲートウェイ G3製品マニュアル 表19.7 CON4 信号配列より、Armadillo-IoT(G3)の
アドオンインタフェースの信号は、RS232Cアドオンのテストインタフェースにスルーされています。
よって、ここでは、RS232Cアドオンのテストインタフェースの下記の端子がUART3として使用できます。
 CON4の36ピン:UART3_RX_DATA
 CON4の37ピン:UART3_TX_DATA

2.Armadillo-IoT(G3)のアドオンインタフェース(CON2)のUART3の設定

Armadillo-IoT(G3)のアドオンインタフェースの端子の機能を設定する場合は、
下記ディレクトリ内にある、アドオンのデバイスツリーのソースコードに記述します。

linux-4.9-x1-at[version]/arch/arm/mach-imx/armadillo_iotg_addon

Armadillo-IoT(G3)のアドオンインタフェース(CON2)にRS232Cアドオンを接続した場合の
デバイスツリーのソースコードは、上記ディレクトリの下記ファイルになります。

addon_atmark_techno_rs232c_iotg_g3_intf2.dts

上記のファイルを下記のように変更します。

addon_atmark_techno_rs232c_iotg_g3_intf2.dts

/*
 * Copyright (C) 2017 Atmark Techno, Inc. All Rights Reserved.
 * Author: Daisuke Mizobuchi <mizo@atmark-techno.com>
 *
 * This program is free software; you can redistribute it and/or
 * modify it under the terms of the GNU General Public License
 * version 2 as published by the Free Software Foundation.
 */
 
#include <dt-bindings/clock/imx7d-clock.h>
#include "../../../../arch/arm/boot/dts/imx7d-pinfunc.h"
 
/dts-v1/;
/plugin/;
/ {
    fragment@0 {
        target = <&iomuxc>;
        __overlay__ {
            addon-intf2 {
                pinctrl_uart2: uart2grp {
                    fsl,pins = <
                        MX7D_PAD_LCD_VSYNC__UART2_DCE_CTS   0x00    /* INTF2_38 */
                        MX7D_PAD_LCD_HSYNC__UART2_DCE_RTS   0x70    /* INTF2_39 */
                        MX7D_PAD_LCD_ENABLE__UART2_DCE_TX   0x00    /* INTF2_40 */
                        MX7D_PAD_LCD_CLK__UART2_DCE_RX      0x70    /* INTF2_41 */
 
                        MX7D_PAD_I2C3_SCL__GPIO4_IO12       0x70    /* INTF2_42 */
 
                        MX7D_PAD_SAI2_TX_SYNC__GPIO6_IO19   0x70    /* INTF2_46 */
                        MX7D_PAD_SAI2_TX_BCLK__GPIO6_IO20   0x70    /* INTF2_47 */
                        MX7D_PAD_SAI2_RX_DATA__GPIO6_IO21   0x70    /* INTF2_48 */
                        MX7D_PAD_SAI2_TX_DATA__GPIO6_IO22   0x70    /* INTF2_49 */
                    >;
                };
/**** 20200928: begin ****/
                pinctrl_uart3: uart3grp {
                    fsl,pins = <
                        MX7D_PAD_UART3_RX_DATA__UART3_DCE_RX    0x70    /* INTF2_36 for UART3_RX*/
                        MX7D_PAD_UART3_TX_DATA__UART3_DCE_TX    0x00    /* INTF2_37 for UART3_TX*/
                    >;
                };
/**** 20200928: end ****/
            };
        };
    };
 
    fragment@1 {
        target = <&uart2>;
        __overlay__ {
            pinctrl-names = "default";
            pinctrl-0 = <&pinctrl_uart2>;
            fsl,uart-has-rtscts;
            status = "okay";
        };
    };
 
/**** 20200928: begin ****/
    fragment@2 {
        target = <&uart3>;
        __overlay__ {
            pinctrl-names = "default";
            pinctrl-0 = <&pinctrl_uart3>;
            status = "okay";
        };
    };
/**** 20200928: end ****/
};


補足)上記のソースコード内で、下記コメントで挟んであるところが、
CON4の36,37ピンをUART3に設定した箇所です。

/**** 20200928: begin ****/
/**** 20200928: end ****/

上記の変更後、ビルドして生成された下記uImageとdtbで、
Armadillo-IoT(G3)のカーネルイメージとデバイスツリーを書き換えます。

linux-4.9-x1-at[version]/arch/arm/boot/uImage
linux-4.9-x1-at[version]/arch/arm/boot/dts/armadillo_iotg_g3_m1.dtb

RS232CアドオンをArmadillo-IoT(G3)のアドオンインタフェース(CON2)に接続して起動すると、
UART3は/dev/ttymxc2というデバイスファイル(※)で制御できるようになっています。

※)例えば、ボーレート等の設定は下記コマンドで確認できます。

stty -F /dev/ttymxc2 -a