Embedded Software Engineer - Firmware
An Embedded Software Engineer is required to join our firmware team, to develop and maintain high-quality boot code and deployed test firmware used by our products.
My client produces ruggedized embedded computing solutions for the rugged embedded COTS market.
These products require different types of firmware, including boot firmware such as BIOS or UEFI on our Intel products and UBoot on Freescale and ARM products. Our Firmware team also provides a deployed test solution, known as Built in Test (BIT), which is a key software product that the customers in this market expect. The Intelligent Platform Management Interface (IPMI) is another element of firmware supported by the team, which provides management and monitoring capabilities independently of the host system's CPU, firmware (BIOS or UEFI) and operating system.
The Engineer's responsibilities will cover all aspects of software development following the Company's
Software Development procedures.
The scope of the firmware development work covers:
- Generating requirements for new products, porting and code development for new products
- Maintenance updates for existing products.
- Project documentation to comply with procedures, as well as customer documentation.
- Product support for customers and Manufacturing.
- Working closely with HW Engineering, other SW engineering and other disciplines within Abaco.
The role requires both HW and SW capabilities. The HW capabilities require the engineer to fully understand the operation of the HW. This is achieved by analysis of schematics, component data sheets and discussions with HW engineers. The Boards typically form part of systems connected via Industry standard backplane interconnect technology (VME, VPX, CPCI).
Software is written in "C" language mainly. Several compilers/cross compilers are used to generate code for the appropriate platforms. Some assembly language is also required for low level operations.
Source code is managed via source code repository and is regularly verified using static code analysis tools and code peer reviews.
Working in an Agile environment where multi-discipline teams are operating in tight collaboration, you will be exposed to all aspects of the design, testing and validation of our products. Continuous Improvement is at the heart of our culture and everyone is encouraged to find new ways of pushing the boundaries and to innovate.
- Develop and maintain embedded software, written in C and assembler.
- Follow company design procedures relating to the development of software.
- Use Continuous Integration and Static Analysis tools to improve code quality, detect and correct bugs quicker.
- Provide customer support with documentation to support the software product.
- Communicate status to key stakeholders in a timely and professional fashion.
- Participate in the continuous improvement of Software Development Processes.
Qualifications / requirements:
- A strong understanding of "C" and assembly programming.
- Experience of writing software to test computer systems,
- Experience with several compilers/cross compilers build environments, such as GCC
- A strong understanding of computer architectures and hardware design. With knowledge of one of the following: Intel Architecture (i7), NXP (Freescale) T-series, P-series, PowerPC or ARM.
- Strong problem-solving and creative, solution-building skills.
- Ability to work successfully in a team environment with Strong verbal and written skills
- Knowledge of modern Real-Time Operating Systems
- Knowledge of Linux, as a software development environments.
Previous experience with using software tools such as:
- source code repositories (Perforce, Git)
- source code analysis tools (Klocwork)
- collaborative tools (Atlassian toolset, JIRA, Confluence)
- continuous integration server, like Jenkins
Awareness of Agile / Scrum methodologies.
Awareness of DO-178B/C