我正在使用 PC (Windows 10) 与运行 Ubuntu 16.04 LTS 的 Jetson 开发套件进行通信。 PC 有一个通过 UART 发送数据的 C 程序,Ubuntu 也应该使用 C 程序读取该数据。
我的问题是,在 PC 向其中写入一些原始字节后,我的 tty 文件 (/dev/ttyTHS2) 的内容应该是什么?写操作后内容是否被清除?它只是附加文件并移动光标吗? tty 文件在给定时刻可以存储的内容是否有上限,直到它被清除为止?
我在网上搜索时找不到答案,所以非常感谢您的帮助!
答案1
我以不同的顺序回答,这样我的答案更有意义。
[写入 tty] 是否只是附加文件并移动光标?
并不真地。 tty 不是块设备,而是特点设备。您将单个字节写入设备文件,最终导致 UART 激活并传输位。对多个字节重复该过程。
tty 文件在给定时刻可以存储的内容是否有上限,直到它被清除为止?
是的,有一个上限。缓冲区存在于硬件和软件中。如果写入 tty 的速度快于传输速度,则缓冲区会填满并写入操作块。我不知道确切的尺寸。我期望缓冲区大小为 1(一次只能写入一个字节)。
PC 写入一些原始字节后,我的 tty 文件 (/dev/ttyTHS2) 的内容应该是什么?
据我所知,ttys 默认情况下不回显。当从 tty 文件读取时,操作会阻塞,直到有一个字节被读取。已收到从外部。
tty 只知道字节。没有“原始”或“熟”字节。
写操作后内容是否被清除?
您通常不会从写入缓冲区中读取数据,因此这并不重要。
所有这些答案都假设一个已通过 IOCTL 配置的 tty。