Embedded Software Engineer

Hong Kong Center for Construction Robotics 

📍 Hong Kong, Hong Kong 🇭🇰

full-time
mid-level
Posted —

Key Skills

C/C++MCURTOSGitUSB

Industry

RoboticsMedical Devices

Job Description

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.