PolarFire SoC Icicle Kit
Overview
The Microchip PolarFire SoC Icicle Kit is a PolarFire SoC FPGA based development board with a Microchip MPFS250T FPGA device. The E51 RISC-V CPU can be deployed on the mpfs_icicle board. More information can be found on the Microchip website.
Hardware
Supported Features
The mpfs_icicle board supports the hardware features listed below.
- on-chip / on-board
- Feature integrated in the SoC / present on the board.
- 2 / 2
-
Number of instances that are enabled / disabled.
Click on the label to see the first instance of this feature in the board/SoC DTS files. -
vnd,foo -
Compatible string for the Devicetree binding matching the feature.
Click on the link to view the binding documentation.
mpfs_icicle/polarfire/e51 target
Type |
Location |
Description |
Compatible |
|---|---|---|---|
CPU |
on-chip |
SiFive E51 Standard Core CPU1 |
|
on-chip |
SiFive U54 Standard Core CPU4 |
||
GPIO & Headers |
on-chip |
||
I2C |
on-chip |
Microchip MPFS I2C Controller2 |
|
Input |
on-board |
Group of GPIO-bound input keys1 |
|
Interrupt controller |
on-chip |
RISC-V CPU interrupt controller5 |
|
on-chip |
SiFive RISC-V Core-Local Interruptor1 |
||
on-chip |
SiFive RISCV-V platform-local interrupt controller1 |
||
LED |
on-board |
Group of GPIO-controlled LEDs1 |
|
MTD |
on-board |
Properties supporting Zephyr spi-nor flash driver (over the Zephyr SPI API) control of serial flash memories using the standard M25P80-based command set2 |
|
Reset controller |
on-chip |
Microchip MPFS Reset Controller (SOFT_RESET_CR, SUBBLK_CLOCK_CR)1 |
|
Serial controller |
on-chip |
||
SPI |
on-chip |
Microchip Polarfire SOC QSPI controller2 |
|
on-chip |
Microchip Polarfire SOC SPI controller1 |
||
SRAM |
on-chip |
Generic on-chip SRAM2 |
|
System controller |
on-chip |
System Controller Registers R/W1 |
|
Timer |
on-chip |
RISC-V Machine Timer1 |
mpfs_icicle/polarfire/u54 target
Type |
Location |
Description |
Compatible |
|---|---|---|---|
CPU |
on-chip |
SiFive E51 Standard Core CPU1 |
|
on-chip |
SiFive U54 Standard Core CPU4 |
||
GPIO & Headers |
on-chip |
||
I2C |
on-chip |
Microchip MPFS I2C Controller2 |
|
Input |
on-board |
Group of GPIO-bound input keys1 |
|
Interrupt controller |
on-chip |
RISC-V CPU interrupt controller5 |
|
on-chip |
SiFive RISC-V Core-Local Interruptor1 |
||
on-chip |
SiFive RISCV-V platform-local interrupt controller1 |
||
LED |
on-board |
Group of GPIO-controlled LEDs1 |
|
MTD |
on-board |
Properties supporting Zephyr spi-nor flash driver (over the Zephyr SPI API) control of serial flash memories using the standard M25P80-based command set2 |
|
Reset controller |
on-chip |
Microchip MPFS Reset Controller (SOFT_RESET_CR, SUBBLK_CLOCK_CR)1 |
|
Serial controller |
on-chip |
||
SPI |
on-chip |
Microchip Polarfire SOC QSPI controller2 |
|
on-chip |
Microchip Polarfire SOC SPI controller1 |
||
SRAM |
on-chip |
Generic on-chip SRAM2 |
|
System controller |
on-chip |
System Controller Registers R/W1 |
|
Timer |
on-chip |
RISC-V Machine Timer1 |
mpfs_icicle/polarfire/u54/smp target
Type |
Location |
Description |
Compatible |
|---|---|---|---|
CPU |
on-chip |
SiFive E51 Standard Core CPU1 |
|
on-chip |
SiFive U54 Standard Core CPU4 |
||
GPIO & Headers |
on-chip |
||
I2C |
on-chip |
Microchip MPFS I2C Controller2 |
|
Input |
on-board |
Group of GPIO-bound input keys1 |
|
Interrupt controller |
on-chip |
RISC-V CPU interrupt controller5 |
|
on-chip |
SiFive RISC-V Core-Local Interruptor1 |
||
on-chip |
SiFive RISCV-V platform-local interrupt controller1 |
||
LED |
on-board |
Group of GPIO-controlled LEDs1 |
|
MTD |
on-board |
Properties supporting Zephyr spi-nor flash driver (over the Zephyr SPI API) control of serial flash memories using the standard M25P80-based command set2 |
|
Reset controller |
on-chip |
Microchip MPFS Reset Controller (SOFT_RESET_CR, SUBBLK_CLOCK_CR)1 |
|
Serial controller |
on-chip |
||
SPI |
on-chip |
Microchip Polarfire SOC QSPI controller2 |
|
on-chip |
Microchip Polarfire SOC SPI controller1 |
||
SRAM |
on-chip |
Generic on-chip SRAM2 |
|
System controller |
on-chip |
System Controller Registers R/W1 |
|
Timer |
on-chip |
RISC-V Machine Timer1 |
Programming and debugging
Building
Applications for the mpfs_icicle board configuration can be built as usual
(see Building an Application):
west build -b mpfs_icicle
To build the default SMP capable variant
west build -b mpfs_icicle/polarfire/smp
Flashing
In order to upload the application to the device, you’ll need OpenOCD and GDB with RISC-V support. You can get them as a part of SoftConsole SDK. Download and installation instructions can be found on Microchip’s SoftConsole website.
With the necessary tools installed, you can connect to the board using OpenOCD. To establish an OpenOCD connection run:
sudo LD_LIBRARY_PATH=<softconsole_path>/openocd/bin \
<softconsole_path>/openocd/bin/openocd --command "set DEVICE MPFS" --file \
<softconsole_path>/openocd/share/openocd/scripts/board/microsemi-riscv.cfg
Leave it running, and in a different terminal, use GDB to upload the binary to the board. You can use the RISC-V GDB from a toolchain delivered with SoftConsole SDK.
Here is the GDB terminal command to connect to the device and load the binary:
<softconsole_path>/riscv-unknown-elf-gcc/bin/riscv64-unknown-elf-gdb \
-ex "target extended-remote localhost:3333" \
-ex "set mem inaccessible-by-default off" \
-ex "set arch riscv:rv64" \
-ex "set riscv use_compressed_breakpoints no" \
-ex "load" <path_to_executable>
Debugging
Refer to the detailed overview of Application Debugging.