Linux内核修改:将2440串口UART2(红外端口)更成普通串口驱动
前言:S3C2440芯片具有3个串口:UART0,1,2,我们下载的Linux-2.6.28.7对他们有很好的支持。默认驱动是:UART0,1是普通串口,但对UART2却用作了红外通讯(Irda),如果想把UART2作为普通串口用,需要修改UART2驱动代码,重新编译。具体细节不太了解,但一下方法经测试,可行。
1,环境
主机环境:VM+ubuntu11.4。
编译编译环境:arm-linux-gccv4.3.2。
开发板飞凌OK2440III,2Mnor flash,128Mnand flash。
linux版本:linux-2.6.28.7
2,修改步骤
(1)修改Linux-2.6.28.7/arch/arm/mach-s3c2440/mach-smdk2440.c。
定位到99行附近,找到smdk2440_uartcfgs[],如下红色代码为修改后的:
staticstruct s3c2410_uartcfg smdk2440_uartcfgs[] __initdata = {
[0]= {
.hwport = 0,
.flags = 0,
.ucon = 0x3c5,
.ulcon = 0x03,
.ufcon = 0x51,
},
[1]= {
.hwport = 1,
.flags = 0,
.ucon = 0x3c5,
.ulcon = 0x03,
.ufcon = 0x51,
},
/*IR port */
[2]= {
.hwport = 2,
.flags = 0,
.ucon = 0x3c5,
.ulcon = 0x03, //0x43,/* 把UART2改为普通串口*/
.ufcon = 0x51,
}
};
(2)修改linux-2.6.28.7/drivers/serial/samsung.c
添加头文件:
#include<linux/gpio.h>
#include<mach/regs-gpio.h>
然后再定位到435行左右,添加如下红色部分代码:
dbg("s3c24xx_serial_startupok\n");
/*the port reset code should have done the correct
* registersetup for the port controls */
//串口2对应的端口初始化
if(port->line == 2)
{
s3c2410_gpio_cfgpin(S3C2410_GPH6,S3C2410_GPH6_TXD2);
s3c2410_gpio_pullup(S3C2410_GPH6,1);
s3c2410_gpio_cfgpin(S3C2410_GPH7,S3C2410_GPH7_RXD2);
s3c2410_gpio_pullup(S3C2410_GPH7,1);
}
returnret;
err:
s3c24xx_serial_shutdown(port);
returnret;
}
(3)修改配置文件确认相应驱动被被编译进内核
Makemenuconfig
DivicesDrivers->
Characterdevices->
SerialDrivers->
<*>SansungSoC serial support
<*>Samsungs3c2410 serial port support
<*>SamsungS3C2440/S3C2442/S3c2416 serial port support
保存退出。
(4)重新编译内核,下载到板子上厕所。
3,说明
(1)代码中使用函数s3c2410_gpio_cfgpin()、s3c2410_gpio_pullup()需包含头文件linux/gpio.h。具体实现好像是在arch/arm/plat-s3c24xx/gpio.c,line 103。
(2)S3C2410_GPH6、S3C2410_GPH6_TXD2等宏定义在mach/regs-gpio.h。需要包含该文件。有的内核版本是S3C2410_GPH(6)、S3C2410_GPH(7)。可根据情况修改。
参考文献:
Linux-2.6.32.2内核在mini2440上的移植(十八)--将UART2更成普通串口驱动:
http://blog.csdn.net/fyyy4030/article/details/7243998
S3C2440UART2被配置为CTS问题解决:
http://www.linuxidc.com/Linux/2011-09/43690.htm
linux在TQ2440上移植6--完善串口驱动:
http://wenku.baidu.com/view/1b26fc0eba1aa8114431d9f3.html
linux3.18内核移植到GT2440成功---完善串口:
原文地址在本人百度空间:http://hi.baidu.com/zhimaguanmen/item/230ced0eeac136de72e67643