From f5fc7a0a2929ebd5966f8f3b0707c237b80d3205 Mon Sep 17 00:00:00 2001 From: Gregory Nutt Date: Sat, 25 Feb 2017 16:39:57 -0600 Subject: [PATCH 1/9] C files that reference ANIOC_TRIGGER now need to include nuttx/analog/ioctl.h --- examples/adc/adc_main.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) 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" From eda07c730dcba68524029936a49a46845d9df4d5 Mon Sep 17 00:00:00 2001 From: raiden00pl Date: Sun, 26 Feb 2017 10:58:42 +0100 Subject: [PATCH 2/9] Add platform files for nucleo-f334r8 --- platform/nucleo-f334r8/Kconfig | 8 ++ platform/nucleo-f334r8/Make.defs | 40 ++++++ platform/nucleo-f334r8/stm32_cxxinitialize.c | 134 +++++++++++++++++++ 3 files changed, 182 insertions(+) create mode 100644 platform/nucleo-f334r8/Kconfig create mode 100644 platform/nucleo-f334r8/Make.defs create mode 100644 platform/nucleo-f334r8/stm32_cxxinitialize.c 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 */ From bab5df0966206a6385894beb32514a92139a16c4 Mon Sep 17 00:00:00 2001 From: Gregory Nutt Date: Mon, 27 Feb 2017 07:23:26 -0600 Subject: [PATCH 3/9] Eliminate a warning about an unused variable. --- nshlib/nsh_parse.c | 2 ++ 1 file changed, 2 insertions(+) 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; From 590791e12daf3e586e65beed408e560bc252c9ee Mon Sep 17 00:00:00 2001 From: Gregory Nutt Date: Mon, 27 Feb 2017 07:29:46 -0600 Subject: [PATCH 4/9] NSH: Eliminate a warning when all memory inspection commands are disabled. --- nshlib/nsh_dbgcmds.c | 26 ++++++++++++-------------- 1 file changed, 12 insertions(+), 14 deletions(-) diff --git a/nshlib/nsh_dbgcmds.c b/nshlib/nsh_dbgcmds.c index 65bbc1ddb..28c90199b 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,10 +57,17 @@ * 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 +#wendif + /**************************************************************************** * Private Types ****************************************************************************/ +#ifdef NSH_HAVE_MEMCMDS struct dbgmem_s { bool dm_write; /* true: perfrom write operation */ @@ -68,18 +75,7 @@ struct dbgmem_s 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,8 +85,9 @@ struct dbgmem_s * Name: mem_parse ****************************************************************************/ +#ifdef NSH_HAVE_MEMCMDS static int mem_parse(FAR struct nsh_vtbl_s *vtbl, int argc, char **argv, - struct dbgmem_s *mem) + struct dbgmem_s *mem) { char *pcvalue = strchr(argv[1], '='); unsigned long lvalue = 0; @@ -134,6 +131,7 @@ static int mem_parse(FAR struct nsh_vtbl_s *vtbl, int argc, char **argv, return OK; } +#endif /**************************************************************************** * Public Functions From fa4b047d352a858ca3e1b6d1ab3266e53f073dbc Mon Sep 17 00:00:00 2001 From: Gregory Nutt Date: Mon, 27 Feb 2017 07:49:49 -0600 Subject: [PATCH 5/9] Fix typo in last commit --- nshlib/nsh_dbgcmds.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/nshlib/nsh_dbgcmds.c b/nshlib/nsh_dbgcmds.c index 28c90199b..bd5a22596 100644 --- a/nshlib/nsh_dbgcmds.c +++ b/nshlib/nsh_dbgcmds.c @@ -61,7 +61,7 @@ #if !defined(CONFIG_NSH_DISABLE_MB) || !defined(CONFIG_NSH_DISABLE_MH) || \ !defined(CONFIG_NSH_DISABLE_MW) # define NSH_HAVE_MEMCMDS 1 -#wendif +#endif /**************************************************************************** * Private Types From a7e34f3b9775acc89e98a9f18247fc7dc3c4def1 Mon Sep 17 00:00:00 2001 From: Gregory Nutt Date: Mon, 27 Feb 2017 07:54:21 -0600 Subject: [PATCH 6/9] Make use of FAR storage class consistent --- nshlib/nsh_dbgcmds.c | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/nshlib/nsh_dbgcmds.c b/nshlib/nsh_dbgcmds.c index bd5a22596..e123f45e1 100644 --- a/nshlib/nsh_dbgcmds.c +++ b/nshlib/nsh_dbgcmds.c @@ -71,7 +71,7 @@ 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 */ }; @@ -86,10 +86,10 @@ struct dbgmem_s ****************************************************************************/ #ifdef NSH_HAVE_MEMCMDS -static int mem_parse(FAR struct nsh_vtbl_s *vtbl, int argc, char **argv, - struct dbgmem_s *mem) +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 */ @@ -142,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; @@ -196,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; @@ -252,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; @@ -297,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; @@ -340,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; @@ -369,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]; From c69ec6c7e869305fc033f1216bb9a65f43eaa988 Mon Sep 17 00:00:00 2001 From: Gregory Nutt Date: Mon, 27 Feb 2017 09:03:28 -0600 Subject: [PATCH 7/9] netutils/webserver: Needs to include strings.h for strcasecmp() --- netutils/webserver/httpd.c | 1 + 1 file changed, 1 insertion(+) 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 From 9eeff9b09a13eeb617e1da419ed4e43f124718cb Mon Sep 17 00:00:00 2001 From: Gregory Nutt Date: Mon, 27 Feb 2017 09:06:45 -0600 Subject: [PATCH 8/9] examples/canard: Remove warning for unused label --- examples/canard/canard_main.c | 1 - 1 file changed, 1 deletion(-) 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); From a7f9c09a80cf9d25b393a7408844c6b06bd16d1d Mon Sep 17 00:00:00 2001 From: Gregory Nutt Date: Mon, 27 Feb 2017 09:25:35 -0600 Subject: [PATCH 9/9] nxplayer: Needs to include strings.h for strcasecp() --- system/nxplayer/nxplayer.c | 1 + 1 file changed, 1 insertion(+) 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