Bachelor of Science degree in Electrical and Computer Engineering or Computer Engineering required
6+ years of professional experience in embedded software development, with experience level dependent on educational background.
Strong embedded systems knowledge and experience working in embedded control systems and RTOS-based environments.
Proficiency in C and C++ programming languages, including syntax, generally accepted code structure, and object-oriented programming concepts.
Hands-on experience with embedded operating systems such as QNX, ZephyrOS, or similar RTOS platforms.
Experience owning elements of embedded software development using layered architectures and modular design principles.
Practical experience with industry-standard communication protocols including RS-485 (Modbus), SAE J1939 CAN, Ethernet, and USB.
Experience designing software for test, including unit testing, regression testing, board bring-up, and end-of-line production testing.
Experience with co-design, working closely with hardware and circuit design teams to integrate software with embedded hardware.
Experience with release processes, formal code reviews, and walking through workflow and process steps in a structured development environment.
Familiarity with CAN analysis tools such as Vector CANalyzer, CANape, and CANoe.
Familiarity with debuggers and emulators for ARM-based processors and other embedded architectures.
Familiarity with wireless certification requirements for Wi-Fi, Bluetooth, and ISM bands, including experience navigating certification processes.
Experience or familiarity with MATLAB/Simulink model-based code development and integration into embedded software.
Experience with wireless and networking implementations in embedded and IoT environments.
Experience in cloud-connected and IoT systems, including connected device architectures and data flows.
Experience in both sustaining engineering for existing products and new product development (NPD) initiatives.