Embedded Software Engineer (Fresher)
Posted Updated
Description
Key responsibilities:
- Design, implement, optimize, and test embedded and low-level system software components for SoCs, including system control firmware, bootloaders, device drivers, and hardware abstraction layers.
- Analyze, design, implement, and test software based on a strong understanding of Linux Kernel, RTOS, firmware architecture, device trees, and low-level system software.
- Develop and optimize low-level system software for AI/NPU-based SoCs, including NPU control, resource management, memory management, data movement, and system-level performance optimization.
- Analyze and optimize memory utilization, memory bandwidth, data movement, DMA, cache behavior, and memory access patterns to improve overall SoC and AI/NPU performance.
- Develop, integrate, and optimize software for high-speed interfaces and interconnects, such as PCIe, UCIe, USB, Ethernet, and other high-bandwidth SoC interfaces.
- Analyze and troubleshoot complex hardware-software interaction issues, including performance bottlenecks, memory bandwidth limitations, interface issues, and system stability problems.
- Contribute to software requirements, architecture, implementation, and validation processes aligned with Automotive SPICE (ASPICE) and Functional Safety standards such as ISO 26262.
- Collaborate closely with the HQ engineering team in Korea for SoC software architecture, development, integration, debugging, and optimization.
Requirements
Qualifications:
- Strong willingness to learn and develop expertise in SoC, AI/NPU, and low-level system software technologies.
- Pursuing or completed a Bachelor's degree in Electrical Engineering, Computer Engineering, or a related field, with less than 2 years of relevant experience.
- Proficiency in English, both written and spoken.
- Strong programming skills in C/C++ and familiarity with Python.
- Fundamental knowledge of embedded systems and ARM-based (Cortex-A, Cortex-M) or RISC-V SoC architectures.
- Understanding of RTOS, Linux Kernel, device drivers, bootloaders, interrupts, DMA, MMU/IOMMU, cache, and memory subsystem concepts.
Preferred Skills and Experience
Candidates with experience or strong technical knowledge in the following areas will be highly preferred:
- AI/NPU Low-Level System Software
- Experience developing low-level software, firmware, runtime, or device drivers for AI accelerators, NPUs, GPUs, DSPs, or other hardware accelerators.
- Understanding of NPU hardware/software interaction, workload execution, resource management, synchronization, and data movement.
- Memory Management & Performance Optimization
- Experience with memory management and memory utilization optimization for SoCs or AI accelerators.
- Knowledge of DRAM bandwidth optimization, DMA, cache optimization, MMU/IOMMU, memory allocation, memory hierarchy, and data movement optimization.
- Experience analyzing and resolving memory bandwidth, latency, and performance bottlenecks is highly desirable.
- High-Speed Interfaces & Interconnects
- Experience with high-speed interfaces or interconnect technologies such as PCIe, UCIe, USB, Ethernet, MIPI, or other high-bandwidth interfaces.
- Experience with device drivers, protocol stacks, link initialization, performance tuning, debugging, and validation for high-speed interfaces is a strong plus.
- Familiarity with communication protocols such as SPI, I2C, I3C, UART, CAN, PCIe, UCIe, USB, Ethernet.
- Experience with debugging and profiling tools such as JTAG debuggers, OpenOCD, Lauterbach Trace32, performance counters, trace tools, or other SoC debugging tools.
- Familiarity with version control and collaborative development tools such as Git, Jira, Confluence, or Bitbucket.
- Experience with SoC bring-up, FPGA/emulation platforms, silicon validation, performance profiling, or hardware-software co-debugging is a plus.