您的位置:首页 > 其它

2440开发板将串口2的修改为普通串口

2017-04-08 14:59 225 查看
开发环境:

主机环境:VMare下CentOS 5.5

linux版本:linux-3.0-rc4

1.背景

Linux内核默认把UART2的功能设置为红外通讯(Irda),没有作为正常串口使用,如果我们想要将UART2作为串口,此时,串口2是无法收发数据的,因此需要做相应的修改。

其寄存器部分寄存器的说明如下:



2.修改平台配置文件

2.1 修改mach-smdk2440.c

打开arch/arm/mach-s3c2440/mach-smdk2440.c(注意不同的平台mach-smdk2440.c文件有可能有略微的区别)

修改代码如下:

static struct 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       = 0x43,
.ulcon       = 0x03,
.ufcon       = 0x51,
}
};

2.2 修改samsung.c

打开drivers/tty/serial/samsung.c文件(不同内核版本可能文件位置略有不同)。

加上如下代码:

if (port->line == 2) {
s3c2410_gpio_cfgpin(S3C2410_GPH(6), S3C2410_GPH6_TXD2);
s3c2410_gpio_pullup(S3C2410_GPH(6), 1);
s3c2410_gpio_cfgpin(S3C2410_GPH(7), S3C2410_GPH7_RXD2);
s3c2410_gpio_pullup(S3C2410_GPH(7), 1);
}




S3C2410_GPH(6),S3C2410_GPH(7)等宏定义在mach/regs-gpio.h。需要包含该文件。有的内核版本是S3C2410_GPH6,S3C2410_GPH7,应根据具体情况修改。

加上头文件:

#include<linux/gpio.h>
#include<mach/regs-gpio.h>

3.修改配置文件

确认相应驱动被被编译进内核makemenuconfig

DivicesDrivers->Characterdevices->SerialDrivers->选中

<*>SansungSoC serial support

<*>Samsungs3c2410 serial port support

<*>SamsungS3C2440/S3C2442/S3c2416 serial port support



保存退出,重新编译内核,下载到开发板。

4.测试

运行测试程序后,有以下警告。好像是回溯信息,折腾了好久,没有去掉,就放着了。



参考文献:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: