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?
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 custom embedments 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 kernel.org, 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 custom badge embedments it for your requirements or buy a ready-made OS from a vendor with all the support.
The first options undoubtedly are 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.