Senior Embedded Firmware Engineer
Role details
Job location
Tech stack
Job description
- Firmware Development of new and existing product: Writing efficient code in C/C++ or Assembly Language for microcontrollers and processors to control hardware
- Hardware-Software Integration: Interpreting hardware schematics and data sheets to develop low-level drivers (Bare Metal and Linux), bootloaders, and peripheral drivers (GPIO, ADCs, Timers, UART, I2C, SPI, DMA, USB).
- Debugging and Troubleshooting: Using diagnostic tools like logic analysers, oscilloscopes, and JTAG to diagnose and resolve complex system bugs
- System Optimization: Improving firmware performance, memory usage, and power consumption for resource-constrained devices
- Maintenance: Developing and maintaining software technical documentation, managing source code with Git, and providing product updates
- Automated Build Systems: Use of CI/CD Pipelines (e.g. Gitlab)
- Documentation and Testing: Contributing to End-User technical documentation, functional specifications, and conducting unit testing and validation
Requirements
Do you have experience in Unit testing?, * Comprehensive firmware design experience
-
C/C++ programming
-
Low level experience with Linux Operating System, Drivers, Kernel, U-BOOT, Device trees
-
Experience with Bare Metal coding on PIC/ARM/Intel designs
-
Processor/SPI/I2C/DMA/DDR/FLASH/eMMC bare metal development.
-
Excellent knowledge of high and low communications methods, e.g. TCP/IP, HTTP, SPI, I2C
-
Low level experience with Real Time Operating Systems
-
Use of schematics, oscilloscopes, data and logic analysers
-
Hands on hardware debugging
-
Multiprocess/Multithreaded development
-
Documenting development and processes
-
Software Testing/TDD
-
Degree or equivalent level qualification in relevant discipline
-
To be self-motivated and work with minimal supervision
-
Independent, self-starter who is also happy to be part of a team
-
Good interpersonal and communication skills
-
Desire to solve complex problems
-
Committed to efficient development processes
Advantageous Skills:
- Windows development
- Experience with Xilinx/FGPA toolchains for software development
- Low level experience with FreeRTOS
- Object-Orientated Design
- Assembly Language
- RESTful API/API development
- Web Development (JavaScript, TypeScript, HTML5, CSS, React)
- Distributed software development
- CI/CD development approach
- Git/SVN
- Broadcast or Pro AV product experience
- Audio and video protocols
- Human Computer Interaction
- Control System experience
Benefits & conditions
Pulled from the full job description
- Employee assistance programme
- Company pension