串口调速源码

串口调速源码

假设我们有一个/dev/ttyS0默认速度为 9600 bps 的串行设备。

比如说,我们使用 .NET 将其速度更改为 4800 bps cfsetospeed

现在,写入线路的速度必须变慢。

执行此操作的源代码在哪里?操作系统的哪一部分控制这个速度?自定义驱动程序,tty 驱动程序还是什么?以及如何通过设置时钟速度或延迟?

驱动里可能有,但我没找到。例如,谁能告诉我这个地方火箭港司机?

我也找不到终端 司机

答案1

串行端口速度通常由硬件本身处理,并由硬件驱动程序配置。

因此要遵循的链是TCSETSioctl 调用,它tty_set_termios()调用tty_ioctl.c.如果您遵循该链,那么在 RocketPort 驱动程序中它将调用rp_set_termios()它本身,调用configure_r_port().

这会对发送到 RocketPort 芯片的配置设置(例如除数设置)进行一些计算,最终调用sSetBaud(在 中定义rocket_int.h),它只是将字节输出到芯片。

因此,内核本身不会对串行线进行“位敲击”来确定波特率; UART 芯片为我们完成了所有这些艰苦的工作。我们只需要对芯片进行编程:-)

相关内容