Job Description
Qualifications:
Bachelor’s Degree in Electrical Engineering, Computer Engineering, or related field 5+ years of experience in embedded systems development Proficiency in C++, Python, Linux Knowledge of ARM-based processors (e.g., Cortex-M, Cortex-A series) and their peripherals Ability to design robust and efficient embedded systems, including processor selection, memory interfaces, peripheral integration (I2C, SPI, UART, CAN, Ethernet), and power management strategies Proficiency in reading schematics, understanding PCB layouts, and using lab equipment (oscilloscopes, logic analyzers, multimeters, power supplies) for in-depth debugging and root cause analysis of complex hardware/software interactions Excellent problem-solving and analytical skills Strong communication and interpersonal skills, with the ability to work effectively in a team environment Responsibilities: Design and develop robust and efficient embedded system architectures, including processor selection, memory interfaces, peripheral integration, and power management strategies Collaborate with hardware design teams on schematic capture, PCB layout review, and component selection, ensuring designs meet performance, reliability, and manufacturability requirements Develop, optimize, and debug low-level embedded software in C/C++ for microcontrollers and embedded Linux platforms, including device drivers, bootloaders, firmware, and bare-metal applications Configure, customize, and optimize embedded Linux distributions (e.g., Yocto, Buildroot) for specific hardware platforms, and develop Linux kernel modules and user-space applications Utilize Python for hardware validation, automated testing, data analysis, rapid prototyping, and scripting build/deployment processes Perform in-depth debugging and root cause analysis of complex hardware/software interactions using oscilloscopes, logic analyzers, debuggers (JTAG/SWD), and other lab equipment Develop and execute comprehensive test plans for embedded systems, including functional testing, stress testing, performance benchmarking, and system-level integration testing Create and maintain detailed technical documentation, including design specifications, software architecture documents, test plans, and user manuals Work closely with cross-functional teams including mechanical engineers, software engineers, test engineers, and manufacturing to ensure seamless product development from concept to production Participate in code reviews, promote best practices for embedded software development, and contribute to continuous improvement of engineering processes