Overview
Embedded System Engineer
We are seeking a highly motivated and skilled Embedded Systems Engineer to join our dynamic engineering team. In this role, you will be responsible for the end-to-end development of firmware and low-level software for our next-generation ARM-based embedded products running on the Linux operating system. You will play a critical part in designing, implementing, testing, and optimizing the software that brings our hardware to life.
Responsibilities
- Design, develop, debug, and maintain embedded firmware and software in C/C++ for ARM-based processors.
- Port, configure, and build custom Linux distributions (using Yocto Project or Buildroot) for new hardware platforms.
- Develop and optimize Linux kernel drivers, device trees (DTS), and board support packages (BSP) for peripherals such as I2C, SPI, UART, USB, Ethernet, and MMC/SD.
- Implement and debug system-level software, including bootloaders (U-Boot), kernel initialization, and power management.
- Collaborate with hardware engineers during the board bring-up and validation phase for new PCBAs.
- Write clean, well-documented, and maintainable code following best practices.
- Perform system-level debugging using oscilloscopes, logic analyzers, JTAG/SWD debuggers, and kernel debugging tools.
- Create and execute unit tests, integration tests, and validation plans to ensure software quality and reliability.
- Work closely with applications software teams to define hardware-software interfaces and system architecture.
- Participate in code and design reviews to ensure high-quality outcomes.
Required Qualifications
- Bachelor’s or Master’s degree in Computer Engineering, Electrical Engineering, or a related field.
- 3+ years of professional experience in embedded firmware/software development.
- Strong proficiency in C programming for constrained, resource-embedded environments.
- Hands-on experience with ARM Cortex-A/M series architectures and their development ecosystems.
- Proven experience with embedded Linux: kernel configuration, driver development, and device tree.
- Solid understanding of hardware fundamentals and the ability to read electronic schematics and datasheets.
- Experience with low-level communication protocols (e.g., I2C, SPI, UART).
- Familiarity with version control systems, preferably Git.
- Excellent problem-solving and debugging skills.
Preferred Qualifications
- Experience with system build tools like the Yocto Project or Buildroot.
- Knowledge of bootloader customization, specifically U-Boot.
- Proficiency in Python or Shell scripting for automation and testing.
- Experience with real-time operating systems (RTOS) like FreeRTOS or Zephyr, in addition to Linux.
- Understanding of security principles in embedded systems (secure boot, trusted execution environment).
- Experience with wireless technologies (Wi-Fi, Bluetooth, LTE).
- Knowledge of agile development methodologies.