summaryrefslogtreecommitdiff
path: root/FreeRTOS/Demo/RISC-V_RV64_PolarFire_SoftConsole/polarfire_hal/boards/icicle-kit-es/platform_config/mpfs_hal_config/mss_sw_config.h
diff options
context:
space:
mode:
Diffstat (limited to 'FreeRTOS/Demo/RISC-V_RV64_PolarFire_SoftConsole/polarfire_hal/boards/icicle-kit-es/platform_config/mpfs_hal_config/mss_sw_config.h')
-rw-r--r--FreeRTOS/Demo/RISC-V_RV64_PolarFire_SoftConsole/polarfire_hal/boards/icicle-kit-es/platform_config/mpfs_hal_config/mss_sw_config.h197
1 files changed, 197 insertions, 0 deletions
diff --git a/FreeRTOS/Demo/RISC-V_RV64_PolarFire_SoftConsole/polarfire_hal/boards/icicle-kit-es/platform_config/mpfs_hal_config/mss_sw_config.h b/FreeRTOS/Demo/RISC-V_RV64_PolarFire_SoftConsole/polarfire_hal/boards/icicle-kit-es/platform_config/mpfs_hal_config/mss_sw_config.h
new file mode 100644
index 000000000..43512a414
--- /dev/null
+++ b/FreeRTOS/Demo/RISC-V_RV64_PolarFire_SoftConsole/polarfire_hal/boards/icicle-kit-es/platform_config/mpfs_hal_config/mss_sw_config.h
@@ -0,0 +1,197 @@
+/*******************************************************************************
+ * Copyright 2019-2021 Microchip FPGA Embedded Systems Solutions.
+ *
+ * SPDX-License-Identifier: MIT
+ *
+ * MPFS HAL Embedded Software
+ *
+ */
+
+/*******************************************************************************
+ *
+ * Platform definitions
+ * Version based on requirements of MPFS MSS
+ *
+ */
+ /*========================================================================*//**
+ @mainpage Sample file detailing how mss_sw_config.h should be constructed for
+ the MPFS MSS
+
+ @section intro_sec Introduction
+ The mss_sw_config.h has the default software configuration settings for the
+ MPFS HAL and will be located at
+ <Project-Name>/src/platform/platform_config_reference folder of the bare
+ metal SoftConsole project. The platform_config_reference is provided as a
+ default reference configuration.
+ When you want to configure the MPFS HAL with required configuration for
+ your project, the mss_sw_config.h must be edited and be placed in the
+ following project directory:
+ <Project-Name>/src/boards/<your-board>/platform_config/mpfs_hal_config/
+
+ @section
+
+*//*==========================================================================*/
+
+
+#ifndef MSS_SW_CONFIG_H_
+#define MSS_SW_CONFIG_H_
+
+/*
+ * MPFS_HAL_FIRST_HART and MPFS_HAL_LAST_HART defines are used to specify which
+ * harts to actually start. The value and the actual hart it represents are
+ * listed below:
+ * value hart
+ * 0 E51
+ * 1 U54_1
+ * 2 U54_2
+ * 3 U54_3
+ * 4 U54_4
+ * Set MPFS_HAL_FIRST_HART to a value greater than 0 if you do not want your
+ * application to start and execute code on the harts represented by smaller
+ * value numbers.
+ * Set MPFS_HAL_LAST_HART to a value smaller than 4 if you do not wish to use
+ * all U54_x harts.
+ * Harts that are not started will remain in an infinite WFI loop unless used
+ * through some other method.
+ * The value of MPFS_HAL_FIRST_HART must always be less than MPFS_HAL_LAST_HART.
+ * The value of MPFS_HAL_LAST_HART must never be greater than 4.
+ * A typical use-case where you set MPFS_HAL_FIRST_HART = 1 and
+ * MPFS_HAL_LAST_HART = 1 is when
+ * your application is running on U54_1 and a bootloader running on E51 loads
+ * your application to the target memory and kicks-off U54_1 to run it.
+ */
+#ifndef MPFS_HAL_FIRST_HART
+#define MPFS_HAL_FIRST_HART 0
+#endif
+
+#ifndef MPFS_HAL_LAST_HART
+#define MPFS_HAL_LAST_HART 4
+#endif
+
+/*
+ * IMAGE_LOADED_BY_BOOTLOADER
+ * We set IMAGE_LOADED_BY_BOOTLOADER = 0 if the application image runs from
+ * non-volatile memory after reset. (No previous stage bootloader is used.)
+ * Set IMAGE_LOADED_BY_BOOTLOADER = 1 if the application image is loaded by a
+ * previous stage bootloader.
+ *
+ * MPFS_HAL_HW_CONFIG is defined if we are a boot-loader. This is a
+ * conditional compile switch is used to determine if MPFS HAL will perform the
+ * hardware configurations or not.
+ * Defined => This program acts as a First stage bootloader and performs
+ * hardware configurations.
+ * Not defined => This program assumes that the hardware configurations are
+ * already performed (Typically by a previous boot stage)
+ *
+ * List of items initialised when MPFS_HAL_HW_CONFIG is enabled
+ * - load virtual rom (see load_virtual_rom(void) in system_startup.c)
+ * - l2 cache config
+ * - Bus error unit config
+ * - MPU config
+ * - pmp config
+ * - I/O, clock and clock mux's, DDR and SGMII
+ * - will start other harts, see text describing MPFS_HAL_FIRST_HART,
+ * MPFS_HAL_LAST_HART above
+ *
+ */
+#define IMAGE_LOADED_BY_BOOTLOADER 0
+#if (IMAGE_LOADED_BY_BOOTLOADER == 0)
+#define MPFS_HAL_HW_CONFIG
+#endif
+
+
+/*
+ * If you are using common memory for sharing across harts,
+ * uncomment #define MPFS_HAL_SHARED_MEM_ENABLED
+ * make sure common memory is allocated in the linker script
+ * See app_hart_common mem section in the example platform
+ * linker scripts.
+ */
+
+#define MPFS_HAL_SHARED_MEM_ENABLED
+
+
+/* define the required tick rate in Milliseconds */
+/* if this program is running on one hart only, only that particular hart value
+ * will be used */
+#define HART0_TICK_RATE_MS 5UL
+#define HART1_TICK_RATE_MS 5UL
+#define HART2_TICK_RATE_MS 5UL
+#define HART3_TICK_RATE_MS 5UL
+#define HART4_TICK_RATE_MS 5UL
+
+/*
+ * Define the size of the Hart Local Storage (HLS).
+ * In the MPFS HAL, we are using HLS for debug data storage during the initial
+ * boot phase.
+ * This includes the flags which indicate the hart state regarding boot state.
+ * The HLS will take memory from top of each stack allocated at boot time.
+ *
+ */
+#define HLS_DEBUG_AREA_SIZE 64
+
+/*
+ * Bus Error Unit (BEU) configurations
+ * BEU_ENABLE => Configures the events that the BEU can report. bit value
+ * 1= enabled, 0 = disabled.
+ * BEU_PLIC_INT => Configures which accrued events should generate an
+ * interrupt to the PLIC.
+ * BEU_LOCAL_INT => Configures which accrued events should generate a
+ * local interrupt to the hart on which the event accrued.
+ */
+#define BEU_ENABLE 0x0ULL
+#define BEU_PLIC_INT 0x0ULL
+#define BEU_LOCAL_INT 0x0ULL
+
+/*
+ * Clear memory on startup
+ * 0 => do not clear DTIM and L2
+ * 1 => Clears memory
+ * Note: If you are the zero stage bootloader, set this to one.
+ */
+#ifndef MPFS_HAL_CLEAR_MEMORY
+#define MPFS_HAL_CLEAR_MEMORY 1
+#endif
+
+/*
+ * Comment out the lines to disable the corresponding hardware support not required
+ * in your application.
+ * This is not necessary from an operational point of view as operation dictated
+ * by MSS configurator settings, and items are enabled/disabled by this method.
+ * The reason you may want to use below is to save code space.
+ */
+//#define SGMII_SUPPORT
+//#define DDR_SUPPORT
+#define MSSIO_SUPPORT
+
+/*
+ * DDR software options
+ */
+
+/*
+ * Debug DDR startup through a UART
+ * Comment out in normal operation. May be useful for debug purposes in bring-up
+ * of a new board design.
+ * See the weakly linked function setup_ddr_debug_port(mss_uart_instance_t * uart)
+ * If you need to edit this function, make another copy of the function in your
+ * application without the weak linking attribute. This copy will then get linked.
+ * */
+//#define DEBUG_DDR_INIT
+//#define DEBUG_DDR_RD_RW_FAIL
+//#define DEBUG_DDR_RD_RW_PASS
+//#define DEBUG_DDR_CFG_DDR_SGMII_PHY
+//#define DEBUG_DDR_DDRCFG
+
+
+/*
+ * The hardware configuration settings imported from Libero project get generated
+ * into <project_name>/src/boards/<your-board>/<fpga-design-config> folder.
+ * If you need to overwrite them for testing purposes, you can do so here.
+ * e.g. If you want change the default SEG registers configuration defined by
+ * LIBERO_SETTING_SEG0_0, define it here and it will take precedence.
+ * #define LIBERO_SETTING_SEG0_0 0x80007F80UL
+ *
+ */
+
+#endif /* USER_CONFIG_MSS_USER_CONFIG_H_ */
+