Job Description & Skill Requirement:
• The Embedded software team builds the foundational software that powers next-generation machines and power systems. You will design and implement low-level software for Electronic Control Units (ECUs), related modules, and edge devices-owning drivers, BSPs, bootloaders, and communication stacks that keep our machines safe, connected, and reliable in demanding environments.
What You''ll Do
• Device Drivers & BSP
• Design, implement, and optimize drivers for peripherals (GPIO, SPI, I²C, UART, ADC/DAC, PWM, Timers, Watchdog, Flash/NVM).
• Bring-up new hardware: bootloaders, memory maps, linker scripts, startup code, and board initialization.
• Develop and maintain Board Support Packages (BSP) for MCU/SoC platforms (ARM Cortex-M/A or similar).
Real-Time Software
• Build RTOS-based applications (task scheduling, ISR design, queues/semaphores, timing analysis).
• Integrate and tune RTOS components (e.g., FreeRTOS, SafeRTOS, QNX, Zephyr, or similar) for deterministic behavior.
Networking & Protocols
• Implement, debug, and validate CAN / J1939 / ISO-TP / UDS stacks and application layers.
• Develop Ethernet features (L2/L3 basics, UDP/TCP/IP, diagnostics, and time-sensitive networking where applicable).
• Support diagnostics, bootloading over CAN/Ethernet, and in-field update infrastructure.
• Linux & Platform Integration
• Build Linux-based embedded systems (Yocto/Buildroot), kernel configuration, drivers, and user-space daemons.
• Integrate middleware and services for telemetry, logging, and OTA where applicable.
• Software Quality & Safety
• Apply MISRA-C/C++ and static analysis (e.g., Coverity, PC-Lint).
• Develop unit/functional tests, and automate regression on benches.
• Collaborate with systems, electrical, validation, and manufacturing teams to deliver robust product-grade software.
Tools & Processes
• Use oscilloscopes, logic analyzers, CAN analyzers, and protocol tools.
• Participate in code reviews, traceability, and documentation aligned to safety and quality standards.
Required Qualifications
• Bachelor''s or Master''s in Electrical/Electronics/Computer Engineering or related field.
• 3+ years of professional embedded development experience (strong entry level candidates with relevant internships/projects encouraged).
• Strong proficiency in C and C++ for embedded targets.
• Hands-on experience with CAN (ideally J1939, UDS/ISO 14229, ISO-TP/15765) and Ethernet on embedded platforms.
• Solid knowledge of RTOS concepts (tasks, ISRs, scheduling, timing, memory management).
• Experience with Linux in embedded contexts (driver basics, kernel/user-space integration, or build systems).
• Comfort with microcontroller/SoC internals (interrupts, DMA, clocking, low-power modes, memory maps).
• Proficiency with hardware debugging tools (JTAG/SWD, oscilloscopes, logic analyzers, CAN tools).
• Version control (Git), build systems (CMake/Make), and CI fundamentals.
• Desired / Nice-to-Have
• AUTOSAR (Classic) concepts and integration; BSW configuration and debugging.
• Bootloaders (CAN/Ethernet/USB), secure boot, and firmware update mechanisms.
• Safety or reliability exposure (ISO 26262 concepts, FMEA, defensive design).
• Scripting for automation (Python, Bash) and test orchestration (pytest/Robot).
• Prior work with off-highway, heavy equipment, industrial or automotive ECUs.