Hello readers. I am proud to showcase my UART emulator project that I worked on over the summer.
You can find the full source code and instructions on how to run the project on Linux here.
I ended up implementing some sample UART protocol logic from free resources online like the article here.
It was pretty cool to see how devices can transmit serially and asynchronously with matching baud rates. I wanted to emulate it since real microcontrollers have a cost and I could learn how the logic and math work from the ground up. It ended up simulating time deterministically and discretely.
This was my first time seeing in action how Kanban and project management are useful for getting things done quickly, since in essence Kanban let's software engineers chunk large problems into smaller tasks.
I also learned that bad OOP can explode project requirements and explode scope. This lead me to settling on creating procedural code for the UART functionality and generic OOP code for device initialization and the ring buffer.
Of course this implementation is far from perfect but I was able to progress quite a bit in various areas including low level communication, freestanding builds, templates in C++ and documentation.
Thank you for reading!
- Mathieu