Can I learn embedded C/C++ alone, at home?


I have noticed several job ads require embedded C knowledge, espeially for automotive industry. The only contact I had with embedded programming was in college, when I build a small board with an Atmel ATMEGA something microcontroller, USB to power it, a display and a temperature censor. And that's it.

Now as far as I know, embedded programming requires you program a microcontroller and you program it to use some other physical components, or to be part of something.

I have seen some C/C++ books on the net for Arduino and I know arduino is being used by amateurs. Can I buy some of those boards and use the books and get some real embedded programming skills?

Mihnea wrote:
as far as I know, embedded programming requires you program a microcontroller

"embedded programming" covers a very wide and diverse range of target platforms and development environments. Depending on where you work, you may have to balance hundreds of threads (with hard real-time priorities, to make life more interesting) running on multiple CPUs (some of which may be redundant backup CPUs..), or never see a thread at all. Your target may run an embedded flavor of Linux, a different POSIX or non-POSIX OS, or no OS. Other than having to cross-compile everything, I am not sure there's a single thing in common for all embedded programming.
Unless they want someone to start working "yesterday", they probably wont' be looking for people who know exact platform and setup they use. I'd recommend tinkering with some linux device drivers: kernel-space programming and hardware interrupt handling and figuring your way around complex software that does those things might have more commercially-applicable skills.

The thing I miss most from my embedded programming days is using the oscilloscope for debugging and profiling..
Last edited on
Get an Arduino or Raspberry Pi, or start programming your Galaxy Phone or Kindle.
Yes, but I recommend you just learn c++ and maybe enough C to get by first. You can do that without spending, then you can get a chip and board to play with once you have a solid background. If you try to learn the embedded stuff first you will get used to some weird limitations and special libraries that are not part of the base language and can be hard to unlearn.

We did a lot of embedded on big systems, pc-104 that are basically a full PC just on smaller and lower power draw hardware. That is identical to coding for a desktop, apart from maybe lack of a gui (we didnt have a UI at all, it was stuff that just ran on power up fully automated) or high performance concerns. We also did microcontrollers of various types, and those can vary from close to desktop coding to rather different.
I know C and C++, the part that I am vulnerable at is the embedded part because I can't write code on the computer alone.

So as much as I understand from the answers it varies from job to job based on what they work on, most require experience with RTOS. Arduino would still require buying various suff to go with the arduino board, right?
Ah, that is good then. IN that case, some of these platforms have PC emulation so you can code and test without chips and such, but in the end, you now need to pick a platform and buy some stuff and have at it. Lots of people do this at home, and many of these systems are very inexpensive purchases.

I am pretty sure, but not 100% sure that aurdino can be done in emulation for a while to start learning. But yes, eventually, you need to buy stuff.
Last edited on
Thanks for the info, the only simulator that I found for running C code on it is proteus, but it seems ok.
Topic archived. No new replies allowed.