A Beginner's Guide to Embedded Systems
I was in my Junior year of college when I first learned about embedded systems. Sure, I’d heard about this mystical world of sensors and IoT, the same way I’d heard about thermonuclear astrophysics; But, the phrase “embedded systems” didn’t really mean anything to me. This, here, is a guide for people like teenage me. We’re going to learn what an embedded system actually is, and why working on embedded software is the coolest thing you could ever do!
What's an embedded system?
An embedded system is a self-contained, microprocessor-based computer system. You could think of it as a teeny-tiny computer that’s part of a larger system. Nowadays, almost everything “electronic” has an embedded system inside it, from your dishwasher to a Boeing 747. However, embedded systems aren’t the same as your laptop or your phone. The key things that differentiates an embedded system from a computer are:
- Embedded systems are application specific: Computers are built to do pretty much everything. Embedded systems, on the other hand, perform only a few specific tasks.
- They often perform real-time computing: Safety critical systems use embedded systems and have strict timing and deadline constraints.
- They have computation, memory, bandwidth and power constraints and often have no user interface.
Embedded software is just the software that runs these embedded devices. It’s a bit different from traditional software because the code you write needs to meet the various constraints embedded systems have. Most embedded software engineers program in C as it has low overheads in terms of memory and time, but languages like C++ and even Python (microPython) are growing in popularity in the embedded world.
Is there a market for embedded systems?
With the advent of 5G and the growing demand for Electric Vehicles, and the rise of “smart” devices, the global embedded systems industry is set to grow to USD 116.2 Billion, from its present day valuation of USD 86.5 billion. Traditional Software giants like Meta and Amazon have sought to capitalize on this growing market and have begun to expand into the embedded world. Due to a higher barrier for entry, the embedded software field is not yet as saturated as the traditional software industry. So if you’re willing to put in the work, this is a great opportunity for you!
How do I get started?
Remember the barrier to entry? This is one of the areas where it doesn’t hurt to have a technical degree. There are a ton of ways of getting started, including buying an Arduino and just going wild; But I’m going to present a different approach:
- Start with a Circuit Fundamentals course: Knowing things like Kirchoff’s Laws, voltage dividers and op-amps goes a long way. You don’t want the first time to encounter the term “resistor” to be when you’re reading a 100 paged datasheet for a time sensitive project.
- Learn Digital Circuits: Logic gates, boolean algebra, state machines and even a bit of FPGA programming builds strong fundamentals. Coursera’s “From Nand To Tetris” is a great way to develop these skills.
- If this is your first time coding, learn C. It might seem a lot more challenging than other entry level programming languages like Python, but once you get the hang of it you’ll realize how powerful it is. Advanced programmers can also learn Assembly simultaneously. It isn’t used too often, but there are times when we weave in a bit of inline assembly into our program.
- Microcontrollers: Now begins your journey into the realm of embedded programming. I started off on an STM32. The Family Reference Manual has an Appendix with code snippets which you can use as a guide — which was pretty helpful. But you can always get started on a 8/16 bit microcontroller and upgrade to a 32 bit microcontroller later on.
- You can learn RTOS or Embedded Linux. You can learn about various wireless protocols like BLE and Wi-Fi. Once you have a strong foundation, you can pretty much learn and do anything you’d like! The world is your oyster.
Engineering is a hands-on activity. Buy development boards and try to create projects of your own. You can start by writing “blinky” (the “Hello World” of embedded systems) and then move on to more and more sophisticated projects.
(A snippet of my first blinky code in MicroPython on an ESP32)
If you don’t just want to tinker around alone, find a friend! Colleges have tons of clubs that have roles for embedded engineers. What’s great is that a lot of them don’t require any prior experience. They’re willing to teach you everything you’d need to know and are great ways to build your network and find like-minded people your age.
Here are some of the student organizations that I’ve found most interesting:
- IEEE student organizations: These are amazing and you get to join the large network of IEEE engineers worldwide. The specific clubs vary from college to college, but they are always looking for students with an interest in embedded systems. These student organizations are also an opportunity to gain leadership experience. IEEE EMBS (Engineering in Medicine and Biology Society) is one of my favorites as they also offer research opportunities and have a conference where you can submit research papers.
- Formula SAE: If you’re a racing fan, FSAE is the place for you. Formula SAE is an annual student design competition where college student teams from all around the globe compete to develop a formula-style race car. The competition is sponsored by industry titans like GM, Ford and Chrysler and has been judged by legends in the racing industry like Ron Tauranac.
- Electric Racing Teams: Nearly every university has some version of an electric racing team. These are great places to build your skills as you get to work with other engineers for a competition, and are often a gateway into the Electric Vehicle industry.
- Robotics Teams: A common misconception is that robotics and embedded systems are the same. Robotics are primarily mechanical and hardware driven, but often incorporate some form of embedded systems. Every university has at least one robotics club and I’ll bet they would love to have you as an embedded software engineer.
This isn’t an all encompassing list though, because that list would go on forever. From autonomous drones societies to even your local computer society — most engineering student organizations require embedded engineers. And if they don’t, you can always create your own club!
So there you have it! A beginner’s guide to embedded systems. Hopefully, your curiosity is piqued; You’re just itching to get started; You’ve bought a microcontroller and are working on getting it hooked up. And soon… very soon… You’re going to be one of the embedded software engineers that takes us to Mars and beyond.
To post reply to a comment, click on the 'reply' button attached to each comment. To post a new comment (not a reply to a comment) check out the 'Write a Comment' tab at the top of the comments.
Please login (on the right) if you already have an account on this platform.
Otherwise, please use this form to register (free) an join one of the largest online community for Electrical/Embedded/DSP/FPGA/ML engineers: