Linux内核修改:将2440串口UART2(红外端口)更成普通串口驱动

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

开发板飞凌OK2440III2Mnor flash128Mnand 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

2S3C2410_GPH6S3C2410_GPH6_TXD2等宏定义在mach/regs-gpio.h。需要包含该文件。有的内核版本是S3C2410_GPH6)、S3C2410_GPH7)。可根据情况修改。


参考文献:

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

linuxTQ2440上移植6--完善串口驱动:

http://wenku.baidu.com/view/1b26fc0eba1aa8114431d9f3.html

linux3.18内核移植到GT2440成功---完善串口:


原文地址在本人百度空间:http://hi.baidu.com/zhimaguanmen/item/230ced0eeac136de72e67643

你可能感兴趣的:(linux,kernel,内核,s3c2410,UART)