QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 8035|回复: 2

嵌入式串口ttyS1的问题

[复制链接]
发表于 2014-9-22 23:39:24 | 显示全部楼层 |阅读模式
又遇到问题了,求分析,求意见……
问题是这样的:
开发板上有两个串口,有一个作为调试口使用,另一个以前没用,现在要用。
/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 编辑 ]
 楼主| 发表于 2014-9-23 09:44:28 | 显示全部楼层
今天检查了一下,内核配置的时候是配的最多两个串口,使用两个串口:
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,那个引脚都是高电平
回复

使用道具 举报

 楼主| 发表于 2014-9-23 14:09:48 | 显示全部楼层
问题解决了,是uart1的地址不对,改对了就好了。
参考资料: http://e2e.ti.com/support/embedded/linux/f/354/t/71226.aspx
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-11-21 16:58 , Processed in 0.039804 second(s), 16 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表