I.MX6U 的 UART 驱动 NXP 已经编写好了,所以不需要我们编写。我们需要做的就是在设备树中添加UART3对应的设备节点即可。
1 设备树添加UART3节点
打开topeet_emmc_4_3.dts文件,首先添加UART3对应的pinctrl子节点,在iomuxc中添加如下内容:
1 pinctrl_uart3: uart3grp {
2 fsl,pins = <
3 MX6UL_PAD_UART3_TX_DATA__UART3_DCE_TX 0X1b0b1
4 MX6UL_PAD_UART3_RX_DATA__UART3_DCE_RX 0X1b0b1
5 >;
6 };
然后检查一下 UART3_TX 和 UART3_RX 这两个引脚有没有被用作其他功能,如果有的话要将其屏蔽掉,保证这两个 IO 只用作 UART3。
添加完pinctrl子节点后,添加uart3节点,仍然是在topeet_emmc_4_3.dts文件中,在topeet_emmc_4_3.dts文件中已经默认存在了uart1和uart2两个节点了,如图 1.1所示:
因为没有用到uart2,并且uart2的引脚节点中用到了uart3的IO,所以需要将uart2注释或删掉。然后添加uart3节点,内容如下:
1 &uart3 {
2 pinctrl-names = "default";
3 pinctrl-0 = <&pinctrl_uart3>;
4 status = "okay";
5 };
添加完成后,重新编译设备树文件,然后使用新的设备树文件启动Linux系统。系统启动以后就会生成一个名为“/dev/ttymxc2”的设备文件,ttymxc2 就是 UART3 对应的设备文件,应用程序可以通过访问 ttymxc2 来实现对 UART3 的操作。