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'm an experienced software engineer and an advanced Linux user. I already know C and C++. I've developed C applications on Unix in the past and C++ (mostly on Windows).

I would like to start to learn how to program on embedded Linux systems. I'm particularly interested by the ARM plate-form and the Beagle Board. I would like to learn how to do low level programming in C/C++ (device drivers, interfacing with BeagleBoard peripherals, compiling customized kernels, etc).

Could you point me to the best (free or not too expensive) ressources on the Internet? The best beginner books to learn to program C/C++ on Linux for ARM?

share|improve this question
Are you trying to learn C/C++, or are you trying to learn the embedded-specific features? –  Ignacio Vazquez-Abrams Aug 1 '11 at 15:00
You don't need to learn low-level or anything like that at all to make software that runs on a beagle board or similar. They run a fully featured linux. ARM is particularly similar to x86 in endianess, integer size and all, so code is very compatible (or portable if you like) between them. –  hexa Aug 1 '11 at 15:03
I already know C and C++. I will edit my question to add this detail. Thanks. –  esavard Aug 1 '11 at 15:17
add comment

migrated from stackoverflow.com Aug 1 '11 at 20:53

This question came from our site for professional and enthusiast programmers.

2 Answers

up vote 3 down vote accepted

For a more general reference on interfacing with hardware and writing Linux drivers, you may want to get a copy of "Linux Device Drivers, 3rd Edition". This would of course be in addition to any ARM-specific nuances as well as documentation for the integrated hardware on the Beagle-Board.

share|improve this answer
add comment

You should be able to high level code identically. At the lower level, shift operations are a touch faster in ARM mode, while everything is a touch slower in Thumb mode (but smaller in codesize overall.)

You can go to the ARM website and look at all the various ARM manuals, especially the ARM ARM (not a typo) for more info on specific CPUs and their abilities. NEON extensions will also be a area for you to look into - this is their SIMD extension.

share|improve this answer
add comment

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

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