Embedded Software Porting
Reliable, professional embedded software porting
Where reducing cost, adding capabilities or increasing the performance of embedded software is imperative, the solution may be to port existing software to a different environment.
Embedded software porting is the process of reusing embedded software in a system for which it was not originally designed.
If the existing platform is unable to accommodate an enhanced application, or there is a requirement to improve code quality, or to fix or reduce bugs, reusing software can leverage effort from previous development cycles. From a commercial perspective, this has the potential to bring both cost and time benefits.
The process of ensuring the software operates within the target environment does however present risks, since embedded software is often closely related to the hardware or software environment it was originally developed for.
As embedded software porting remains a largely manual process, the success, cost and lead time of the project will be determined by your choice of embedded partners.
A high degree of technical proficiency and substantial first-hand experience are critical to reducing effort, cost and risk, while delivering the porting objective and assuring the features of the existing system.
Our embedded software porting expertise
Pebble Bay offers a range of services to help you port software to your target environment reliably and with reduced risk.
Our support covers the entire project lifecycle, from initial advice on how best to undertake a port, defining where reuse is required of system software, application software, non-functional features or quality attributes, through to porting and full testing of complete software systems.
We can provide a feasibility study identifying the risks, dependencies, value and potential impact of porting to a new system. We will evaluate the suitability of the target system for porting embedded software as the basis of the Statement of Work, encompassing each stage in the porting process.
With more than 30 years of experience in the customisation and porting of embedded software solutions, we understand the technical and business issues at the core of your system, and can enable your applications to safely benefit from new generations of hardware and software.
Embedded software porting brochure
Pebble Bay developed an outstanding quality QNX Gigabit Ethernet driver with PTP support for us. The project was completed on schedule and within budget and overall we were very happy.
Do you have a question about embedded software porting?
Embedded Software Porting FAQs
What is the embedded software porting process?
Porting can be successfully delivered with a thorough and methodical approach at each stage in the project lifecycle:
- Analyse requirements to ensure the technical and business needs are fully understood
- Define where reuse is required of system software, application software, non-functional features or quality attributes
- Create a detailed Statement of Work defining work packages, pre-requisites, deliverables and schedule with explicit milestones
- Review software to identify hardware-related, tool- based or environmental dependencies
- Plan the porting process to enable incremental testing and verification where possible
- Carry out a pilot study to port a subset of the software
- Create a Test Plan to demonstrate correct operation of the ported software in the new environment
- Isolate hard-to-port sections of code to make them easier to maintain and/or re-write
- Document the porting process allowing you to understand the rationale
- Use tools and techniques to automate porting and checking where possible, to minimise effort and risk
- Manage the project using our proven process to ensure the project status is always visible and any risks are tackled head-on
How will the project be scoped out?
We will identify the project parameters with you at the outset.
Critically, this means setting criteria for successful effort to provide definitive parameters within which decisions can be made during each stage. This enables the porting project to be progressed up to the specified point of completion.
The process of embedded software porting is most effectively undertaken where the developer has complete knowledge and understanding of the source and destination systems.
This requires access to the original system and user documentation – source code, design document, tool chain details, test specifications etc. This is however rarely the case.
Where such information and documentation is unavailable, and knowledge of system design, source code is limited, porting does still remain a possibility.
We are experienced in operating effectively in both scenarios.
Where information is unavailable, certain documentation will need to be created eg interface diagram, for the project to be viable, and for subsequent discussion and decisions on the target development tools to be sufficiently informed.
For larger, more complex projects, it may be more efficient – cost and effort-wise – to reverse-engineer the application and replicate than to proceed ‘in the dark’, at risk of running off resources.
The implementation phase then comprises a number of steps, which we will define as a strategy to meet the specific nature and requirements of the porting project.
Typically, this involves laying foundations and porting the basic framework, for the OS to be functional on the destination hardware, and building up to migration of the application software.
What are the challenges with embedded software porting?
Completing an embedded software porting project successfully demands experience of a wide variety of hardware, run-time software and development tools. It requires adequate analysis, planning, testing and implementation of effective code that also balances time, cost and effort with system function and reliability.
No two porting projects are the same. Porting could involve different hardware, a different operating system, different development tools, or a combination of all three.
Differences in the target and source environments, a wide range of efficiency vectors and constraints, variability in embedded-processor architectures and the overall project objective will determine the complexity of the process and the degree to which software can be rewritten or simply recompiled.
Several strategies are available for porting your code, from recompiling your portable source code with a compiler for your target environment, to translating the non-portable software, whether low- or high-level code. Or the requirement may be to rewrite legacy code in a different, typically higher-level, language to improve portability and maintainability.
We have significant experience encompassing such porting variations and can advise on the most appropriate strategy for your requirement.
Critically, this means understanding at the outset the technical requirements and commercial drivers behind the decision to port:
- Reuse existing, tried and tested ‘legacy’ software?
- Part of an upgrade such as migration to a different operating system to reduce system costs?
- Maturing applications, changing processor, operating system or system board to support a new capability in maturing applications?
In all instances – migrating software to new a platform demands the expertise to keep the project moving forward to an on-time and satisfactory completion.
How do you approach the testing phase?
Testing is a critical component in ensuring quality and performance of our deliverables.
Our approach to testing will be shaped by the project at hand. We operate robust, systematic test procedures, making full and appropriate use of scripts and automation, conducted concurrent to porting to validate functionality and performance within the target system.
Importantly, this encompasses both source and target system, before and after the port, for comparison and to analyse performance and behaviour in the new environment.
We will continue to defer to the parameters for success as identified at the outset in respect of the results that meet the requirements and acceptable ranges for function and quality.