Linux内核修改:将2440串口UART2(红外端口)更成普通串口驱动
2013-05-25 11:45
411 查看
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
前言: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
相关文章推荐
- JZ2440移植Linux3.4.2之将UART2更成普通串口驱动
- S3C2440 Linux UART 串口驱动-----1
- Linux-2.6.32.2内核在mini2440上的移植(十八)---将UART2更成普通串口驱动
- Linux-2.6.32.2内核在mini2440上的移植(十八)---将UART2更成普通串口驱动
- TQ2440中如何把串口0由调试串口修改为普通串口?
- 2440开发板将串口2的修改为普通串口
- fl2440——修改UART2作为正常串口
- linux2.6.32.2内核把mini2440的UART2改为普通的串口驱动
- Linux-2.6.32.2内核在mini2440上的移植(十八)---将UART2更成普通串口驱动
- 修改s3c440普通串口驱动为485驱动
- 【引用】Linux-2.6.32.2内核在mini2440上的移植(十八)---将UART2更成普通串口驱动
- Zigbee网关 Zstack增加串口功能1-修改底层驱动MT/MT_UART.c
- 工业级wifi模块。普通单片机可以驱动。SPI UART SDIO接口。内置协议,天线。
- 在串口下添加set和get命令(修改Linux内核代码)
- 2440 外部串口驱动调试(作者:wogoyixikexie@gliet)
- 【linux内核学习】怎么找到要修改的驱动源码
- S3C2440 UART串口驱动
- STM32F4XX串口高效驱动篇1-UART
- TQ2440裸奔程序:串口UART的PC机按键测试程序
- ARM-Linux S5PV210 UART驱动(5)----串口的open操作(tty_open、uart_open)