diff --git a/examples/adc/adc_main.c b/examples/adc/adc_main.c index d8cb48df6..38d5d3fb1 100644 --- a/examples/adc/adc_main.c +++ b/examples/adc/adc_main.c @@ -1,7 +1,7 @@ /**************************************************************************** * examples/adc/adc_main.c * - * Copyright (C) 2011-2012, 2015 Gregory Nutt. All rights reserved. + * Copyright (C) 2011-2012, 2015, 2017 Gregory Nutt. All rights reserved. * Author: Gregory Nutt * * Redistribution and use in source and binary forms, with or without @@ -51,6 +51,7 @@ #include #include +#include #include "adc.h" diff --git a/examples/canard/canard_main.c b/examples/canard/canard_main.c index b7d2d60ee..21e0a56e9 100644 --- a/examples/canard/canard_main.c +++ b/examples/canard/canard_main.c @@ -495,7 +495,6 @@ static int canard_daemon(int argc, char *argv[]) errout_with_dev: canardNuttXClose(&canardnuttx_instance); -errout: g_canard_daemon_started = false; printf("canard_daemon: Terminating!\n"); fflush(stdout); diff --git a/netutils/webserver/httpd.c b/netutils/webserver/httpd.c index 50b3a054f..5111fe1cc 100644 --- a/netutils/webserver/httpd.c +++ b/netutils/webserver/httpd.c @@ -53,6 +53,7 @@ #include #include #include +#include #include #include #include diff --git a/nshlib/nsh_dbgcmds.c b/nshlib/nsh_dbgcmds.c index 65bbc1ddb..e123f45e1 100644 --- a/nshlib/nsh_dbgcmds.c +++ b/nshlib/nsh_dbgcmds.c @@ -1,7 +1,7 @@ /**************************************************************************** * apps/nshlib/dbg_dbgcmds.c * - * Copyright (C) 2008-2009, 2011-2012, 2015 Gregory Nutt. All rights reserved. + * Copyright (C) 2008-2009, 2011-2012, 2015, 2017 Gregory Nutt. All rights reserved. * Author: Gregory Nutt * * Redistribution and use in source and binary forms, with or without @@ -57,29 +57,25 @@ * Pre-processor Definitions ****************************************************************************/ +#undef NSH_HAVE_MEMCMDS +#if !defined(CONFIG_NSH_DISABLE_MB) || !defined(CONFIG_NSH_DISABLE_MH) || \ + !defined(CONFIG_NSH_DISABLE_MW) +# define NSH_HAVE_MEMCMDS 1 +#endif + /**************************************************************************** * Private Types ****************************************************************************/ +#ifdef NSH_HAVE_MEMCMDS struct dbgmem_s { bool dm_write; /* true: perfrom write operation */ - void *dm_addr; /* Address to access */ + FAR void *dm_addr; /* Address to access */ uint32_t dm_value; /* Value to write */ unsigned int dm_count; /* The number of bytes to access */ }; - -/**************************************************************************** - * Private Function Prototypes - ****************************************************************************/ - -/**************************************************************************** - * Private Data - ****************************************************************************/ - -/**************************************************************************** - * Public Data - ****************************************************************************/ +#endif /**************************************************************************** * Private Functions @@ -89,10 +85,11 @@ struct dbgmem_s * Name: mem_parse ****************************************************************************/ -static int mem_parse(FAR struct nsh_vtbl_s *vtbl, int argc, char **argv, - struct dbgmem_s *mem) +#ifdef NSH_HAVE_MEMCMDS +static int mem_parse(FAR struct nsh_vtbl_s *vtbl, int argc, FAR char **argv, + FAR struct dbgmem_s *mem) { - char *pcvalue = strchr(argv[1], '='); + FAR char *pcvalue = strchr(argv[1], '='); unsigned long lvalue = 0; /* Check if we are writing a value */ @@ -134,6 +131,7 @@ static int mem_parse(FAR struct nsh_vtbl_s *vtbl, int argc, char **argv, return OK; } +#endif /**************************************************************************** * Public Functions @@ -144,10 +142,10 @@ static int mem_parse(FAR struct nsh_vtbl_s *vtbl, int argc, char **argv, ****************************************************************************/ #ifndef CONFIG_NSH_DISABLE_MB -int cmd_mb(FAR struct nsh_vtbl_s *vtbl, int argc, char **argv) +int cmd_mb(FAR struct nsh_vtbl_s *vtbl, int argc, FAR char **argv) { struct dbgmem_s mem; - volatile uint8_t *ptr; + FAR volatile uint8_t *ptr; unsigned int i; int ret; @@ -198,10 +196,10 @@ int cmd_mb(FAR struct nsh_vtbl_s *vtbl, int argc, char **argv) ****************************************************************************/ #ifndef CONFIG_NSH_DISABLE_MH -int cmd_mh(FAR struct nsh_vtbl_s *vtbl, int argc, char **argv) +int cmd_mh(FAR struct nsh_vtbl_s *vtbl, int argc, FAR char **argv) { struct dbgmem_s mem; - volatile uint16_t *ptr; + FAR volatile uint16_t *ptr; unsigned int i; int ret; @@ -254,10 +252,10 @@ int cmd_mh(FAR struct nsh_vtbl_s *vtbl, int argc, char **argv) ****************************************************************************/ #ifndef CONFIG_NSH_DISABLE_MW -int cmd_mw(FAR struct nsh_vtbl_s *vtbl, int argc, char **argv) +int cmd_mw(FAR struct nsh_vtbl_s *vtbl, int argc, FAR char **argv) { struct dbgmem_s mem; - volatile uint32_t *ptr; + FAR volatile uint32_t *ptr; unsigned int i; int ret; @@ -299,8 +297,8 @@ int cmd_mw(FAR struct nsh_vtbl_s *vtbl, int argc, char **argv) * Name: nsh_dumpbuffer ****************************************************************************/ -void nsh_dumpbuffer(FAR struct nsh_vtbl_s *vtbl, const char *msg, - const uint8_t *buffer, ssize_t nbytes) +void nsh_dumpbuffer(FAR struct nsh_vtbl_s *vtbl, FAR const char *msg, + FAR const uint8_t *buffer, ssize_t nbytes) { char line[128]; int ch; @@ -342,7 +340,7 @@ void nsh_dumpbuffer(FAR struct nsh_vtbl_s *vtbl, const char *msg, ****************************************************************************/ #ifndef CONFIG_NSH_DISABLE_XD -int cmd_xd(FAR struct nsh_vtbl_s *vtbl, int argc, char **argv) +int cmd_xd(FAR struct nsh_vtbl_s *vtbl, int argc, FAR char **argv) { FAR char *addr; FAR char *endptr; @@ -371,7 +369,7 @@ int cmd_xd(FAR struct nsh_vtbl_s *vtbl, int argc, char **argv) #if CONFIG_NFILE_DESCRIPTORS > 0 #ifndef CONFIG_NSH_DISABLE_HEXDUMP -int cmd_hexdump(FAR struct nsh_vtbl_s *vtbl, int argc, char **argv) +int cmd_hexdump(FAR struct nsh_vtbl_s *vtbl, int argc, FAR char **argv) { FAR uint8_t *buffer; char msg[32]; diff --git a/nshlib/nsh_parse.c b/nshlib/nsh_parse.c index 97c2d04a3..71fc3795c 100644 --- a/nshlib/nsh_parse.c +++ b/nshlib/nsh_parse.c @@ -1877,7 +1877,9 @@ static int nsh_parse_cmdparm(FAR struct nsh_vtbl_s *vtbl, FAR char *cmdline, FAR char *argv[MAX_ARGV_ENTRIES]; FAR char *saveptr; FAR char *cmd; +#ifndef CONFIG_NSH_DISABLEBG bool bgsave; +#endif bool redirsave; int argc; int ret; diff --git a/platform/nucleo-f334r8/Kconfig b/platform/nucleo-f334r8/Kconfig new file mode 100644 index 000000000..e9018b63a --- /dev/null +++ b/platform/nucleo-f334r8/Kconfig @@ -0,0 +1,8 @@ +# +# For a description of the syntax of this configuration file, +# see the file kconfig-language.txt in the NuttX tools repository. +# + +if ARCH_BOARD_NUCLEO_F334R8 + +endif diff --git a/platform/nucleo-f334r8/Make.defs b/platform/nucleo-f334r8/Make.defs new file mode 100644 index 000000000..c32fc5d9d --- /dev/null +++ b/platform/nucleo-f334r8/Make.defs @@ -0,0 +1,40 @@ +############################################################################ +# apps/platform/nucleo-f334r8/Make.defs +# +# Copyright (C) 2017 Gregory Nutt. All rights reserved. +# Author: Gregory Nutt +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in +# the documentation and/or other materials provided with the +# distribution. +# 3. Neither the name NuttX nor the names of its contributors may be +# used to endorse or promote products derived from this software +# without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +# COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS +# OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED +# AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN +# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +# POSSIBILITY OF SUCH DAMAGE. +# +############################################################################ + +# Add platform specific sources to ASRCS and CSRCS + +ifeq ($(CONFIG_HAVE_CXX),y) +CSRCS += stm32_cxxinitialize.c +endif diff --git a/platform/nucleo-f334r8/stm32_cxxinitialize.c b/platform/nucleo-f334r8/stm32_cxxinitialize.c new file mode 100644 index 000000000..7835663d6 --- /dev/null +++ b/platform/nucleo-f334r8/stm32_cxxinitialize.c @@ -0,0 +1,134 @@ +/**************************************************************************** + * apps/platform/nucleo-f334r8/stm32_cxxinitialize.c + * + * Copyright (C) 2017 Gregory Nutt. All rights reserved. + * Author: Gregory Nutt + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * 3. Neither the name NuttX nor the names of its contributors may be + * used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS + * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************/ + +/**************************************************************************** + * Included Files + ****************************************************************************/ + +#include + +#include + +#include + +#if defined(CONFIG_HAVE_CXX) && defined(CONFIG_HAVE_CXXINITIALIZE) + +/**************************************************************************** + * Pre-processor Definitions + ****************************************************************************/ +/* Debug ********************************************************************/ +/* Non-standard debug that may be enabled just for testing the static + * constructors + */ + +#ifdef CONFIG_DEBUG_CXX +# define cxxinfo _info +#else +# define cxxinfo(x...) +#endif + +/**************************************************************************** + * Private Types + ****************************************************************************/ +/* This type defines one entry in initialization array */ + +typedef void (*initializer_t)(void); + +/**************************************************************************** + * External References + ****************************************************************************/ +/* _sinit and _einit are symbols exported by the linker script that mark the + * beginning and the end of the C++ initialization section. + */ + +extern initializer_t _sinit; +extern initializer_t _einit; + +/* _stext and _etext are symbols exported by the linker script that mark the + * beginning and the end of text. + */ + +extern uint32_t _stext; +extern uint32_t _etext; + +/**************************************************************************** + * Public Functions + ****************************************************************************/ + +/**************************************************************************** + * Name: up_cxxinitialize + * + * Description: + * If C++ and C++ static constructors are supported, then this function + * must be provided by board-specific logic in order to perform + * initialization of the static C++ class instances. + * + * This function should then be called in the application-specific + * user_start logic in order to perform the C++ initialization. NOTE + * that no component of the core NuttX RTOS logic is involved; this + * function definition only provides the 'contract' between application + * specific C++ code and platform-specific toolchain support. + * + ****************************************************************************/ + +void up_cxxinitialize(void) +{ + initializer_t *initp; + + cxxinfo("_sinit: %p _einit: %p _stext: %p _etext: %p\n", + &_sinit, &_einit, &_stext, &_etext); + + /* Visit each entry in the initialization table */ + + for (initp = &_sinit; initp != &_einit; initp++) + { + initializer_t initializer = *initp; + cxxinfo("initp: %p initializer: %p\n", initp, initializer); + + /* Make sure that the address is non-NULL and lies in the text region + * defined by the linker script. Some toolchains may put NULL values + * or counts in the initialization table. + */ + + if ((void *)initializer > (void *)&_stext && + (void *)initializer < (void *)&_etext) + { + cxxinfo("Calling %p\n", initializer); + initializer(); + } + } +} + +#endif /* CONFIG_HAVE_CXX && CONFIG_HAVE_CXXINITIALIZE */ diff --git a/system/nxplayer/nxplayer.c b/system/nxplayer/nxplayer.c index ba4fa3744..467d4e160 100644 --- a/system/nxplayer/nxplayer.c +++ b/system/nxplayer/nxplayer.c @@ -53,6 +53,7 @@ #include #include #include +#include #include #include #include