website; edwin; pseudOS; pendulum; desktop_companion; wall-e; underwater_vision; jimmy; genetic_car;> ./intro download source code > ./stats Status: Completed Dec/2015 Languages: C, Assembly Software: PuTTY, QEMU Hardware: Raspberry Pi2, UART Cable Documentation: Complete -- Verbose Debrief > ./documentation
PseudOS is basic implementation of a baremetal Raspberry PI operating system. Take a look at the video above for a demonstration of how it works. We demonstrate that our operating system can simultaneously blink the status LED on the RaspPi while listening for commands over UART. Here's the slide deck we made for our final presentation. As this was all baremetal programming, any functions we wanted in our OS we had to implement ourselves. The lack of malloc() and free() was somewhat of an issue, but we skirted around it by passing all the necessary variables around by reference. We didn't write any video drivers, so PseudOS itself is completely UART based and must be accessed via PuTTY when running on the RaspPi, or through the text interface when virtualized through QEMU. My major contributions to this project were the command line and the calculator. We wrote a pseudo-command line to allow control of the OS, which allows the user to write anything in an 80-character array that automatically checks for overflow. Currently, the OS can recognize four commands, "calc", "blink", "help", and "stop". You can see this functionality in the video above. The calculator application lets the user add, subtract, multiple, or divide with positive or negative integers. The challenge for this was largely in converting UART character arrays into integers and vice versa. Solving the suspiciously interview-question-esque problem was actually pretty fun. Ultimately, the conversion was done with some ASCII to int conversions and modular math. The code for this can be viewed in the Github link and in the slideshow above.