初探,tty console uart的三角关系

 

 


从上面三图看出,tty是tty,console是tty的朋友(console通过函数指针指向tty),是不是该叫友元呢?,uart是tty与console的组合,有点类似于从tty类与console类继承而来吧。

于是最纯粹的事tty,最复杂的事uart。

在我这边的环境下,写串口应用程序的第一件事是open  /dev/ttySAC0

我想在源码中找到ttySAC0,却只找到了ttySAC.

我用的是s3c2440板,

里面有

#define S3C24XX_SERIAL_NAME    "ttySAC"

#define S3C24XX_SERIAL_MAJOR  204

#define S3C24XX_SERIAL_MINOR  64

 

static struct uart_driver s3c24xx_uart_drv= {

         .owner               = THIS_MODULE,

         .dev_name       = "ttySAC",

         .nr             = CONFIG_SERIAL_SAMSUNG_UARTS,

         .cons                  = S3C24XX_SERIAL_CONSOLE,

         .driver_name   = S3C24XX_SERIAL_NAME,

         .major                = S3C24XX_SERIAL_MAJOR,

         .minor                = S3C24XX_SERIAL_MINOR,

};


用ls  -l /dev/下显示如上,不懂从ttySAC到ttySAC0、1、2到底发生了什么,仿佛这就是世间最遥远的距离。

倒着推,module_init(s3c24xx_serial_modinit);是一个源头,调用了uart_register_driver(&s3c24xx_uart_drv);  这个函数里有 tty_set_operations(normal,&uart_ops);并且调用retval = tty_register_driver(normal);这个函数里有个循环

for (i = 0; i < driver->num; i++)

                       tty_register_device(driver, i, NULL);

这让我感觉到快接近012是怎么出来的了。在  tty_register_device(driver,i, NULL);

里调用了dev_t dev = MKDEV(driver->major, driver->minor_start) + index;如果这里minor_start=64那么就不难理解65,66是怎么出来的了。

CONFIG_SERIAL_SAMSUNG_UARTS=3在linux源码树下的config配置里被定义,也开在makemenuconfig中定义

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

豆腐白菜

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值