Design, code, and debug C/C++ firmware for embedded Linux or RTOS platforms on ARM microcontrollers and processors.
Implement and test peripherals (e.g., I2C, SPI, UART), communication protocols, and core system features following best practices.
Develop, execute, and document unit, integration, and system-level tests.
Use tools such as JTAG, oscilloscopes, and logic analyzers to diagnose and resolve hardware-software issues.
Partner with hardware engineers during board bring-up, verify peripherals, and integrate drivers.
Develop and maintain manufacturing test tools, resolve firmware issues during production, and collaborate with operations teams to optimize deployment processes.
Create technical documentation, track tasks using Git and project management tools, and stay updated on embedded system best practices.
Requirements
Bachelor’s degree in Electrical Engineering, Computer Engineering, Computer Science, or related fields.
Proficiency in C/C++ for bare-metal or RTOS environments.
Knowledge of embedded systems concepts, microcontrollers (e.g., ARM Cortex-M), interrupts, memory management, and real-time constraints.
Familiarity with communication protocols (e.g., I2C, SPI, UART) and basic lab equipment for debugging.
Experience with version control (e.g., Git).
Experience with RTOS (e.g., FreeRTOS, Zephyr) and Linux OS is preferred.
Knowledge of wireless protocols (e.g., Bluetooth, Wi-Fi) and hands-on hardware design experience is preferred.
Familiarity with production processes, manufacturing test development, or automation scripting (e.g., Python, Bash) is preferred.
Prior internship or project experience in firmware development is preferred.