Job Description
Job Title: Senior Embedded Software Engineer
Location: Cambridge, UK (Office-based or Hybrid)
Role Summary
The role involves working on various embedded systems and contributing to the entire software development lifecycle, including a mix of R&D and product development as required.
Strong communication skills are essential, as the role requires close collaboration with FPGA and power electronics engineers to gather code requirements. The position involves working in an agile environment, though certain industrial application projects will require additional process-oriented tasks such as documentation and testing.
Qualifications
* Degree in Computer Science, Electrical Engineering, Electronics, Physics, or a related field.
Essential Skills
* Previous experience in embedded software development, including:
* Full lifecycle involvement: requirements, design, testing, and peer review.
* Proficiency in C (C++ is desirable; otherwise, familiarity with object-oriented concepts and a willingness to learn C++ is acceptable).
* Writing drivers for peripherals such as UART, SPI, I2C, timers, ADCs, and DMA.
* Architecting embedded systems, structuring code, and balancing interrupt handlers with background processes.
* Reading schematics, data sheets, and collaborating with hardware designers.
* Debugging complex issues.
* Understanding synchronization mechanisms in multi-process systems.
* Familiarity with Linux (at least as a user) and common command-line tools, with an appreciation for kernel and user-space divisions and driver types.
* Experience with revision control, change management, and continuous integration systems.
* Basic scripting skills for test tools and build scripts.
* Ability to produce written documentation for industrial application projects.
* Strong interfacing skills within multidisciplinary teams.
Desirable Skills
* Experience writing Linux user-space applications and kernel drivers.
* Familiarity with AMD Xilinx Petalinux or Yocto-based systems.
* Experience developing systems with an RTOS.
* Knowledge of power electronics control, motor drives, and LabVIEW.
* Experience with MATLAB/Simulink, especially auto-code generation features.
* Experience developing PC tools.
This role is an exciting opportunity for an experienced Embedded Software Engineer to work in a dynamic and technical environment, contributing to cutting-edge embedded systems projects.