关于tty和console的疑问
昨天在驱动程序板块发的,没人理,到这来碰碰运气哈
最近看了一阵子串口驱动,是基于mini2440的,想问一下内核中的console和tty的区别在哪里?
tty核心注册了一个cdev设备,而uart_port结构里面还有一个console类型的指针。
这两个东西应该都是向串口输出字符用的,那有什么不同呢?
我的理解是:console为内核的printk函数输出服务,tty对应的cdev是为用户空间的进程输出服务的。这样说对不对呢?
另外,我最近看串口这块的驱动都一个多月了,才勉强对其框架有个了解,感觉读代码很费劲啊,碰到很多问题:
1. 驱动中往往涉及一些flag变量,这些变量每个bit位会对应一些设置或者功能什么的,但你在设置flag的代码本身这里是看不懂他是做什么用的,内核的其他地方会根据flag的设置完成不同的功能,感觉碰上这种flag的用法,很难追踪代码,理解其实际用法也很难;
2. 我是用source insight看代码的,有些时候一些汇编实现的常量source insight识别不到,无法定位到该常量的定义位置;
3. 感觉自己读代码没有什么章法,脑子里很乱的感觉;
各位有什么好的方法或者建议吗?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
console关键就是设置显存地址的寄存器吧。
读模块,先从module_init()的函数开始看。一般都分三个层次。《Linux内核精通之道》不错。还有宋宝华的驱动书也不错。推荐!
回复 2# omycle
能说详细点吗?具体console和tty的关系式怎么样的?
另外,你说的那本书貌似没有啊,china-pub上都找不到。
就是这本书。
http://book.douban.com/subject/4895627/
console是tty的一部分吧。