C++ based embedded software framework for FE310-G002 (HiFive1 Rev B)


(Alexander Entinger) #1

Hi everyone,

A couple of months ago I bought a HiFive1 Rev B via CrowdSupply as a means to learn about the RISCV architecture. Since I wasn’t to happy with the available software support (and being an embedded engineer myself) I set out to add support for the FE310-G002 to Snowfox, an embedded software framework I’ve been working on for some time.

A few short words on the Snowfox Project: It’s a project I originally started after attending an embedded systems conference in 2018 because I could not stop asking myself two questions:

  1. How could modern firmware development utilizing current versions of C++ look like?
  2. How could well-known and battle-tested enterprise software development methods such as Test-Driven-Design effectively be used in the embedded domain?

I’ve tried to answer those questions in code with the result being the Snowfox Embedded Framework which I’m using to examine how the future of firmware development might look like. Snowfox currently consists of a hardware abstraction layer as well as driver support for various sensors, actuators and communication controllers. I also intend to incorporate industrial communication stacks in the future and have in fact started working on a CANOpen stack.

The Snowfox code base is mostly hardware agnostic, that means the majority of the code base can be both compiled for the host development computer as well as the target microcontroller. This allows for running unit tests even on something as close to the hardware as a GPIO driver.

Support for the FE310 has progressed to a point where you can let the LEDs blink on the HiFive1 Rev B. Support for several other features is not too far from completion … But to be honest: I’m currently using this project mostly to educate myself and learn about RISCV.

I’d love if some owners of HiFive1 Rev B would head over to the Snowfox Github Repository, compile the examples for themselves and see if Snowfox is an embedded framework they would like to use in their own projects. Sufficient interest would be a great motivating factor for me :wink: (working in a vaccuum sucks). I’d love to hear your your opinion and any feedback you’ve got for me!