ttyS1 / uart1已初始化但无法通过/ dev / ttyS1访问

时间:2013-10-11 09:48:19

标签: linux linux-kernel embedded kernel davinci

如果对于这个问题这是错误的地方,我很抱歉,我目前还不确定问题的严重程度,所以我对我的赌注进行了对冲。

System是一个运行TI自己的SDK / LSP / BusyBox内核的LeopardBoard DM368。

默认情况下,系统启用一个UART,UART0,安装为/ dev / ttyS0,也可通过bootargs console=ttyS0,115200n8 earlyprintk使用/调用。

我们想要将UART1作为/ dev / ttyS1启用,所以我们已经完成了设置pinmux,时钟等的低级板初始化代码。

在启动时,低级init报告(通过我添加的printk)它启用了UART1,驱动程序代码也报告了快乐:

[    0.547812] serial8250.0: ttyS0 at MMIO 0x1c20000 (irq = 40) is a 16550A
[    0.569849] serial8250.0: ttyS1 at MMIO 0x1d06000 (irq = 41) is a 16550A

但是,端口没有(可靠地)出现在/ dev /中,并且它的状态(流量控制位)存在差异,我怀疑它可能导致它挂起/从不传输:

cat /proc/tty/driver/serial
serinfo:1.0 driver revision:
0: uart:16550A mmio:0x01C20000 irq:40 tx:97998 rx:0 CTS|DSR
1: uart:16550A mmio:0x01D06000 irq:41 tx:0 rx:0 DSR

如果我尝试从命令行修改它,我会收到错误:

>: stty -F /dev/ttyS1
stty: /dev/ttyS1: Inappropriate ioctl for device

奇怪的是,如果我将bootargs更改为console=ttyS1,115200n8 earlyprintk端口工作正常,并且ttyS0已正确初始化并且也能正常工作:

cat /proc/tty/driver/serial
serinfo:1.0 driver revision:
0: uart:16550A mmio:0x01C20000 irq:40 tx:0 rx:0 CTS|DSR
1: uart:16550A mmio:0x01D06000 irq:41 tx:11563 rx:0 RTS|DTR|DSR

现在,这没关系,但是我们的引导加载程序必须使用UART0,因此将所有控制台内容保留在ttyS0上并为我们的辅助通信设置ttyS1会很好。

编辑添加:我将一些printk插入到serial_core.c中似乎永远不会为ttyS1调用uart_open(),我假设它是Linux init / startup中的东西需要修改的序列?

我现在要说明我不是一个强大的Linux黑客,所以我完全有可能在内核代码,初始化序列等方面错过了一些明显/愚蠢的事情。

非常感谢任何想法!

1 个答案:

答案 0 :(得分:0)

Linux板上的一个好人解决了它,我需要在某处插入一个mknod /dev/ttyS1 c 4 65

很明显为什么ttyS0console我不知道这个(显然)发生了,但现在重要的是它有效

关于为什么欢迎我自己的知识/后代的原因的评论/进一步信息。