如何打开8250串口驱动的COM2端口
现在COM1端口是工作的,但是COM2端口始终跟我的PC连接通讯不了。之前设备platform_device结构体的声明如下(只打开了COM1):
static struct plat_serial8250_port T8250_serial_ports[] = {
{
.membase = (void *)__iomem(IO_ADDRESS(ZEVIO_UART_1_BASE)),
.mapbase = (unsigned long)ZEVIO_UART_1_BASE,
.irq = IRQ_UART1,
.uartclk = ZEVIO_UART_CLK,
.regshift = 2,
.iotype = UPIO_MEM,
.flags = UPF_BOOT_AUTOCONF | UPF_SKIP_TEST | UPF_IOREMAP,
},
{}
};
static struct platform_device zevio_serial_device = {
.name = "serial8250",
.id = PLAT8250_DEV_PLATFORM,
.dev.platform_data = T8250_serial_ports,
};
现在我把COM2打开,修改配置如下:
static struct plat_serial8250_port T8250_serial_ports[] = {
{
.membase = (void *)__iomem(IO_ADDRESS(ZEVIO_UART_1_BASE)),
.mapbase = (unsigned long)ZEVIO_UART_1_BASE,
.irq = IRQ_UART1,
.uartclk = ZEVIO_UART_CLK,
.regshift = 2,
.iotype = UPIO_MEM,
.flags = UPF_BOOT_AUTOCONF | UPF_SKIP_TEST | UPF_IOREMAP,
},
{
.membase = (void *)__iomem(IO_ADDRESS(ZEVIO_UART_2_BASE)),
.mapbase = (unsigned long)ZEVIO_UART_2_BASE,
.irq = IRQ_UART1,
.uartclk = ZEVIO_UART_CLK,
.regshift = 2,
.iotype = UPIO_MEM,
.flags = UPF_BOOT_AUTOCONF | UPF_SKIP_TEST | UPF_IOREMAP,
},
{}
};
可是问题还是没有解决,之前stty /dev/ttyS1会报错,修改之后正确,但是跟PC依然无法通讯,还需要修改别的配置么?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
第二个IRQ_UART1应该改为IRQ_UART2吧
嗯,这也是个问题,不过中断只对收数据有效,发数据应该不受影响,我现在正在测试发送数据,PC端不能收到我发送的数据
你多注册了一个设备, uart driver是否自动对它初始化了?
应该是初始化了吧,我现在读写/dev/ttyS1,能发现serial8250_startup, serial8250_start_tx都被调用了,只是PC收不到相应的数据
[ 本帖最后由 soararing 于 2009-4-29 10:58 编辑 ]
一般会在driver加载的时候, probe过程中初始化设备.