Only indirectly related, but it's mildly amusing to see UART backpressure addressed when most serial ports these days are wired up without CTS/RTS, and no XON/XOFF either.
(I break out CTS&RTS whenever I can, & so should everybody else. You don't have to use it. Just route it to wherever the serial ports goes.)
A lot of small setups don’t wire CTS/RTS these days, so I wanted to explore a software-side approach as well.
But I agree, proper flow control is still very important.
I have been porting an existing pub-sub to Rust (no_std) that runs over serial UART. The published serial protocol is very similar as this one: COBS encoding with CRC32 checksum not CRC16. These docs have a great reference on backpressure for any micro and will be helpful.
Only indirectly related, but it's mildly amusing to see UART backpressure addressed when most serial ports these days are wired up without CTS/RTS, and no XON/XOFF either.
(I break out CTS&RTS whenever I can, & so should everybody else. You don't have to use it. Just route it to wherever the serial ports goes.)
Good point.
A lot of small setups don’t wire CTS/RTS these days, so I wanted to explore a software-side approach as well. But I agree, proper flow control is still very important.
I have been porting an existing pub-sub to Rust (no_std) that runs over serial UART. The published serial protocol is very similar as this one: COBS encoding with CRC32 checksum not CRC16. These docs have a great reference on backpressure for any micro and will be helpful.
Thanks for sharing this, that sounds really interesting.
COBS with CRC32 over UART is very close to the kind of problems I’ve been thinking about too. Glad the docs were helpful!
Thanks for sharing this and for the thoughtful summary. Really glad you found the docs and ideas useful!