Neotron bringup steps
NOTE: Some of these links will be file-local for me, and won't work on the web rendered version of this document. Sorry. I'll try and get a hosted version working at some point.
- Fill out or stub out each of the BIOS API functions.
api_version_get
- Should be easybios_version_get
- Also easyserial_get_info
- Not sure. Could returnNone
for all calls, might not be useful though. I could probably fake a UART via defmt for output, but might need something for input. I could probably get a USB or TTL UART going from the HAL examples.serial_configure
- I could probably force it to only accept a single configuration, based on whatever serial device I set up. Or it could lie and accept whatever config and just ignore it.serial_write
- Output is easy, on defmt or a serial port.time_get
- We can lie. Or use some clock or something. The 60Hz thing might be weird to handle. 1 frame is 546.133333 LFCLK ticks. 546 ticks would be an error of 0.024%, which is probably fine for now, or 60.015 FPS.video_memory_info_get
- Setting up a framebuffer is probably easy, but the question is what to do with it?configuration_get
- Probably okay to stub? Failing to store it is probably fine.configuration_set
- Storing it in volatile memory to start with is probably fine.
- Determine memory layout for BIOS, OS, and apps
- Probably just chunks of RAM for the OS/apps for now
- Write some kind of RAM loader for the OS from the BIOS
- Maybe just a UART thing? Basic IHEX loader or something?
- Figure out how Neotron actually reads from a keyboard, uses audio, sdcard, etc.
- Video is actually done here: https://github.com/thejpster/vga-framebuffer-rs
Share with Tanks
"How I Teach Embedded Systems"
https://twitter.com/AliAlSaibie/status/1359538612501676033