boards: riscv: Add Microchip mpfs_icicle board
Adding board support for Microchip's PolarFire SoC Icicle Kit. Signed-off-by: Peter McShane <peter.mcshane@microchip.com>
This commit is contained in:
parent
4cf45f4770
commit
1a547fee6a
10 changed files with 176 additions and 0 deletions
2
boards/riscv/mpfs_icicle/CMakeLists.txt
Normal file
2
boards/riscv/mpfs_icicle/CMakeLists.txt
Normal file
|
@ -0,0 +1,2 @@
|
|||
# SPDX-License-Identifier: Apache-2.0
|
||||
zephyr_library_include_directories(${ZEPHYR_BASE}/drivers)
|
9
boards/riscv/mpfs_icicle/Kconfig.board
Normal file
9
boards/riscv/mpfs_icicle/Kconfig.board
Normal file
|
@ -0,0 +1,9 @@
|
|||
# Copyright (c) 2021-2022 Microchip Technology Inc
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
config BOARD_MPFS_ICICLE
|
||||
bool "Microsemi PolarFire SoC ICICLE kit"
|
||||
depends on SOC_MPFS
|
||||
select 64BIT
|
||||
select SCHED_IPI_SUPPORTED
|
||||
select CPU_HAS_FPU_DOUBLE_PRECISION
|
6
boards/riscv/mpfs_icicle/Kconfig.defconfig
Normal file
6
boards/riscv/mpfs_icicle/Kconfig.defconfig
Normal file
|
@ -0,0 +1,6 @@
|
|||
# Copyright (c) 2020-2021 Microchip Technology Inc
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
config BOARD
|
||||
default "mpfs_icicle"
|
||||
depends on BOARD_MPFS_ICICLE
|
4
boards/riscv/mpfs_icicle/board.cmake
Normal file
4
boards/riscv/mpfs_icicle/board.cmake
Normal file
|
@ -0,0 +1,4 @@
|
|||
# SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
set(SUPPORTED_EMU_PLATFORMS renode)
|
||||
set(RENODE_SCRIPT ${CMAKE_CURRENT_LIST_DIR}/support/mpfs250t.resc)
|
66
boards/riscv/mpfs_icicle/doc/index.rst
Normal file
66
boards/riscv/mpfs_icicle/doc/index.rst
Normal file
|
@ -0,0 +1,66 @@
|
|||
.. _mpfs_icicle:
|
||||
|
||||
Microchip mpfs_icicle
|
||||
#####################
|
||||
|
||||
Overview
|
||||
********
|
||||
|
||||
The Microchip mpfs_icicle board 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 <https://www.microchip.com/en-us/product/MPFS250T>`_.
|
||||
|
||||
Programming and debugging
|
||||
*************************
|
||||
|
||||
Building
|
||||
========
|
||||
|
||||
Applications for the ``mpfs_icicle`` board configuration can be built as usual
|
||||
(see :ref:`build_an_application`):
|
||||
|
||||
.. zephyr-app-commands::
|
||||
:board: mpfs_icicle
|
||||
:goals: build
|
||||
|
||||
|
||||
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
|
||||
<https://www.microchip.com/en-us/products/fpgas-and-plds/fpga-and-soc-design-tools/programming-and-debug/softconsole>`_.
|
||||
|
||||
With the necessary tools installed, you can connect to the board using OpenOCD.
|
||||
To establish an OpenOCD connection run:
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
sudo LD_LIBRARY_PATH=<softconsole_path>/openocd/bin \
|
||||
<softconsole_path>/openocd/bin/openocd --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:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
<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 :ref:`application_debugging`.
|
27
boards/riscv/mpfs_icicle/mpfs_icicle.dts
Normal file
27
boards/riscv/mpfs_icicle/mpfs_icicle.dts
Normal file
|
@ -0,0 +1,27 @@
|
|||
/*
|
||||
* Copyright (c) 2020-2021 Microchip Technology Inc
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
/dts-v1/;
|
||||
#include <mpfs-icicle.dtsi>
|
||||
|
||||
/ {
|
||||
model = "Microchip PolarFire-SoC Icicle Kit";
|
||||
compatible = "microchip,mpfs-icicle-kit", "microchip,mpfs";
|
||||
aliases {
|
||||
};
|
||||
|
||||
chosen {
|
||||
zephyr,console = &uart0;
|
||||
zephyr,shell-uart = &uart0;
|
||||
zephyr,sram = &sram1;
|
||||
};
|
||||
};
|
||||
|
||||
&uart0 {
|
||||
status = "okay";
|
||||
current-speed = <115200>;
|
||||
clock-frequency = <150000000>;
|
||||
};
|
11
boards/riscv/mpfs_icicle/mpfs_icicle.yaml
Normal file
11
boards/riscv/mpfs_icicle/mpfs_icicle.yaml
Normal file
|
@ -0,0 +1,11 @@
|
|||
identifier: mpfs_icicle
|
||||
name: Microchip PolarFire ICICLE kit
|
||||
type: mcu
|
||||
arch: riscv64
|
||||
toolchain:
|
||||
- zephyr
|
||||
ram: 3840
|
||||
testing:
|
||||
ignore_tags:
|
||||
- net
|
||||
- bluetooth
|
11
boards/riscv/mpfs_icicle/mpfs_icicle_ddr.overlay
Normal file
11
boards/riscv/mpfs_icicle/mpfs_icicle_ddr.overlay
Normal file
|
@ -0,0 +1,11 @@
|
|||
/*
|
||||
* Copyright (c) 2020-2021 Microchip Technology Inc
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
/ {
|
||||
chosen {
|
||||
zephyr,sram = &sram1;
|
||||
};
|
||||
};
|
23
boards/riscv/mpfs_icicle/mpfs_icicle_defconfig
Normal file
23
boards/riscv/mpfs_icicle/mpfs_icicle_defconfig
Normal file
|
@ -0,0 +1,23 @@
|
|||
# Copyright (c) 2020-2021 Microchip Technology Inc
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
CONFIG_SOC_SERIES_RISCV64_MIV=y
|
||||
CONFIG_SOC_MPFS=y
|
||||
CONFIG_MPFS_HAL=n
|
||||
CONFIG_BASE64=y
|
||||
CONFIG_INCLUDE_RESET_VECTOR=y
|
||||
CONFIG_BOARD_MPFS_ICICLE=y
|
||||
CONFIG_NO_OPTIMIZATIONS=y
|
||||
CONFIG_CONSOLE=y
|
||||
CONFIG_SERIAL=y
|
||||
CONFIG_UART_CONSOLE=y
|
||||
CONFIG_UART_NS16550=y
|
||||
CONFIG_RISCV_SOC_INTERRUPT_INIT=y
|
||||
CONFIG_RISCV_HAS_PLIC=y
|
||||
CONFIG_PLIC=y
|
||||
CONFIG_RISCV_MACHINE_TIMER=y
|
||||
CONFIG_GPIO=n
|
||||
CONFIG_XIP=n
|
||||
CONFIG_INIT_STACKS=y
|
||||
CONFIG_SYS_CLOCK_TICKS_PER_SEC=1000
|
||||
CONFIG_FPU=n
|
17
boards/riscv/mpfs_icicle/support/mpfs250t.resc
Normal file
17
boards/riscv/mpfs_icicle/support/mpfs250t.resc
Normal file
|
@ -0,0 +1,17 @@
|
|||
:name: MPFS-ICICLE-KIT
|
||||
:description: This script is prepared to run Zephyr on a PolarFire SoC Icicle Kit RISC-V board.
|
||||
|
||||
$name?="MPFS-ICICLE-KIT"
|
||||
|
||||
using sysbus
|
||||
mach create $name
|
||||
machine LoadPlatformDescription @platforms/boards/mpfs-icicle-kit.repl
|
||||
|
||||
showAnalyzer mmuart0
|
||||
e51 PerformanceInMips 80
|
||||
|
||||
macro reset
|
||||
"""
|
||||
sysbus LoadELF $bin
|
||||
"""
|
||||
runMacro $reset
|
Loading…
Add table
Add a link
Reference in a new issue