Description:
The successful candidate will contribute across the complete embedded software lifecycle—from hardware bring-up and low-level drivers to custom Linux distributions, connected applications, real-time firmware, and edge-ML integration. Target platforms include modern multicore SoCs such as the NXP i.MX 9 family, combining Linux application processors, real-time microcontroller cores, and neural processing accelerators.
How you will do it
- Architect, design, implement, test, and maintain embedded software for automotive telemetry gateways and intelligent battery sensors.
- Develop bare-metal C/C++ firmware for ARM Cortex-M microcontrollers.
- Develop real-time applications using Zephyr RTOS and FreeRTOS, including tasks, synchronization, interrupt handling, timing, and resource management.
- Develop Board Support Packages, boot code, peripheral drivers, and hardware abstraction layers.
- Build and maintain custom embedded Linux distributions using the Yocto Project, including:
- BitBake recipes and layers
- Machine and distribution configurations
- Kernel, bootloader, device-tree, and driver integration
- Package selection, image generation, and update strategies
- Reproducible build and release processes
- Develop Linux userspace services and applications for LTE-connected automotive gateways.
- Develop software for heterogeneous SoCs containing ARM Cortex-A, ARM Cortex-M, and NPU cores.
- Design communication and coordination between Linux, RTOS, and accelerator domains using mechanisms such as RPMsg, OpenAMP, shared memory, IPC, and vendor-provided frameworks.
- Integrate and optimize machine-learning inference workloads for NPUs and other edge accelerators.
- Develop telemetry data acquisition, processing, storage, and secure cloud-communication pipelines.
- Develop firmware for intelligent battery sensors and analog front ends that measure battery voltage, current, and temperature.
- Implement or integrate algorithms supporting battery State of Charge (SOC) and State of Health (SOH) estimation.
- Integrate LTE modems, GNSS receivers, sensors, vehicle networks, and other gateway peripherals.
- Implement robust fault detection, diagnostics, logging, watchdog, recovery, and over-the-air update capabilities.
- Analyze system performance, memory utilization, timing, power consumption, and communication reliability.
- Debug complex hardware/software and multicore issues using oscilloscopes, logic analyzers, JTAG/SWD debuggers, trace tools, and protocol analyzers.
- Produce software requirements, architecture documents, interface specifications, design documentation, and verification evidence.
- Conduct code and design reviews and mentor other embedded software developers.
- Collaborate with systems, hardware, cloud, data science, cybersecurity, validation, manufacturing, and product teams.
- Support prototype development, system integration, vehicle testing, production launch, and field-issue resolution.
What we look for
Required
- Bachelor’s degree in Computer Engineering, Electrical Engineering, Computer Science, or a related discipline.
- 5+ years of professional embedded software development experience.
- Expert-level proficiency in embedded C and C++.
- Strong experience developing bare-metal firmware for ARM Cortex-M microcontrollers.
- Production experience with at least one embedded RTOS, preferably Zephyr or FreeRTOS.
- Strong understanding of:
- Interrupts, exceptions, and boot sequences
- Concurrency and synchronization
- Real-time scheduling and timing analysis
- Memory-mapped I/O and DMA
- Cache coherency and memory barriers
- Linker scripts, startup code, and memory layouts
- Low-power and resource-constrained design
- Embedded Linux development experience on ARM Cortex-A platforms.
- Practical experience creating and maintaining custom Linux images with the Yocto Project.
- Experience with Linux kernel configuration, device trees, bootloaders, system services, and userspace development.
- Experience developing or integrating Linux device drivers and low-level hardware interfaces.
- Experience with common embedded communication interfaces and protocols, including:
- CAN and CAN FD
- UART
- SPI
- I²C
- Ethernet
- USB
- Experience with embedded networking and connected-device protocols such as TCP/IP, TLS, MQTT, HTTPS, or similar technologies.
- Experience using Git, automated builds, static analysis, unit testing, and continuous integration.
- Strong troubleshooting skills across hardware, firmware, operating systems, networking, and applications.
- Ability to translate system requirements into maintainable software architectures and well-tested implementations.
- Strong written and verbal communication skills.