Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

I am a newbie trying to learn embedded systems programming on ubuntu. I've tried the below link:


But after doing this, I don't know, I felt as though I just created a USB boot disk. I don't know what other people knowledgeable in this field might think...nonetheless I'd like to take the next step. What should I look for next?

share|improve this question

closed as off-topic by gnat, MichaelT, Bart van Ingen Schenau, Kilian Foth, GlenH7 Feb 11 '14 at 15:45

This question appears to be off-topic. The users who voted to close gave these specific reasons:

  • "Questions about what language, technology, or project one should take up next are off topic on Programmers, as they can only attract subjective opinions for answers. There are too many individual factors behind the question to create answers that will have lasting value. You may be able to get help in The Whiteboard, our chat room." – Bart van Ingen Schenau, GlenH7
  • "Questions seeking career or education advice are off topic on Programmers. They are only meaningful to the asker and do not generate lasting value for the broader programming community. Furthermore, in most cases, any answer is going to be a subjective opinion that may not take into account all the nuances of a (your) particular circumstance." – gnat, MichaelT
If this question can be reworded to fit the rules in the help center, please edit the question.

1 Answer 1

up vote 4 down vote accepted

Learning how to bring a board up is valuable, but it is not an everyday task. It is unlikely that you will ever need to do it again unless you change the hardware and even then if you are developing a family of products it doesn't always require as much work as the initial board.

In my opinion the most important aspect of the embedded design is learning to work under heavy constraints. It not uncommon to have only a few megs of ram and what most people would consider a slow processor(300Mhz for example). Another common issue is I/O constraints typical disk speed. For example, we have SSD on our product that has horrendous random access write performance. Unfortunately, a live system tends write small chunks of data at random locations on disk pretty frequently. We had to build a caching mechanism into our file system that attempted coalesce adjacent disk blocks in order to serialize disk writes to achieve bearable performance.

When most people think of the embedded programing the pretty much only think of drivers or talking to the hardware. That is part of it, but most of the development effort is done a layer up. So, like I have already mentioned, most embedded work is about working with limited resource. I would focus my efforts there.

The book Programing Pearls has discussions on number problems that I think are valuable to all programmers, but it certain has a lot of practical value for embedded programming. A lot of the problems discuss how to approach a problem from different angles or different resource constraints. It is worth a look.

share|improve this answer
+1 for "most of the development is a layer up". I'd say that less than 10% of my time involves messing with the hardware interface registers. (and I'll see your 300Mhz processor and raise you a 100Mhz system running a 30us cycle. That's a budget of 3000 instructions per major loop.) Advice: Learn to think about timing. –  AShelly Nov 15 '11 at 22:11

Not the answer you're looking for? Browse other questions tagged or ask your own question.