Role Overview
We are seeking an experienced Embedded Software Engineer to lead board bring-up, Linux kernel customization, and low-level driver development for custom ARM/RISC-V processor boards. You will be responsible for the entire lifecycle of the Board Support Package (BSP) and system optimization on constrained hardware.
Responsibilities
- Perform initial board bring-up on new, custom-designed processor boards (custom ARM/RISC-V).
- Customize, configure, and maintain the Linux kernel, bootloader (U-Boot), and Board Support Package (BSP) for custom hardware.
- Write, debug, and optimize low-level Linux device drivers for on-chip and off-chip peripherals (e.g., I2C, SPI, UART, PCIe, Ethernet, GPIO).
- Develop and maintain Device Tree Source (DTS/DTB) files to map hardware peripherals to Linux drivers.
- Optimize system boot time, memory usage, and performance on constrained custom hardware.
- Troubleshoot complex system crashes, kernel panics, and hardware-software interaction issues using JTAG, oscilloscopes, and logic analyzers.
- Create and maintain custom embedded Linux distributions using Yocto Project or Buildroot.
Requirements
- Bachelor’s or Master’s degree in Electrical Engineering, Computer Engineering, or a related field.
- 3-7+ years of professional experience in embedded Linux software development.
- Strong proficiency in C/C++ programming for embedded systems.
- Scripting experience in Python or Bash.
- Deep understanding of Linux kernel internals, including memory management, interrupts, and concurrency management.
- Ability to read hardware schematics and component datasheets.
- Proficient with Git, GDB, and JTAG debugging tools.
Skills
- C/C++
- Linux Kernel
- Python
- Yocto Project
- ARM/RISC-V