Howto

Armadillo-640: UART5を利用する

Armadillo-640の標準イメージではシリアルポートとして次のUARTが有効になっています。

シリアルインターフェース デバイスファイル 端子
UART1 /dev/ttymxc0 CON9_3,CON9_5
UART3 /dev/ttymxc2 CON3

一方、CON9_4,CON9_6に配置されたUART5を有効にするにはDevice Tree と Device Treeが参照するヘッダファイルを変更する必要があります。

以下に変更差分を示します。

  • linux-4.14-at/arch/arm/boot/dts/armadillo-640.dts
diff --git a/arch/arm/boot/dts/armadillo-640.dts b/arch/arm/boot/dts/armadillo-640.dts
index 53e2e09ea126..65dd0ce6bdf2 100644
--- a/arch/arm/boot/dts/armadillo-640.dts
+++ b/arch/arm/boot/dts/armadillo-640.dts
@@ -107,6 +107,12 @@
        status = "okay";
 };
 
+&uart5 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_uart5>;
+       status = "okay";
+};
+
 &usdhc1 {
        pinctrl-names = "default";
        pinctrl-0 = <&pinctrl_usdhc1>;
@@ -146,6 +152,13 @@
                >;
        };
 
+       pinctrl_uart5: uart5grp {
+               fsl,pins = <
+                        MX6UL_PAD_UART5_TX_DATA__UART5_DCE_TX 0x00008
+                        MX6UL_PAD_UART5_RX_DATA__UART5_DCE_RX 0x1b0b1
+               >;
+       };
+
        pinctrl_enet1: enet1grp {
                fsl,pins = <
                        MX6UL_PAD_GPIO1_IO06__ENET1_MDIO        0x0b808

  • linux-4.14-at/arch/arm/boot/dts/imx6ul-pinfunc.h
diff --git a/arch/arm/boot/dts/imx6ul-pinfunc.h b/arch/arm/boot/dts/imx6ul-pinfunc.h
index 0034eeb84542..292e562ea591 100644
--- a/arch/arm/boot/dts/imx6ul-pinfunc.h
+++ b/arch/arm/boot/dts/imx6ul-pinfunc.h
@@ -287,7 +287,7 @@
 #define MX6UL_PAD_UART5_TX_DATA__I2C2_SCL              0x00bc 0x0348 0x05ac 2 2
 #define MX6UL_PAD_UART5_TX_DATA__CSI_DATA14            0x00bc 0x0348 0x0000 3 0
 #define MX6UL_PAD_UART5_TX_DATA__CSU_CSU_ALARM_AUT00   0x00bc 0x0348 0x0000 4 0
-#define MX6UL_PAD_UART5_RX_DATA__UART5_DCE_RX          0x00c0 0x034c 0x0644 0 5
+#define MX6UL_PAD_UART5_RX_DATA__UART5_DCE_RX          0x00c0 0x034c 0x0644 0 7
 #define MX6UL_PAD_UART5_RX_DATA__UART5_DTE_TX          0x00c0 0x034c 0x0000 0 0
 #define MX6UL_PAD_UART5_RX_DATA__ENET2_COL             0x00c0 0x034c 0x0000 1 0
 #define MX6UL_PAD_UART5_RX_DATA__I2C2_SDA              0x00c0 0x034c 0x05b0 2 2

dtsを変更した後は、製品マニュアルの「ビルド手順」内の「Linux カーネルをビルドする」に従って dtbをビルドしてください。

できあがったarmadillo-640.dtbを Armadilloのルートファイルシステム内の /boot/a640.dtb として保存し再起動すると、次のUARTが有効になります。

シリアルインターフェース デバイスファイル 端子
UART5 /dev/ttymxc4 CON9_4,CON9_6