boards/sparc add initial support of s698pm-dkit board

This commit is contained in:
zouboan 2022-11-24 21:46:42 +08:00 committed by Alan Carvalho de Assis
parent c2d083e3c1
commit b45f113943
15 changed files with 1067 additions and 2 deletions

View File

@ -94,7 +94,7 @@ void up_lowinit(void)
* certain that there are no issues with the state of global variables.
*/
for (dest = &_bss_start; dest < &_end; )
for (dest = (uint32_t *)_bss_start; dest < (uint32_t *)_end; )
{
*dest++ = 0;
}

View File

@ -171,7 +171,7 @@ struct up_dev_s
{
uintptr_t uartbase; /* Base address of UART registers */
uint32_t baud; /* Configured baud */
uint8_t irq; /* IRQ associated with this UART (for attachment) */
uint16_t irq; /* IRQ associated with this UART (for attachment) */
uint8_t im; /* Interrupt mask state */
uint8_t parity; /* 0=none, 1=odd, 2=even */
uint8_t bits; /* Number of bits (5, 6, 7 or 8) */

View File

@ -36,6 +36,7 @@
#include <nuttx/sched_note.h>
#include "sched/sched.h"
#include "init/init.h"
#include "sparc_internal.h"
#ifdef CONFIG_BUILD_KERNEL

View File

@ -2588,6 +2588,13 @@ config ARCH_BOARD_XX3823
---help---
none
config ARCH_BOARD_S698PM_DKIT
bool "Sparc S698pm Dkit Board"
depends on ARCH_CHIP_S698PM
select ARCH_HAVE_LEDS
---help---
none
config ARCH_BOARD_SIM
bool "User mode simulation"
select ARCH_HAVE_BUTTONS
@ -2932,6 +2939,7 @@ config ARCH_BOARD
default "spresense" if ARCH_BOARD_SPRESENSE
default "xx3803" if ARCH_BOARD_XX3803
default "xx3823" if ARCH_BOARD_XX3823
default "s698pm-dkit" if ARCH_BOARD_S698PM_DKIT
comment "Common Board Options"
@ -3756,6 +3764,9 @@ endif
if ARCH_BOARD_XX3823
source "boards/sparc/bm3823/xx3823/Kconfig"
endif
if ARCH_BOARD_S698PM_DKIT
source "boards/sparc/s698pm/s698pm-dkit/Kconfig"
endif
if ARCH_BOARD_TLSR8278ADK80D
source "boards/arm/tlsr82/tlsr8278adk80d/Kconfig"
endif

View File

@ -0,0 +1,43 @@
#
# For a description of the syntax of this configuration file,
# see the file kconfig-language.txt in the NuttX tools repository.
#
if ARCH_BOARD_CUSTOM
config S698PM_DKIT_WDG
bool "s698pm-dkit wdg kicker support"
depends on S698PM_WDG
depends on WATCHDOG
config S698PM_DKIT_WDG_TIMEOUT
int "s698pm-dkit wdg Timeout (ms)"
default 1000
depends on S698PM_DKIT_WDG
---help---
Watchdog timeout value in milliseconds.
if S698PM_DKIT_WDG
config S698PM_DKIT_WDG_THREAD
bool "Watchdog Deamon Thread"
if S698PM_DKIT_WDG_THREAD
config S698PM_DKIT_WDG_THREAD_NAME
string "Watchdog Thread Name"
default "wdog"
config S698PM_DKIT_WDG_THREAD_INTERVAL
int "Watchdog Thread Interval (ms)"
default 500
config S698PM_DKIT_WDG_THREAD_PRIORITY
int "Watchdog Thread Priority"
default 200
config S698PM_DKIT_WDG_THREAD_STACKSIZE
int "Watchdog Thread Stacksize"
default 2048
endif # S698PM_DKIT_WDG_THREAD
endif # S698PM_DKIT_WDG
endif

View File

@ -0,0 +1,118 @@
#
# 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_ARCH_LEDS is not set
# CONFIG_ARCH_RAMFUNCS is not set
# CONFIG_LIBC_LONG_LONG is not set
# CONFIG_NSH_ARGCAT is not set
# CONFIG_NSH_CMDOPT_HEXDUMP is not set
# CONFIG_NSH_CMDPARMS is not set
# CONFIG_NSH_DISABLE_DATE is not set
CONFIG_ARCH="sparc"
CONFIG_ARCH_BOARD="s698pm-dkit"
CONFIG_ARCH_BOARD_S698PM_DKIT=y
CONFIG_ARCH_CHIP="s698pm"
CONFIG_ARCH_CHIP_S698PM=y
CONFIG_ARCH_SPARC=y
CONFIG_ARCH_STACKDUMP=y
CONFIG_BOARDCTL_ROMDISK=y
CONFIG_BOARD_LOOPSPERMSEC=800
CONFIG_BOOT_RUNFROMEXTSRAM=y
CONFIG_BUILTIN=y
CONFIG_DEBUG_ASSERTIONS=y
CONFIG_DEBUG_ERROR=y
CONFIG_DEBUG_FEATURES=y
CONFIG_DEBUG_INFO=y
CONFIG_DEBUG_SYMBOLS=y
CONFIG_DEBUG_WARN=y
CONFIG_DEFAULT_TASK_STACKSIZE=8192
CONFIG_DISABLE_MQUEUE=y
CONFIG_DISABLE_POSIX_TIMERS=y
CONFIG_ELF=y
CONFIG_ELF_ALIGN_LOG2=3
CONFIG_ELF_BUFFERINCR=64
CONFIG_ELF_BUFFERSIZE=64
CONFIG_ENDIAN_BIG=y
CONFIG_EXAMPLES_HELLO=y
CONFIG_EXAMPLES_HELLO_STACKSIZE=4096
CONFIG_EXAMPLES_NULL=y
CONFIG_FS_PROCFS=y
CONFIG_FS_ROMFS=y
CONFIG_IDLETHREAD_STACKSIZE=4096
CONFIG_INIT_ENTRYPOINT="nsh_main"
CONFIG_INIT_STACKSIZE=16384
CONFIG_INTELHEX_BINARY=y
CONFIG_LIBM=y
CONFIG_MEMSET_64BIT=y
CONFIG_MEMSET_OPTSPEED=y
CONFIG_NSH_ARCHINIT=y
CONFIG_NSH_BUILTIN_APPS=y
CONFIG_NSH_DISABLEBG=y
CONFIG_NSH_DISABLESCRIPT=y
CONFIG_NSH_DISABLE_CAT=y
CONFIG_NSH_DISABLE_CMP=y
CONFIG_NSH_DISABLE_CP=y
CONFIG_NSH_DISABLE_DF=y
CONFIG_NSH_DISABLE_ECHO=y
CONFIG_NSH_DISABLE_ENV=y
CONFIG_NSH_DISABLE_EXPORT=y
CONFIG_NSH_DISABLE_FREE=y
CONFIG_NSH_DISABLE_IFCONFIG=y
CONFIG_NSH_DISABLE_IFUPDOWN=y
CONFIG_NSH_DISABLE_KILL=y
CONFIG_NSH_DISABLE_LOSETUP=y
CONFIG_NSH_DISABLE_MKDIR=y
CONFIG_NSH_DISABLE_MOUNT=y
CONFIG_NSH_DISABLE_MV=y
CONFIG_NSH_DISABLE_PSSTACKUSAGE=y
CONFIG_NSH_DISABLE_PUT=y
CONFIG_NSH_DISABLE_PWD=y
CONFIG_NSH_DISABLE_RM=y
CONFIG_NSH_DISABLE_RMDIR=y
CONFIG_NSH_DISABLE_SEMICOLON=y
CONFIG_NSH_DISABLE_SET=y
CONFIG_NSH_DISABLE_SOURCE=y
CONFIG_NSH_DISABLE_TEST=y
CONFIG_NSH_DISABLE_TRUNCATE=y
CONFIG_NSH_DISABLE_UMOUNT=y
CONFIG_NSH_DISABLE_UNAME=y
CONFIG_NSH_DISABLE_UNSET=y
CONFIG_NSH_DISABLE_USLEEP=y
CONFIG_NSH_DISABLE_WGET=y
CONFIG_NSH_DISABLE_XD=y
CONFIG_NSH_FILEIOSIZE=512
CONFIG_NSH_LINELEN=64
CONFIG_NSH_READLINE=y
CONFIG_NUNGET_CHARS=0
CONFIG_POSIX_SPAWN_PROXY_STACKSIZE=32768
CONFIG_PTHREAD_MUTEX_UNSAFE=y
CONFIG_PTHREAD_STACK_DEFAULT=4096
CONFIG_PTHREAD_STACK_MIN=2048
CONFIG_RAM_SIZE=4194304
CONFIG_RAM_START=0x40000000
CONFIG_RAW_BINARY=y
CONFIG_RR_INTERVAL=100
CONFIG_S698PM_TIM1=y
CONFIG_S698PM_TIM2=y
CONFIG_S698PM_UART1=y
CONFIG_S698PM_UART2=y
CONFIG_S698PM_UART3=y
CONFIG_SCHED_WAITPID=y
CONFIG_SIG_PREALLOC_IRQ_ACTIONS=4
CONFIG_SPECIFIC_DRIVERS=y
CONFIG_STACK_COLORATION=y
CONFIG_START_DAY=16
CONFIG_START_MONTH=6
CONFIG_START_YEAR=2011
CONFIG_SYSTEM_NSH=y
CONFIG_SYSTEM_NSH_STACKSIZE=4096
CONFIG_SYSTEM_STACKMONITOR=y
CONFIG_SYSTEM_STACKMONITOR_INTERVAL=1
CONFIG_SYSTEM_STACKMONITOR_STACKSIZE=4096
CONFIG_UART1_BAUD=460800
CONFIG_UART2_BAUD=460800
CONFIG_UART2_SERIAL_CONSOLE=y

View File

@ -0,0 +1,121 @@
#
# 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_ARCH_LEDS is not set
# CONFIG_ARCH_RAMFUNCS is not set
# CONFIG_LIBC_LONG_LONG is not set
# CONFIG_NSH_ARGCAT is not set
# CONFIG_NSH_CMDOPT_HEXDUMP is not set
# CONFIG_NSH_CMDPARMS is not set
# CONFIG_NSH_DISABLE_DATE is not set
CONFIG_ARCH="sparc"
CONFIG_ARCH_BOARD="s698pm-dkit"
CONFIG_ARCH_BOARD_S698PM_DKIT=y
CONFIG_ARCH_CHIP="s698pm"
CONFIG_ARCH_CHIP_S698PM=y
CONFIG_ARCH_INTERRUPTSTACK=4096
CONFIG_ARCH_SPARC=y
CONFIG_ARCH_STACKDUMP=y
CONFIG_BOARDCTL_ROMDISK=y
CONFIG_BOARD_LOOPSPERMSEC=800
CONFIG_BOOT_RUNFROMEXTSRAM=y
CONFIG_BUILTIN=y
CONFIG_DEBUG_ASSERTIONS=y
CONFIG_DEBUG_ERROR=y
CONFIG_DEBUG_FEATURES=y
CONFIG_DEBUG_INFO=y
CONFIG_DEBUG_SYMBOLS=y
CONFIG_DEBUG_WARN=y
CONFIG_DEFAULT_TASK_STACKSIZE=8192
CONFIG_DISABLE_MQUEUE=y
CONFIG_DISABLE_POSIX_TIMERS=y
CONFIG_ELF=y
CONFIG_ELF_ALIGN_LOG2=3
CONFIG_ELF_BUFFERINCR=64
CONFIG_ELF_BUFFERSIZE=64
CONFIG_ENDIAN_BIG=y
CONFIG_EXAMPLES_HELLO=y
CONFIG_EXAMPLES_HELLO_STACKSIZE=4096
CONFIG_EXAMPLES_NULL=y
CONFIG_FS_PROCFS=y
CONFIG_FS_ROMFS=y
CONFIG_IDLETHREAD_STACKSIZE=4096
CONFIG_INIT_ENTRYPOINT="nsh_main"
CONFIG_INIT_STACKSIZE=16384
CONFIG_INTELHEX_BINARY=y
CONFIG_LIBM=y
CONFIG_MEMSET_64BIT=y
CONFIG_MEMSET_OPTSPEED=y
CONFIG_NSH_ARCHINIT=y
CONFIG_NSH_BUILTIN_APPS=y
CONFIG_NSH_DISABLEBG=y
CONFIG_NSH_DISABLESCRIPT=y
CONFIG_NSH_DISABLE_CAT=y
CONFIG_NSH_DISABLE_CMP=y
CONFIG_NSH_DISABLE_CP=y
CONFIG_NSH_DISABLE_DF=y
CONFIG_NSH_DISABLE_ECHO=y
CONFIG_NSH_DISABLE_ENV=y
CONFIG_NSH_DISABLE_EXPORT=y
CONFIG_NSH_DISABLE_FREE=y
CONFIG_NSH_DISABLE_IFCONFIG=y
CONFIG_NSH_DISABLE_IFUPDOWN=y
CONFIG_NSH_DISABLE_KILL=y
CONFIG_NSH_DISABLE_LOSETUP=y
CONFIG_NSH_DISABLE_MKDIR=y
CONFIG_NSH_DISABLE_MOUNT=y
CONFIG_NSH_DISABLE_MV=y
CONFIG_NSH_DISABLE_PSSTACKUSAGE=y
CONFIG_NSH_DISABLE_PUT=y
CONFIG_NSH_DISABLE_PWD=y
CONFIG_NSH_DISABLE_RM=y
CONFIG_NSH_DISABLE_RMDIR=y
CONFIG_NSH_DISABLE_SEMICOLON=y
CONFIG_NSH_DISABLE_SET=y
CONFIG_NSH_DISABLE_SOURCE=y
CONFIG_NSH_DISABLE_TEST=y
CONFIG_NSH_DISABLE_TRUNCATE=y
CONFIG_NSH_DISABLE_UMOUNT=y
CONFIG_NSH_DISABLE_UNAME=y
CONFIG_NSH_DISABLE_UNSET=y
CONFIG_NSH_DISABLE_USLEEP=y
CONFIG_NSH_DISABLE_WGET=y
CONFIG_NSH_DISABLE_XD=y
CONFIG_NSH_FILEIOSIZE=512
CONFIG_NSH_LINELEN=64
CONFIG_NSH_READLINE=y
CONFIG_NUNGET_CHARS=0
CONFIG_POSIX_SPAWN_PROXY_STACKSIZE=32768
CONFIG_PTHREAD_MUTEX_UNSAFE=y
CONFIG_PTHREAD_STACK_DEFAULT=4096
CONFIG_PTHREAD_STACK_MIN=2048
CONFIG_RAM_SIZE=4194304
CONFIG_RAM_START=0x40000000
CONFIG_RAW_BINARY=y
CONFIG_RR_INTERVAL=100
CONFIG_S698PM_TIM1=y
CONFIG_S698PM_TIM2=y
CONFIG_S698PM_UART1=y
CONFIG_S698PM_UART2=y
CONFIG_S698PM_UART3=y
CONFIG_SCHED_WAITPID=y
CONFIG_SIG_PREALLOC_IRQ_ACTIONS=4
CONFIG_SMP=y
CONFIG_SPECIFIC_DRIVERS=y
CONFIG_STACK_COLORATION=y
CONFIG_START_DAY=16
CONFIG_START_MONTH=6
CONFIG_START_YEAR=2011
CONFIG_SYSTEM_NSH=y
CONFIG_SYSTEM_NSH_STACKSIZE=4096
CONFIG_SYSTEM_STACKMONITOR=y
CONFIG_SYSTEM_STACKMONITOR_INTERVAL=1
CONFIG_SYSTEM_STACKMONITOR_STACKSIZE=4096
CONFIG_TESTING_SMP=y
CONFIG_UART1_BAUD=460800
CONFIG_UART2_BAUD=460800
CONFIG_UART2_SERIAL_CONSOLE=y

View File

@ -0,0 +1,75 @@
/****************************************************************************
* boards/sparc/s698pm/s698pm-dkit/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_SPARC_S698PM_S698PM_DKIT_INCLUDE_BOARD_H
#define __BOARDS_SPARC_S698PM_S698PM_DKIT_INCLUDE_BOARD_H
/****************************************************************************
* Included Files
****************************************************************************/
#include <nuttx/config.h>
/****************************************************************************
* Pre-Processor Definitions
****************************************************************************/
/* Configuration ************************************************************/
/* Clocking *****************************************************************/
/* Assume default CLKDIV8 fuse setting is overridden to CLKDIV1 */
#define BOARD_XTAL_FREQ 200000000 /* 200MHz crystal */
#define BOARD_CPU_CLOCK BOARD_XTAL_FREQ /* F_CPU = 60MHz */
#define CHIP_NUARTS 4
#define BOARD_TIM1_FREQUENCY BOARD_CPU_CLOCK
#define BOARD_TIM2_FREQUENCY BOARD_CPU_CLOCK
/****************************************************************************
* Public Types
****************************************************************************/
#ifndef __ASSEMBLY__
/****************************************************************************
* Inline Functions
****************************************************************************/
/****************************************************************************
* Public Function Prototypes
****************************************************************************/
#ifdef __cplusplus
#define EXTERN extern "C"
extern "C"
{
#else
#define EXTERN extern
#endif
#undef EXTERN
#ifdef __cplusplus
}
#endif
#endif /* __ASSEMBLY__ */
#endif /* __BOARDS_SPARC_S698PM_S698PM_DKIT_INCLUDE_BOARD_H */

View File

@ -0,0 +1,40 @@
############################################################################
# boards/sparc/s698pm/s698pm_dkit/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/sparc/src/sparc_v8/Toolchain.defs
LDSCRIPT = linksparc.ld
ARCHSCRIPT += $(BOARD_DIR)$(DELIM)scripts$(DELIM)$(LDSCRIPT)
CFLAGS = $(ARCHCFLAGS) $(ARCHOPTIMIZATION) $(ARCHCPUFLAGS) $(ARCHINCLUDES) $(ARCHDEFINES) $(EXTRAFLAGS) -pipe
CXXFLAGS = $(ARCHCXXFLAGS) $(ARCHOPTIMIZATION) $(ARCHCPUFLAGS) $(ARCHXXINCLUDES) $(ARCHDEFINES) $(EXTRAFLAGS) -pipe
CXXPICFLAGS = $(ARCHPICFLAGS) $(CXXFLAGS)
CPPFLAGS = $(ARCHINCLUDES) $(ARCHDEFINES) $(EXTRAFLAGS)
AFLAGS = $(CFLAGS) -D__ASSEMBLY__
# ELF module definitions
CELFFLAGS = $(CFLAGS)
CXXELFFLAGS = $(CXXFLAGS)
LDELFFLAGS = -r -e main
LDELFFLAGS += -T $(call CONVERT_PATH,$(BOARD_DIR)$(DELIM)scripts$(DELIM)gnu-elf.ld)

View File

@ -0,0 +1,202 @@
/****************************************************************************
* boards/sparc/s698pm/s698pm_dkit/scripts/linksparc.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.
*
****************************************************************************/
/*
* The memory map looks like this:
* +--------------------+ <- low memory
* | .text |
* | etext |
* | ctor list | the ctor and dtor lists are for
* | dtor list | C++ support
* | _endtext |
* +--------------------+
* | .data | initialized data goes here
* | _sdata |
* | _edata |
* +--------------------+
* | .bss |
* | __bss_start | start of bss, cleared by crt0
* | _end | start of heap, used by sbrk()
* +--------------------+
* | heap space |
* | _ENDHEAP |
* | stack space |
* | __stack | top of stack
* +--------------------+ <- high memory
*/
/*
* User modifiable values:
*
* _CLOCK_SPEED in Mhz (used to program the counter/timers)
*
* _PROM_SIZE size of PROM (permissible values are 128K, 256K,
* 512K, 1M, 2M, 4M, 8M and 16M)
* _RAM_SIZE size of RAM (permissible values are 256K, 512K,
* 1M, 2M, 4M, 8M, 16M, and 32M)
*
*/
/* Default values, can be overridden */
_PROM_SIZE = 16M;
_RAM_SIZE = 4M;
_RAM_START = 0x40000000;
_RAM_END = _RAM_START + _RAM_SIZE;
_PROM_START = 0x00000000;
_PROM_END = _PROM_START + _PROM_SIZE;
/*
* Alternate names without leading _.
*/
PROM_START = _PROM_START;
PROM_SIZE = _PROM_SIZE;
PROM_END = _PROM_END;
RAM_START = _RAM_START;
RAM_SIZE = _RAM_SIZE;
RAM_END = _RAM_END;
/*
PROVIDE (__stack = _RAM_END); //move to the file of stack.ld
*/
__stack = _RAM_END;
/* these are the maximum values */
MEMORY
{
rom (rx) : ORIGIN = 0x00000000, LENGTH = 16M
ram (rw!x) : ORIGIN = 0x40000000, LENGTH = 4M
}
OUTPUT_FORMAT("elf32-sparc")
OUTPUT_ARCH(sparc)
__DYNAMIC = 0;
ENTRY(__start)
/*
* stick everything in ram (of course)
*/
SECTIONS
{
.text :
{
CREATE_OBJECT_SYMBOLS
text_start = .;
_text_start = .;
*(.text)
. = ALIGN (16);
*(.eh_frame)
. = ALIGN (16);
/* *(.gnu.linkonce.t*) */
/*
* C++ constructors
*/
__CTOR_LIST__ = .;
LONG((__CTOR_END__ - __CTOR_LIST__) / 4 - 2)
*(.ctors)
LONG(0)
__CTOR_END__ = .;
__DTOR_LIST__ = .;
LONG((__DTOR_END__ - __DTOR_LIST__) / 4 - 2)
*(.dtors)
LONG(0)
__DTOR_END__ = .;
_rodata_start = . ;
*(.rodata*)
/* *(.gnu.linkonce.r*) */
_erodata = ALIGN( 0x10 ) ;
etext = ALIGN(0x10);
_etext = .;
*(.init)
*(.fini)
*(.lit)
*(.shdata)
. = ALIGN (16);
_endtext = .;
} >ram
/*
.dynamic : { *(.dynamic) } >ram
.got : { *(.got) } >ram
.plt : { *(.plt) } >ram
.hash : { *(.hash) } >ram
.dynrel : { *(.dynrel) } >ram
.dynsym : { *(.dynsym) } >ram
.dynstr : { *(.dynstr) } >ram
.hash : { *(.hash) } >ram
*/
.data :
{
data_start = .;
_data_start = .;
_sdata = . ;
*(.data)
/*
*(.gnu.linkonce.d*)
*(.gcc_except_table)
*/
. = ALIGN(0x10);
edata = .;
_edata = .;
} > ram
.shbss :
{
*(.shbss)
}
.bss :
{
__bss_start = ALIGN(0x10);
_bss_start = .;
bss_start = .;
*(.bss)
*(COMMON)
end = .;
_end = ALIGN(0x10);
__end = ALIGN(0x10);
} > ram
.noinit :
{
_snoinit = ABSOLUTE(.);
*(.noinit*)
_enoinit = ABSOLUTE(.);
} > ram
.jcr . (NOLOAD) : { *(.jcr) }
.stab . (NOLOAD) :
{
[ .stab ]
}
.stabstr . (NOLOAD) :
{
[ .stabstr ]
}
}

View File

@ -0,0 +1,34 @@
############################################################################
# boards/sparc/s698pm/s698pm-dkit/src/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
ASRCS =
CSRCS = s698pm_boot.c
ifeq ($(CONFIG_BOARDCTL),y)
CSRCS += s698pm_appinit.c
endif
ifeq ($(CONFIG_S698PM_WDG),y)
CSRCS += s698pm_wdt.c
endif
include $(TOPDIR)/boards/Board.mk

View File

@ -0,0 +1,85 @@
/****************************************************************************
* boards/sparc/s698pm/s698pm-dkit/src/s698pm-dkit.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_SPARC_S698PM_S698PM_DKIT_SRC_S698PM_DKIT_H
#define __BOARDS_SPARC_S698PM_S698PM_DKIT_SRC_S698PM_DKIT_H
/****************************************************************************
* Included Files
****************************************************************************/
#include <nuttx/config.h>
/****************************************************************************
* Pre-Processor Definitions
****************************************************************************/
/* procfs File System */
#ifdef CONFIG_FS_PROCFS
# ifdef CONFIG_NSH_PROC_MOUNTPOINT
# define S698PM_PROCFS_MOUNTPOINT CONFIG_NSH_PROC_MOUNTPOINT
# else
# define S698PM_PROCFS_MOUNTPOINT "/proc"
# endif
#endif
/* Configuration ************************************************************/
/****************************************************************************
* Public Types
****************************************************************************/
#ifndef __ASSEMBLY__
/****************************************************************************
* Inline Functions
****************************************************************************/
/****************************************************************************
* Public Function Prototypes
****************************************************************************/
/****************************************************************************
* Name: s698pm_ledinit
*
* Description:
* Configure on-board LEDs if LED support has been selected.
*
****************************************************************************/
#ifdef CONFIG_ARCH_LEDS
void s698pm_led_initialize(void);
#endif
/****************************************************************************
* Name: s698pm_dkit_watchdog_initialize
*
* Description:
* Initialize the s698pm watchdog.
*
****************************************************************************/
#ifdef CONFIG_S698PM_DKIT_WDG
int s698pm_dkit_watchdog_initialize(void);
#endif
#endif /* __ASSEMBLY__ */
#endif /* __BOARDS_SPARC_S698PM_S698PM_DKIT_SRC_S698PM_DKIT_H */

View File

@ -0,0 +1,108 @@
/****************************************************************************
* boards/sparc/s698pm/s698pm-dkit/src/s698pm_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 <sys/mount.h>
#include <stdio.h>
#include <syslog.h>
#include <nuttx/board.h>
#include "s698pm.h"
#include "s698pm-dkit.h"
/****************************************************************************
* Pre-processor Definitions
****************************************************************************/
/****************************************************************************
* Private Data
****************************************************************************/
/****************************************************************************
* Private Functions
****************************************************************************/
/****************************************************************************
* Public Functions
****************************************************************************/
/****************************************************************************
* Name: board_app_initialize
*
* Description:
* Perform application specific initialization. This function is never
* called directly from application code, but only indirectly via the
* (non-standard) boardctl() interface using the command BOARDIOC_INIT.
*
* 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 cold 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)
{
int ret;
#ifdef CONFIG_S698PM_WDG
/* Initialize the watchdog timer */
s698pm_wdginitialize("/dev/watchdog0");
#endif
#ifdef CONFIG_S698PM_DKIT_WDG
/* Start WDG kicker thread */
ret = s698pm_dkit_watchdog_initialize();
if (ret != OK)
{
syslog(LOG_ERR, "Failed to start watchdog thread: %d\n", ret);
return ret;
}
#endif
#ifdef CONFIG_FS_PROCFS
/* Mount the procfs file system */
ret = mount(NULL, S698PM_PROCFS_MOUNTPOINT, "procfs", 0, NULL);
if (ret < 0)
{
syslog(LOG_ERR, "Failed to mount procfs at %s: %d\n",
S698PM_PROCFS_MOUNTPOINT, ret);
}
#endif
return ret;
}

View File

@ -0,0 +1,65 @@
/****************************************************************************
* boards/sparc/s698pm/s698pm-dkit/src/s698pm_boot.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 <debug.h>
#include <arch/board/board.h>
#include "sparc_internal.h"
#include "s698pm.h"
#include "s698pm-dkit.h"
/****************************************************************************
* Definitions
****************************************************************************/
/****************************************************************************
* Private Functions
****************************************************************************/
/****************************************************************************
* Public Functions
****************************************************************************/
/****************************************************************************
* Name: up_boardinitialize
*
* Description:
* All s698pm architectures must provide the following entry point.
* This entry point is called early in the initialization -- after all
* memory has been configured and mapped but before any devices have been
* initialized.
*
****************************************************************************/
void s698pm_boardinitialize(void)
{
#ifdef CONFIG_ARCH_LEDS
/* Configure on-board LEDs if LED support has been selected. */
board_autoled_initialize();
#endif
}

View File

@ -0,0 +1,162 @@
/****************************************************************************
* boards/sparc/s698pm/s698pm-dkit/src/s698pm_wdt.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/types.h>
#include <sys/ioctl.h>
#include <errno.h>
#include <assert.h>
#include <debug.h>
#include <sched.h>
#include <stdio.h>
#include <fcntl.h>
#include <nuttx/signal.h>
#include <nuttx/fs/fs.h>
#include <nuttx/timers/watchdog.h>
#include <arch/board/board.h>
#include <nuttx/kthread.h>
#include <nuttx/clock.h>
/****************************************************************************
* Public Functions
****************************************************************************/
/* Watchdog daemon thread */
#if defined(CONFIG_S698PM_DKIT_WDG_THREAD)
static int wdog_daemon(int argc, char *argv[])
{
struct file filestruct;
int ret;
/* Open watchdog device */
ret = file_open(&filestruct, CONFIG_WATCHDOG_DEVPATH, O_RDONLY);
if (ret < 0)
{
wderr("ERROR: open %s failed: %d\n", CONFIG_WATCHDOG_DEVPATH, ret);
return ret;
}
/* Start watchdog timer */
ret = file_ioctl(&filestruct, WDIOC_START, 0);
if (ret < 0)
{
wderr("ERROR: ioctl(WDIOC_START) failed: %d\n", errno);
goto exit_close_dev;
}
while (1)
{
nxsig_usleep((CONFIG_S698PM_DKIT_WDG_THREAD_INTERVAL)*1000);
/* Send keep alive ioctl */
ret = file_ioctl(&filestruct, WDIOC_KEEPALIVE, 0);
if (ret < 0)
{
wderr("ERROR: ioctl(WDIOC_KEEPALIVE) failed: %d\n", errno);
break;
}
}
exit_close_dev:
/* Close watchdog device and exit. */
file_close(&filestruct);
return ret;
}
#endif /* CONFIG_S698PM_DKIT_WDG_THREAD */
/****************************************************************************
* Name: s698pm_dkit_watchdog_initialize()
*
* Description:
* Perform architecture-specific initialization of the Watchdog hardware.
* This interface must be provided by all configurations using
* apps/examples/watchdog
*
****************************************************************************/
int s698pm_dkit_watchdog_initialize(void)
{
struct file filestruct;
int ret = 0;
/* Open the watchdog device */
ret = file_open(&filestruct, CONFIG_WATCHDOG_DEVPATH, O_RDONLY);
if (ret < 0)
{
wderr("ERROR: open %s failed: %d\n", CONFIG_WATCHDOG_DEVPATH, ret);
return ret;
}
/* Set the watchdog timeout */
#ifdef CONFIG_S698PM_DKIT_WDG
wdinfo("Timeout = %d.\n", CONFIG_S698PM_DKIT_WDG_TIMEOUT);
ret = file_ioctl(&filestruct, WDIOC_SETTIMEOUT,
(unsigned long)CONFIG_S698PM_DKIT_WDG_TIMEOUT);
#else
# error "No watchdog configured"
#endif
/* Close watchdog as it is not needed here anymore */
file_close(&filestruct);
if (ret < 0)
{
wderr("ERROR: watchdog configuration failed: %d\n", errno);
return ret;
}
#if defined(CONFIG_S698PM_DKIT_WDG_THREAD)
sched_lock();
/* Spawn wdog daemon thread */
int taskid = kthread_create(CONFIG_S698PM_DKIT_WDG_THREAD_NAME,
CONFIG_S698PM_DKIT_WDG_THREAD_PRIORITY,
CONFIG_S698PM_DKIT_WDG_THREAD_STACKSIZE,
wdog_daemon, NULL);
DEBUGASSERT(taskid > 0);
UNUSED(taskid);
sched_unlock();
#endif /* CONFIG_S698PM_DKIT_WDG_THREAD */
return OK;
}