UART driver progression #1

Open
opened 2021-05-05 08:38:32 +12:00 by mikedilger · 0 comments
mikedilger commented 2021-05-05 08:38:32 +12:00 (Migrated from github.com)

UART drivers for the 16550 and sifive UART variants will be released in stages with progressive functionality and correctness as follows:

  • Stage 0: Extremely crude code for kdebug, not even waiting for the write buffer to be ready. Works only in QEMU.
  • Stage 1: read/write with proper waiting for it to be ready via spinlocks.
  • Stage 2: Complete functionality, but sans interrupt handling. This needs clocking done first, since setting UART baud rate needs clock information.
  • Stage 3: Interrupts: Once we start handling interrupts, the UART drivers will change again, dropping the spin loops in favor of interrupt handlers.
  • Stage 4: Move out of the kernel: Once our microkernel handles processes (after message passing, after capabilities, after a lot of other stuff), the UART code will move to a driver outside of the microkernel.
UART drivers for the 16550 and sifive UART variants will be released in stages with progressive functionality and correctness as follows: - [x] Stage 0: Extremely crude code for kdebug, not even waiting for the write buffer to be ready. Works only in QEMU. - [x] Stage 1: read/write with proper waiting for it to be ready via spinlocks. - [ ] Stage 2: Complete functionality, but sans interrupt handling. This needs clocking done first, since setting UART baud rate needs clock information. - [ ] Stage 3: Interrupts: Once we start handling interrupts, the UART drivers will change again, dropping the spin loops in favor of interrupt handlers. - [ ] Stage 4: Move out of the kernel: Once our microkernel handles processes (after message passing, after capabilities, after a lot of other stuff), the UART code will move to a driver outside of the microkernel.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
winkle/winkle-kernel#1
No description provided.