Global Sources
EE Times-India
EE Times-India > EDA/IP

Easing embedded processing development (Part 3)

Posted: 01 Sep 2011     Print Version  Bookmark and Share

Keywords:software compatibility  reuse  OS 

Do you have a place to store and search existing software components?
To aid in the software reuse, repositories or databases should be created to store software components so that others will know what's available. It's preferable to appoint a database owner to ensure components are properly archived. The database owner can also help to make sure components are following reuse guidelines to help make the software the most reusable.

Are you planning to reuse large software modules/sub-systems or utilise code through frameworks?
Reuse of larger software modules like sub-systems or higher level applications involves a different set of factors to consider compared to smaller components. To reuse complete sub-systems, the sub-system must be designed to work properly with many other parts of the system. To achieve this, layering is frequently adopted with well-defined APIs specified at each layer. These layers help abstract the sub-system from other parts of the system that might need to change in future products. The underlying layers can be modified without affecting the API or the sub-system calling the API. Some examples of layers that are used for portability across devices and end product applications are hardware abstraction layers and OS abstraction layers. Care must be taken when architecting the layers, otherwise the layers can lead to excessive overhead or complexity that makes debugging more difficult.

In some cases, reuse is fostered through the use of frameworks which allow components to be plugged together to create larger sub-systems. Frameworks have specific rules that components must adhere to. All developers creating components for the framework must follow those rules so the components can then be plugged into the framework and work properly together. Multimedia is one area where frameworks are commonly adopted for audio and video processing. Multimedia frameworks such as G-Streamer, OpenMAX or DirectShow can be used to build pipelines of video and audio elements. Note that in many cases, a particular framework may be available and well suited for one operating system (OS) but may not be available or as well supported on another OS. Therefore, the system manufacturer may have to work with a variety of frameworks to create all the desired products.

Does your software involve components developed by other entities?
Reuse may also involve components developed by other entities to reduce development effort and improve time to market. These may be purchased components or open source components, but the cost of these options must be accounted for. The purchased components typically require up front cost but may also require yearly support fees or even royalties for each product shipped. Many believe that using open source code is without cost; however, there are various costs that programmers must consider. Sometimes costs are incurred because of the frequently changing nature of open source code for enhancements. For example, when using the Linux OS, migration of the product to a new Linux kernel may be required to pickup new features and bug fixes. Therefore, the project will require someone familiar with open source development to be able to keep up with the changes. Many open source components are targeted at desktop PCs and may require optimisation to meet embedded system performance. Legal council may be needed to achieve compliance with open source licensing requirements.

Software development teams must be cautious when integrating open source software with their proprietary software. Unless the software system is properly partitioned and structured to meet requirements of open source licences, any new code may be considered open source code. Because of this, the system manufacturer may be obliged to contribute the new code back to the open source community. By carefully partitioning the system's software architecture, the risks of this happening can be reduced.

Some technology companies have taken steps to avoid open source licensing issues. Most software from TI, for example, comes with a 'software manifest' which fully explains and delineates the sources of the code and any third-party or open source licences or obligations associated with it. Furthermore, these software manifests and the software itself are reviewed by the company's Open Source Review Board to ensure the code is properly structured and architected for the protection of the system manufacturer.

In the end, the best, highest level of software re-use will be achieved when the system manufacturer's software development teams have:
� Management support;
� Time to architect, develop and test for reuse;
� A software component database.
� programmers engaged in the reuse process

Developers can then adequately mix and match previously developed code, adding or subtracting product features and functionality to quickly meet the requirements of a particular product offering.

About the author
Steven Magee is a software architect in the embedded processing team at Texas Instruments. He has served in a variety of software systems engineering roles in TI's video, audio, and emerging end equipment businesses. Magee received his bachelor's in mechanical engineering from Louisiana Tech University and his master's in electrical engineering from Louisiana State University.

To download the PDF version of this article, click here.

 First Page Previous Page 1 • 2

Comment on "Easing embedded processing developme..."
*  You can enter [0] more charecters.
*Verify code:


Visit Asia Webinars to learn about the latest in technology and get practical design tips.


Go to top             Connect on Facebook      Follow us on Twitter      Follow us on Orkut

Back to Top