Embedded Space & Software Development Practices

Kunal SinghDecember 5, 20074 comments

Embedded Programmers (at least the ones I know) are mostly at liberty to ignore the basic software development best practices, thanks to the simplicity of embedded applications. But, as the embedded processors are becoming more and more powerful, this situation might change soon. In coming years the embedded software applications are bound to become more complex (some embedded segments have already seen this change). Embedded programmers need to realize this inevitable change and start equipping  themselves with fundamental knowledge about software development.

I come from an Electronics background. My first job involved hardware design & debugging, firmware development and system integration. The codes (firmware) which I developed were pure assembly level routines. QA Keywords like maintainability, re-usability and testability were at that time aliens to me (and remained alien until an year ago). After a few years, I move to a new job where my key duties involved writing DSP codes and developing multimedia frameworks. This was my first professional exposure to a high (or middle) level programming language : in form of "C". Though we were developing codes in "C" (and a little bit of assembly), the software was still small enough to give us any nightmares.

My next job change was an eye opener in terms of how complex the embedded applications have grown. We were running our application on a full fledged OS (instead of a think or no layer), with half a dozen threads, and the application interacted with a number of libraries. When software grows large (both in terms of lines of codes, and number of interfaces), importance of Software Development Practices come in to picture. It needs to be readable, maintainable (as more than one engineer is going to work on it), reusable (who will like to repeat the same effort in terms of money and time by redeveloping a code from scratch for a similar product), testable (reminds me of sleepless nights) and portable (across platforms). Low coupling and clean interfaces are very crucial for all these aspects.

Irony is that, a majority of embedded software developers are not exposed to these issues. This is because embedded engineers are not always pure software developers. They are hardware engineers, signal processing experts (and likes) who have just extended their domains to write a bit of software.

It is never bad (though it is really tough) to upgrade your skills and be better equipped to face the changing realities. If you like challenges, then it is the time (before it becomes too late) to learn basic of good software development. I will recommend the following two books to start with, and then you can take care of your own.

(1) Agile Software Development
(2) Code Complete

[ - ]
Comment by massffDecember 5, 2007
hi, i had the same feeling like you,after reading your experience ,i have the feeling to do s/w development in present and feature
[ - ]
Comment by TweetyDecember 27, 2007
Hi, gone thro' your blog. Yeah it is always better to be proactive.Your's is a good start. Why don't u try for a virtual study circle .?
[ - ]
Comment by sarojMarch 18, 2008
Hi I am totally new in embedded system I have a LPC2103 controller from Futurlec.com and I need to program it to read 3 sensor connected in P0.23,24,&24 (analogue) and display the value in 24x2 LCD how do I write the code in Keil C/
[ - ]
Comment by tripuraMarch 12, 2009
Hello I have a question related to interrupt handling using C language in ATMEGA2560.Can you help me with that. Thank you Tripura

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: