ECEn 425 was my introduction to embedded systems. This class taught me a lot about these tiny devices and I've been interested ever since.
This embedded systems course focused on the operating systems side of things. We learned all about what things needed to be considered when developing a Real-Time Operating System (RTOS) such as VxWorks or uC/OS.
Our project for the semester was to build up an RTOS of our own with the following features:
- ISR functions written x86 assembly
- Task switching with priorities, delays, etc.
- Message Queues
The final piece of our project was actually to write a real-time application to run on our RTOS. We wrote a multi-threaded application to play a simplified version of Tetris and compete against other class members in the number of lines our program could clear. We also got the chance to run our RTOS and application on an 80x86 microprocessor, whereas all of the development had been done with an 80x86 simulator.
It was fascinating to learn how many things are going on on those tiny devices you see everyday but don't even think about. It was also amazing to me to think that some of these devices are critical systems (i.e. Therac-25, airliner autopilot) and how reliable the sharing and context switching of the OS must be.
Though I am not doing anything with embedded systems currently, I would be very interested in working with them in the future. I think it would be great to work on these fascinating systems.