Software Firmware - Full Time

(India) Bangalore, India /
Engineering – Software Engineering /
Full-time
We are working on software to improve the RISC-V ecosystem and help hardware engineers build great RISC-V based systems.

The firmware team is the glue between our hardware teams and our higher-level software teams.  We are responsible for providing enterprise ready RISC-V firmware that brings our product vision to life.  As a firmware engineer on our team, you will develop firmware for both high-performance RISC-V cores and low-power embedded microcontrollers to coordinate sensors, ensure security and privacy, manage power subsystems, and more.

Positions are open for full-time and internship in the areas of functional simulators, emulator bringup, firmware, OS, driver, middle ware, compilers, application performance analysis, competitive benchmarking, debug and performance tuning tools.

You will be learning technical and organizational skills from industry veterans: how to write performant and readable code; how to structure and communicate projects, ideas, and progress; how to work effectively with the Open Source community.

We are big proponents of Open Source and Free software and contribute back our improvements to all the great projects we use.

Responsibilities

    • Developing drivers for various IP blocks in embedded environments and in the Linux kernel.
    • Work with the silicon team to craft specifications for future chips and build software to run on these new chips and boards.
    • Debug real time systems with limited visibility, working hands-on with development boards and lab equipment. 
    • Power-aware scheduling and firmware.
    • Implementing support for industry standards such as DDR, PCIe, CXL, I3C, SPDM, etc.
    • Building RISC-V functional and performance models to simulate workloads.

Requirements

    • C/C++ experience.
    • Rust experience is not necessary, but a plus.
    • Experience in developing low-level drivers and HW bring-up, using test tools and interacting with HW design teams.
    • Familiarity with low-level hardware interfaces, register and interrupt programming, bare-metal software development, clock and power management.
    • Strong embedded SW fundamentals, including knowledge of design and development flows, real-time constraints, concurrency, and multi-processor systems, caching and virtual memory.
    • Experience with UEFI and ACPI is a plus.
    • Knowledge of VM and emulation environments (Qemu, CrosVM) a plus.
    • Excellent skills in problem solving, written and verbal communication, excellent organization skills, and highly self-motivated.
    • Ability to work well in a team and be productive under aggressive schedules.
Education and Experience
PhD, Master’s Degree or Bachelor’s Degree in technical subject area.