Are you an inquisitive, driven, problem-solving embedded software engineer with a range of experience building embedded software for microcontrollers?
Are you used to programming in C++/C, integrating new sensors utilising manufacturer drivers, board bring-up, and able to understand how different open-source packages can be utilised to speed up development?
Do you want to work with cutting-edge technologies and accelerate the development of new products to market?
Do you have demonstrable examples of embedded software you’ve written that shows off your skill working with ARM based microcontrollers to create powerful products?
Then heliguy want to talk to you.
If you have experience working with at least some of these aspects of software development, you’ll be a good fit:
* STM32 microcontroller firmware development (STMCubeIDE, STMCubeMX etc.)
* RTOS (particularly NuttX)
* Experience with U-Boot, Linux Kernel and Buildroot for custom boards.
* Serial communications (I2C, SPI etc.)
* Wireless drivers (ath9k, ath10k, brcmsmac etc.)
You will have an important voice and have the chance to work on some truly innovative products.
Your attitude is what will set you apart at heliguy. We’re looking for driven, inquisitive people who constantly want to learn and can keep up with the fast-paced environment we offer.
Duties
- Embedded Firmware Development: Design, develop, and optimise embedded firmware using C/C++ for ARM-based microcontrollers (e.g., STM32), ensuring high performance and reliability.
- RTOS and Linux Integration: Work on custom ARM boards to utilise RTOS (e.g., NuttX) and develop Linux Kernel modules and drivers for efficient hardware communication.
- Device Communication: Develop robust communication infrastructure using both serial (UART, SPI, I2C) and wireless protocols (Wi-Fi, Bluetooth) for data transmission between devices.
- Machine Learning and Autonomous Systems: Integrate machine learning algorithms (e.g., TensorFlow) into embedded systems for functionalities such as object detection, sensor processing, and autonomous operation.
- Open-Source Software and Custom Development: Identify, modify, and integrate open-source software solutions (e.g., Buildroot, Yocto) to enhance product functionality, and develop custom software where necessary.
- Collaboration and Testing: Work closely with the electronics team to ensure proper system integration, debug both custom and third-party software, and consistently upgrade embedded systems based on feedback.
- Project Leadership: Manage complex projects from conception to deployment, ensuring deadlines are met and the team is aligned.
Skills
- Expert in C/C++ development for embedded systems with a strong portfolio of work. Extensive experience with ARM architecture (STM32) and familiarity with IDEs such as STMCubeIDE and STMCubeMX.
- Linux Kernel and RTOS: Strong experience with Linux Kernel development (e.g., Buildroot, Yocto), device driver integration, and working with real-time operating systems.
- Hardware Integration: Experience working with sensors, GPS modules, IMU, and other embedded peripherals, and managing device tree configurations.
- Machine Learning Integration: Proficiency in frameworks like TensorFlow or PyTorch, integrating ML models into embedded products for enhanced functionality.
- Communication Protocols: Strong knowledge of UART, SPI, I2C, and wireless drivers (e.g., ath9k, ath10k) for effective device communication.
- Version Control and Documentation: Excellent Git management skills for version control and thorough documentation practices to ensure smooth collaboration across the team.
- Problem Solving and Independence: Ability to independently tackle complex technical problems and find creative, innovative solutions.
- Commercial Product Experience: Proven experience shipping embedded systems in commercial products used by end-users.
Personal attributes
- A tenacious, problem-solving attitude and the ability to work autonomously while keeping the wider team informed.
- Passion for the UAV industry, with a strong interest in robotics, machine learning, and embedded system development.
- Excellent communication skills, able to bridge the gap between technical and non-technical stakeholders.
Job Types: Full-time, Permanent
Pay: Up to £65,000.00 per year
Benefits:
* Casual dress
* Company events
* Company pension
* Free parking
* On-site parking
* Store discount
* Work from home
Schedule:
* 8 hour shift
* Day shift
* Monday to Friday
* No weekends
Application question(s):
* Can you explain how you would debug a memory leak in an embedded system with limited resources? What tools or techniques would you use?
* How would you implement communication between different peripherals in an embedded system? Can you walk me through your approach to managing interrupts?
* Describe how you would handle power management in a battery-operated embedded device. What strategies would you use to optimise power consumption?
* In an embedded system with limited flash memory, how would you implement firmware updates? What challenges might you face?
* What considerations would you take into account when writing low-level drivers for a new microcontroller? Can you provide an example from your past experience?
* Embedded systems often face real-time constraints. How would you ensure that a time-sensitive task meets its deadline? What techniques would you use to minimise latency?
* Explain how you would approach designing an embedded system that communicates via I2C and SPI simultaneously. How would you manage potential conflicts or timing issues?
* Can you describe how you ensure software reliability in an embedded system, especially in safety-critical applications? What testing methods or practices do you follow?
Experience:
* C++: 3 years (preferred)
* C: 3 years (preferred)
* Embedded software: 3 years (required)
Work Location: In person
#J-18808-Ljbffr