答案1
串行端口速度通常由硬件本身处理,并由硬件驱动程序配置。
因此要遵循的链是TCSETS
ioctl 调用,它tty_set_termios()
调用tty_ioctl.c
.如果您遵循该链,那么在 RocketPort 驱动程序中它将调用rp_set_termios()
它本身,调用configure_r_port()
.
这会对发送到 RocketPort 芯片的配置设置(例如除数设置)进行一些计算,最终调用sSetBaud
(在 中定义rocket_int.h
),它只是将字节输出到芯片。
因此,内核本身不会对串行线进行“位敲击”来确定波特率; UART 芯片为我们完成了所有这些艰苦的工作。我们只需要对芯片进行编程:-)