risc-v/mpfs: Add support for Aries M100PFSMVP board

- Add defconfig and board specific files
- Create mpfs/common for code which is shared between MPFS boards.
- Add support for GPIO driven EMMCSD mux.
- Move DDR Libero definitions from arch to boards.

Signed-off-by: Jani Paalijarvi <jani.paalijarvi@unikie.com>
This commit is contained in:
Jani Paalijarvi
2021-10-14 07:29:11 +03:00
committed by Alan Carvalho de Assis
parent 8e42f368ee
commit 6dd4d5de15
34 changed files with 1823 additions and 38 deletions
+6
View File
@@ -32,6 +32,12 @@ config MPFS_DDR_INIT
---help---
Initializes and performs DDR training on the associated DDR memory.
config MPFS_EMMCSD_MUX_GPIO
bool "GPIO driven EMMCSD mux"
default n
---help---
External mux GPIO between e.MMC and SD-card
menu "MPFS Peripheral Support"
# These "hidden" settings determine whether a peripheral option is available
+14 -3
View File
@@ -217,10 +217,13 @@
MPFS_EMMCSD_SRS14_TC_IE)
/* SD-Card IOMUX */
#define LIBERO_SETTING_IOMUX1_CR_SD 0x00000000UL
#define LIBERO_SETTING_IOMUX2_CR_SD 0x00000000UL
#define LIBERO_SETTING_IOMUX6_CR_SD 0x0000001DUL
#ifdef CONFIG_MPFS_EMMCSD_MUX_GPIO
#define LIBERO_SETTING_IOMUX2_CR_SD 0X00BB0000UL
#else
#define LIBERO_SETTING_IOMUX2_CR_SD 0x00000000UL
#endif
#define LIBERO_SETTING_IOMUX6_CR_SD 0X0000001DUL
#define LIBERO_SETTING_MSSIO_BANK4_CFG_CR_SD 0x00080907UL
#define LIBERO_SETTING_MSSIO_BANK4_IO_CFG_0_1_CR_SD 0x08290829UL
#define LIBERO_SETTING_MSSIO_BANK4_IO_CFG_2_3_CR_SD 0x08290829UL
@@ -1350,6 +1353,13 @@ static void mpfs_sdcard_init(struct mpfs_dev_s *priv)
putreg32(LIBERO_SETTING_IOMUX2_CR_SD, MPFS_SYSREG_IOMUX2);
putreg32(LIBERO_SETTING_IOMUX6_CR_SD, MPFS_SYSREG_IOMUX6);
#ifdef CONFIG_MPFS_EMMCSD_MUX_GPIO
/* Select SD-card */
mcinfo("Selecting SD card\n");
mpfs_gpiowrite(MPFS_EMMCSD_GPIO, true);
#else /* CONFIG_ARCH_BOARD_ICICLE_MPFS */
/* With 3.3v we exit from here */
if (priv->jumpers_3v3)
@@ -1370,6 +1380,7 @@ static void mpfs_sdcard_init(struct mpfs_dev_s *priv)
MPFS_SYSREG_4_12_13);
putreg32(1, SDIO_REGISTER_ADDRESS);
#endif
}
/****************************************************************************
+12
View File
@@ -681,6 +681,14 @@ config ARCH_BOARD_ICICLE_MPFS
This is the board configuration for the port of NuttX to the
MicroChip icicle-mpfs board. This board features the RISC-V MPFS.
config ARCH_BOARD_M100PFSEVP_MPFS
bool "Aries M100PFSEVP evaluation platform for MPFS"
depends on ARCH_CHIP_MPFS
select CONFIG_MPFS_EMMCSD_MUX_GPIO if !MPFS_WITH_QEMU
---help---
This is the board configuration for the port of NuttX to the
MicroChip m100pfsevp-mpfs board. This board features the RISC-V MPFS.
config ARCH_BOARD_MAX32660_EVSYS
bool "Maxim Integrated MAX32660-EVSYS"
depends on ARCH_CHIP_MAX32660
@@ -2389,6 +2397,7 @@ config ARCH_BOARD
default "maix-bit" if ARCH_BOARD_MAIX_BIT
default "smartl-c906" if ARCH_BOARD_SMARTL_C906
default "icicle" if ARCH_BOARD_ICICLE_MPFS
default "m100pfsevp" if ARCH_BOARD_M100PFSEVP_MPFS
default "maple" if ARCH_BOARD_MAPLE
default "makerlisp" if ARCH_BOARD_MAKERLISP
default "max32660-evsys" if ARCH_BOARD_MAX32660_EVSYS
@@ -3199,6 +3208,9 @@ endif
if ARCH_BOARD_ICICLE_MPFS
source "boards/risc-v/mpfs/icicle/Kconfig"
endif
if ARCH_BOARD_M100PFSEVP_MPFS
source "boards/risc-v/mpfs/m100pfsevp/Kconfig"
endif
if ARCH_BOARD_RV32M1_VEGA
source "boards/risc-v/rv32m1/rv32m1-vega/Kconfig"
endif
+34
View File
@@ -0,0 +1,34 @@
#############################################################################
# boards/risc-v/mpfs/common/Makefile
#
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements. See the NOTICE file distributed with
# this work for additional information regarding copyright ownership. The
# ASF licenses this file to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance with the
# License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
#
#############################################################################
include $(TOPDIR)/Make.defs
include board/Make.defs
include src/Make.defs
DEPPATH += --dep-path board
DEPPATH += --dep-path src
include $(TOPDIR)/boards/Board.mk
ARCHSRCDIR = $(TOPDIR)$(DELIM)arch$(DELIM)$(CONFIG_ARCH)$(DELIM)src
BOARDDIR = $(ARCHSRCDIR)$(DELIM)board
CFLAGS += $(shell $(INCDIR) "$(CC)" $(BOARDDIR)$(DELIM)include)
@@ -1,5 +1,5 @@
############################################################################
# boards/risc-v/mpfs/icicle//kernel/Makefile
# boards/risc-v/mpfs/common/kernel/Makefile
#
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements. See the NOTICE file distributed with
@@ -1,5 +1,5 @@
/****************************************************************************
* boards/risc-v/mpfs/icicle/kernel/mpfs_userspace.c
* boards/risc-v/mpfs/common/kernel/mpfs_userspace.c
*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
@@ -1,5 +1,5 @@
############################################################################
# boards/risc-v/mpfs/icicle/src/Makefile
# boards/risc-v/mpfs/common/src/Make.defs
#
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements. See the NOTICE file distributed with
@@ -18,22 +18,12 @@
#
############################################################################
include $(TOPDIR)/Make.defs
CSRCS = mpfs_bringup.c mpfs_boot.c
ifeq ($(CONFIG_BOARDCTL),y)
CSRCS += mpfs_appinit.c
endif
CSRCS += mpfs_boot.c
ifeq ($(CONFIG_I2C),y)
CSRCS += mpfs_i2c.c
endif
ifeq ($(CONFIG_ARCH_LEDS),y)
CSRCS += mpfs_autoleds.c
endif
ifeq ($(CONFIG_ARCH_FPU),y)
CSRCS += mpfs_ostest.c
endif
@@ -50,4 +40,6 @@ ifeq ($(CONFIG_MPFS_EMMCSD),y)
CSRCS += mpfs_emmcsd.c
endif
include $(TOPDIR)/boards/Board.mk
DEPPATH += --dep-path src
VPATH += :src
CFLAGS += $(shell $(INCDIR) "$(CC)" $(TOPDIR)$(DELIM)arch$(DELIM)$(CONFIG_ARCH)$(DELIM)src$(DELIM)board$(DELIM)src)
@@ -1,5 +1,5 @@
/****************************************************************************
* boards/risc-v/mpfs/icicle/src/mpfs_board_spi.c
* boards/risc-v/mpfs/common/src/mpfs_board_spi.c
*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
@@ -1,5 +1,5 @@
/****************************************************************************
* boards/risc-v/mpfs/icicle/src/mpfs_boot.c
* boards/risc-v/mpfs/common/src/mpfs_boot.c
*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
@@ -1,5 +1,5 @@
/****************************************************************************
* boards/risc-v/mpfs/icicle/src/mpfs_emmcsd.c
* boards/risc-v/mpfs/common/src/mpfs_emmcsd.c
*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
@@ -29,7 +29,7 @@
#include <nuttx/mmcsd.h>
#include "mpfs_emmcsd.h"
#include "mpfsicicle.h"
#include "board_config.h"
/****************************************************************************
* Private Data
@@ -57,25 +57,32 @@ int mpfs_board_emmcsd_init(void)
{
int ret;
#ifdef CONFIG_MPFS_EMMCSD_MUX_GPIO
/* Configure eMMC / SD-card signal GPIO */
finfo("Configuring EMMCSD MUX GPIO\n");
mpfs_configgpio(MPFS_EMMCSD_GPIO);
mpfs_gpiowrite(MPFS_EMMCSD_GPIO, false);
#endif
/* Mount the SDIO-based MMC/SD block driver */
/* First, get an instance of the SDIO interface */
finfo("Initializing SDIO slot %d\n", CONFIG_NSH_MMCSDSLOTNO);
finfo("Initializing SDIO slot %d\n", SDIO_SLOTNO);
g_sdio_dev = sdio_initialize(CONFIG_NSH_MMCSDSLOTNO);
g_sdio_dev = sdio_initialize(SDIO_SLOTNO);
if (!g_sdio_dev)
{
ferr("ERROR: Failed to initialize SDIO slot %d\n",
CONFIG_NSH_MMCSDSLOTNO);
ferr("ERROR: Failed to initialize SDIO slot %d\n", SDIO_SLOTNO);
return -ENODEV;
}
/* Now bind the SDIO interface to the MMC/SD driver */
finfo("Bind SDIO to the MMC/SD driver, minor=%d\n", CONFIG_NSH_MMCSDMINOR);
finfo("Bind SDIO to the MMC/SD driver, minor=%d\n", SDIO_MINOR);
ret = mmcsd_slotinitialize(CONFIG_NSH_MMCSDMINOR, g_sdio_dev);
ret = mmcsd_slotinitialize(SDIO_MINOR, g_sdio_dev);
if (ret != OK)
{
ferr("ERROR: Failed to bind SDIO to the MMC/SD driver: %d\n", ret);
@@ -1,5 +1,5 @@
/****************************************************************************
* boards/risc-v/mpfs/icicle/src/mpfs_i2c.c
* boards/risc-v/mpfs/common/src/mpfs_i2c.c
*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
@@ -1,5 +1,5 @@
/****************************************************************************
* boards/risc-v/mpfs/icicle/src/mpfs_ostest.c
* boards/risc-v/mpfs/common/src/mpfs_ostest.c
*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
@@ -1,5 +1,5 @@
/****************************************************************************
* boards/risc-v/mpfs/icicle/src/mpfs_pwm.c
* boards/risc-v/mpfs/common/src/mpfs_pwm.c
*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
+33
View File
@@ -0,0 +1,33 @@
############################################################################
# boards/risc-v/mpfs/icicle/src/Make.defs
#
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements. See the NOTICE file distributed with
# this work for additional information regarding copyright ownership. The
# ASF licenses this file to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance with the
# License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
#
############################################################################
CSRCS = mpfs_bringup.c
ifeq ($(CONFIG_BOARDCTL),y)
CSRCS += mpfs_appinit.c
endif
ifeq ($(CONFIG_ARCH_LEDS),y)
CSRCS += mpfs_autoleds.c
endif
DEPPATH += --dep-path board
VPATH += :board
CFLAGS += $(shell $(INCDIR) "$(CC)" $(TOPDIR)$(DELIM)arch$(DELIM)$(CONFIG_ARCH)$(DELIM)src$(DELIM)board$(DELIM)board)
@@ -1,5 +1,5 @@
/****************************************************************************
* boards/risc-v/mpfs/icicle/src/mpfsicicle.h
* boards/risc-v/mpfs/icicle/src/board_config.h
*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
@@ -18,8 +18,8 @@
*
****************************************************************************/
#ifndef __BOARDS_RISCV_ICICLE_MPFS_SRC_MPFSICICLE_H
#define __BOARDS_RISCV_ICICLE_MPFS_SRC_MPFSICICLE_H
#ifndef __BOARDS_RISCV_ICICLE_MPFS_SRC_BOARD_CONFIG_H
#define __BOARDS_RISCV_ICICLE_MPFS_SRC_BOARD_CONFIG_H
/****************************************************************************
* Included Files
@@ -47,4 +47,4 @@ int mpfs_board_i2c_init(void);
int mpfs_board_emmcsd_init(void);
int mpfs_pwm_setup(void);
#endif /* __BOARDS_RISCV_ICICLE_MPFS_SRC_MPFSICICLE_H */
#endif /* __BOARDS_RISCV_ICICLE_MPFS_SRC_BOARD_CONFIG_H */
+1 -1
View File
@@ -32,7 +32,7 @@
#include <nuttx/board.h>
#include "mpfs.h"
#include "mpfsicicle.h"
#include "board_config.h"
/****************************************************************************
* Public Functions
@@ -28,7 +28,7 @@
#include <arch/board/board.h>
#include <mpfs_gpio.h>
#include "mpfsicicle.h"
#include "board_config.h"
/****************************************************************************
* Public Functions
+1 -1
View File
@@ -33,7 +33,7 @@
#include <nuttx/board.h>
#include <nuttx/drivers/ramdisk.h>
#include "mpfsicicle.h"
#include "board_config.h"
#include "mpfs_corepwm.h"
#include "mpfs.h"
+8
View File
@@ -0,0 +1,8 @@
#
# For a description of the syntax of this configuration file,
# see misc/tools/kconfig-language.txt.
#
if ARCH_BOARD_M100PFSEVP_MPFS
endif
@@ -0,0 +1,75 @@
#
# This file is autogenerated: PLEASE DO NOT EDIT IT.
#
# You can use "make menuconfig" to make any modifications to the installed .config file.
# You can then do "make savedefconfig" to generate a new defconfig file that includes your
# modifications.
#
# CONFIG_DISABLE_OS_API is not set
# CONFIG_NSH_DISABLE_LOSMART is not set
CONFIG_ARCH="risc-v"
CONFIG_ARCH_BOARD="m100pfsevp"
CONFIG_ARCH_BOARD_M100PFSEVP_MPFS=y
CONFIG_ARCH_CHIP="mpfs"
CONFIG_ARCH_CHIP_MPFS=y
CONFIG_ARCH_INTERRUPTSTACK=2048
CONFIG_ARCH_RISCV=y
CONFIG_ARCH_STACKDUMP=y
CONFIG_BOARD_LOOPSPERMSEC=54000
CONFIG_BUILTIN=y
CONFIG_DEBUG_ASSERTIONS=y
CONFIG_DEBUG_ERROR=y
CONFIG_DEBUG_FEATURES=y
CONFIG_DEBUG_FULLOPT=y
CONFIG_DEBUG_INFO=y
CONFIG_DEBUG_SYMBOLS=y
CONFIG_DEBUG_WARN=y
CONFIG_DEV_ZERO=y
CONFIG_EXPERIMENTAL=y
CONFIG_FS_PROCFS=y
CONFIG_FS_ROMFS=y
CONFIG_IDLETHREAD_STACKSIZE=2048
CONFIG_INTELHEX_BINARY=y
CONFIG_LIBC_FLOATINGPOINT=y
CONFIG_LIBC_HOSTNAME="m100pfsevp"
CONFIG_LIBC_PERROR_STDOUT=y
CONFIG_LIBC_STRERROR=y
CONFIG_MEMSET_64BIT=y
CONFIG_MEMSET_OPTSPEED=y
CONFIG_MPFS_ENABLE_DPFPU=y
CONFIG_MPFS_UART1=y
CONFIG_NSH_ARCHINIT=y
CONFIG_NSH_BUILTIN_APPS=y
CONFIG_NSH_DISABLE_IFUPDOWN=y
CONFIG_NSH_DISABLE_MKDIR=y
CONFIG_NSH_DISABLE_RM=y
CONFIG_NSH_DISABLE_RMDIR=y
CONFIG_NSH_DISABLE_UMOUNT=y
CONFIG_NSH_LINELEN=160
CONFIG_NSH_STRERROR=y
CONFIG_PREALLOC_TIMERS=4
CONFIG_RAM_SIZE=1048576
CONFIG_RAM_START=0x80200000
CONFIG_RAW_BINARY=y
CONFIG_READLINE_CMD_HISTORY=y
CONFIG_READLINE_TABCOMPLETION=y
CONFIG_RR_INTERVAL=200
CONFIG_SCHED_HPWORK=y
CONFIG_SCHED_LPWORK=y
CONFIG_SCHED_WAITPID=y
CONFIG_SERIAL_NPOLLWAITERS=2
CONFIG_STACK_COLORATION=y
CONFIG_START_MONTH=4
CONFIG_START_YEAR=2021
CONFIG_SYSLOG_COLOR_OUTPUT=y
CONFIG_SYSTEM_CLE_CMD_HISTORY=y
CONFIG_SYSTEM_COLOR_CLE=y
CONFIG_SYSTEM_NSH=y
CONFIG_SYSTEM_TIME64=y
CONFIG_TASK_NAME_SIZE=20
CONFIG_TESTING_GETPRIME=y
CONFIG_TESTING_OSTEST=y
CONFIG_TESTING_OSTEST_FPUSIZE=264
CONFIG_UART1_SERIAL_CONSOLE=y
CONFIG_USERMAIN_STACKSIZE=3072
CONFIG_USER_ENTRYPOINT="nsh_main"
+87
View File
@@ -0,0 +1,87 @@
/****************************************************************************
* boards/risc-v/mpfs/m100pfsevp/include/board.h
*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership. The
* ASF licenses this file to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance with the
* License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations
* under the License.
*
****************************************************************************/
#ifndef __BOARDS_RISCV_M100PFSEVP_MPFS_INCLUDE_BOARD_H
#define __BOARDS_RISCV_M100PFSEVP_MPFS_INCLUDE_BOARD_H
/****************************************************************************
* Included Files
****************************************************************************/
#include <nuttx/config.h>
#ifndef __ASSEMBLY__
# include <stdint.h>
#endif
#include "mpfs_gpio.h"
/****************************************************************************
* Pre-processor Definitions
****************************************************************************/
#ifdef CONFIG_MPFS_EMMCSD_MUX_GPIO
/* eMMC / SD-card GPIO selection signal */
#define MPFS_EMMCSD_GPIO (GPIO_BANK0 | GPIO_PIN12 | GPIO_OUTPUT | GPIO_BUFFER_ENABLE)
#endif
/* TODO: check Clocking */
#define MPFS_MSS_EXT_SGMII_REF_CLK (125000000UL)
#define MPFS_MSS_COREPLEX_CPU_CLK (600000000UL)
#define MPFS_MSS_SYSTEM_CLK (600000000UL)
#define MPFS_MSS_RTC_TOGGLE_CLK (1000000UL)
#define MPFS_MSS_AXI_CLK (300000000UL)
#define MPFS_MSS_APB_AHB_CLK (150000000UL)
#define MPFS_FPGA_BCLK (3000000UL)
/* LED definitions **********************************************************/
/* LED index values for use with board_userled() */
/* Button definitions *******************************************************/
#ifndef __ASSEMBLY__
#undef EXTERN
#if defined(__cplusplus)
#define EXTERN extern "C"
extern "C"
{
#else
#define EXTERN extern
#endif
/****************************************************************************
* Public Function Prototypes
****************************************************************************/
/****************************************************************************
* Name: mpfs_boardinitialize
****************************************************************************/
void mpfs_boardinitialize(void);
#undef EXTERN
#if defined(__cplusplus)
}
#endif
#endif /* __ASSEMBLY__ */
#endif /* __BOARDS_RISCV_M100PFSEVP_MPFS_INCLUDE_BOARD_H */
File diff suppressed because it is too large Load Diff
+102
View File
@@ -0,0 +1,102 @@
############################################################################
# boards/risc-v/mpfs/m100pfsevp/scripts/Make.defs
#
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements. See the NOTICE file distributed with
# this work for additional information regarding copyright ownership. The
# ASF licenses this file to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance with the
# License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
#
############################################################################
include $(TOPDIR)/.config
include $(TOPDIR)/tools/Config.mk
include $(TOPDIR)/arch/risc-v/src/rv64gc/Toolchain.defs
ifeq ($(CONFIG_MPFS_BOOTLOADER),y)
LDSCRIPT = ld-envm.script
else
LDSCRIPT = ld.script
endif
ifeq ($(CONFIG_CYGWIN_WINTOOL),y)
ARCHSCRIPT = -T "${shell cygpath -w $(BOARD_DIR)$(DELIM)scripts$(DELIM)$(LDSCRIPT)}"
else
ARCHSCRIPT = -T$(BOARD_DIR)$(DELIM)scripts$(DELIM)$(LDSCRIPT)
endif
ifeq ($(CONFIG_DEBUG_SYMBOLS),y)
ARCHOPTIMIZATION = -g
ASARCHCPUFLAGS += -Wa,-g
endif
MAXOPTIMIZATION = -Os
ifneq ($(CONFIG_DEBUG_NOOPT),y)
ARCHOPTIMIZATION += $(MAXOPTIMIZATION) -fno-strict-aliasing -fno-strength-reduce
endif
# The following options are for the toolchain from T-HEAD.
# For more info ahout the T-HEAD ISA extensions, please refer to the MPFS user guide.
# ARCHCPUFLAGS = -march=rv64gcxthead -mabi=lp64d -mcmodel=medany
# TODO: We are not going to enable this at this time for the CI compatiblity.
ifeq ($(CONFIG_ARCH_HAVE_DPFPU),y)
ARCHCPUFLAGS = -march=rv64gc -mabi=lp64d -mcmodel=medany
else
ARCHCPUFLAGS = -march=rv64imac -mabi=lp64 -mcmodel=medany
endif
ARCHCFLAGS = -fno-builtin -ffunction-sections -fdata-sections -fno-omit-frame-pointer
ARCHCXXFLAGS = -fno-builtin -fno-exceptions -fcheck-new -fno-rtti
ARCHWARNINGS = -Wall -Wstrict-prototypes -Wshadow -Wundef
ARCHWARNINGSXX = -Wall -Wshadow -Wundef
CFLAGS = $(ARCHCFLAGS) $(ARCHWARNINGS) $(ARCHOPTIMIZATION) $(ARCHCPUFLAGS) $(ARCHINCLUDES) $(ARCHDEFINES) $(EXTRAFLAGS) -pipe
CPICFLAGS = $(ARCHPICFLAGS) $(CFLAGS)
CXXFLAGS = $(ARCHCXXFLAGS) $(ARCHWARNINGSXX) $(ARCHOPTIMIZATION) $(ARCHCPUFLAGS) $(ARCHXXINCLUDES) $(ARCHDEFINES) $(EXTRAFLAGS) -pipe
CXXPICFLAGS = $(ARCHPICFLAGS) $(CXXFLAGS)
CPPFLAGS = $(ARCHINCLUDES) $(ARCHDEFINES) $(EXTRAFLAGS)
AFLAGS += $(CFLAGS) -D__ASSEMBLY__ $(ASARCHCPUFLAGS)
# NXFLAT module definitions
NXFLATLDFLAGS1 = -r -d -warn-common
NXFLATLDFLAGS2 = $(NXFLATLDFLAGS1) -T$(TOPDIR)/binfmt/libnxflat/gnu-nxflat-pcrel.ld -no-check-sections
LDNXFLATFLAGS = -e main -s 2048
# Loadable module definitions
CMODULEFLAGS = $(CFLAGS)
LDMODULEFLAGS = -r -e module_initialize
ifeq ($(CONFIG_CYGWIN_WINTOOL),y)
LDMODULEFLAGS += -T "${shell cygpath -w $(TOPDIR)/libs/libc/modlib/gnu-elf.ld}"
else
LDMODULEFLAGS += -T $(TOPDIR)/libs/libc/modlib/gnu-elf.ld
endif
# ELF module definitions
CELFFLAGS = $(CFLAGS) -fno-common
CXXELFFLAGS = $(CXXFLAGS) -fno-common
LDELFFLAGS = -r -e main
ifeq ($(CONFIG_CYGWIN_WINTOOL),y)
LDELFFLAGS += -T "${shell cygpath -w $(BOARD_DIR)$(DELIM)scripts$(DELIM)gnu-elf.ld}"
else
LDELFFLAGS += -T $(BOARD_DIR)$(DELIM)scripts$(DELIM)gnu-elf.ld
endif
# File extensions
LDFLAGS += --gc-sections -melf64lriscv
+115
View File
@@ -0,0 +1,115 @@
/****************************************************************************
* boards/risc-v/mpfs/m100pfsevp/scripts/gnu-elf.ld
*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership. The
* ASF licenses this file to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance with the
* License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations
* under the License.
*
****************************************************************************/
SECTIONS
{
.text 0x00000000 :
{
_stext = . ;
*(.text)
*(.text.*)
*(.gnu.warning)
*(.stub)
*(.glue_7)
*(.glue_7t)
*(.jcr)
/* C++ support: The .init and .fini sections contain specific logic
* to manage static constructors and destructors.
*/
*(.gnu.linkonce.t.*)
*(.init) /* Old ABI */
*(.fini) /* Old ABI */
_etext = . ;
}
.rodata :
{
_srodata = . ;
*(.rodata)
*(.rodata1)
*(.rodata.*)
*(.gnu.linkonce.r*)
_erodata = . ;
}
.data :
{
_sdata = . ;
*(.data)
*(.data1)
*(.data.*)
*(.gnu.linkonce.d*)
. = ALIGN(4);
_edata = . ;
}
/* C++ support. For each global and static local C++ object,
* GCC creates a small subroutine to construct the object. Pointers
* to these routines (not the routines themselves) are stored as
* simple, linear arrays in the .ctors section of the object file.
* Similarly, pointers to global/static destructor routines are
* stored in .dtors.
*/
.ctors :
{
_sctors = . ;
*(.ctors) /* Old ABI: Unallocated */
*(.init_array) /* New ABI: Allocated */
_edtors = . ;
}
.dtors :
{
_sdtors = . ;
*(.dtors) /* Old ABI: Unallocated */
*(.fini_array) /* New ABI: Allocated */
_edtors = . ;
}
.bss :
{
_sbss = . ;
*(.bss)
*(.bss.*)
*(.sbss)
*(.sbss.*)
*(.gnu.linkonce.b*)
*(COMMON)
_ebss = . ;
}
/* Stabs debugging sections. */
.stab 0 : { *(.stab) }
.stabstr 0 : { *(.stabstr) }
.stab.excl 0 : { *(.stab.excl) }
.stab.exclstr 0 : { *(.stab.exclstr) }
.stab.index 0 : { *(.stab.index) }
.stab.indexstr 0 : { *(.stab.indexstr) }
.comment 0 : { *(.comment) }
.debug_abbrev 0 : { *(.debug_abbrev) }
.debug_info 0 : { *(.debug_info) }
.debug_line 0 : { *(.debug_line) }
.debug_pubnames 0 : { *(.debug_pubnames) }
.debug_aranges 0 : { *(.debug_aranges) }
}
@@ -0,0 +1,12 @@
# HSS Payload Generator
# First, we can optionally set a name for our image, otherwise one will be created dynamically
set-name: 'PolarFire-SoC-HSS::nuttx'
# Next, we'll define the entry point addresses for each hart, as follows:
hart-entry-points: {u54_1: '0x80000000', u54_2: '0x80000000', u54_3: '0x80000000', u54_4: '0x80000000'}
#
payloads:
nuttx.bin: {exec-addr: '0x80000000', owner-hart: u54_1, priv-mode: prv_m}
+98
View File
@@ -0,0 +1,98 @@
/****************************************************************************
* boards/risc-v/mpfs/m100pfsevp/scripts/ld-envm.script
*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership. The
* ASF licenses this file to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance with the
* License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations
* under the License.
*
****************************************************************************/
MEMORY
{
ddr (rx) : ORIGIN = 0x80000000, LENGTH = 2M /* w/ cache */
envm (rx) : ORIGIN = 0x20220100, LENGTH = 128K - 256 /* 256 reserved for hss headers */
lim (rwx) : ORIGIN = 0x08000000, LENGTH = 1024k
}
OUTPUT_ARCH("riscv")
ENTRY(_stext)
EXTERN(_vectors)
SECTIONS
{
.text : {
_stext = ABSOLUTE(.);
*(.vectors)
*(.text .text.*)
*(.fixup)
*(.gnu.warning)
*(.rodata .rodata.* .srodata .srodata.*)
*(.gnu.linkonce.t.*)
*(.glue_7)
*(.glue_7t)
*(.got)
*(.gcc_except_table)
*(.gnu.linkonce.r.*)
_etext = ABSOLUTE(.);
} > envm
.init_section : ALIGN(4) {
_sinit = ABSOLUTE(.);
KEEP(*(.init_array .init_array.*))
_einit = ABSOLUTE(.);
} > envm
_eronly = ABSOLUTE(.);
.data : ALIGN(4) {
_sdata = ABSOLUTE(.);
*(.data .data.*)
*(.sdata .sdata.* .sdata2.*)
*(.gnu.linkonce.d.*)
*(.gnu.linkonce.s.*)
CONSTRUCTORS
. = ALIGN(4);
_edata = ABSOLUTE(.);
} > lim AT > envm
PROVIDE(__global_pointer$ = _sdata + ((_edata - _sdata) / 2));
.bss : ALIGN(4) {
_sbss = ABSOLUTE(.);
*(.bss .bss.*)
*(.sbss .sbss.*)
*(.gnu.linkonce.b.*)
*(.gnu.linkonce.sb.*)
*(COMMON)
. = ALIGN(4);
_ebss = ABSOLUTE(.);
. = ALIGN(32);
_default_stack_limit = ABSOLUTE(.);
} > lim
/* Stabs debugging sections. */
.stab 0 : { *(.stab) }
.stabstr 0 : { *(.stabstr) }
.stab.excl 0 : { *(.stab.excl) }
.stab.exclstr 0 : { *(.stab.exclstr) }
.stab.index 0 : { *(.stab.index) }
.stab.indexstr 0 : { *(.stab.indexstr) }
.comment 0 : { *(.comment) }
.debug_abbrev 0 : { *(.debug_abbrev) }
.debug_info 0 : { *(.debug_info) }
.debug_line 0 : { *(.debug_line) }
.debug_pubnames 0 : { *(.debug_pubnames) }
.debug_aranges 0 : { *(.debug_aranges) }
}
+97
View File
@@ -0,0 +1,97 @@
/****************************************************************************
* boards/risc-v/mpfs/m100pfsevp/scripts/ld.script
*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership. The
* ASF licenses this file to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance with the
* License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations
* under the License.
*
****************************************************************************/
MEMORY
{
progmem (rx) : ORIGIN = 0x80000000, LENGTH = 2M /* w/ cache */
sram (rwx) : ORIGIN = 0x80200000, LENGTH = 1M /* w/ cache */
}
OUTPUT_ARCH("riscv")
ENTRY(_stext)
EXTERN(_vectors)
SECTIONS
{
.text : {
_stext = ABSOLUTE(.);
*(.vectors)
*(.text .text.*)
*(.fixup)
*(.gnu.warning)
*(.rodata .rodata.* .srodata .srodata.*)
*(.gnu.linkonce.t.*)
*(.glue_7)
*(.glue_7t)
*(.got)
*(.gcc_except_table)
*(.gnu.linkonce.r.*)
_etext = ABSOLUTE(.);
} > progmem
.init_section : ALIGN(4) {
_sinit = ABSOLUTE(.);
KEEP(*(.init_array .init_array.*))
_einit = ABSOLUTE(.);
} > progmem
_eronly = ABSOLUTE(.);
.data : ALIGN(4) {
_sdata = ABSOLUTE(.);
*(.data .data.*)
*(.sdata .sdata.* .sdata2.*)
*(.gnu.linkonce.d.*)
*(.gnu.linkonce.s.*)
CONSTRUCTORS
. = ALIGN(4);
_edata = ABSOLUTE(.);
} > sram AT > progmem
PROVIDE(__global_pointer$ = _sdata + ((_edata - _sdata) / 2));
.bss : ALIGN(4) {
_sbss = ABSOLUTE(.);
*(.bss .bss.*)
*(.sbss .sbss.*)
*(.gnu.linkonce.b.*)
*(.gnu.linkonce.sb.*)
*(COMMON)
. = ALIGN(4);
_ebss = ABSOLUTE(.);
. = ALIGN(32);
_default_stack_limit = ABSOLUTE(.);
} > sram
/* Stabs debugging sections. */
.stab 0 : { *(.stab) }
.stabstr 0 : { *(.stabstr) }
.stab.excl 0 : { *(.stab.excl) }
.stab.exclstr 0 : { *(.stab.exclstr) }
.stab.index 0 : { *(.stab.index) }
.stab.indexstr 0 : { *(.stab.indexstr) }
.comment 0 : { *(.comment) }
.debug_abbrev 0 : { *(.debug_abbrev) }
.debug_info 0 : { *(.debug_info) }
.debug_line 0 : { *(.debug_line) }
.debug_pubnames 0 : { *(.debug_pubnames) }
.debug_aranges 0 : { *(.debug_aranges) }
}
+35
View File
@@ -0,0 +1,35 @@
/****************************************************************************
* boards/risc-v/mpfs/m100pfsevp/scripts/memory.ld
*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership. The
* ASF licenses this file to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance with the
* License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations
* under the License.
*
****************************************************************************/
/* Reg Access Start addr End addr Size
* QEMU CPU w/ cache 0x00000000 - 0x003fffff : 4MB
* QEMU CPU w/o cache 0x1f000000 - 0x1f01ffff : 128KB
*/
MEMORY
{
kflash (rx) : ORIGIN = 0x80000000, LENGTH = 256K /* w/ cache */
uflash (rx) : ORIGIN = 0x80040000, LENGTH = 256K /* w/ cache */
xflash (rx) : ORIGIN = 0x80080000, LENGTH = 256K /* w/o cache */
ksram (rwx) : ORIGIN = 0x800C0000, LENGTH = 256K /* w/ cache */
usram (rwx) : ORIGIN = 0x80100000, LENGTH = 256K /* w/ cache */
xsram (rwx) : ORIGIN = 0x80140000, LENGTH = 256K /* w/o cache */
}
+104
View File
@@ -0,0 +1,104 @@
/****************************************************************************
* boards/risc-v/mpfs/m100pfsevp/scripts/user-space.ld
*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership. The
* ASF licenses this file to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance with the
* License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations
* under the License.
*
****************************************************************************/
/* NOTE: This depends on the memory.ld script having been included prior to
* this script.
*/
OUTPUT_ARCH("riscv")
SECTIONS
{
/* section info */
__ld_uflash_start = ORIGIN(uflash);
__ld_uflash_end = ORIGIN(uflash)+ LENGTH(uflash);
__ld_uflash_size = LENGTH(uflash);
__ld_usram_start = ORIGIN(usram);
__ld_usram_end = ORIGIN(usram)+ LENGTH(usram);
__ld_usram_size = LENGTH(usram);
.userspace : {
*(.userspace)
} > uflash
.text : {
_stext = ABSOLUTE(.);
*(.text .text.*)
*(.fixup)
*(.gnu.warning)
*(.rodata .rodata.*)
*(.gnu.linkonce.t.*)
*(.glue_7)
*(.glue_7t)
*(.got)
*(.gcc_except_table)
*(.gnu.linkonce.r.*)
_etext = ABSOLUTE(.);
} > uflash
.init_section : {
_sinit = ABSOLUTE(.);
KEEP(*(.init_array .init_array.*))
_einit = ABSOLUTE(.);
} > uflash
__exidx_start = ABSOLUTE(.);
__exidx_end = ABSOLUTE(.);
_eronly = ABSOLUTE(.);
.data : {
_sdata = ABSOLUTE(.);
*(.data .data.*)
*(.sdata .sdata.* .sdata2.*)
*(.gnu.linkonce.d.*)
CONSTRUCTORS
. = ALIGN(4);
_edata = ABSOLUTE(.);
} > usram AT > uflash
.bss : {
_sbss = ABSOLUTE(.);
*(.bss .bss.*)
*(.sbss .sbss.*)
*(.gnu.linkonce.b.*)
*(COMMON)
. = ALIGN(4);
_ebss = ABSOLUTE(.);
} > usram
/* Stabs debugging sections */
.stab 0 : { *(.stab) }
.stabstr 0 : { *(.stabstr) }
.stab.excl 0 : { *(.stab.excl) }
.stab.exclstr 0 : { *(.stab.exclstr) }
.stab.index 0 : { *(.stab.index) }
.stab.indexstr 0 : { *(.stab.indexstr) }
.comment 0 : { *(.comment) }
.debug_abbrev 0 : { *(.debug_abbrev) }
.debug_info 0 : { *(.debug_info) }
.debug_line 0 : { *(.debug_line) }
.debug_pubnames 0 : { *(.debug_pubnames) }
.debug_aranges 0 : { *(.debug_aranges) }
}
+33
View File
@@ -0,0 +1,33 @@
############################################################################
# boards/risc-v/mpfs/m100pfsevp/src/Make.defs
#
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements. See the NOTICE file distributed with
# this work for additional information regarding copyright ownership. The
# ASF licenses this file to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance with the
# License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
#
############################################################################
CSRCS = mpfs_bringup.c
ifeq ($(CONFIG_ARCH_LEDS),y)
CSRCS += mpfs_autoleds.c
endif
ifeq ($(CONFIG_BOARDCTL),y)
CSRCS += mpfs_appinit.c
endif
DEPPATH += --dep-path board
VPATH += :board
CFLAGS += $(shell $(INCDIR) "$(CC)" $(TOPDIR)$(DELIM)arch$(DELIM)$(CONFIG_ARCH)$(DELIM)src$(DELIM)board$(DELIM)board)
+39
View File
@@ -0,0 +1,39 @@
/****************************************************************************
* boards/risc-v/mpfs/m100pfsevp/src/board_config.h
*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership. The
* ASF licenses this file to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance with the
* License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations
* under the License.
*
****************************************************************************/
#ifndef __BOARDS_RISCV_M100PFSEVP_MPFS_SRC_BOARD_CONFIG_H
#define __BOARDS_RISCV_M100PFSEVP_MPFS_SRC_BOARD_CONFIG_H
/****************************************************************************
* Included Files
****************************************************************************/
#include <nuttx/config.h>
#define SDIO_SLOTNO 0
#define SDIO_MINOR 0
int mpfs_bringup(void);
int mpfs_board_spi_init(void);
int mpfs_board_i2c_init(void);
int mpfs_pwm_setup(void);
int mpfs_board_emmcsd_init(void);
#endif /* __BOARDS_RISCV_M100PFSEVP_MPFS_SRC_BOARD_CONFIG_H */
+75
View File
@@ -0,0 +1,75 @@
/****************************************************************************
* boards/risc-v/mpfs/m100pfsevp/src/mpfs_appinit.c
*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership. The
* ASF licenses this file to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance with the
* License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations
* under the License.
*
****************************************************************************/
/****************************************************************************
* Included Files
****************************************************************************/
#include <nuttx/config.h>
#include <stdbool.h>
#include <stdio.h>
#include <syslog.h>
#include <errno.h>
#include <nuttx/board.h>
#include "mpfs.h"
#include "board_config.h"
/****************************************************************************
* Public Functions
****************************************************************************/
/****************************************************************************
* Name: board_app_initialize
*
* Description:
* Perform architecture specific initialization
*
* Input Parameters:
* arg - The boardctl() argument is passed to the board_app_initialize()
* implementation without modification. The argument has no
* meaning to NuttX; the meaning of the argument is a contract
* between the board-specific initialization logic and the
* matching application logic. The value could be such things as a
* mode enumeration value, a set of DIP switch switch settings, a
* pointer to configuration data read from a file or serial FLASH,
* or whatever you would like to do with it. Every implementation
* should accept zero/NULL as a default configuration.
*
* Returned Value:
* Zero (OK) is returned on success; a negated errno value is returned on
* any failure to indicate the nature of the failure.
*
****************************************************************************/
int board_app_initialize(uintptr_t arg)
{
#ifdef CONFIG_BOARD_LATE_INITIALIZE
/* Board initialization already performed by board_late_initialize() */
return OK;
#else
/* Perform board-specific initialization */
return mpfs_bringup();
#endif
}
+92
View File
@@ -0,0 +1,92 @@
/****************************************************************************
* boards/risc-v/mpfs/m100pfsevp/src/mpfs_autoleds.c
*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership. The
* ASF licenses this file to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance with the
* License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations
* under the License.
*
****************************************************************************/
/****************************************************************************
* Included Files
****************************************************************************/
#include <nuttx/config.h>
#include <nuttx/board.h>
#include <arch/board/board.h>
#include <mpfs_gpio.h>
#include "board_config.h"
/****************************************************************************
* Public Functions
****************************************************************************/
/****************************************************************************
* Name: board_autoled_initialize
*
* Description:
* Init the LEDs.
*
****************************************************************************/
void board_autoled_initialize(void)
{
/* TODO */
}
/****************************************************************************
* Name: board_autoled_on
*
* Description:
* Turn on the LED specificed.
*
* Input Parameters:
* led - The LED which is under this control
*
****************************************************************************/
void board_autoled_on(int led)
{
switch (led)
{
/* TODO */
default:
break;
}
}
/****************************************************************************
* Name: board_autoled_off
*
* Description:
* Turn off the LED specificed.
*
* Input Parameters:
* led - The LED which is under this control
*
****************************************************************************/
void board_autoled_off(int led)
{
switch (led)
{
/* TODO */
default:
break;
}
}
+105
View File
@@ -0,0 +1,105 @@
/****************************************************************************
* boards/risc-v/mpfs/m100pfsevp/src/mpfs_bringup.c
*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership. The
* ASF licenses this file to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance with the
* License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations
* under the License.
*
****************************************************************************/
/****************************************************************************
* Included Files
****************************************************************************/
#include <nuttx/config.h>
#include <sys/mount.h>
#include <stdbool.h>
#include <stdio.h>
#include <debug.h>
#include <errno.h>
#include <nuttx/board.h>
#include <nuttx/drivers/ramdisk.h>
#include "board_config.h"
#include "mpfs_corepwm.h"
#include "mpfs.h"
/****************************************************************************
* Public Functions
****************************************************************************/
/****************************************************************************
* Name: mpfs_bringup
****************************************************************************/
int mpfs_bringup(void)
{
int ret = OK;
#if defined(CONFIG_I2C_DRIVER)
/* Configure I2C peripheral interfaces */
ret = mpfs_board_i2c_init();
if (ret < 0)
{
syslog(LOG_ERR, "Failed to initialize I2C driver: %d\n", ret);
}
#endif
#ifdef CONFIG_FS_PROCFS
/* Mount the procfs file system */
ret = mount(NULL, "/proc", "procfs", 0, NULL);
if (ret < 0)
{
serr("ERROR: Failed to mount procfs at %s: %d\n", "/proc", ret);
}
#endif
#if defined(CONFIG_MPFS_SPI0) || defined(CONFIG_MPFS_SPI1)
/* Configure SPI peripheral interfaces */
ret = mpfs_board_spi_init();
if (ret < 0)
{
syslog(LOG_ERR, "Failed to initialize SPI driver: %d\n", ret);
}
#endif
#ifdef CONFIG_MPFS_HAVE_COREPWM
/* Configure PWM peripheral interfaces */
ret = mpfs_pwm_setup();
if (ret < 0)
{
syslog(LOG_ERR, "Failed to initialize CorePWM driver: %d\n", ret);
}
#endif
#ifdef CONFIG_MPFS_EMMCSD
ret = mpfs_board_emmcsd_init();
if (ret < 0)
{
syslog(LOG_ERR, "Failed to init eMMCSD driver: %d\n", ret);
}
#endif
return ret;
}