ブログ

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