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.