SiFive HiFive1 Rev B Unboxing

About a week ago, the new RISC-V HiFive1 Rev B boards from SiFive came in. The ijsbeer.org team joined in the crowdfunding campaign, and we're super excited to work with our boards. At today's AUGH, Anthony Russell-Smith and Rob Crowther (weilawei) took a look at the SiFive HiFive1 Rev B.

For datasheets and documentation, see the HiFive1 Rev B page on the Bare Metal Wiki.

CrowdSupply HiFive1 Rev B packing slip

We ordered two boards the moment we got the announcement.

We bought two boards at the early-bird price of $49 apiece. They're currently available for $59 each.

SiFive HiFive1 Rev B Development Kit

SiFive Freedom Everywhere FE310-G002

  • SiFive E31 RISC-V CPU
  • RV32IMAC
  • 16KB L1 Instruction Cache
  • 16KB Data SRAM Scratchpad
  • Hardware Multiply and Divide
  • Flexible Clock Generation with on-chip oscillators and PLLs
  • 2x UARTs
  • 1x QSPI
  • 1x SPI
  • PWMs
  • GPIOs
  • Always On Domain

Memory and Features

HiFive1 Rev B boxes

Nice packaging on the outside. They're smaller than we expected.

The packaging is pretty spiffy, but there's no good way to re-seal the boxes, which are closed by two small adhesive film dots.

HiFive1 Rev B specs on the back of the boxes

You're getting the CPU, Flash, an ESP32, and a Cortex®-M4. Note the lack of DRAM and L2 caches.

Anti-static zip-lock bag and quick start card

There's a tiny anti-static bag with the board inside and a quickstart card.

The board comes packaged in a correspondingly tiny zip-lock-style bag.

QR code on the quickstart card and top of HiFive1 Rev B board

Clockwise from top-left: Freedom Everywhere FE310-G002, ESP32-SOLO-1 under an EMI shield, 2x5-pin 1.54mm pin-pitch JTAG header, NXP MK22FN128VLH10 ARM® Cortex®-M4 Kinetis K20 32-bit microcontroller, and 4 MB ISSI IS25LP032D Flash

There's a link and QR code to http://l.ead.me/bb5Xv2 which redirects to https://www.sifive.com/go/hifive1-revb-getting-started and from there to a PDF of the HiFive1 Getting Started Guide.

Bottom side of the HiFive1 Rev B

Nice and traditional with no components solder-side.

The board is tiny: 6.8cm x 5.1cm! It has an attractive black solder mask with clean, precise silkscreening. This is a quality board, with everything well-soldered, neatly aligned, and oriented. One downside of it being so tiny is the 1.54mm pin-pitch 2x5-pin JTAG connector in place of the more usual 2.54mm pin-pitch one. We don't have any connectors quite that size on hand.

The HiFive1 Rev B running the preloaded RBG LED demo

The RGB LED on the HiFive1 Rev B is very bright.

Comparison shot of HiFive1 Rev B, ATmega32, and Raspberry Pi 3 B+ in a Miuzei case

The HiFive1 Rev B is built to the same form factor as an Arduino.

In this comparison shot of the HiFive1 Rev B, you can see that it's a bit smaller than a Raspberry Pi 3 B+ in a Miuzei case and similar in size to an ATmega32 you might find on an Arduino board.

SiFive Freedom Everywhere CPU markings: FE310-G002 621.1 1907

The SiFive Freedom Everywhere FE310-G002 SoC containing a SiFive E31 RISC-V core. Ours are both marked FE310-G002 621.1 1907.

4 MB ISSI IS25LP032D Flash

The Flash chip is a 4 MB ISSI IS25LP032D module.

NXP MK22FN128VLH10 32-bit microcontroller

The HiFive1 Rev B includes an NXP MK22FN128VLH10 32-bit microcontroller with 128KB of Flash.

The board includes an NXP MK22FN128VLH10, an ARM® Cortex®-M4 Kinetis K20 32-bit microcontroller running at 100MHz with 128KB of Flash.

Esspressif ESP-SOLO-1 32-bit microcontroller

The WiFi and Bluetooth chip is an Esspressif ESP32-SOLO-1 32-bit microcontroller with 520 KiB SRAM. The QR code says 053205201901002301905001C3F0ESP0V301.

We're using a Raspberry Pi 3 B+ to talk to the HiFive1 Rev B over the MicroUSB port. This is managed by the NXP MK22FN128VLH10. The first USB device presented, /dev/ttyACM0 unless already assigned, provides a serial connection (115200/8/N/1) to the FE310-G002, displaying the SiFive shield logo on boot. (Note that the timestamps in the left column are from our terminal software.)

[15:39:33:262] <0x1b>[1F<0x1b>[0J<0x1b>[?25h<0x1b>[0;39;49mBench Clock Reset Complete␍␊
[15:39:33:277] ␍␊
[15:39:33:277] ATE0-->ATE0␍␊
[15:39:33:461] OK␍␊
[15:39:33:461] AT+BLEINIT=0-->OK␍␊
[15:39:33:491] AT+CWMODE=0-->OK␍␊
[15:39:33:706] ␍␊
[15:39:33:706] ␍␊
[15:39:33:706] ␍␊
[15:39:33:706]                   SIFIVE, INC.␍␊
[15:39:33:706] ␍␊
[15:39:33:706]            5555555555555555555555555␍␊
[15:39:33:706]           5555                   5555␍␊
[15:39:33:706]          5555                     5555␍␊
[15:39:33:723]         5555                       5555␍␊
[15:39:33:723]        5555       5555555555555555555555␍␊
[15:39:33:723]       5555       555555555555555555555555␍␊
[15:39:33:846]      5555                             5555␍␊
[15:39:33:846]     5555                               5555␍␊
[15:39:33:846]    5555                                 5555␍␊
[15:39:33:846]   5555555555555555555555555555          55555␍␊
[15:39:33:846]    55555           555555555           55555␍␊
[15:39:33:846]      55555           55555           55555␍␊
[15:39:33:846]        55555           5           55555␍␊
[15:39:33:846]          55555                   55555␍␊
[15:39:33:846]            55555               55555␍␊
[15:39:33:846]              55555           55555␍␊
[15:39:33:846]                55555       55555␍␊
[15:39:33:846]                  55555   55555␍␊
[15:39:33:846]                    555555555␍␊
[15:39:34:025]                      55555␍␊
[15:39:34:025]                        5␍␊
[15:39:34:025] ␍␊
[15:39:34:025] ␍␊
[15:39:34:025]       Welcome to the SiFive HiFive1 Rev B!␍␊

The second USB device presented, /dev/ttyACM1, provides a serial connection (115200/8/N/1) to the ESP32-SOLO-1.

[21:33:10:186] ets Jun600:22:57␍␊
[21:33:10:186] ␍␊
[21:33:10:186] rst:0x1 (POWERON_RESET),boot:0x12 (SPI_FAST_FLASH_BOOT)␍␊
[21:33:10:205] configsip: 0, SPIWP:0xee␍␊
[21:33:10:205] clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00␍␊
[21:33:10:205] mode:DIO, clock div:2␍␊
[21:33:10:205] load:0x3fff0018,len:4␍␊
[21:33:10:205] load:0x3fff001c,len:5552␍␊
[21:33:10:205] ho 0 tail 12 room 4␍␊
[21:33:10:357] load:0x40078000,len:0␍␊
[21:33:10:357] load:0x40078000,len:13756␍␊
[21:33:10:357] entry 0x40078fb4␍␊
[21:33:10:357] <0x1b>[0;32m3) boot: ESP-IDF v3.0.1 2nd stage bootloader<0x1b>[0m␍␊
[21:33:10:357] <0x1b>[0;32mI (30) boot: compile time 15:50:46<0x1b>[0m␍␊
[21:33:10:357] <0x1b>[0;32mI (31) boot: Enabling RNG early entropy source...<0x1b>[0m␍␊
[21:33:10:357] <0x1b>[0;32mI (35) boot: SPI Speed      : 40MHz<0x1b>[0m␍␊
[21:33:10:357] <0x1b>[0;32mI (39) boot: SPI Mode       : DIO<0x1b>[0m␍␊
[21:33:10:357] <0x1b>[0;32mI (43) boot: SPI Flash Size : 4MB<0x1b>[0m␍␊
[21:33:10:357] <0x1b>[0;32mI (47) boot: Partition Table:<0x1b>[0m␍␊
[21:33:10:357] <0x1b>[0;32mI (51) boot: ## Label            Usage          Type ST Offset   Length<0x1b>[0m␍␊
[21:33:10:486] <0x1b>[0;32mI (58) boot:  0 phy_init         RF data          01 01 0000f000 00001000<0x1b>[0m␍␊
[21:33:10:486] <0x1b>[0;32mI (66) boot:  1 otadata          OTA data         01 00 00010000 00002000<0x1b>[0m␍␊
[21:33:10:486] <0x1b>[0;32mI (73) boot:  2 nvs              WiFi data        01 02 00012000 0000e000<0x1b>[0m␍␊
[21:33:10:486] <0x1b>[0;32mI (80) boot:  3 at_customize     unknown          40 00 00020000 000e0000<0x1b>[0m␍␊
[21:33:10:486] <0x1b>[0;32mI (88) boot:  4 ota_0            OTA app          00 10 00100000 00180000<0x1b>[0m␍␊
[21:33:10:486] <0x1b>[0;32mI (95) boot:  5 ota_1            OTA app          00 11 00280000 00180000<0x1b>[0m␍␊
[21:33:10:614] <0x1b>[0;32mI (103) boot: End of partition table<0x1b>[0m␍␊
[21:33:10:614] <0x1b>[0;32mI (107) boot: No factory image, trying OTA 0<0x1b>[0m␍␊
[21:33:10:614] <0x1b>[0;32mI (112) esp_image: segment 0: paddr=0x00100020 vaddr=0x3f400020 size=0x205a0 (132512) map<0x1b>[0m␍␊
[21:33:10:614] <0x1b>[0;32mep_image: segment 1: paddr=0x001205c8 vaddr=0x3ffc0000 size=0x031b4 ( 12724) load<0x1b>[0m␍␊
[21:33:10:614] <0x1b>[0;32mI (173) esp_image: segment 2: paddr=0x00123784 vaddr=0x40080000 size=0x00400 (  1024) load<0x1b>[0m␍␊
[21:33:10:614] <0x1b>[0;32mI (175) esp_image: segment 3: paddr=0x00123b8c vaddr=0x40080400 size=0x0c484 ( 50308) load<0x1b>[0m␍␊
[21:33:10:847] <0x1b>[0;32mI (204) esp_image: segment 4: paddr=0x00130018 vaddr=0x400d0018 size=0xde94c (911692) map<0x1b>[0m␍␊
[21:33:10:847] <0x1b>[0;32m2) esp_image: segment 5: paddr=0x0020e96c vaddr=0x4008c884 size=0x02c90 ( 11408) load<0x1b>[0m␍␊
[21:33:10:847] <0x1b>[0;32mI (529) esp_image: segment 6: paddr=0x00211604 vaddr=0x400c0000 size=0x00064 (   100) load<0x1b>[0m␍␊
[21:33:10:847] <0x1b>[0;32mI (539) boot: Loaded app from partition at offset 0x100000<0x1b>[0m␍␊
[21:33:10:847] <0x1b>[0;32mI (540) boot: Disabling RNG early entropy source...<0x1b>[0m␍␊
[21:33:10:847] I (646) ifi: wifi firmware version: bffcf7f␍␊
[21:33:10:847] I (647) wifi: config NVS flash: enabled␍␊
[21:33:11:042] I (647) wifi: config nano formating: disabled␍␊
[21:33:11:042] I (656) wifi: Init dynamic tx buffer num: 32␍␊
[21:33:11:042] I (656) wifi: Init data frame dynamic rx buffer num: 32␍␊
[21:33:11:042] I (656) wifi: Init management frame dynamic rx buffer num: 32␍␊
[21:33:11:042] I (662) wifi: wifi driver task: 3ffe24f8, prio:23, stack:4096␍␊
[21:33:11:042] I (667) wifi: Init static rx buffer num: 10␍␊
[21:33:11:042] I (671) wifi: Init dynamic rx buffer num: 32␍␊
[21:33:11:042] I (675) wifi: wifi power manager task: 0x3ffe7428 prio: 21 stack: 2560␍␊
[21:33:11:042] I (713)ii: mode : null␍␊
[21:33:11:042] <0x1b>[0;31mE (714) HSPI-AT: Cannot get read data address.<0x1b>[0m␍␊
[21:33:11:256] I (715) wifi: mode : sta (3c:71:bf:b4:c3:58) + softAP (3c:71:bf:b4:c3:59)␍␊
[21:33:11:256] I (724) wifi: mode : null␍␊
[21:33:12:306] ets Jun82016 00:22:57␍␊
[21:33:12:310] ␍␊
[21:33:12:310] rst:0x1 (POWERON_RESET),boot:0x12 (SPI_FAST_FLASH_BOOT)␍␊
[21:33:12:410] configsip: 0, SPIWP:0xee␍␊
[21:33:12:410] clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00␍␊
[21:33:12:410] mode:DIO, clock div:2␍␊
[21:33:12:410] load:0x3fff0018,len:4␍␊
[21:33:12:410] load:0x3fff001c,len:5552␍␊
[21:33:12:410] ho 0 tail 12 room 4␍␊
[21:33:12:410] load:0x40078000,len:0␍␊
[21:33:12:410] load:0x40078000,len:13756␍␊
[21:33:12:410] entry 0x40078fb4␍␊
[21:33:12:410] <0x1b>[0;32m30) boot: ESP-IDF v3.0.1 2nd stage bootloader<0x1b>[0m␍␊
[21:33:12:410] <0x1b>[0;32mI (30) boot: compile time 15:50:46<0x1b>[0m␍␊
[21:33:12:410] <0x1b>[0;32mI (30) boot: Enabling RNG early entropy source...<0x1b>[0m␍␊
[21:33:12:410] <0x1b>[0;32mI (35) boot: SPI Speed      : 40MHz<0x1b>[0m␍␊
[21:33:12:410] <0x1b>[0;32mI (39) boot: SPI Mode       : DIO<0x1b>[0m␍␊
[21:33:12:674] <0x1b>[0;32mI (43) boot: SPI Flash Size : 4MB<0x1b>[0m␍␊
[21:33:12:674] <0x1b>[0;32mI (47) boot: Partition Table:<0x1b>[0m␍␊
[21:33:12:674] <0x1b>[0;32mI (51) boot: ## Label            Usage          Type ST Offset   Length<0x1b>[0m␍␊
[21:33:12:674] <0x1b>[0;32mI (58) boot:  0 phy_init         RF data          01 01 0000f000 00001000<0x1b>[0m␍␊
[21:33:12:674] <0x1b>[0;32mI (65) boot:  1 otadata          OTA data         01 00 00010000 00002000<0x1b>[0m␍␊
[21:33:12:674] <0x1b>[0;32mI (73) boot:  2 nvs              WiFi data        01 02 00012000 0000e000<0x1b>[0m␍␊
[21:33:12:674] <0x1b>[0;32mI (80) boot:  3 at_customize     unknown          40 00 00020000 000e0000<0x1b>[0m␍␊
[21:33:12:865] <0x1b>[0;32mI (88) boot:  4 ota_0            OTA app          00 10 00100000 00180000<0x1b>[0m␍␊
[21:33:12:865] <0x1b>[0;32mI (95) boot:  5 ota_1            OTA app          00 11 00280000 00180000<0x1b>[0m␍␊
[21:33:12:865] <0x1b>[0;32mI (103) boot: End of partition table<0x1b>[0m␍␊
[21:33:12:865] <0x1b>[0;32mI (107) boot: No factory image, trying OTA 0<0x1b>[0m␍␊
[21:33:12:865] <0x1b>[0;32mI (112) esp_image: segment 0: paddr=0x00100020 vaddr=0x3f400020 size=0x205a0 (132512) map<0x1b>[0m␍␊
[21:33:12:865] <0x1b>[0;32m) esp_image: segment 1: paddr=0x001205c8 vaddr=0x3ffc0000 size=0x031b4 ( 12724) load<0x1b>[0m␍␊
[21:33:13:052] <0x1b>[0;32mI (173) esp_image: segment 2: paddr=0x00123784 vaddr=0x40080000 size=0x00400 (  1024) load<0x1b>[0m␍␊
[21:33:13:052] <0x1b>[0;32mI (175) esp_image: segment 3: paddr=0x00123b8c vaddr=0x40080400 size=0x0c484 ( 50308) load<0x1b>[0m␍␊
[21:33:13:052] <0x1b>[0;32mI (204) esp_image: segment 4: paddr=0x00130018 vaddr=0x400d0018 size=0xde94c (911692) map<0x1b>[0m␍␊
[21:33:13:052] <0x1b>[0;32m2) esp_image: segment 5: paddr=0x0020e96c vaddr=0x4008c884 size=0x02c90 ( 11408) load<0x1b>[0m␍␊
[21:33:13:052] <0x1b>[0;32mI (529) esp_image: segment 6: paddr=0x00211604 vaddr=0x400c0000 size=0x00064 (   100) load<0x1b>[0m␍␊
[21:33:13:235] <0x1b>[0;32mI (539) boot: Loaded app from partition at offset 0x100000<0x1b>[0m␍␊
[21:33:13:235] <0x1b>[0;32mI (540) boot: Disabling RNG early entropy source...<0x1b>[0m␍␊
[21:33:13:235] I (646) wifi: wifi firmware version: bffcf7f␍␊
[21:33:13:235] I (647) wifi: config NVS flash: enabled␍␊
[21:33:13:235] I (647) wifi: config nano formating: disabled␍␊
[21:33:13:235] I (656) wifi: Init dynamic tx buffer num: 32␍␊
[21:33:13:235] I (656) wifi: Init data frame dynamic rx buffer num: 32␍␊
[21:33:13:235] I (656) wifi: Init management frame dynamic rx buffer num: 32␍␊
[21:33:13:235] I (662) wifi: wifi driver task: 3ffe24f8, prio:23, stack:4096␍␊
[21:33:13:235] I (667) wifi: Init static rx buffer num: 10␍␊
[21:33:13:453] I (671) wifi: Init dynamic rx buffer num: 32␍␊
[21:33:13:453] I (675) wifi: wifi power manager task: 0x3ffe7428 prio: 21 stack: 2560␍␊
[21:33:13:453] I (714) wifi: mode : null␍␊
[21:33:13:453] <0x1b>[0;31mE (716) HSPI-AT: Cannot get read data address.<0x1b>[0m␍␊
[21:33:13:453] I (717) wifi: mode : sta (3c:71:bf:b4:c3:58) + softAP (3c:71:bf:b4:c3:59)␍␊
[21:33:13:453] I (725) wifi: mode : null␍␊
[21:33:13:880] I (1544i: flush txq␍␊
[21:33:13:880] I (1544) wifi: stop sw txq␍␊
[21:33:13:880] I (1545) wifi: lmac stop hw txq␍␊

Sections