I.MX6Q(TQIMX6Q/TQE9)学习笔记——新版BSP之UART移植

我们在内核启动时候已经配置系统了UART,但是tqimx6q这块开发板上引出了imx6q的5路TTL接口,其中,uart1和uart2转成232接口,本文将配置这5路Uart接口。

DTS配置

由于内核中已经有imx6q的uart控制器驱动,因此,我们只需要配置各端口的pinctrl即可。根据tqimx6q的原理图,我们对我们的DTS作如下修改:

...

&uart1 {
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_uart1_2>;
	status = "okay";
};

&uart2 {
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_uart2_3>;
	status = "okay";
};

&uart3 {
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_uart3_2>;
	status = "okay";
};

&uart4 {
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_uart4_1>;
	status = "okay";
};

&uart5 {
	pintctrl-names = "default";
	pinctrl-0 = <&pinctrl_uart5_1>;
	status = "okay";
};

...

&iomuxc {
	pinctrl-names = "default";

	uart1 {
		pinctrl_uart1_2: uart1grp-2 {
			fsl,pins = <
				MX6QDL_PAD_SD3_DAT7__UART1_TX_DATA 0x1b0b1
				MX6QDL_PAD_SD3_DAT6__UART1_RX_DATA 0x1b0b1
				MX6QDL_PAD_EIM_D20__UART1_RTS_B 0x1b0b1
				MX6QDL_PAD_EIM_D19__UART1_CTS_B 0x1b0b1
			>;
		};
	};

	uart2 {
		pinctrl_uart2_3: uart2grp-3 {
			fsl,pins = <
				MX6QDL_PAD_EIM_D26__UART2_TX_DATA   0x1b0b1
				MX6QDL_PAD_EIM_D27__UART2_RX_DATA   0x1b0b1
				MX6QDL_PAD_EIM_D28__UART2_CTS_B 0x1b0b1
				MX6QDL_PAD_EIM_D29__UART2_RTS_B 0x1b0b1
			>;
		};
	};

	uart3 {
		pinctrl_uart3_2: uart3grp-2 {
			fsl,pins = <
				MX6QDL_PAD_EIM_D24__UART3_TX_DATA 0x1b0b1
				MX6QDL_PAD_EIM_D25__UART3_RX_DATA 0x1b0b1
			>;
		};
	};

	uart5 {
		pinctrl_uart5_1: uart5grp-1 {
			fsl,pins = <
				MX6QDL_PAD_KEY_COL1__UART5_TX_DATA 0x1b0b1
				MX6QDL_PAD_KEY_ROW1__UART5_RX_DATA 0x1b0b1
			>;
		};
	};
};

修改之后重新编译并烧写DTB,新的DTB可以正常启动内核。

测试方法

测试串口的方式有很多,可以编写专门的测试程序来测试,这方面的资料网上可以找到很多,我这里就不举例了。本文使用了偷懒的方式,在uboot中将bootargs临时修改为如下内容:

setenv bootargs 'noinitrd console=ttymxc1,115200 root=/dev/mmcblk0p1 rw rootfstype=ext4 init=/linuxrc'

然后执行boot指令,这时,连接到uart2的串口终端就可以看到内核的启动log了,当然也可以正常的进入linux控制台。其它三个串口都是TTL方式的,我手头上没有这种电平转换模块,就不测试了。

至此,tqimx6q的全部串口都移植好了。有任何疑问可以留言讨论。

本文作者:girlkoo

本文链接:http://blog.csdn.net/girlkoo/article/details/45608249

时间: 2024-10-23 19:35:17

I.MX6Q(TQIMX6Q/TQE9)学习笔记——新版BSP之UART移植的相关文章

I.MX6Q(TQIMX6Q/TQE9)学习笔记——新版BSP之kernel移植

前篇文章已经在tqimx6q上成功跑起了新版BSP的uboot,本文来配置下新版BSP的kernel,使kernel能在tqimx6q上正常启动. 准备工作 每次移植kernel的时候都会做的工作就是找到与当前开发板接近的config,其实uboot移植的时候也是一样的.由于tqimx6q的芯片是imx6q的,所以,还是以mx6q_sabresd为例.另外,自己动手移植BSP时应该充分使用官方文档,本人以为,以下文档是非常有用的: (1) i.MX 6 BSP Porting Guide: 该文

I.MX6Q(TQIMX6Q/TQE9)学习笔记——新版BSP之u-boot移植

前段时间就开始学习I.MX6Q了,但是最近工作实在是忙,间断了一些时间了.为了提高移植效率,还是考虑移植Freescale维护的3.10版本的内核. 源码获取 Freescale维护的3.10的内核是使用git管理的,但是直接使用git下载代码会比较慢,下面是我下载好的uboot和kernel: I.MX6Q BSP源码(Freescale官方维护) 代码下载好后,先将u-boot解压到工作目录,然后在终端下切换到uboot根目录.由于这个版本的bsp是使用git管理的,因此,需要切换到指定分支

I.MX6Q(TQIMX6Q/TQE9)学习笔记——新版BSP之LCD移植

经过前面的移植,eMMC已经可以在tqimx6q上正常运行了,本文将来移植LCD驱动. DTS编写 imx6的LCD控制器与之前的芯片略有不同,详细的信息可以阅读芯片手册.参考sabrelite开发板的DTS,我们可以添加如下内容: / { ... aliases { mxcfb0 = &mxcfb1; }; ... regulators { ... reg_mipi_dsi_pwr_on: mipi_dsi_pwr_on { compatible = "regulator-fixed&

I.MX6Q(TQIMX6Q/TQE9)学习笔记——新版BSP之CAN移植

经过前面的移植,tqimx6q已经完美支持网卡,现在,我们来移植CAN.其实这里所谓的移植,仅仅是配置DTS,使内核能够检测到CAN设备,CAN驱动本身是freescale维护的.下面开始CAN的移植. DTS编写 参考imx6q其它的DTS编写方式,我们可以如下编写DTS文件: ... &flexcan1 { pinctrl-names = "default"; pinctrl-0 = <&pinctrl_flexcan1_3>; status = &qu

I.MX6Q(TQIMX6Q/TQE9)学习笔记——新版BSP之eMMC移植

前一篇文章已经移植好CAN,本文来移植eMMC.eMMC的移植一般来讲比较简单,因为MMC驱动是由官方维护的,一般来讲,不会有什么问题,对我们来说,只需要正确的配置各个pin脚的复用关系,这种情况也是DTS最擅长的.下面我们开始eMMC移植. DTS编写 参考sabresd的DTS,我们可以如下编写DTS: &usdhc4 { pinctrl-names = "default"; pinctrl-0 = <&pinctrl_usdhc4_1>; bus-wi

I.MX6Q(TQIMX6Q/TQE9)学习笔记——新版BSP之根文件系统挂载

经过前面的移植,新版BSP的uboot和kernel已经能够在tqimx6q开发板上运行了,接下来我们来挂载文件系统. DTB整理 前面的文章中提到,新版BSP的DTB管理感觉不是太好,在之前移植的BSP上我发现即便有根文件系统,内核也会挂掉,由于原来的DTS文件中配置内容太多,不好确定问题的源头,本文对DTS进行了整理,整理后只需要一个DTS文件,其内容如下: /* * Copyright 2012 Freescale Semiconductor, Inc. * Copyright 2011

I.MX6Q(TQIMX6Q/TQE9)学习笔记——新版BSP之声卡驱动移植

经过前面的移植,tqimx6q已经可以正常驱动触摸屏了,本文我们来移植声卡驱动. DTS编写 由于tqimx6q搭载的声卡是sgtl5000芯片,因此,参考dts目录下其它开发板的相应信息,我们可以在DTS中添加如下内容: / { ... regulators { ... reg_3p3v: 3p3v { compatible = "regulator-fixed"; regulator-name = "3P3V"; regulator-min-microvolt

I.MX6Q(TQIMX6Q/TQE9)学习笔记——新版BSP之USB HOST移植

USB HOST驱动一般都是由芯片厂商维护的,因此,我们仍然只需要配置下DTS即可完成USB HOST驱动的移植. DTS配置 参考sabresd相关的DTS,在我们的DTS中添加如下内容: / { ... regulators { compatible = "simple-bus"; reg_usb_otg_vbus: usb_otg_vbus { compatible = "regulator-fixed"; regulator-name = "usb

I.MX6Q(TQIMX6Q/TQE9)学习笔记——新版BSP之触摸屏驱动移植

之所以说是驱动移植是因为之前已经在TQ210.AM335x两个平台上移植过了,因此,仅需要少量修改就可以将驱动移植到imx6q.下面开始触摸驱动移植. DTS编写 参考其它DTS的i2c设备写法,我们可以添加如下内容: &i2c1 { clock-frequency = <100000>; pinctrl-names = "default"; pinctrl-0 = <&pinctrl_i2c1_2>; status = "okay&q