Talking about what embedded engineers do can be quite dull. I thought of a better approach: analyzing the job descriptions (JD) for embedded-related positions in major companies to see the current skill requirements for embedded personnel. This is the direction everyone should strive for.
To this end, I chose several typical companies in the field of robotic vision (including autonomous driving) and camera technology for analysis.
The selected companies in the robotic vision field include:
-
DJI: The big brother in the drone industry, the first to apply visual technology on such a large scale in consumer electronics. -
Meituan & NINEBOT: Representative companies in low-speed autonomous driving. -
Pony.ai: A representative company in L4-level autonomous driving. -
Roborock: A representative company in household vacuum robots. -
Horizon Robotics: A representative company in artificial intelligence chips.
-
OPPO: Charge for 5 minutes, talk for 2 hours (not really related to cameras, but this tagline is just too catchy). -
VIVO: Clear even in backlight, illuminating your beauty. -
Xiaomi: Life and death are trivial, if you don’t agree, just fight.
-
Embedded Systems Engineer -
Embedded Systems Architect -
Linux Embedded Software Engineer -
BSP Engineer -
Robotic System Software Development Engineer -
System Development Engineer -
System Software Engineering Expert -
Algorithm Optimization Engineer -
System Performance Engineer -
Application Algorithm Engineer -
Embedded AI Platform Engineer -
System Software Middleware Engineer
-
Resources were really scarce: I once used an MCU with 128 bytes of RAM and had to be meticulous about every byte used; function calls couldn’t be too deep, or else the stack would overflow. -
Real-time performance: Most applications are control-based and need to complete designated tasks within a specified time.
-
Computational performance is never enough: It must be said that the latest computer vision/AI algorithms still can’t run on embedded platforms; hence, when selecting algorithms, we generally choose the best algorithm that can run on the current platform, leading to using as much CPU as available, with CPU usage often maintaining above 90%. -
Memory is never enough: Images consume both space and bandwidth, and a common problem is that the functionality isn’t completed yet, but the memory is full, leading to out-of-memory (OOM) situations. More subtly, memory bandwidth can also be quietly exhausted, slowing down the operation speed. -
Real-time requirements are also high: Although it doesn’t need to maintain jitter within 1ms like real-time control, achieving 30ms is still necessary, or else frames will be dropped. Ensuring real-time performance under high CPU and memory usage is an unprecedented challenge. -
High complexity: Due to the increase in functional complexity, many new high-level bus interfaces and protocol stacks have been introduced, and the scale of the code is also growing, making it increasingly difficult to grasp the overall picture.
-
Programming Skills: As system complexity increases, the requirements for programming skills also rise. -
Processor Architecture: When encountering CPU and memory performance issues, not understanding CPU architecture is like guessing in the dark. -
Operating Systems: Wow, OOM occurred; wow, frames dropped; wow, FLASH writing performance fluctuated; one can only cry while frantically learning about memory management, process scheduling, and file system knowledge. -
Interfaces and Drivers: There are more and more interfaces, and they are getting faster; nowadays, if you don’t understand a dozen interfaces, you won’t understand Xiaomi’s press conference. -
Framework (Middleware): ROS, Camera Pipeline, various protocol stacks; mastering any one of these is not easy. -
Algorithm Optimization: Processor performance is like water in a sponge; with a little twist, you can always squeeze out a bit more. -
Application Programming and Debugging: Multithreading, multiprocessing, multicore, inter-thread communication, inter-process communication, inter-core communication. Yes, it’s that convoluted. -
Hardware Knowledge: How can an embedded engineer play happily with a hardware engineer without a bit of hardware knowledge? -
Others: As a bridging position, there are higher requirements for soft skills.