As the pioneers who introduced RISC-V to the world, SiFive is transforming the future of compute by bringing the limitless potential of RISC-V to the highest performance and most data-intensive applications in the world. SiFive’s unrivaled compute platforms have enabled leading technology companies around the world to innovate, optimize, and deliver the most advanced solutions of tomorrow across every market segment of chip design, including artificial intelligence, machine learning, automotive, datacenter, mobile, and consumer. With SiFive, the future of RISC-V has no limits. For more information, please visit www.sifive.com.
As a Junior Embedded Software Engineer in the Bare Metal software team, you will participate in the development of SiFive’s bare metal embedded firmware, software stacks and associated Software Development Kits (SDK).
This position is a highly visible role since the developed code targets sensitive functions found in SiFive’s RISC-V products. By its design philosophy, RISC-V is highly configurable, and we have several different configurations in our design pipeline, with various combinations of supported instruction sets and with various peripherals and bus interconnect architectures. Developing high quality and robust firmware that can accommodate such variation is a challenging task, to be addressed in this role.
- Develop and document embedded firmware (bare-metal code, drivers, stacks) that works across the whole SiFive products portfolio.
- Participate in porting and enhancing real-time operating systems on 32- and 64-bit RISC-V platforms.
- Develop production-quality software, including testing, documentation, static analysis, and CI/CD/CT.
- Interact with hardware and other software teams to create market-leading products.
- 1+ years of recent experience with embedded firmware development.
- Experience with RTOSes such as FreeRTOS.
- Good understanding of processor and SoC architecture, or a strong desire and ability to learn some.
- Proficiency in C, Python, Linux, and knowledge on how to use embedded development tools such as JTAG and associated debug tools.
- Experience with distributed revision control systems such as git.
- Experience with C++.