Posts

• Exploring a driver concept

As I have mentioned before, it is common for embedded drivers to be tightly coupled with the current hardware implementation. For instance a driver for an I2C RTC circuit such as NXP PCF85263 together with an Atmel microcontroller will most likely use Atmels framework (ASF for instance) directly to handle I2C communication. Now if the microcontroller is switched to some other brand, you will have to change the RTC driver to match the I2C driver supplied by the new brand of microcontrollers.

• A basic scheduler

In Multitasking 1 of n I showed how I started implementing some very basic multitasking functionality, using cooperative multitasking. In that post there was no real logic when switching between tasks; I just created two tasks and switched between them in the most basic manner possible. If i wanted to add a third task I would have to change the code in multiple places and make sure things were kept in sync. There was no easy way to support removing tasks. I therefore chose to start implementing my first actual scheduler; a round robin scheduler.

One of the main features an OS provides is the ability to perform multiple tasks simultaneously, or at least simulate it so it seems that way.

The lm3s811evb QEMU machine comes with an emulated OLED display, which would be a nice thing to get going. Having a screen immediately allows us to show and interact in more ways than just through the serial port. Code now also available in a Gitlab repo.

• Debugging QEMU

In Hello eppOS I got a basic Hello World going with stdout via UART. This allows us to print messages and have them appear in the console in much the same as a normal program. Now we should add debugging capabilities to the mix as well.

• Hello eppOS

To have an actual project project to learn from I have decided to start working on a basic embedded OS. True to the open source community every project needs a name, so I have decided to call the OS eppOS, which is a (bad) acronym for Embedded C++ OS. This will be my playground that I can use to play with code and features. The goal is not to develop a production-ready OS.

• Hello world

My name is Andreas, I am a little over 30 years old and have always had an interest in computers. It was quite logical that I would get into software development; I started learning C++ as a hobby in my teenage years. My first (and so far only) book is, shamefully, the dreaded Learn C++ programming in 21 days.