mirror of
https://github.com/apache/nuttx.git
synced 2026-06-06 00:14:22 +08:00
Changes to get a clean compile of configs/sam3u-ek/nxwm
This commit is contained in:
+41
-22
@@ -400,6 +400,8 @@ SAM3U-EK-specific Configuration Options
|
|||||||
Configurations
|
Configurations
|
||||||
^^^^^^^^^^^^^^
|
^^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
Information Common to All Configurations
|
||||||
|
----------------------------------------
|
||||||
Each SAM3U-EK configuration is maintained in a sub-directory and
|
Each SAM3U-EK configuration is maintained in a sub-directory and
|
||||||
can be selected as follow:
|
can be selected as follow:
|
||||||
|
|
||||||
@@ -457,6 +459,9 @@ Configurations
|
|||||||
System Type -> Toolchain:
|
System Type -> Toolchain:
|
||||||
CONFIG_ARMV7M_TOOLCHAIN_GNU_EABIW=y : General GCC EABI toolchain under windows
|
CONFIG_ARMV7M_TOOLCHAIN_GNU_EABIW=y : General GCC EABI toolchain under windows
|
||||||
|
|
||||||
|
Library Routines ->
|
||||||
|
CONFIG_CXX_NEWLONG=n : size_t is an unsigned int, not long
|
||||||
|
|
||||||
This re-configuration should be done before making NuttX or else the
|
This re-configuration should be done before making NuttX or else the
|
||||||
subsequent 'make' will fail. If you have already attempted building
|
subsequent 'make' will fail. If you have already attempted building
|
||||||
NuttX then you will have to 1) 'make distclean' to remove the old
|
NuttX then you will have to 1) 'make distclean' to remove the old
|
||||||
@@ -473,8 +478,8 @@ Configurations
|
|||||||
See also the "NOTE about Windows native toolchains" in the section call
|
See also the "NOTE about Windows native toolchains" in the section call
|
||||||
"GNU Toolchain Options" above.
|
"GNU Toolchain Options" above.
|
||||||
|
|
||||||
Configuration sub-directories
|
Configuration sub-directories
|
||||||
-----------------------------
|
-----------------------------
|
||||||
|
|
||||||
knsh:
|
knsh:
|
||||||
This is identical to the nsh configuration below except that NuttX
|
This is identical to the nsh configuration below except that NuttX
|
||||||
@@ -613,33 +618,37 @@ Configuration sub-directories
|
|||||||
|
|
||||||
STATUS:
|
STATUS:
|
||||||
2013-6-28: The touchscreen is functional.
|
2013-6-28: The touchscreen is functional.
|
||||||
|
2013-6-29: Hmmm... but there appear to be conditions when the
|
||||||
|
touchscreen driver locks up. Looks like some issue with
|
||||||
|
managing the interrupts.
|
||||||
|
|
||||||
nx:
|
nx:
|
||||||
Configures to use examples/nx using the HX834x LCD hardware on
|
Configures to use examples/nx using the HX834x LCD hardware on
|
||||||
the SAM3U-EK development board.
|
the SAM3U-EK development board.
|
||||||
|
|
||||||
nxwm
|
nxwm:
|
||||||
----
|
|
||||||
This is a special configuration setup for the NxWM window manager
|
This is a special configuration setup for the NxWM window manager
|
||||||
UnitTest. The NxWM window manager can be found here:
|
UnitTest. The NxWM window manager can be found here:
|
||||||
|
|
||||||
nuttx-code/NxWidgets/nxwm
|
nuttx-git/NxWidgets/nxwm
|
||||||
|
|
||||||
The NxWM unit test can be found at:
|
The NxWM unit test can be found at:
|
||||||
|
|
||||||
nuttx-code/NxWidgets/UnitTests/nxwm
|
nuttx-git/NxWidgets/UnitTests/nxwm
|
||||||
|
|
||||||
Documentation for installing the NxWM unit test can be found here:
|
Documentation for installing the NxWM unit test can be found here:
|
||||||
|
|
||||||
nuttx-code/NxWidgets/UnitTests/README.txt
|
nuttx-git/NxWidgets/UnitTests/README.txt
|
||||||
|
|
||||||
Here is the quick summary of the build steps (Assuming that all of
|
Here is the quick summary of the build steps. These steps assume that
|
||||||
the required packages are available in a directory ~/nuttx-code):
|
you have the entire NuttX GIT in some directory ~/nuttx-git. You may
|
||||||
|
have these components installed elsewhere. In that case, you will need
|
||||||
|
to adjust all of the paths in the following accordingly:
|
||||||
|
|
||||||
1. Intall the nxwm configuration
|
1. Intall the nxwm configuration
|
||||||
|
|
||||||
$ cd ~/nuttx-code/nuttx/tools
|
$ cd ~/nuttx-git/nuttx/tools
|
||||||
$ ./configure.sh stm3240g-eval/nxwm
|
$ ./configure.sh sam3u-ek/nxwm
|
||||||
|
|
||||||
2. Make the build context (only)
|
2. Make the build context (only)
|
||||||
|
|
||||||
@@ -648,34 +657,44 @@ Configuration sub-directories
|
|||||||
$ make context
|
$ make context
|
||||||
...
|
...
|
||||||
|
|
||||||
|
NOTE: the use of the setenv.sh file is optional. All that it will
|
||||||
|
do is to adjust your PATH variable so that the build system can find
|
||||||
|
your tools. If you use it, you will most likely need to modify the
|
||||||
|
script so that it has the correct path to your tool binaries
|
||||||
|
directory.
|
||||||
|
|
||||||
3. Install the nxwm unit test
|
3. Install the nxwm unit test
|
||||||
|
|
||||||
$ cd ~/nuttx-code/NxWidgets
|
$ cd ~/nuttx-git/NxWidgets
|
||||||
$ tools/install.sh ~/nuttx-code/apps nxwm
|
$ tools/install.sh ~/nuttx-git/apps nxwm
|
||||||
Creating symbolic link
|
Creating symbolic link
|
||||||
- To ~/nuttx-code/NxWidgets/UnitTests/nxwm
|
- To ~/nuttx-git/NxWidgets/UnitTests/nxwm
|
||||||
- At ~/nuttx-code/apps/external
|
- At ~/nuttx-git/apps/external
|
||||||
|
|
||||||
4. Build the NxWidgets library
|
4. Build the NxWidgets library
|
||||||
|
|
||||||
$ cd ~/nuttx-code/NxWidgets/libnxwidgets
|
$ cd ~/nuttx-git/NxWidgets/libnxwidgets
|
||||||
$ make TOPDIR=~/nuttx-code/nuttx
|
$ make TOPDIR=~/nuttx-git/nuttx
|
||||||
...
|
...
|
||||||
|
|
||||||
5. Build the NxWM library
|
5. Build the NxWM library
|
||||||
|
|
||||||
$ cd ~/nuttx-code/NxWidgets/nxwm
|
$ cd ~/nuttx-git/NxWidgets/nxwm
|
||||||
$ make TOPDIR=~/nuttx-code/nuttx
|
$ make TOPDIR=~/nuttx-git/nuttx
|
||||||
...
|
...
|
||||||
|
|
||||||
6. Built NuttX with the installed unit test as the application
|
6. Built NuttX with the installed unit test as the application
|
||||||
|
|
||||||
$ cd ~/nuttx-code/nuttx
|
$ cd ~/nuttx-git/nuttx
|
||||||
$ make
|
$ make
|
||||||
|
|
||||||
STATUS:
|
STATUS:
|
||||||
2013-6-28: Created the configuration but have not yet done
|
|
||||||
anything with it.
|
1. 2013-6-28: Created the configuration but have not yet done
|
||||||
|
anything with it.
|
||||||
|
|
||||||
|
2. 2013-6-29: Various changes to get a clean build of this
|
||||||
|
configuration. Still untested.
|
||||||
|
|
||||||
ostest:
|
ostest:
|
||||||
This configuration directory, performs a simple OS test using
|
This configuration directory, performs a simple OS test using
|
||||||
|
|||||||
@@ -75,7 +75,7 @@ else
|
|||||||
endif
|
endif
|
||||||
|
|
||||||
ARCHCFLAGS = -fno-builtin
|
ARCHCFLAGS = -fno-builtin
|
||||||
ARCHCXXFLAGS = -fno-builtin -fno-exceptions
|
ARCHCXXFLAGS = -fno-builtin -fno-exceptions -fno-rtti
|
||||||
ARCHWARNINGS = -Wall -Wstrict-prototypes -Wshadow
|
ARCHWARNINGS = -Wall -Wstrict-prototypes -Wshadow
|
||||||
ARCHWARNINGSXX = -Wall -Wshadow
|
ARCHWARNINGSXX = -Wall -Wshadow
|
||||||
ARCHDEFINES =
|
ARCHDEFINES =
|
||||||
|
|||||||
@@ -73,7 +73,7 @@ else
|
|||||||
endif
|
endif
|
||||||
|
|
||||||
ARCHCFLAGS = -fno-builtin
|
ARCHCFLAGS = -fno-builtin
|
||||||
ARCHCXXFLAGS = -fno-builtin -fno-exceptions
|
ARCHCXXFLAGS = -fno-builtin -fno-exceptions -fno-rtti
|
||||||
ARCHWARNINGS = -Wall -Wstrict-prototypes -Wshadow
|
ARCHWARNINGS = -Wall -Wstrict-prototypes -Wshadow
|
||||||
ARCHWARNINGSXX = -Wall -Wshadow
|
ARCHWARNINGSXX = -Wall -Wshadow
|
||||||
ARCHDEFINES =
|
ARCHDEFINES =
|
||||||
|
|||||||
@@ -73,7 +73,7 @@ else
|
|||||||
endif
|
endif
|
||||||
|
|
||||||
ARCHCFLAGS = -fno-builtin
|
ARCHCFLAGS = -fno-builtin
|
||||||
ARCHCXXFLAGS = -fno-builtin -fno-exceptions
|
ARCHCXXFLAGS = -fno-builtin -fno-exceptions -fno-rtti
|
||||||
ARCHWARNINGS = -Wall -Wstrict-prototypes -Wshadow
|
ARCHWARNINGS = -Wall -Wstrict-prototypes -Wshadow
|
||||||
ARCHWARNINGSXX = -Wall -Wshadow
|
ARCHWARNINGSXX = -Wall -Wshadow
|
||||||
ARCHDEFINES =
|
ARCHDEFINES =
|
||||||
|
|||||||
@@ -73,7 +73,7 @@ else
|
|||||||
endif
|
endif
|
||||||
|
|
||||||
ARCHCFLAGS = -fno-builtin
|
ARCHCFLAGS = -fno-builtin
|
||||||
ARCHCXXFLAGS = -fno-builtin -fno-exceptions
|
ARCHCXXFLAGS = -fno-builtin -fno-exceptions -fno-rtti
|
||||||
ARCHWARNINGS = -Wall -Wstrict-prototypes -Wshadow
|
ARCHWARNINGS = -Wall -Wstrict-prototypes -Wshadow
|
||||||
ARCHWARNINGSXX = -Wall -Wshadow
|
ARCHWARNINGSXX = -Wall -Wshadow
|
||||||
ARCHDEFINES =
|
ARCHDEFINES =
|
||||||
|
|||||||
@@ -73,7 +73,7 @@ else
|
|||||||
endif
|
endif
|
||||||
|
|
||||||
ARCHCFLAGS = -fno-builtin
|
ARCHCFLAGS = -fno-builtin
|
||||||
ARCHCXXFLAGS = -fno-builtin -fno-exceptions
|
ARCHCXXFLAGS = -fno-builtin -fno-exceptions -fno-rtti
|
||||||
ARCHWARNINGS = -Wall -Wstrict-prototypes -Wshadow
|
ARCHWARNINGS = -Wall -Wstrict-prototypes -Wshadow
|
||||||
ARCHWARNINGSXX = -Wall -Wshadow
|
ARCHWARNINGSXX = -Wall -Wshadow
|
||||||
ARCHDEFINES =
|
ARCHDEFINES =
|
||||||
|
|||||||
@@ -68,7 +68,23 @@ SECTIONS
|
|||||||
_etext = ABSOLUTE(.);
|
_etext = ABSOLUTE(.);
|
||||||
} > flash
|
} > flash
|
||||||
|
|
||||||
_eronly = ABSOLUTE(.); /* See below */
|
.init_section : {
|
||||||
|
_sinit = ABSOLUTE(.);
|
||||||
|
*(.init_array .init_array.*)
|
||||||
|
_einit = ABSOLUTE(.);
|
||||||
|
} > flash
|
||||||
|
|
||||||
|
.ARM.extab : {
|
||||||
|
*(.ARM.extab*)
|
||||||
|
} > flash
|
||||||
|
|
||||||
|
__exidx_start = ABSOLUTE(.);
|
||||||
|
.ARM.exidx : {
|
||||||
|
*(.ARM.exidx*)
|
||||||
|
} > flash
|
||||||
|
__exidx_end = ABSOLUTE(.);
|
||||||
|
|
||||||
|
_eronly = ABSOLUTE(.);
|
||||||
|
|
||||||
.data : {
|
.data : {
|
||||||
_sdata = ABSOLUTE(.);
|
_sdata = ABSOLUTE(.);
|
||||||
@@ -78,24 +94,15 @@ SECTIONS
|
|||||||
_edata = ABSOLUTE(.);
|
_edata = ABSOLUTE(.);
|
||||||
} > sram1 AT > flash
|
} > sram1 AT > flash
|
||||||
|
|
||||||
.ARM.extab : {
|
.bss : {
|
||||||
*(.ARM.extab*)
|
|
||||||
} >sram1
|
|
||||||
|
|
||||||
.ARM.exidx : {
|
|
||||||
__exidx_start = ABSOLUTE(.);
|
|
||||||
*(.ARM.exidx*)
|
|
||||||
__exidx_end = ABSOLUTE(.);
|
|
||||||
} >sram1
|
|
||||||
|
|
||||||
.bss : { /* BSS */
|
|
||||||
_sbss = ABSOLUTE(.);
|
_sbss = ABSOLUTE(.);
|
||||||
*(.bss .bss.*)
|
*(.bss .bss.*)
|
||||||
*(.gnu.linkonce.b.*)
|
*(.gnu.linkonce.b.*)
|
||||||
*(COMMON)
|
*(COMMON)
|
||||||
_ebss = ABSOLUTE(.);
|
_ebss = ABSOLUTE(.);
|
||||||
} > sram1
|
} > sram1
|
||||||
/* Stabs debugging sections. */
|
|
||||||
|
/* Stabs debugging sections. */
|
||||||
.stab 0 : { *(.stab) }
|
.stab 0 : { *(.stab) }
|
||||||
.stabstr 0 : { *(.stabstr) }
|
.stabstr 0 : { *(.stabstr) }
|
||||||
.stab.excl 0 : { *(.stab.excl) }
|
.stab.excl 0 : { *(.stab.excl) }
|
||||||
|
|||||||
@@ -42,6 +42,10 @@ AOBJS = $(ASRCS:.S=$(OBJEXT))
|
|||||||
|
|
||||||
CSRCS = up_boot.c up_leds.c up_buttons.c up_spi.c up_usbdev.c
|
CSRCS = up_boot.c up_leds.c up_buttons.c up_spi.c up_usbdev.c
|
||||||
|
|
||||||
|
ifeq ($(CONFIG_HAVE_CXXINITIALIZE),y)
|
||||||
|
CSRCS += up_cxxinitialize.c
|
||||||
|
endif
|
||||||
|
|
||||||
ifeq ($(CONFIG_LCD),y)
|
ifeq ($(CONFIG_LCD),y)
|
||||||
CSRCS += up_lcd.c
|
CSRCS += up_lcd.c
|
||||||
endif
|
endif
|
||||||
|
|||||||
@@ -0,0 +1,149 @@
|
|||||||
|
/************************************************************************************
|
||||||
|
* configs/sam3u-ek/src/up_cxxinitialize.c
|
||||||
|
*
|
||||||
|
* Copyright (C) 2013 Gregory Nutt. All rights reserved.
|
||||||
|
* Author: Gregory Nutt <gnutt@nuttx.org>
|
||||||
|
*
|
||||||
|
* 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 <nuttx/config.h>
|
||||||
|
|
||||||
|
#include <stdint.h>
|
||||||
|
#include <debug.h>
|
||||||
|
|
||||||
|
#if defined(CONFIG_HAVE_CXX) && defined(CONFIG_HAVE_CXXINITIALIZE)
|
||||||
|
|
||||||
|
/************************************************************************************
|
||||||
|
* Definitions
|
||||||
|
************************************************************************************/
|
||||||
|
/* Debug ****************************************************************************/
|
||||||
|
/* Non-standard debug that may be enabled just for testing the static constructors */
|
||||||
|
|
||||||
|
#ifndef CONFIG_DEBUG
|
||||||
|
# undef CONFIG_DEBUG_CXX
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef CONFIG_DEBUG_CXX
|
||||||
|
# define cxxdbg dbg
|
||||||
|
# define cxxlldbg lldbg
|
||||||
|
# ifdef CONFIG_DEBUG_VERBOSE
|
||||||
|
# define cxxvdbg vdbg
|
||||||
|
# define cxxllvdbg llvdbg
|
||||||
|
# else
|
||||||
|
# define cxxvdbg(x...)
|
||||||
|
# define cxxllvdbg(x...)
|
||||||
|
# endif
|
||||||
|
#else
|
||||||
|
# define cxxdbg(x...)
|
||||||
|
# define cxxlldbg(x...)
|
||||||
|
# define cxxvdbg(x...)
|
||||||
|
# define cxxllvdbg(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;
|
||||||
|
|
||||||
|
/************************************************************************************
|
||||||
|
* Private Functions
|
||||||
|
************************************************************************************/
|
||||||
|
|
||||||
|
/************************************************************************************
|
||||||
|
* 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 defintion only provides the 'contract' between application
|
||||||
|
* specific C++ code and platform-specific toolchain support
|
||||||
|
*
|
||||||
|
***************************************************************************/
|
||||||
|
|
||||||
|
void up_cxxinitialize(void)
|
||||||
|
{
|
||||||
|
initializer_t *initp;
|
||||||
|
|
||||||
|
cxxdbg("_sinit: %p _einit: %p _stext: %p _etext: %p\n",
|
||||||
|
&_sinit, &_einit, &_stext, &_etext);
|
||||||
|
|
||||||
|
/* Visit each entry in the initialzation table */
|
||||||
|
|
||||||
|
for (initp = &_sinit; initp != &_einit; initp++)
|
||||||
|
{
|
||||||
|
initializer_t initializer = *initp;
|
||||||
|
cxxdbg("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)
|
||||||
|
{
|
||||||
|
cxxdbg("Calling %p\n", initializer);
|
||||||
|
initializer();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif /* CONFIG_HAVE_CXX && CONFIG_HAVE_CXXINITIALIZE */
|
||||||
Reference in New Issue
Block a user