這幾天,突然發現移植好的s3c2410的串口2在linux系統下竟然不能用,趕緊查了很多資料,發現,若要在linux系統下是用s3c23410的串口2 ,需要修改核心,把s3c2410的串口2配置成普通的串口。
1.修改arch/arm/mach-s3c2440/mach-smdk2440.c中的uart2的配置,修改後如下: static struct s3c2410_uartcfg smdk2410_uartcfgs[] __initdata = {
[0] = {
.hwport = 0,
.flags = 0,
.ucon = UCON,
.ulcon = ULCON,
.ufcon = UFCON,
},
[1] = {
.hwport = 1,
.flags = 0,
.ucon = UCON,
.ulcon = ULCON,
.ufcon = UFCON,
},
/* IR port */
[2] = {
.hwport = 2,
.flags = 0,
.ucon = 0x3c5,
.ulcon = 0x03, .ufcon = 0x51,
}
2. 在drivers/serial/samsung.c中添加對uart2控制器的配置,配置為普通串口。 添加標頭檔:#include <linux/gpio.h>
#include <mach/regs-gpio.h> 在static int s3c24xx_serial_startup(struct uart_port *port)函數中,添加 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);
} 3.編譯核心,下載進板子後,進行測試,串口2終於可以正常工作了。 參考:http://bbs.witech.com.cn/archiver/?tid-468-page-1.html開貼詳述linux-2.6.33核心的移植