RTS/CTS flow control und was der serielle Treiber dafür hält

Flow control, das war doch diese ganz einfache Sache, wo RTS und CTS gekreuzt sind, und jeder mit RTS signalisiert, wenn er Zeichen annehmen kann, und sein Partner das über CTS sieht, richtig?

Nichts ist einfach, nie. Das war mal so, als UARTs noch keine FIFOs hatten, zu Zeiten des 8250 und des 16450. Hat gut funktioniert.

Dann kam der 16550 und der Pinguin liebt die FIFOs. Der Drecksgeier macht sich keine Gedanken, was mit flow control passiert, wozu auch? Gibt’s da draußen noch was Anderes außer PCs?

Also prüft er CTS, bevor er Zeichen in den FIFO schiebt. Wenn das Gegenüber dann RTS setzt: Was soll’s, der FIFO leert sich weiter. Sicher, wenn der UART nicht hirntot wäre, könnte er selbst mit RTS und CTS spielen. Ist er aber, also wäre es des Pinguins verdammte Pflicht, den Sende-FIFO nicht per Default zu aktivieren, sondern nur, wenn der Admin es ihm mitteilt, weil er weiß, dass die Gegenseite es abkann, wenn RTS erst 16 Zeichen später wirkt.

Da läßt das Vieh aber einen drauf und erlaubt nicht mal, den FIFO abzuschalten.

Hör mal zu, Du Federvieh: Wegen Dir hat ein kleiner single board computer jetzt einen 16550 bekommen müssen und die 16450 Chips kann ich wegwerfen. Aber man sieht sich immer zweimal im Leben…

Leave a Reply

WordPress Appliance - Powered by TurnKey Linux