Embedded Software Engineer
Posted Updated
Key Responsibilities
- Embedded Software Development: Responsible for the development, iteration, and maintenance of embedded software for smart controllers based on MCU series such as STM32, NXP, and Infineon.
- Driver & Application Development: Complete the development and debugging of low-level drivers and various peripheral interface drivers (including CAN, UART, SPI, I2C, PWM, ADC, USB, etc.) to implement upper-layer application logic.
- Hardware-Software Co-design: Participate in hardware selection and hardware-software co-debugging; collaborate with hardware engineers to complete board bring-up, functional validation, and system integration testing.
- Linux Driver Development: Independently complete Linux kernel driver development, porting, and maintenance based on project requirements.
- Technical Documentation: Produce comprehensive technical documentation, including software design schemes, development documents, unit test reports, and mass-production testing specifications.
- Product Lifecycle Support: Track the entire process of prototype testing and mass production; locate and resolve various software issues such as bugs, compatibility bugs, and stability issues.
- Code & Version Control: Use Git/SVN for code version control, standardize code submission and review processes, and continuously optimize code architecture and runtime efficiency.
- Cross-Functional Collaboration: Coordinate requirements with product, testing, and production teams, provide technical solutions, and support on-time project delivery.
Requirements
- Education: Bachelor’s degree or above in Electronic Information, Automation, Computer Science, or related fields.
- Experience: 3+ years of experience in embedded software development.
- Programming Skills: Proficient in C/C++ for embedded development with disciplined coding habits; familiar with common code optimization and memory management techniques.
- MCU Expertise: Highly proficient in STM32 MCU development (experience with Cortex-M4 or Cortex-M7 is highly preferred); adept at using Standard/HAL libraries, and capable of independently setting up and developing projects using Keil MDK and STM32CubeMX.
- Peripheral Communication: Expert-level knowledge of communications and peripheral drivers, including CAN, UART, SPI, I2C, PWM, ADC, USB, MIPI, RGB displays, and motor drives; proven experience in developing peripheral drivers from scratch.
- RTOS Experience: Practical, hands-on project experience with at least one RTOS (e.g., FreeRTOS, RT-Thread, or uCOS), with a deep understanding of task scheduling, semaphores, message queues, and mutexes.
-
Multi-Platform Development:
- Experience in developing and debugging with NXP (i.MX RT, LPC series) or Infineon (TriCore, AURIX series) MCUs.
- Experience in Linux kernel driver development, with proficiency in character device drivers, device tree configuration, interrupts, and platform drivers.
-
Preferred Qualifications:
- Full lifecycle project experience in robotics or medical/nursing device products is highly preferred.
- Familiarity with Git/SVN version control, with practical experience in code reviews, unit testing, and automated testing deployment.