串行驱动程序和 tty 驱动程序之间的区别

问题描述

我还有一项任务是在 Zephyr 上为 uart 和 tty_uart 驱动程序编写串行驱动程序(这是我第一次开发驱动程序)。

1.那么串口驱动和tty驱动有什么区别?

  1. 它们之间有什么相互依赖的关系吗?我的意思是写一个 tty 驱动程序,我应该先写一个串行驱动程序,这将是 tty 驱动程序的基础还是什么?

解决方法

那么串行驱动程序和 tty 驱动程序之间有什么区别?

串行驱动程序不假设连接的设备类型,它只是发送和接收原始“字节”(见注释),并且可能提供某种方式来配置通信(波特率、多少数据位、什么什么样的奇偶校验方案,什么样的流量控制等)。连接到串行端口的设备可以是串行鼠标、条形码扫描仪、打印机,或者…… - 串行驱动程序不在乎。

注意:“byte”可能不是“octet”的同义词——例如它可以是一组 7 位。

TTY 驱动程序与设备是带键盘的打字机的假设相关联。 注意:对于历史;在计算机出现之前,我们从“人们互相挥舞旗帜”(信号量)到“一个键的摩尔斯电码”(电报)再到电传打印机/电传打字机(见https://en.wikipedia.org/wiki/Teleprinter);当计算机发明后,(机械/电动)电传打字机就被(计算机化的)哑终端取代了。

大部分; TTY 是关于字节的含义(并且不太关心字节是如何发送/接收的);串行驱动程序是关于如何发送/接收字节的(并且不关心字节的含义)。

它们之间有什么相互依赖的关系吗?我的意思是写一个 tty 驱动程序,我应该先写一个串行驱动程序,这将是 tty 驱动程序的基础还是什么?

粗暴地; TTY 驱动程序具有 4 个方向的 IO - 从本地键盘获取按键信息,向远程发送字节,从远程接收字节,以及将字符放在本地屏幕上。要使用“远程任意”发送/接收字节,您可以使用串行驱动程序;但是(尤其是在开发/测试期间)您可以使用其他任何东西(TCP/IP 流、管道、文件 IO 等)来代替 - 您不一定需要先实现串行驱动程序。

,

关于您的问题:

那么串口驱动和tty有什么区别 司机?
他们之间有什么相互依赖的关系吗?一世 意思是写一个 tty 驱动程序,我应该先写一个串行驱动程序, 这将是 tty 驱动程序的基础还是什么?

这完全取决于您的操作系统。

以前的答案主要与 Linux/Windows 相关。您没有提供更多关于它的观点,但我假设您的问题与 Zephyr RTOS 项目有关。我还假设您正在为 RTOS 尚未完全支持的定制板开发 BSP。

Zephyr 中的 device driver model 与 Linux 或 Window 的驱动程序模型不同。您可以查看 board porting guidearchitecture porting guide

文档包含一个 lot of samples,其中包括相当多的 driver samples

您还可以找到更多信息 here,包括如何从社区获得支持。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...