Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    text
    copied!<p>I have been coding in C both as a hobby and professionally for about 16 years now, but always for userland code (i.e., programs, not kernel or drivers). Most of my jobs involved high level languages (I have done <strong>a lot</strong> of Perl and Ruby programming, with the occasional Java, Python and shell scripting in between). I did develop a lot for MS-DOS (which was probably as close to bare-metal programming as you would get on a x86 machine), but my last job involved 5 years of Perl and Ruby on Rails web development.</p> <p>That being said, I am now a senior engineer for embedded Linux development, developing drivers (including an emulator for a legacy simple microprocessor inside a kernel module) for <a href="http://www.uclinux.org/" rel="nofollow noreferrer">uClinux</a> on the <a href="http://www.analog.com/en/embedded-processing-dsp/blackfin/processors/index.html" rel="nofollow noreferrer">Blackfin</a> platform. There are times when my inexperience with hardware related issues (i.e., floating signal levels due to lack of a pull-up/pull-down on a pin) did get in the way, but it has been mostly a highly enjoyable and thrilling experience. As stated by others, understanding your tools is essential -- for uClinux, that meant the <a href="http://en.wikipedia.org/wiki/GNU_toolchain" rel="nofollow noreferrer">GNU Toolchain</a>, which fortunately I was already familiar with due to my background on FOSS technologies.</p> <p>The Blackfin is hardly an entry-level microprocessor (in particular, it does not have a <a href="http://en.wikipedia.org/wiki/Memory_management_unit" rel="nofollow noreferrer">MMU</a>, which has some <a href="http://www.embedded.com/story/OEG20020212S0014" rel="nofollow noreferrer">relevant effects on Linux development</a>), but as already stated, you can buy a <a href="http://dkc1.digikey.com/us/en/mkt/beagleboard.html" rel="nofollow noreferrer">Beagleboard</a> for around US$200 with all required accessories and start messing around with it in just a few days. If you want something simpler, there are many <a href="http://www.arduino.cc/" rel="nofollow noreferrer">Arduino</a> options out there, though if you have some real development experience under your belt I believe you will find their development environment a little limiting (I know I did).</p> <p>After you get comfortable with your tools you might want to spend some money on an <a href="http://en.wikipedia.org/wiki/In-circuit_emulator" rel="nofollow noreferrer">in-circuit emulator</a> (or ICE). These are usually highly platform specific (both in terms of target architecture and development environment), but are highly recommended for anything beyond the usual blink-LEDs-after-button-press examples I am sure you will quickly outgrow.</p> <p>In few months you will find yourself building custom images for <a href="http://www.linuxfordevices.com/" rel="nofollow noreferrer">hackable customer devices</a> using <a href="http://buildroot.uclibc.org/" rel="nofollow noreferrer">Buildroot</a> and having a lot of fun. All I can say is, go for it, it's highly addictive and not particularly expensive to do nowadays.</p>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload