Making embedded processing development easy - part 4

by Jason Kridner , TechOnline India - September 01, 2011

This week’s edition on utilizing the open source community for embedded design

Welcome to a six-part series on “Making embedded processing development easy.” This is the fourth edition created to introduce you to the fundamentals of embedded software design and considerations to aid with embedded processor design.  This series is derived from the expertise of embedded processor software experts from Texas Instruments and is meant to provide an objective view of easing software design.   

This week’s edition on utilizing the open source community for embedded design is brought to you by Jason Kridner, software architecture manager, embedded processing, Texas Instruments

Q:  How do I properly take advantage of open source software for my embedded software design, and should I rely on the community? 

A:  You’ve selected your basic hardware and determined which operating system (if any) you may need to utilize open source software solutions.  With any of the various components or overall system included in your design, you should consider your goals to make the right decision on how you can best benefit from on-going development in the various open source communities.  Consider three common paths, each with their own impact on the development time, cost and product differentiation requirements.  To help simplify the explanation, I’d like to associate each path with an analogy of making a vegetable soup:

1. Write the component.  This is akin to planting the seeds and growing your own vegetables for your vegetable soup. If this component is the key differentiation for your design, this approach is probably the best for you.  If

you use an existing open source component as your prototyping vehicle or your code starting point, you’ll want to pay special attention to the licensing of this component to make sure you don’t have to give away what it is you think most sets your product apart. The “write the component” method takes longer to produce than other methods and can only be as good as your own skills in producing it, but it can also provide you the most product differentiation.  If  you’re not looking for a wide amount of product differentiation from this component, this approach may not be the best use of your time and resources.

2. Buy the component.  In the soup analogy, this would be buying those vegetables from the supermarket.  If you’re looking for fast time to market and little product differentiation, you can go straight to a commercial open source software provider, such as Mentor Graphics, TimeSys, RidgeRun, MontaVista and others, to provide commercial Linux solutions and utilize the component they deliver you.  With this approach, the quality of the component is set by the commercial vendor and works directly out of the box. It’s been tested for quality assurance, and you can often buy exactly what you need. There are limitations, however.  You may be limited by the vendor’s release cycle or component build and integration options the vendor chooses, getting you tied in with the rest of the components in the vendor’s offering.  With the growing adoption of projects such as Android and OpenEmbedded Core, limitations around component interoperability and extension are becoming less of a concern and you might find that the consulting services of a commercial vendor can ramp more quickly when using their verified components as the starting point.  This approach also doesn’t allow for much product differentiation and may cost you a bit more money up front, but is typically the fastest and requiring the least amount of component expertise.

3. Develop the component in conjunction with an open source community. If what you want in making your soup is a community of experts to share both advice and a wide variety of fresh ingredients, you can relate to this approach as joining a co-op to benefit from the resources of many.  When working with open source software, this community approach can sometimes be the “best of both worlds,” spreading the cost of production across the community and still assuring that your specific goals are met.  You pay a price of time and talent to contribute your own software development to utilize the expertise and output from a community with similar or related development goals. This option will typically take less time than developing everything from scratch and cost less money than buying custom or off-the-shelf components from a vendor.  The more subtle benefit of this approach is all of the lessons learned and use-case support you can get that you never expected.  Sorting through all of the various community options and interacting with other developers has a cost in time and commitment, so you’ll want to be sure you really have a problem that others are interesting in solving with you.  Without a common challenge, you’ll be giving away your potential product differentiation without gaining the benefits of community contributions.  If you do have such a problem that others are motivated to solve, this will be your most attractive option.

 

Using the open source community

So, lets talk a bit more about the open source community.  A tremendous benefit to the open source community is that you can utilize the software free of charge from the community – much of the code is contributed by silicon and software companies who’ve developed and tested the code.  Using the community also helps you avoid risk by providing guidance on how to solve common problems from people who’ve already done the problem-solving

for you.  It also can provide you a pool of people and code needed to create the next great feature for your end application. This can save you mountains of time in the long run.

 

However, the other consideration is how much product differentiation you want in your design.  Because the open source software can be used by anyone in the community, the code you choose to use may be used by the same types of developers for the same kinds of applications as you’re seeking to develop.

As a reminder, Linux is an open source operating system obtained through the open source community free of any licensing fees.  The popular and rapidly evolving Linux community ensures Linux drivers are the first to take advantage of the latest hardware feature.  If you utilize this operating system, it is your responsibility for utilizing the code and ensuring it all works together properly.  Android from Google is based on Linux, but Google’s control of the all the applications integrated into Android does restrict the flexibility of developing software for Android, when compared to other Linux application stacks. But for a developer who just wants something that works, it accelerates the development process as a whole by simplifying and streamlining the integration of third-party code when compared with the effort that is required for the same task under Linux.

Developers can bring elements they may be experts at and share them with the community.  And if you’re unfamiliar with software development altogether, you can utilize the “expert elements” already contributed to the community.  You can communicate with other developers to:

  • Exchange ideas for the end product
  • Collaborate with several people, each with their own expertise, to solve your own product development issue or develop an end product code solution
  • Enable faster innovation
  • Collaborate faster than standard product release cycles
  • Engage and fuel passionate innovators/developers
  • Interact in peer-to-peer conversation and open idea exchange
  • Create better solutionsImprove software quality through expert peer review
  • Obtain preferred peer support through community
  • Productize with two-way access to early adopters

 

There are rules

Open source is more than simply access to free source code.  Even though open source communities are indeed free to the community, there are guidelines that govern the open source communities. The Open Source Initiative
(OSI) is actively involved in the open source community building, education and public advocacy to promote awareness of the importance of non-proprietary software.  Guidelines set through the OSI are intended to promote desired use of the community and can be found here:  http://opensource.org/docs/osd.
 

Who participates in the open source community and why?

There are many reasons others participate in the open source community.  They use the community to solve their own problems and then share their solutions for possible benefits.  Others like to participate for the “fame and glory” that comes with solving software problems for others in the community to receive a virtual pat on the back or even employment or project contract.  Whatever the reason, it’s beneficial to both contributors and users.

 

In engaging a community around your open source development, it is sometimes helpful to consider some of the typical developer personas:

 

* Tinkerers focused on discovery and tweaking of code to demonstrate optimal results
* Early adopter community advocates looking to be part of the next big thing
* Freedom crusaders who prevent others from controlling their destiny with canned mystery code
* Third-party software companies and consultants that want to foster the two-way relationship of contributing and utilizing open source code to work with their product offerings

Ready? You can get started today with these open source community resources, including:

 

Always Innovating – Early cloners of the BeagleBoard to produce an open hardware tablet and an innovative user experience

Android – Popular open source platform developed by Google for mobile phones and tablet devices

ARM Connected Community – Discover platforms and third parties

Arowboat.org – Developer community for Android on TI, ARM, DSP and digital media devices

Arago Project – Open Embedded based Linux distribution utilized for building software development kits for TI Sitara, DaVinci and Integra devices

BeagleBoard.org – Community for development of open source on the ARM Cortex-A8-based

BeagleBoardBug Labs –Software compatibility with the BeagleBoard in a production case with an extensive Java-based integrated development environment and simple snap-on modules to meet your interface needs

DesignSomething.org – Interesting open platforms and communities built around TI devices

Gumstix – Software compatibility with the BeagleBoard available for production devices and about the size of a stick of gum

ISEE IGEPv2 – Open hardware platform utilized by many ARM-based open source projects

Linaro –Advancing the state of open source on ARM processors

Linux and eLinux.org – Collaboration on perhaps the most widely used bits of community software (or any software) to ever exist

Make Magazine – A publication and a community lightning rod for do-it-yourself electronics and manufacturing

OMAPedia – Resources for open source on OMAP processors

OpenPandora – Open platform gaming device running Linux with a large community of developers around retro-gaming and game machine emulators

TI Third Party Network – A worldwide organization with more than 600 independent companies offering products and services that support TI ARM- and DSP- based embedded processors, such as software and development hardware

Yocto Project – A Linux Foundation sponsored organization of both commercial and community developers working with OpenEmbedded and improving the state of tools and board support packages for building embedded Linux distributions

 

About the author:

 

Jason Kridner is a software architecture manager in the embedded processing team at Texas Instruments and active leader in TI’s open source initiative. Kridner is a champion of open source and open standards, creating an environment where consumers’ and developers’ often specialized needs are met by having access and compatibility at all layers using optimized system-on-chip semiconductor solutions. Kridner’s responsibilities include definition of the software components, development platforms, and support processes used to engage customers on new software technology.  Prior to employment at TI, Kridner was a draftsman and an embedded software developer for manufacturing test equipment. Kridner received a bachelor’s degree in electrical engineering from Texas  A&M  University.

If  you found this article to be of interest, visit the Microcontroller Designline where you will find links to relevant technical articles, blogs, new products and news.

You can also get a weekly newsletter highlighting the latest  developments in this sector - just Click Here to request this newsletter using the Manage Newsletters tab - if you aren't already a member you'll be asked to register.

About Author

Comments

blog comments powered by Disqus