Archive for August, 2009

Why Embedded Developer can’t ignore Linux

Thursday, August 13th, 2009

One obvious reason is the increasing number of jobs for Linux embedded engineers but as embedded developers you should know the real reasons which are prompting companies to heavily hire embedded software developers with core Linux skills.

It’s just not the open nature of Linux which is pushing this trend rather it is a combination of technicalities, features, external factors and the overall progressive nature of Linux which is pulling the strings.

Mind you, I’m no advocate of Linux and all points mentioned below are relevant to the current embedded software development trends

Who defines the skills of an embedded developer?
No, not the company that you work for…. what? Then who?..Well, it’s the customers, who are freaky about the latest embedded gadgets that throng the consumer and industrial markets. Their varied and pressing demands prompt these OEM vendors to come up with the latest and customized embedded devices and kick in some hot sales. So to put it straight it’s the demand that fabricates the products and it’s the product which defines the features and it’s the features which makes the developer to use a particular technology

Understanding current product development skills
Let’s take a small example to make things easier. Say you are entrusted with developing a smart phone which of course communicates but apart from that seamlessly connects to the Internet, gives you more battery backup, connects to other devices easily, should be upgradeable, customizable and should be a multipurpose device for making our life more comfortable. Well sounds like we have a great product here. Now to put it straight in technical terms the device should be robust, scalable, able to be connected to other devices, customizable and upgradable.

For all those embedded engineers reading this article who are experienced in developing embedded devices for dedicated purposes where there is no device connectivity, acute software, more of software burning onto chips and limited memory, you need to acquire more skills to be able to develop these new age smart devices.

Coming back to the smart phone, what we need here is a device where the underlying hardware and the software stack which goes on top of it must support development of all these features. So the software stack which we use must have all these capabilities:

  • The embedded software in use should be capable of extending itself based on the features and future consumer needs. So here legacy dedicated software cannot be used
  • The software must be customizable, in other terms code shall be removed or added to it based on the requirements
  • The software should be power aware and this needs the software to use less power to run itself
  • It should have all those protocol stack which supports connection with other devices or networks
  • As more personal information is stored in these devices security features must be part of this software
  • Software must have constant upgrades and support for more stability
  • Software with all these features should not become too bulky and must have a lighter footprint
  • The hardware must have larger memory to accommodate the bigger and better software stack that delivers all these features

Bottom-line we should have a software stack or an OS, like an Embedded OS or a RTOS to meet our development requirements

What options do we have?

This is the question which most embedded companies face and the options they have are:

  • To develop their own embedded OS which power their smart devices
  • Or buy it from an independent OS vendor

The first option requires a lot of effort however it’s cost saving. And the second one takes away the effort but becomes a costly proposition for the vendors. Both these options have its own merits and demerits. And as a developer you need to take an account of it.

The effort involved in the first option can be cut down by taking an existing OS and customizing it for specific requirements. If this can be done, then this option slightly edges past the other option. Now the question is where to find an OS with all these inbuilt features and upgrade support. Well the answer may simply be to use the Linux Kernel, it is open, extensible, robust, secure, upgrades by, largest community support and the fastest growing OS for all your needs and all this comes for zero cost. So things are more clear here either you pick Linux and customize it for your requirements or buy a ready-made OS from a vendor with all the support.

The first option undoubtedly is cheaper and still involves a bit of effort from their developers. The second one is costly, locks the company to the OS vendor however provides good support and upgrades but everything comes for a cost.

Here the first case strengthens because of the huge talent pool of Linux developers available who can immediately become productive and also the huge Linux community takes care of all the upgrades and support for the latest devices. New versions of Linux, supporting various devices is readily available and this takes away most of the work of these developers and makes your development simpler, easier, secure, reliable, scalable, supportive, adaptable and cheaper.

Now let’s look from the perspective of a developer, what skills does he need, simple he must be adept at working with the Linux system inside out and its game on for him. Even if needs to work with the second option, where he works on purchased OS his Linux skills helps him catch the nuances of the new OS, which mostly might have modeled based on Linux or other OS designs. So for a developer Linux skills will be in need irrespective of the development option that he will be working on

Does it mean that my current skills aren’t enough
Of course your existing skills are good enough to develop dedicated embedded devices which are mostly based on micro-controllers, where you burn the code onto the chip and less software is needed. Many applications are still demanding these kinds of devices to power their solutions. However with more smart and multipurpose devices in huge demand more money is put in to developing these kinds of devices. For instance take any smart device like iPhone or ipad or an android based phone all these are in huge demand because of their smart and diverse uses. So we can conclude on one thing even though the need for dedicated devices exists the rate at which development is happening on the other software and hardware powered devices is huge and may in future fully capture all areas of embedded applications

So great news if you are already writing software on Linux and if you still aren’t then it’s high time you get a hold of it. Remember staying ahead is the key to a software developer’s success.