×

Happy to Help!

This website doesn't store cookies. Enjoy the experience, without worrying about your data!

Great, thanks!

Porting Embedded Software

 

At embitel, we have extensive experience in embedded software posting to various flavors controller architectures and platforms. We offer complete software stack porting and last mile services for software porting requirements.

 

Objectives of Porting

A porting project has one for combination of following objective:

  • Migration of software stack to a different processor architecture
  • Migration of software stack to a different operating system
  • Migration of software to a different technology platform

 

Requirements for Porting

To begin with any porting project, we would normally require all the available documentation and source code. For example:

  • Original design document, interface documents, test specifications
  • Details of tool chain used for source system
  • Details of tool chain of target system if already identified

In case the current system under port does not have sufficient documentation, we would start the porting activity with preparation of code flow diagram, interface diagram and hardware and software integration documents.

 

3P Framework for Porting

We follow 3P strategy (three phases) with distinct objective at every phase:

1.    Feasibility analysis phase
2.    Implementation phase
3.    Testing and validation phase

The objective in feasibility analysis phase is to bring out all dependencies and detailed statement of work. This phase also helps in verifying suitability of target system for software stack under port.

The objective in Implementation phase is to progress as per outlines tasks in statement of work. The involved detailed design study, source code walk through, tracing portable and not portable code, looking for performance optimization issues, HW and SW integration requirement, communication channel requirements, and operating system and hardware abstraction layers and re-writing of non-portable code.

The Testing and validation phase starts in parallel to porting phase and ends after the porting phase. During this period, the test strategy is decided. All test plans, test data, test code are written in this phase. The basic objective of testing are to ensure that software functionality of the system is not after porting to new target system and also to ensure performance requirements.

 

Feasibility Analysis Phase

We do a feasibility study to ensure porting objective and features of existing system.

The feasibility phase includes following decision point:

    • Understanding the source system

This includes studying the original design documentation or user documentation to know about the s/w functionality and behavior in details. If the supporting documents are not available, knowledge transfer from customer is expected.

    • Deciding Target Development Tools

Deciding upon the suitable target development tools can be a critical step for simplifying the task of porting. These are finalized with mutual discussions with customer.

    • Deciding About Porting Strategies

Porting strategy includes identification of portable and non-portable code. Non-portable architectural differences include moving among 8-, 16-, and 32-bit architectures; support for different controllers and peripherals etc

    • Testing strategy

Before starting the port, we determine what test cases and procedures are in place or need to be developed. Possibility to apply the test vectors and measure the results on both the source and the destination systems for comparison are also ensured.
 

Implementation Phase

The implementation strategy varies based on the porting objective. The strategy followed here is “A step at a time” that is to get the basic main framework of the software stack, with bare minimum functionalities, on the target platform, at the earliest.

A typical work-flow for migration to new processor architecture is,

  • Get the OS up and running on the target hardware.
  • Port the Hardware and operating system abstraction layer
  • Port all required component driver, protocol stacks etc
  • Port the application software module by module
  • After a functional port is ready, optimize the software modules
  • Do a system validation against predefined system vectors
  • Complete the process by updating relevant documentation

 

Testing and Validation Phase

We perform standard Quality assurance practices to ensure quality of deliverables.

Our Testing Strategy Includes:

  • Automated testing – Code coverage, memory leak detection, performance profiling and UML tracing
  • Unit testing – Module level testing to validate individual units of code
  • Functional testing – Validation against functional requirements
  • System testing – Verification of total software system for all of its functional, quality attribute and operational requirements