UART子系统(四) TTY驱动程序框架

TTY驱动程序框架

参考资料

1. 行规程的引入

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pLG0l7bP-1650964172541)(pic/09_UART/10_tty_drivers.png)]

以下文字引用自参考资料解密TTY

大多数用户都会在输入时犯错,所以退格键会很有用。这当然可以由应用程序本身来实现,但是根据UNIX设计“哲学”,应用程序应尽可能保持简单。为了方便起见,操作系统提供了一个编辑缓冲区和一些基本的编辑命令(退格,清除单个单词,清除行,重新打印)这些命令在行规范(line discipline)内默认启用高级应用程序可以通过将行规范设置为原始模式(raw mode)而不是默认的成熟或准则模式(cooked and canonical)来禁用这些功能。大多数交互程序(编辑器,邮件客户端,shell,及所有依赖curses或readline的程序)均以原始模式运行,并自行处理所有的行编辑命令。行规范还包含字符回显和回车换行(译者注:\r\n和 \n)间自动转换的选项。如果你喜欢,可以把它看作是一个原始的内核级sed(1)

另外,内核提供了几种不同的行规范。一次只能将其中一个连接到给定的串行设备。行规范的默认规则称为N_TTYdrivers/char/n_tty.c,如果你想继续探索的话)。其他的规则被用于其他目的,例如管理数据包交换(pppIrDA,串行鼠标),但这不在本文的讨论范围之内。

2. TTY驱动程序框架

TTY驱动框架如下图所示,并引用一个例子去讲解驱动

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KV6TNzpF-1650964172543)(pic/09_UART/11_tty_driver_level.png)]

2.1 举一个例子 键盘输入和显示是如何协同的(回显)

观察上面的驱动框架,分三层,分别是应用层,内核驱动层,以及物理层

在这里插入图片描述

注意绿色的两个框里面,我为什么这么画,其实1为了更清晰。整个回显的过程只应用到了下面这些。

在这里插入图片描述

keyborad 输入“l”,通过串口发送给驱动,驱动发送给line,在line中的buffer储存起来。然后通过line返回驱动在返回给终端。

在这里插入图片描述

最后输入enter,就是把buffer中的命令传给app执行,然后app将得到的命令结果返回给行规程。行规程在返回给驱动,再返回给终端
应用程序通过open/read/write等标准接口访问硬件。引入行规程之后还要设置行规程,通过/ioctl或者其他封装好的函数去设置行规程。如下图:

在这里插入图片描述

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值