Embedded Software Engineer
Summary
Develop embedded low-level software and firmware drivers for bare-metal, RTOS, and Linux systems on CPU/GPU platforms. Works with peripherals (UART, I2C, SPI, ADC, CAN, Ethernet, BLE, WiFi) using C/C++ on ARM/MCU architectures.
Job Description:
1. Responsible for the development of embedded low-level software and firmware driver, complete program design, coding and debugging for bare-metal, RTOS and Linux embedded systems based on CPU/GPU platforms.
2. Develop and adapt peripheral drivers, including UART, I2C, SPI, ADC, CAN, Ethernet, BLE, WiFi and other common hardware interface driver debugging and optimization.
3. Participate in embedded software architecture design, module splitting and coding standard formulation, develop reusable, stable and low-power embedded software codes adapted to hardware chip features.
4. Conduct product function iteration, performance optimization, power consumption optimization and stability improvement, troubleshoot and resolve system crash, abnormal reboot, communication failure, timing error and other technical issues.
5. Collaborate with hardware, testing and product teams for joint debugging, functional verification and reliability testing, locate and fix software and hardware compatibility bugs and logical defects.
6. Manage software version iteration and maintenance, deliver complete technical documents including design specifications, interface manuals and debugging documents, and participate in technical reviews.
7. Research new embedded technologies and chip solutions, complete technical pre-research and solution implementation to support product upgrading and iteration.
Job Requirements:
>
1. Bachelor’s degree or above in Electronic Engineering, Computer Science, Microelectronics, Automation or related disciplines.
2. 3+ years of embedded software development experience, proficient in C/C++ embedded programming and familiar with embedded development processes and debugging tools.
3. Experienced in ARM/MCU embedded platform development, skilled in peripheral driver development and debugging with solid low-level programming capabilities.
4. Familiar with at least one embedded operating system such as FreeRTOS, RT-Thread or Linux, proficient in task scheduling, semaphore, message queue and interrupt processing mechanisms.
5. Standard coding habits and strong problem-solving skills, capable of independently troubleshooting software and hardware compatibility issues, performance bottlenecks and system stability risks.
6. Excellent technical documentation skills and cross-team collaboration ability with clear logical thinking and strong sense of responsibility.