打印

嵌入式串口ttyS1的问题

嵌入式串口ttyS1的问题

又遇到问题了,求分析,求意见……
问题是这样的:
开发板上有两个串口,有一个作为调试口使用,另一个以前没用,现在要用。
/dev/ttyS0就是调试口,可以使用
/dev/ttyS1是剩下的那个串口,这个以前是可以使用的。但我把UBL、UBOOT和内核都重烧了一次,现在/dev/ttyS1虽然能够打开,但用tcgetattr()读取串口的属性的时候却总是返回错误


因为我在网上找到一个贴子,也是说用tcgetattr()无法读取/dev/ttyS1的属性,他说他找到原因了,是这样的:
The problem was that my BIOS was not aware of my serial ports, I just enabled them.
PS:不是说Linux的中断全部是自己重写的,根本不使用BIOS中断么?那跟BIOS是否识别串口有啥关系?

所以,我的分析是:
/dev/ttyS1之所以能够打开,是因为使用的以前的文件系统,而这个文件系统里/dev/ttyS1这个文件还存在,但未跟实际硬件匹配起来,所以导致读取串口属性失败

目前的问题:
1、上面我的分析是不是有道理?
2、如果要让linux能够使用ttyS1,那要怎么做?是要让开发板从UBL起就支持uart1,然后再让UBOOT支持uart1,最后让linux支持ttyS1?还是不管UBL和UBOOT是否支持uart1,只要让linux支持ttyS1就行了?
3、要让linux支持ttyS1,只需要在配置内核时选择某几项配置吗?还是要改源码?

PS:开发板的启动过程是RBL->UBL->UBOOT->Linux,RBL是开发商烧到芯片里的,没办法改


希望哪位大大能够给点提示,谢谢!

[ 本帖最后由 zz_6_3 于 2014-9-22 23:43 编辑 ]

TOP

今天检查了一下,内核配置的时候是配的最多两个串口,使用两个串口:
Device Driver
        --> Character devices
                --> Serial Drivers
                        --> [2] Maximum number of 8250/16550 serial ports
                        --> [2] Number of 8250/16550 serial ports to register at runtime
但问题还是一样。我将ttyS1的Tx脚用GPIO控制,设置成GPIO输出,但不管我控制输出0还是1,那个引脚都是高电平

TOP

问题解决了,是uart1的地址不对,改对了就好了。
参考资料: http://e2e.ti.com/support/embedded/linux/f/354/t/71226.aspx

TOP