1. System software development experience including kernels, device drivers and board-support packages in Linux.
2. Strong programming experience in C/C++ , as well as hands-on experience debugging complex embedded software.
3. Deep understanding of OS internals scheduler, cache/memory handling, interrupt processing, MMU/SMMU, IPCs, virtualization/hypervisor.
4. Understanding of ARM architecture.
5. Ability to contribute to all phases of software development – bring-up, design and deployment.
6. Working knowledge of sensors, peripherals, and interfaces e.g., SPI/UART/I2C, PCIe, USB, Ethernet etc.
7. Experience in using debugging tools such as JTAG, Trace32 and oscilloscope/Logical Analyzer.(low priority)