What are you building with yours?

I paid a visit to my local electronics hobbyist store to find something fun to complement my HiFive1 board today. I ended up buying a SparkFun ESP8266 WiFi shield [1] as I’ve been thoroughly spoiled by the connectivity offered by the RPi3. As it interfaces over the UART it’s not going to be the world’s fastest IP device but it’ll suffice for wireless control and data logging.

I had a bit of success in hacking SparkFun’s Arduino library to get it to run on the HiFive1 but the ESP8266 IC is getting alarmingly hot. I don’t know yet whether that’s a result of an electrical characteristic of either board, indicative of a FUBAR’d shield or just to be expected when pushing WiFi-levels of power over such a small IC …

If I get a bit more time I’m hoping to have the safety of the shield on the HiFive1 verified and the interfacing code moved out of Arduino-land and into native-C by the end of the week.

I’m not exactly sure where I’m going with this but the combination of PWM and wireless connectivity may encourage me to pull some of my old robotics kit out the closet.

[1] https://www.sparkfun.com/products/13287

1 Like

I haven’t messed with an Arduino or anything of that nature before, so the HiFive1 is exciting and new territory for me in that regard. I’m thinking about getting a wifi shield as well. I’m also thinking about playing with an audio shield. One other project that I’m thinking I might want to do is try to make a little quadcopter drone out of it, I have a friend interested in things like RC planes/copters/etc. and I work at a company that uses drones for agricultural purposes, so it seems pretty fitting!

The main reason I got the HiFive1 however is due to it being an actual RISC-V chip! I’m doing a programming show where I hope to do a lot of RISC-V related stuff: http://riscy.tv

Today I played around with using the Freedom SDK to program it, the gpio demo program worked, I’ll need to read the spec regarding the interrupt stuff to fully understand it though! I also tried the hello world example, I was surprised to see printf, is the entire C standard library ported? Does the compiler support soft floating point? There is no hardware floating-point on this chip if I understand “RV32IMAC” correctly…
The hello world failed to compile for me though due to complaints about missing interrupt handlers, I’m not sure what is going on there?

Everything I did on stream today is available to watch here for those interested (I recommend youtube’s 2x speed setting):

1 Like

Was it handle_m_ext_interrupt() and handle_m_time_interrupt()? In bsp/env/freedom-e300-hifive1/init.c you’ll find:

#ifdef USE_PLIC
extern void handle_m_ext_interrupt();
#endif

#ifdef USE_M_TIME
extern void handle_m_time_interrupt();
#endif

For my hello_world I added those functions but left them empty to play with later. Otherwise you can probably just remove the defines from the Makefiles.

1 Like

Ah, yep that’s what the problem was, thanks for the info!

1 Like

Yeah you have to do “software_clean” before building a different PROGRAM target for this reason. PRs to improve our makefiles happily accepted!

1 Like

Just for the makefiles? :slight_smile: