admin管理员组

文章数量:1530518

2024年4月28日发(作者:)

1、s3c2440有3个串口,其中串口2在linux-2.6.35.3里作了红外模式,我们

要把它改为普通的串口用。

2、在smdk2440平台第100行修改线控制寄存器 ULCONn

vi arch/arm/mach-s3c2440/mach-smdk2440.c

/* IR port */

[2] = {

.hwport = 2,

.flags = 0,

.ucon = 0x3c5,

.ulcon = 0x03,

.ufcon = 0x51,

}

3、增加UART2 收发引脚功能

vi drivers/serial/samsung.c

dbg("s3c24xx_serial_startup okn");

/* the port reset code should have done the correct

* register setup for the port controls */

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);

}

a. 上面的函数fg , pull都定义在

arch/arm/mach-s3c2410/include/mach/gpio-fns.h中

所以要在drivers/serial/samsung.c 中添加头文件 #include

b. S3C2410_GPH6, 7 也需要自己定义在

arch/arm/mach-s3c2410/include/mach/gpio-nrs.h中

#define S3C2410_GPH6 S3C2410_GPH(6)

#define S3C2410_GPH7 S3C2410_GPH(7)

同样也要在drivers/serial/samsung.c 中添加头文件 #include

c. S3C2410_GPH6_TXD2

S3C2410_GPH7_RXD2定义在

arch/arm/mach-s3c2410/include/mach/regs-gpio.h

同样也要在drivers/serial/samsung.c 中添加头文件 #include

4、下面还有一个重要的数据结构

第889行

static struct uart_driver s3c24xx_uart_drv = {

.owner = THIS_MODULE,

.dev_name = "s3c2410_serial", //这个是串口设备的名称,必须和文件系

统的inittab里控制台的名称相对应

.nr = CONFIG_SERIAL_SAMSUNG_UARTS,

.cons = S3C24XX_SERIAL_CONSOLE,

.driver_name = S3C24XX_SERIAL_NAME,

.major = S3C24XX_SERIAL_MAJOR,

.minor = S3C24XX_SERIAL_MINOR,

};

5、make menuconfig

Ddvices Drivers --->

Character devices --->

Serial Drivers --->

1、s3c2440有3个串口,其中串口2在linux-2.6.35.3里作了红外模式,我们

要把它改为普通的串口用。

2、在smdk2440平台第100行修改线控制寄存器 ULCONn

vi arch/arm/mach-s3c2440/mach-smdk2440.c

/* IR port */

[2] = {

.hwport = 2,

.flags = 0,

.ucon = 0x3c5,

.ulcon = 0x03,

.ufcon = 0x51,

}

3、增加UART2 收发引脚功能

vi drivers/serial/samsung.c

dbg("s3c24xx_serial_startup okn");

/* the port reset code should have done the correct

* register setup for the port controls */

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);

}

a. 上面的函数fg , pull都定义在

arch/arm/mach-s3c2410/include/mach/gpio-fns.h中

所以要在drivers/serial/samsung.c 中添加头文件 #include

b. S3C2410_GPH6, 7 也需要自己定义在

arch/arm/mach-s3c2410/include/mach/gpio-nrs.h中

#define S3C2410_GPH6 S3C2410_GPH(6)

#define S3C2410_GPH7 S3C2410_GPH(7)

同样也要在drivers/serial/samsung.c 中添加头文件 #include

c. S3C2410_GPH6_TXD2

S3C2410_GPH7_RXD2定义在

arch/arm/mach-s3c2410/include/mach/regs-gpio.h

同样也要在drivers/serial/samsung.c 中添加头文件 #include

4、下面还有一个重要的数据结构

第889行

static struct uart_driver s3c24xx_uart_drv = {

.owner = THIS_MODULE,

.dev_name = "s3c2410_serial", //这个是串口设备的名称,必须和文件系

统的inittab里控制台的名称相对应

.nr = CONFIG_SERIAL_SAMSUNG_UARTS,

.cons = S3C24XX_SERIAL_CONSOLE,

.driver_name = S3C24XX_SERIAL_NAME,

.major = S3C24XX_SERIAL_MAJOR,

.minor = S3C24XX_SERIAL_MINOR,

};

5、make menuconfig

Ddvices Drivers --->

Character devices --->

Serial Drivers --->

本文标签: 串口名称修改完善收发