1.. zephyr:board:: mpfs_icicle
2
3Overview
4********
5
6The Microchip mpfs_icicle board is a PolarFire SoC FPGA based development board with a Microchip MPFS250T fpga device.
7The E51 RISC-V CPU can be deployed on the mpfs_icicle board.
8More information can be found on the `Microchip website <https://www.microchip.com/en-us/product/MPFS250T>`_.
9
10Programming and debugging
11*************************
12
13Building
14========
15
16Applications for the ``mpfs_icicle`` board configuration can be built as usual
17(see :ref:`build_an_application`):
18
19.. zephyr-app-commands::
20   :board: mpfs_icicle
21   :goals: build
22
23To build the default SMP capable variant
24
25.. zephyr-app-commands::
26   :board: mpfs_icicle/polarfire/smp
27   :goals: build
28
29Flashing
30========
31
32In order to upload the application to the device, you'll need OpenOCD and GDB
33with RISC-V support.
34You can get them as a part of SoftConsole SDK.
35Download and installation instructions can be found on
36`Microchip's SoftConsole website
37<https://www.microchip.com/en-us/products/fpgas-and-plds/fpga-and-soc-design-tools/programming-and-debug/softconsole>`_.
38
39With the necessary tools installed, you can connect to the board using OpenOCD.
40To establish an OpenOCD connection run:
41
42.. code-block:: bash
43
44   sudo LD_LIBRARY_PATH=<softconsole_path>/openocd/bin \
45   <softconsole_path>/openocd/bin/openocd --command "set DEVICE MPFS" --file \
46   <softconsole_path>/openocd/share/openocd/scripts/board/microsemi-riscv.cfg
47
48
49Leave it running, and in a different terminal, use GDB to upload the binary to
50the board. You can use the RISC-V GDB from a toolchain delivered with
51SoftConsole SDK.
52
53Here is the GDB terminal command to connect to the device
54and load the binary:
55
56.. code-block:: console
57
58   <softconsole_path>/riscv-unknown-elf-gcc/bin/riscv64-unknown-elf-gdb \
59   -ex "target extended-remote localhost:3333" \
60   -ex "set mem inaccessible-by-default off" \
61   -ex "set arch riscv:rv64" \
62   -ex "set riscv use_compressed_breakpoints no" \
63   -ex "load" <path_to_executable>
64
65Debugging
66=========
67
68Refer to the detailed overview of :ref:`application_debugging`.
69