ブログ

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 * * 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