[uart] Fix UART driver hangs

The UART driver would constantly hang in unpredictable spots. Turns out
it could get into a situation where it was stuck in a loop unable to
read more from the receive channel, and/or write to the serial port
buffer. Now we use a ring buffer to read as much as possible from the
receive channel, write as much as possible to the serial port buffer,
and move on without looping.
This commit is contained in:
Justin C. Miller
2024-03-04 19:48:16 -08:00
parent 9f54927a82
commit 40130076b2
5 changed files with 112 additions and 16 deletions

View File

@@ -13,6 +13,7 @@ j6 = module("j6",
"protocol_ids.cpp",
"protocols/service_locator.cpp",
"protocols/vfs.cpp",
"ring_buffer.cpp",
"syscalls.s.cog",
"sysconf.cpp.cog",
"syslog.cpp",
@@ -29,6 +30,7 @@ j6 = module("j6",
"j6/protocols.h",
"j6/protocols/service_locator.h",
"j6/protocols/service_locator.hh",
"j6/ring_buffer.hh",
"j6/syscalls.h.cog",
"j6/sysconf.h.cog",
"j6/syslog.hh",