summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xapps/ChangeLog.txt2
-rw-r--r--apps/examples/Makefile2
-rw-r--r--apps/examples/README.txt15
-rw-r--r--apps/examples/nxconsole/Makefile14
-rw-r--r--apps/examples/nxconsole/nxcon_internal.h29
-rw-r--r--apps/examples/nxconsole/nxcon_main.c231
-rw-r--r--apps/examples/nxconsole/nxcon_wndo.c9
-rw-r--r--nuttx/ChangeLog4
-rw-r--r--nuttx/Documentation/NXGraphicsSubsystem.html1
-rw-r--r--nuttx/configs/sim/nsh2/appconfig4
-rwxr-xr-xnuttx/configs/stm3210e-eval/README.txt117
-rw-r--r--nuttx/configs/stm3210e-eval/nsh2/appconfig4
-rw-r--r--nuttx/configs/stm3210e-eval/nx/appconfig6
-rw-r--r--nuttx/configs/stm3210e-eval/nxconsole/Make.defs176
-rw-r--r--nuttx/configs/stm3210e-eval/nxconsole/appconfig55
-rw-r--r--nuttx/configs/stm3210e-eval/nxconsole/defconfig1314
-rw-r--r--nuttx/configs/stm3210e-eval/nxconsole/ld.script112
-rw-r--r--nuttx/configs/stm3210e-eval/nxconsole/ld.script.dfu111
-rwxr-xr-xnuttx/configs/stm3210e-eval/nxconsole/setenv.sh62
-rw-r--r--nuttx/configs/stm3210e-eval/nxlines/appconfig6
-rw-r--r--nuttx/configs/stm3210e-eval/nxtext/appconfig6
-rw-r--r--nuttx/graphics/README.txt3
-rw-r--r--nuttx/graphics/nxconsole/Make.defs4
-rwxr-xr-xnuttx/graphics/nxconsole/nxcon_driver.c4
-rw-r--r--nuttx/graphics/nxconsole/nxcon_font.c9
-rw-r--r--nuttx/graphics/nxconsole/nxcon_internal.h17
-rwxr-xr-xnuttx/graphics/nxconsole/nxcon_redraw.c4
-rwxr-xr-xnuttx/graphics/nxconsole/nxcon_scroll.c2
-rw-r--r--nuttx/graphics/nxconsole/nxcon_sem.c129
-rw-r--r--nuttx/graphics/nxtk/nxtk_events.c8
30 files changed, 2215 insertions, 245 deletions
diff --git a/apps/ChangeLog.txt b/apps/ChangeLog.txt
index feb80dcb4..89379f99f 100755
--- a/apps/ChangeLog.txt
+++ b/apps/ChangeLog.txt
@@ -213,3 +213,5 @@
* vsn/hello: Removed. The modified apps/examples/hello is enough "Hello,
World!"
* apps/examples/nxconsole: Add a test of the NX console device.
+ * apps/examples/nxconsole: The NX console example now supports running
+ the NuttShell (NSH) within an NX window.
diff --git a/apps/examples/Makefile b/apps/examples/Makefile
index c1da00628..838b70699 100644
--- a/apps/examples/Makefile
+++ b/apps/examples/Makefile
@@ -56,7 +56,7 @@ SUBDIRS = adc buttons can cdcacm composite dhcpd ftpc ftpd hello helloxx \
CNTXTDIRS = pwm
ifeq ($(CONFIG_NSH_BUILTIN_APPS),y)
-CNTXTDIRS += adc can cdcacm composite ftpd dhcpd nettest nxconsole qencoder telnetd
+CNTXTDIRS += adc can cdcacm composite ftpd dhcpd nettest qencoder telnetd
endif
ifeq ($(CONFIG_EXAMPLES_HELLO_BUILTIN),y)
diff --git a/apps/examples/README.txt b/apps/examples/README.txt
index 6cd1051bc..ec636cd6d 100644
--- a/apps/examples/README.txt
+++ b/apps/examples/README.txt
@@ -617,9 +617,11 @@ examples/nx
examples/nxconsole
^^^^^^^^^^^^^^^^^^
- This directory contains a simple test of the NX console device defined in
- include/nuttx/nx/nxconsole.h. Prerequisite configuration settings for this
- test include:
+ This directory contains yet another version of the NuttShell (NSH). This
+ version uses the NX console device defined in include/nuttx/nx/nxconsole.h
+ for output. the result is that the NSH input still come from the standard
+ console input (probably a serial console). But the text output will go to
+ an NX winbdow. Prerequisite configuration settings for this test include:
CONFIG_NX=y -- NX graphics must be enabled
CONFIG_NXCONSOLE=y -- The NX console driver must be built
@@ -628,12 +630,11 @@ examples/nxconsole
CONFIG_DISABLE_SIGNALS=n -- Signals are needed
CONFIG_DISABLE_PTHREAD=n -- pthreads are needed
CONFIG_NX_BLOCKING=y -- pthread APIs must be blocking
+ CONFIG_NSH_CONSOLE=y -- NSH must be configured to use a console.
The following configuration options can be selected to customize the
test:
- CONFIG_NSH_BUILTIN_APPS -- Build the NX example as a "built-in"
- that can be executed from the NSH command line
CONFIG_EXAMPLES_NXCON_VPLANE -- The plane to select from the frame-
buffer driver for use in the test. Default: 0
CONFIG_EXAMPLES_NXCON_DEVNO - The LCD device to select from the LCD
@@ -669,6 +670,10 @@ examples/nxconsole
CONFIG_EXAMPLES_NXCON_DEVNAME -- The quoated, full path to the
NX console device corresponding to CONFIG_EXAMPLES_NXCON_MINOR.
Default: "/dev/nxcon0"
+ CONFIG_EXAMPLES_NXCONSOLE_PRIO - Priority of the NxConsole task.
+ Default: SCHED_PRIORITY_DEFAULT
+ CONFIG_EXAMPLES_NXCONSOLE_STACKSIZE - Stack size allocated for the
+ NxConsole task. Default: 2048
The following configuration settings determine how to set up the NX
server (CONFIG_NX_MULTIUSER):
diff --git a/apps/examples/nxconsole/Makefile b/apps/examples/nxconsole/Makefile
index 2a04f982e..cfd7329a5 100644
--- a/apps/examples/nxconsole/Makefile
+++ b/apps/examples/nxconsole/Makefile
@@ -56,12 +56,6 @@ endif
ROOTDEPPATH = --dep-path .
-# NxConsole built-in application info
-
-APPNAME = nxcon
-PRIORITY = SCHED_PRIORITY_DEFAULT
-STACKSIZE = 2048
-
# Common build
VPATH =
@@ -81,13 +75,7 @@ $(COBJS): %$(OBJEXT): %.c
done ; )
@touch .built
-.context:
-ifeq ($(CONFIG_NSH_BUILTIN_APPS),y)
- $(call REGISTER,$(APPNAME),$(PRIORITY),$(STACKSIZE),$(APPNAME)_main)
- @touch $@
-endif
-
-context: .context
+context:
.depend: Makefile $(SRCS)
@$(MKDEP) $(ROOTDEPPATH) $(CC) -- $(CFLAGS) -- $(SRCS) >Make.dep
diff --git a/apps/examples/nxconsole/nxcon_internal.h b/apps/examples/nxconsole/nxcon_internal.h
index 96ea8f781..199bbd052 100644
--- a/apps/examples/nxconsole/nxcon_internal.h
+++ b/apps/examples/nxconsole/nxcon_internal.h
@@ -56,21 +56,37 @@
/****************************************************************************
* Definitions
****************************************************************************/
-
/* Configuration ************************************************************/
+/* Need NX graphics support */
#ifndef CONFIG_NX
# error "NX is not enabled (CONFIG_NX=y)"
#endif
+/* Can't do the NxConsole example if the NxConsole driver is not built */
+
#ifndef CONFIG_NXCONSOLE
# error "NxConsole is not enabled (CONFIG_NXCONSOLE=y)"
#endif
+/* NxConsole requires NX Multi-user mode */
+
#ifndef CONFIG_NX_MULTIUSER
# error "Multi-user NX support is required (CONFIG_NX_MULTIUSER=y)"
#endif
+/* If there is no NSH console, then why are we running this example? */
+
+#ifndef CONFIG_NSH_CONSOLE
+# warning "Expected CONFIG_NSH_CONSOLE=y"
+#endif
+
+/* The NSH telnet console requires networking support (and TCP/IP) */
+
+#ifndef CONFIG_NET
+# undef CONFIG_NSH_TELNET
+#endif
+
/* If not specified, assume that the hardware supports one video plane */
#if CONFIG_NX_NPLANES != 1
@@ -209,6 +225,16 @@
# define CONFIG_EXAMPLES_NXCON_DEVNAME "/dev/nxcon0"
#endif
+/* NxConsole task */
+
+#ifndef CONFIG_EXAMPLES_NXCONSOLE_PRIO
+# define CONFIG_EXAMPLES_NXCONSOLE_PRIO SCHED_PRIORITY_DEFAULT
+#endif
+
+#ifndef CONFIG_EXAMPLES_NXCONSOLE_STACKSIZE
+# define CONFIG_EXAMPLES_NXCONSOLE_STACKSIZE 2048
+#endif
+
/* Debug ********************************************************************/
#ifdef CONFIG_CPP_HAVE_VARARGS
@@ -242,6 +268,7 @@ struct nxcon_state_s
volatile bool haveres; /* True: Have screen resolution */
volatile bool connected; /* True: Connected to server */
sem_t eventsem; /* Control waiting for display events */
+ pid_t pid; /* Console task ID */
NXHANDLE hnx; /* The connection handler */
NXTKWINDOW hwnd; /* The window */
NXCONSOLE hdrvr; /* The console driver */
diff --git a/apps/examples/nxconsole/nxcon_main.c b/apps/examples/nxconsole/nxcon_main.c
index 8713be493..5a9d20307 100644
--- a/apps/examples/nxconsole/nxcon_main.c
+++ b/apps/examples/nxconsole/nxcon_main.c
@@ -63,14 +63,14 @@
#include <nuttx/nx/nxfonts.h>
#include <nuttx/nx/nxconsole.h>
+#include <apps/nsh.h>
+
#include "nxcon_internal.h"
/****************************************************************************
* Pre-processor Definitions
****************************************************************************/
-#define NCON_MSG_NLINES 24
-
/****************************************************************************
* Private Types
****************************************************************************/
@@ -83,37 +83,6 @@
* Private Data
****************************************************************************/
-#ifdef CONFIG_NX_KBD
-static const uint8_t g_pumsg[] = "Pop-Up!";
-static const char *g_nxcon_msg[NCON_MSG_NLINES] =
-{
- "\nJULIET\n", /* Line 1 */
- "Wilt thou be gone?\n", /* Line 2 */
- " It is not yet near day:\n", /* Line 3 */
- "It was the nightingale,\n", /* Line 4 */
- " and not the lark,\n", /* Line 5 */
- "That pierced the fearful hollow\n", /* Line 6 */
- " of thine ear;\n", /* Line 7 */
- "Nightly she sings\n", /* Line 8 */
- " on yon pomegranate-tree:\n", /* Line 9 */
- "Believe me, love,\n", /* Line 10 */
- " it was the nightingale.\n", /* Line 11 */
- "\nROMEO\n", /* Line 12 */
- "It was the lark,\n", /* Line 13 */
- " the herald of the morn,\n", /* Line 14 */
- "No nightingale:\n", /* Line 15 */
- " look, love, what envious streaks\n", /* Line 16 */
- "Do lace the severing clouds\n", /* Line 17 */
- " in yonder east:\n", /* Line 18 */
- "Night's candles are burnt out,\n", /* Line 19 */
- " and jocund day\n", /* Line 20 */
- "Stands tiptoe\n", /* Line 21 */
- " on the misty mountain tops.\n", /* Line 22 */
- "I must be gone and live,\n", /* Line 23 */
- " or stay and die.\n" /* Line 24 */
-};
-#endif
-
/****************************************************************************
* Public Data
****************************************************************************/
@@ -208,70 +177,112 @@ static int nxcon_initialize(void)
}
/****************************************************************************
- * Public Functions
+ * Name: nxcon_task
****************************************************************************/
+static int nxcon_task(int argc, char **argv)
+{
+ /* If the console front end is selected, then run it on this thread */
+
+#ifdef CONFIG_NSH_CONSOLE
+ (void)nsh_consolemain(0, NULL);
+#endif
+
+ printf("nxcon_task: Unregister the NX console device\n");
+ (void)nxcon_unregister(g_nxcon_vars.hdrvr);
+
+ printf("nxcon_task: Close the window\n");
+ (void)nxtk_closewindow(g_nxcon_vars.hwnd);
+
+ /* Disconnect from the server */
+
+ printf("nxcon_task: Disconnect from the server\n");
+ nx_disconnect(g_nxcon_vars.hnx);
+
+ return EXIT_SUCCESS;
+}
+
/****************************************************************************
- * Name: user_start/nxcon_main
+ * Public Functions
****************************************************************************/
-#ifdef CONFIG_NSH_BUILTIN_APPS
-# define MAIN_NAME nxcon_main
-# define MAIN_NAME_STRING "nxcon_main"
-#else
-# define MAIN_NAME user_start
-# define MAIN_NAME_STRING "user_start"
-#endif
+/****************************************************************************
+ * Name: user_start
+ ****************************************************************************/
-int MAIN_NAME(int argc, char **argv)
+int user_start(int argc, char **argv)
{
- int exitcode = EXIT_FAILURE;
-#if 0 /* Don't re-direct... too hard to debug */
- int fd;
-#else
- FILE *outstream;
-#endif
nxgl_mxpixel_t color;
- int ndx;
+ int fd;
int ret;
+ /* General Initialization *************************************************/
/* Reset all global data */
+ message("user_start: Started\n");
memset(&g_nxcon_vars, 0, sizeof(struct nxcon_state_s));
+ /* Call all C++ static constructors */
+
+#if defined(CONFIG_HAVE_CXX) && defined(CONFIG_HAVE_CXXINITIALIZE)
+ up_cxxinitialize();
+#endif
+
+ /* NSH Initialization *****************************************************/
+ /* Initialize the NSH library */
+
+ message("user_start: Initialize NSH\n");
+ nsh_initialize();
+
+ /* If the Telnet console is selected as a front-end, then start the
+ * Telnet daemon.
+ */
+
+#ifdef CONFIG_NSH_TELNET
+ ret = nsh_telnetstart();
+ if (ret < 0)
+ {
+ /* The daemon is NOT running. Report the the error then fail...
+ * either with the serial console up or just exiting.
+ */
+
+ fprintf(stderr, "ERROR: Failed to start TELNET daemon: %d\n", ret);
+ }
+#endif
/* NX Initialization ******************************************************/
/* Initialize NX */
+ message("user_start: Initialize NX\n");
ret = nxcon_initialize();
- message(MAIN_NAME_STRING ": NX handle=%p\n", g_nxcon_vars.hnx);
+ message("user_start: NX handle=%p\n", g_nxcon_vars.hnx);
if (!g_nxcon_vars.hnx || ret < 0)
{
- message(MAIN_NAME_STRING ": Failed to get NX handle: %d\n", errno);
+ message("user_start: Failed to get NX handle: %d\n", errno);
goto errout;
}
/* Set the background to the configured background color */
- message(MAIN_NAME_STRING ": Set background color=%d\n", CONFIG_EXAMPLES_NXCON_BGCOLOR);
+ message("user_start: Set background color=%d\n", CONFIG_EXAMPLES_NXCON_BGCOLOR);
color = CONFIG_EXAMPLES_NXCON_BGCOLOR;
ret = nx_setbgcolor(g_nxcon_vars.hnx, &color);
if (ret < 0)
{
- message(MAIN_NAME_STRING ": nx_setbgcolor failed: %d\n", errno);
+ message("user_start: nx_setbgcolor failed: %d\n", errno);
goto errout_with_nx;
}
/* Window Configuration ***************************************************/
/* Create a window */
- message(MAIN_NAME_STRING ": Create window\n");
+ message("user_start: Create window\n");
g_nxcon_vars.hwnd = nxtk_openwindow(g_nxcon_vars.hnx, &g_nxconcb, NULL);
if (!g_nxcon_vars.hwnd)
{
- message(MAIN_NAME_STRING ": nxtk_openwindow failed: %d\n", errno);
+ message("user_start: nxtk_openwindow failed: %d\n", errno);
goto errout_with_nx;
}
- message(MAIN_NAME_STRING ": hwnd=%p\n", g_nxcon_vars.hwnd);
+ message("user_start: hwnd=%p\n", g_nxcon_vars.hwnd);
/* Wait until we have the screen resolution. We'll have this immediately
* unless we are dealing with the NX server.
@@ -281,7 +292,7 @@ int MAIN_NAME(int argc, char **argv)
{
(void)sem_wait(&g_nxcon_vars.eventsem);
}
- message(MAIN_NAME_STRING ": Screen resolution (%d,%d)\n", g_nxcon_vars.xres, g_nxcon_vars.yres);
+ message("user_start: Screen resolution (%d,%d)\n", g_nxcon_vars.xres, g_nxcon_vars.yres);
/* Determine the size and position of the window */
@@ -293,38 +304,42 @@ int MAIN_NAME(int argc, char **argv)
/* Set the window position */
- message(MAIN_NAME_STRING ": Set window position to (%d,%d)\n",
+ message("user_start: Set window position to (%d,%d)\n",
g_nxcon_vars.wpos.x, g_nxcon_vars.wpos.y);
ret = nxtk_setposition(g_nxcon_vars.hwnd, &g_nxcon_vars.wpos);
if (ret < 0)
{
- message(MAIN_NAME_STRING ": nxtk_setposition failed: %d\n", errno);
+ message("user_start: nxtk_setposition failed: %d\n", errno);
goto errout_with_hwnd;
}
/* Set the window size */
- message(MAIN_NAME_STRING ": Set window size to (%d,%d)\n",
+ message("user_start: Set window size to (%d,%d)\n",
g_nxcon_vars.wndo.wsize.w, g_nxcon_vars.wndo.wsize.h);
ret = nxtk_setsize(g_nxcon_vars.hwnd, &g_nxcon_vars.wndo.wsize);
if (ret < 0)
{
- message(MAIN_NAME_STRING ": nxtk_setsize failed: %d\n", errno);
+ message("user_start: nxtk_setsize failed: %d\n", errno);
goto errout_with_hwnd;
}
/* Open the toolbar */
- message(MAIN_NAME_STRING ": Add toolbar to window\n");
+ message("user_start: Add toolbar to window\n");
ret = nxtk_opentoolbar(g_nxcon_vars.hwnd, CONFIG_EXAMPLES_NXCON_TOOLBAR_HEIGHT, &g_nxtoolcb, NULL);
if (ret < 0)
{
- message(MAIN_NAME_STRING ": nxtk_opentoolbar failed: %d\n", errno);
+ message("user_start: nxtk_opentoolbar failed: %d\n", errno);
goto errout_with_hwnd;
}
+ /* Sleep a little bit to allow the server to catch up */
+
+ sleep(2);
+
/* NxConsole Configuration ************************************************/
/* Use the window to create an NX console */
@@ -335,99 +350,63 @@ int MAIN_NAME(int argc, char **argv)
g_nxcon_vars.hdrvr = nxtk_register(g_nxcon_vars.hwnd, &g_nxcon_vars.wndo, CONFIG_EXAMPLES_NXCON_MINOR);
if (!g_nxcon_vars.hdrvr)
{
- message(MAIN_NAME_STRING ": nxtk_register failed: %d\n", errno);
+ message("user_start: nxtk_register failed: %d\n", errno);
goto errout_with_hwnd;
}
- /* Open the driver */
+ /* Open the NxConsole driver */
-#if 0 /* Don't re-direct... too hard to debug */
fd = open(CONFIG_EXAMPLES_NXCON_DEVNAME, O_WRONLY);
if (fd < 0)
{
- message(MAIN_NAME_STRING ": open %s read-only failed: %d\n",
+ message("user_start: open %s read-only failed: %d\n",
CONFIG_EXAMPLES_NXCON_DEVNAME, errno);
goto errout_with_driver;
}
+ /* Start Console Task *****************************************************/
/* Now re-direct stdout and stderr so that they use the NX console driver.
- * If debug is enabled, then perform the test using only stderr so that we
- * can still get debug output on stdout.
+ * Note that stdin is retained (file descriptor 0, probably the the serial console).
*/
- (void)dup2(fd, 1);
- (void)dup2(fd, 2);
-
- /* And we can close our original driver fd */
-
- close(fd);
-#else
- /* Open the Console driver as a write-only stream */
-
- outstream = fopen(CONFIG_EXAMPLES_NXCON_DEVNAME, "w");
- if (!outstream)
- {
- message(MAIN_NAME_STRING ": fopen %s read-only failed: %d\n",
- CONFIG_EXAMPLES_NXCON_DEVNAME, errno);
- goto errout_with_driver;
- }
-#endif
-
- /* Test Loop **************************************************************/
- /* Now loop, adding text to the NX console */
+ message("user_start: Starting the console task\n");
+ msgflush();
- ndx = 0;
- for (;;)
- {
- /* Sleep for one second */
+ (void)fflush(stdout);
+ (void)fflush(stderr);
- sleep(1);
+ (void)fclose(stdout);
+ (void)fclose(stderr);
- /* Give another line of text to the NX console.*/
+ (void)dup2(fd, 1);
+ (void)dup2(fd, 2);
-#if 0 /* Don't re-direct... too hard to debug */
- printf(g_nxcon_msg[ndx]);
- fflush(stdout);
-#else
- fprintf(outstream, g_nxcon_msg[ndx]);
- fflush(outstream);
-#endif
- if (++ndx >= NCON_MSG_NLINES)
- {
-#ifdef CONFIG_NSH_BUILTIN_APPS
- /* If this is an NSH built-in app, then just return after all
- * of the lines have been presented.
- */
-
- break;
-#else
- /* Otherwise, just reset the index to the first line and continue */
+ /* And we can close our original driver file descriptor */
- ndx = 0;
-#endif
- }
- }
- exitcode = EXIT_SUCCESS;
+ close(fd);
- /* Clean-up and Error Exits ***********************************************/
+ /* And start the console task. It will inherit stdin, stdout, and stderr
+ * from this task.
+ */
+
+ g_nxcon_vars.pid = TASK_CREATE("NxConsole", CONFIG_EXAMPLES_NXCONSOLE_PRIO,
+ CONFIG_EXAMPLES_NXCONSOLE_STACKSIZE,
+ nxcon_task, NULL);
+ ASSERT(g_nxcon_vars.pid > 0);
+ return EXIT_SUCCESS;
-#if 1 /* Don't re-direct... too hard to debug */
- fclose(outstream);
-#endif
+ /* Error Exits ************************************************************/
errout_with_driver:
- message(MAIN_NAME_STRING ": Unregister the NX console device\n");
(void)nxcon_unregister(g_nxcon_vars.hdrvr);
errout_with_hwnd:
- message(MAIN_NAME_STRING ": Close the window\n");
(void)nxtk_closewindow(g_nxcon_vars.hwnd);
errout_with_nx:
/* Disconnect from the server */
- message(MAIN_NAME_STRING ": Disconnect from the server\n");
nx_disconnect(g_nxcon_vars.hnx);
errout:
- return exitcode;
+ return EXIT_FAILURE;
}
diff --git a/apps/examples/nxconsole/nxcon_wndo.c b/apps/examples/nxconsole/nxcon_wndo.c
index 6fadda866..083da739d 100644
--- a/apps/examples/nxconsole/nxcon_wndo.c
+++ b/apps/examples/nxconsole/nxcon_wndo.c
@@ -115,6 +115,8 @@ const struct nx_callback_s g_nxconcb =
static void nxwndo_redraw(NXWINDOW hwnd, FAR const struct nxgl_rect_s *rect,
bool more, FAR void *arg)
{
+ nxgl_mxpixel_t wcolor[CONFIG_NX_NPLANES];
+
gvdbg("hwnd=%p rect={(%d,%d),(%d,%d)} more=%s\n",
hwnd, rect->pt1.x, rect->pt1.y, rect->pt2.x, rect->pt2.y,
more ? "true" : "false");
@@ -127,6 +129,13 @@ static void nxwndo_redraw(NXWINDOW hwnd, FAR const struct nxgl_rect_s *rect,
nxcon_redraw(g_nxcon_vars.hdrvr, rect, more);
}
+ else
+ {
+ /* If the driver has not been opened, then just redraw the window color */
+
+ wcolor[0] = CONFIG_EXAMPLES_NXCON_WCOLOR;
+ (void)nxtk_fillwindow(hwnd, rect, wcolor);
+ }
}
/****************************************************************************
diff --git a/nuttx/ChangeLog b/nuttx/ChangeLog
index b7fca2d77..ba2f8f406 100644
--- a/nuttx/ChangeLog
+++ b/nuttx/ChangeLog
@@ -2604,3 +2604,7 @@
user NX mode only).
* arch/arm/src/stm32/stm32_i2c.c: Correct a bug in the STM32 I2C driver. The
behavior of I2C status bits seems to be different between F1 and F4.
+ * configs/stm3210e-eval/nxconsole: New STM32 F1 configuration that runs the
+ NuttShell (NSH) within an NX window.
+ * graphics/nxconsole/nxcon_sem.c: Add protection from re-entrance with debug
+ is enabled.
diff --git a/nuttx/Documentation/NXGraphicsSubsystem.html b/nuttx/Documentation/NXGraphicsSubsystem.html
index 9a4080668..df9234f17 100644
--- a/nuttx/Documentation/NXGraphicsSubsystem.html
+++ b/nuttx/Documentation/NXGraphicsSubsystem.html
@@ -408,6 +408,7 @@
<p>
NxConsole is a write-only character device (not shown) that is built on top of an NX window.
This character device can be used to provide <code>stdout</code> and <code>stderr</code> and, hence, can provide the output side of NuttX console.
+ NxConsole is only available when the multi-user NX implementation is selected (<code>CONFIG_NX_MULTIUSER</code>).
</p>
<table width ="100%">
diff --git a/nuttx/configs/sim/nsh2/appconfig b/nuttx/configs/sim/nsh2/appconfig
index 3a12d6f79..e74014a50 100644
--- a/nuttx/configs/sim/nsh2/appconfig
+++ b/nuttx/configs/sim/nsh2/appconfig
@@ -49,7 +49,3 @@ CONFIGURED_APPS += examples/nxhello
CONFIGURED_APPS += examples/nxlines
CONFIGURED_APPS += examples/touchscreen
-ifeq ($(CONFIG_NXCONSOLE),y)
-CONFIGURED_APPS += examples/nxconsole
-endif
-
diff --git a/nuttx/configs/stm3210e-eval/README.txt b/nuttx/configs/stm3210e-eval/README.txt
index ff90b2c15..08d5b572b 100755
--- a/nuttx/configs/stm3210e-eval/README.txt
+++ b/nuttx/configs/stm3210e-eval/README.txt
@@ -17,7 +17,6 @@ Contents
- Temperature Sensor
- RTC
- STM3210E-EVAL-specific Configuration Options
- - NxConsole
- Configurations
Development Environment
@@ -351,28 +350,6 @@ RTC
overflow interrupt may be lost even if the STM32 is powered down only momentarily.
Therefore hi-res solution is only useful in systems where the power is always on.
-NxConsole
-=========
-
- Several of the graphic-releted configurations are set to use the
- examples/nxconsole test. To enable this configuration,
- First, select NX Multi-User mode:
-
- CONFG_NX_MULTIUSER=y
- CONFIG_DISABLE_MQUEUE=n
-
- Then add the following definition to the defconfig file to enable
- the NxConsole driver:
-
- CONFIG_NXCONSOLE=y
-
- Make sure the that following is in place the appconfig file (perhaps
- eliminating other examples):
-
- CONFIGURED_APPS += examples/nxconsole
-
- See apps/examples/README.txt for further details.
-
STM3210E-EVAL-specific Configuration Options
============================================
@@ -748,8 +725,36 @@ Where <subdir> is one of the following:
focuses on general window controls, movement, mouse and keyboard
input.
- CONFIG_STM32_CODESOURCERYW=y : CodeSourcery under Windows
- CONFIG_LCD_RPORTRAIT=y : 240x320 reverse portrait
+ CONFIG_STM32_CODESOURCERYW=y : CodeSourcery under Windows
+ CONFIG_LCD_RPORTRAIT=y : 240x320 reverse portrait
+
+ nxconsole:
+ ----------
+ This is yet another NSH configuration. This NSH configuration differs
+ from the other, however, in that it uses the NxConsole driver to host
+ the NSH shell.
+
+ Some of the differences in this configuratino include these settings
+ in the defconfig file:
+
+ These select NX Multi-User mode:
+
+ CONFG_NX_MULTIUSER=y
+ CONFIG_DISABLE_MQUEUE=n
+
+ The following definition in the defconfig file to enables the NxConsole
+ driver:
+
+ CONFIG_NXCONSOLE=y
+
+ The appconfig file selects examples/nxconsole instead of examples/nsh:
+
+ CONFIGURED_APPS += examples/nxconsole
+
+ Other configuration settings:
+
+ CONFIG_STM32_BUILDROOT=y : NuttX buildroot under Linux or Cygwin
+ CONFIG_LCD_LANDSCAPE=y : 320x240 landscape
nxlines:
------
@@ -757,8 +762,8 @@ Where <subdir> is one of the following:
example focuses on placing lines on the background in various
orientations.
- CONFIG_STM32_CODESOURCERYW=y : CodeSourcery under Windows
- CONFIG_LCD_RPORTRAIT=y : 240x320 reverse portrait
+ CONFIG_STM32_CODESOURCERYW=y : CodeSourcery under Windows
+ CONFIG_LCD_RPORTRAIT=y : 240x320 reverse portrait
nxtext:
------
@@ -767,8 +772,8 @@ Where <subdir> is one of the following:
windows occur. Text should continue to update normally with
or without the popup windows present.
- CONFIG_STM32_BUILDROOT=y : NuttX buildroot under Linux or Cygwin
- CONFIG_LCD_RPORTRAIT=y : 240x320 reverse portrait
+ CONFIG_STM32_BUILDROOT=y : NuttX buildroot under Linux or Cygwin
+ CONFIG_LCD_RPORTRAIT=y : 240x320 reverse portrait
NOTE: When I tried building this example with the CodeSourcery
tools, I got a hardfault inside of its libgcc. I haven't
@@ -781,14 +786,14 @@ Where <subdir> is one of the following:
examples/ostest. By default, this project assumes that you are
using the DFU bootloader.
- CONFIG_STM32_BUILDROOT=y : NuttX buildroot under Linux or Cygwin
+ CONFIG_STM32_BUILDROOT=y : NuttX buildroot under Linux or Cygwin
RIDE
----
This configuration builds a trivial bring-up binary. It is
useful only because it words with the RIDE7 IDE and R-Link debugger.
- CONFIG_STM32_RAISONANCE=y : Raisonance RIDE7 under Windows
+ CONFIG_STM32_RAISONANCE=y : Raisonance RIDE7 under Windows
usbserial:
---------
@@ -796,46 +801,46 @@ Where <subdir> is one of the following:
driver at examples/usbserial. See examples/README.txt for
more information.
- CONFIG_STM32_BUILDROOT=y : NuttX buildroot under Linux or Cygwin
+ CONFIG_STM32_BUILDROOT=y : NuttX buildroot under Linux or Cygwin
USB debug output can be enabled as by changing the following
settings in the configuration file:
- -CONFIG_DEBUG=n
- -CONFIG_DEBUG_VERBOSE=n
- -CONFIG_DEBUG_USB=n
- +CONFIG_DEBUG=y
- +CONFIG_DEBUG_VERBOSE=y
- +CONFIG_DEBUG_USB=y
-
- -CONFIG_EXAMPLES_USBSERIAL_TRACEINIT=n
- -CONFIG_EXAMPLES_USBSERIAL_TRACECLASS=n
- -CONFIG_EXAMPLES_USBSERIAL_TRACETRANSFERS=n
- -CONFIG_EXAMPLES_USBSERIAL_TRACECONTROLLER=n
- -CONFIG_EXAMPLES_USBSERIAL_TRACEINTERRUPTS=n
- +CONFIG_EXAMPLES_USBSERIAL_TRACEINIT=y
- +CONFIG_EXAMPLES_USBSERIAL_TRACECLASS=y
- +CONFIG_EXAMPLES_USBSERIAL_TRACETRANSFERS=y
- +CONFIG_EXAMPLES_USBSERIAL_TRACECONTROLLER=y
- +CONFIG_EXAMPLES_USBSERIAL_TRACEINTERRUPTS=y
+ -CONFIG_DEBUG=n
+ -CONFIG_DEBUG_VERBOSE=n
+ -CONFIG_DEBUG_USB=n
+ +CONFIG_DEBUG=y
+ +CONFIG_DEBUG_VERBOSE=y
+ +CONFIG_DEBUG_USB=y
+
+ -CONFIG_EXAMPLES_USBSERIAL_TRACEINIT=n
+ -CONFIG_EXAMPLES_USBSERIAL_TRACECLASS=n
+ -CONFIG_EXAMPLES_USBSERIAL_TRACETRANSFERS=n
+ -CONFIG_EXAMPLES_USBSERIAL_TRACECONTROLLER=n
+ -CONFIG_EXAMPLES_USBSERIAL_TRACEINTERRUPTS=n
+ +CONFIG_EXAMPLES_USBSERIAL_TRACEINIT=y
+ +CONFIG_EXAMPLES_USBSERIAL_TRACECLASS=y
+ +CONFIG_EXAMPLES_USBSERIAL_TRACETRANSFERS=y
+ +CONFIG_EXAMPLES_USBSERIAL_TRACECONTROLLER=y
+ +CONFIG_EXAMPLES_USBSERIAL_TRACEINTERRUPTS=y
By default, the usbserial example uses the Prolific PL2303
serial/USB converter emulation. The example can be modified
to use the CDC/ACM serial class by making the following changes
to the configuration file:
- -CONFIG_PL2303=y
- +CONFIG_PL2303=n
+ -CONFIG_PL2303=y
+ +CONFIG_PL2303=n
- -CONFIG_CDCACM=n
- +CONFIG_CDCACM=y
+ -CONFIG_CDCACM=n
+ +CONFIG_CDCACM=y
The example can also be converted to use the alternative
USB serial example at apps/examples/usbterm by changing the
following:
- -CONFIGURED_APPS += examples/usbserial
- +CONFIGURED_APPS += examples/usbterm
+ -CONFIGURED_APPS += examples/usbserial
+ +CONFIGURED_APPS += examples/usbterm
In either the original appconfig file (before configuring)
or in the final apps/.config file (after configuring).
@@ -846,5 +851,5 @@ Where <subdir> is one of the following:
class driver at examples/usbstorage. See examples/README.txt for
more information.
- CONFIG_STM32_BUILDROOT=y : NuttX buildroot under Linux or Cygwin
+ CONFIG_STM32_BUILDROOT=y : NuttX buildroot under Linux or Cygwin
diff --git a/nuttx/configs/stm3210e-eval/nsh2/appconfig b/nuttx/configs/stm3210e-eval/nsh2/appconfig
index dadecb4fc..72fa5cd7e 100644
--- a/nuttx/configs/stm3210e-eval/nsh2/appconfig
+++ b/nuttx/configs/stm3210e-eval/nsh2/appconfig
@@ -52,10 +52,6 @@ CONFIGURED_APPS += examples/nxhello
#CONFIGURED_APPS += examples/nxtext
CONFIGURED_APPS += examples/usbstorage
-ifeq ($(CONFIG_NXCONSOLE),y)
-CONFIGURED_APPS += examples/nxconsole
-endif
-
ifeq ($(CONFIG_I2C),y)
CONFIGURED_APPS += system/i2c
endif
diff --git a/nuttx/configs/stm3210e-eval/nx/appconfig b/nuttx/configs/stm3210e-eval/nx/appconfig
index 7f660642c..f3fe66a61 100644
--- a/nuttx/configs/stm3210e-eval/nx/appconfig
+++ b/nuttx/configs/stm3210e-eval/nx/appconfig
@@ -34,12 +34,6 @@
############################################################################
# Path to example in apps/examples containing the user_start entry point
-# Various NX tests can be supported, simply comment-out examples/nx and
-# uncomment the test you wish to perform
CONFIGURED_APPS += examples/nx
-#CONFIGURED_APPS += examples/nxhello
-#CONFIGURED_APPS += examples/nxlines
-#CONFIGURED_APPS += examples/nxtext
-#CONFIGURED_APPS += examples/nxconsole
diff --git a/nuttx/configs/stm3210e-eval/nxconsole/Make.defs b/nuttx/configs/stm3210e-eval/nxconsole/Make.defs
new file mode 100644
index 000000000..a2b4789d7
--- /dev/null
+++ b/nuttx/configs/stm3210e-eval/nxconsole/Make.defs
@@ -0,0 +1,176 @@
+############################################################################
+# configs/stm3210e-eval/nxconsole/Make.defs
+#
+# Copyright (C) 2012 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.
+#
+############################################################################
+
+include ${TOPDIR}/.config
+
+# Setup for the selected toolchain
+
+ifeq ($(CONFIG_STM32_DFU),y)
+ LDSCRIPT = ld.script.dfu
+else
+ LDSCRIPT = ld.script
+endif
+
+ifeq ($(CONFIG_STM32_CODESOURCERYW),y)
+ # CodeSourcery under Windows
+ CROSSDEV = arm-none-eabi-
+ WINTOOL = y
+ ARCHCPUFLAGS = -mcpu=cortex-m3 -mthumb -mfloat-abi=soft
+ MAXOPTIMIZATION = -O1
+endif
+ifeq ($(CONFIG_STM32_CODESOURCERYL),y)
+ # CodeSourcery under Linux
+ CROSSDEV = arm-none-eabi-
+ ARCHCPUFLAGS = -mcpu=cortex-m3 -mthumb -mfloat-abi=soft
+ MAXOPTIMIZATION = -O1
+endif
+ifeq ($(CONFIG_STM32_DEVKITARM),y)
+ # devkitARM under Windows
+ CROSSDEV = arm-eabi-
+ WINTOOL = y
+ ARCHCPUFLAGS = -mcpu=cortex-m3 -mthumb -mfloat-abi=soft
+ MAXOPTIMIZATION = -O2
+endif
+ifeq ($(CONFIG_STM32_RAISONANCE),y)
+ # Raisonance RIDE7 under Windows
+ CROSSDEV = arm-none-eabi-
+ WINTOOL = y
+ ARCHCPUFLAGS = -mcpu=cortex-m3 -mthumb -mfloat-abi=soft
+ MAXOPTIMIZATION = -O2
+endif
+ifeq ($(CONFIG_STM32_BUILDROOT),y)
+ # NuttX buildroot under Linux or Cygwin
+ CROSSDEV = arm-elf-
+ ARCHCPUFLAGS = -mtune=cortex-m3 -march=armv7-m -mfloat-abi=soft
+ MAXOPTIMIZATION = -Os
+endif
+
+ifeq ($(WINTOOL),y)
+ # Windows-native toolchains
+ DIRLINK = $(TOPDIR)/tools/winlink.sh
+ DIRUNLINK = $(TOPDIR)/tools/unlink.sh
+ MKDEP = $(TOPDIR)/tools/mknulldeps.sh
+ ARCHINCLUDES = -I. -isystem "${shell cygpath -w $(TOPDIR)/include}"
+ ARCHXXINCLUDES = -I. -isystem "${shell cygpath -w $(TOPDIR)/include}" -isystem "${shell cygpath -w $(TOPDIR)/include/cxx}"
+ ARCHSCRIPT = -T "${shell cygpath -w $(TOPDIR)/configs/$(CONFIG_ARCH_BOARD)/nxconsole/$(LDSCRIPT)}"
+else
+ # Linux/Cygwin-native toolchain
+ MKDEP = $(TOPDIR)/tools/mkdeps.sh
+ ARCHINCLUDES = -I. -isystem $(TOPDIR)/include
+ ARCHXXINCLUDES = -I. -isystem $(TOPDIR)/include -isystem $(TOPDIR)/include/cxx
+ ARCHSCRIPT = -T$(TOPDIR)/configs/$(CONFIG_ARCH_BOARD)/nxconsole/$(LDSCRIPT)
+endif
+
+CC = $(CROSSDEV)gcc
+CXX = $(CROSSDEV)g++
+CPP = $(CROSSDEV)gcc -E
+LD = $(CROSSDEV)ld
+AR = $(CROSSDEV)ar rcs
+NM = $(CROSSDEV)nm
+OBJCOPY = $(CROSSDEV)objcopy
+OBJDUMP = $(CROSSDEV)objdump
+
+ARCHCCVERSION = ${shell $(CC) -v 2>&1 | sed -n '/^gcc version/p' | sed -e 's/^gcc version \([0-9\.]\)/\1/g' -e 's/[-\ ].*//g' -e '1q'}
+ARCHCCMAJOR = ${shell echo $(ARCHCCVERSION) | cut -d'.' -f1}
+
+ifeq ("${CONFIG_DEBUG_SYMBOLS}","y")
+ ARCHOPTIMIZATION = -g
+else
+ ARCHOPTIMIZATION = $(MAXOPTIMIZATION) -fno-strict-aliasing -fno-strength-reduce -fomit-frame-pointer
+endif
+
+ARCHCFLAGS = -fno-builtin
+ARCHCXXFLAGS = -fno-builtin -fno-exceptions -fno-rtti
+ARCHWARNINGS = -Wall -Wstrict-prototypes -Wshadow
+ARCHWARNINGSXX = -Wall -Wshadow
+ARCHDEFINES =
+ARCHPICFLAGS = -fpic -msingle-pic-base -mpic-register=r10
+
+CFLAGS = $(ARCHCFLAGS) $(ARCHWARNINGS) $(ARCHOPTIMIZATION) $(ARCHCPUFLAGS) $(ARCHINCLUDES) $(ARCHDEFINES) $(EXTRADEFINES) -pipe
+CPICFLAGS = $(ARCHPICFLAGS) $(CFLAGS)
+CXXFLAGS = $(ARCHCXXFLAGS) $(ARCHWARNINGSXX) $(ARCHOPTIMIZATION) $(ARCHCPUFLAGS) $(ARCHXXINCLUDES) $(ARCHDEFINES) $(EXTRADEFINES) -pipe
+CXXPICFLAGS = $(ARCHPICFLAGS) $(CXXFLAGS)
+CPPFLAGS = $(ARCHINCLUDES) $(ARCHDEFINES) $(EXTRADEFINES)
+AFLAGS = $(CFLAGS) -D__ASSEMBLY__
+
+NXFLATLDFLAGS1 = -r -d -warn-common
+NXFLATLDFLAGS2 = $(NXFLATLDFLAGS1) -T$(TOPDIR)/binfmt/libnxflat/gnu-nxflat.ld -no-check-sections
+LDNXFLATFLAGS = -e main -s 2048
+
+OBJEXT = .o
+LIBEXT = .a
+EXEEXT =
+
+ifneq ($(CROSSDEV),arm-elf-)
+ LDFLAGS += -nostartfiles -nodefaultlibs
+endif
+ifeq ($(CONFIG_DEBUG_SYMBOLS),y)
+ LDFLAGS += -g
+endif
+
+define PREPROCESS
+ @echo "CPP: $1->$2"
+ @$(CPP) $(CPPFLAGS) $1 -o $2
+endef
+
+define COMPILE
+ @echo "CC: $1"
+ @$(CC) -c $(CFLAGS) $1 -o $2
+endef
+
+define COMPILEXX
+ @echo "CXX: $1"
+ @$(CXX) -c $(CXXFLAGS) $1 -o $2
+endef
+
+define ASSEMBLE
+ @echo "AS: $1"
+ @$(CC) -c $(AFLAGS) $1 -o $2
+endef
+
+define ARCHIVE
+ echo "AR: $2"; \
+ $(AR) $1 $2 || { echo "$(AR) $1 $2 FAILED!" ; exit 1 ; }
+endef
+
+define CLEAN
+ @rm -f *.o *.a
+endef
+
+HOSTCC = gcc
+HOSTINCLUDES = -I.
+HOSTCFLAGS = -Wall -Wstrict-prototypes -Wshadow -g -pipe
+HOSTLDFLAGS =
+
diff --git a/nuttx/configs/stm3210e-eval/nxconsole/appconfig b/nuttx/configs/stm3210e-eval/nxconsole/appconfig
new file mode 100644
index 000000000..e17e7f8f2
--- /dev/null
+++ b/nuttx/configs/stm3210e-eval/nxconsole/appconfig
@@ -0,0 +1,55 @@
+############################################################################
+# configs/stm3210e-eval/nxconsole/appconfig
+#
+# Copyright (C) 2012 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.
+#
+############################################################################
+
+# Path to example in apps/examples containing the user_start entry point
+
+CONFIGURED_APPS += examples/nxconsole
+
+CONFIGURED_APPS += system/readline
+CONFIGURED_APPS += nshlib
+
+# Optional built-in applications
+
+ifeq ($(CONFIG_USBDEV),y)
+CONFIGURED_APPS += examples/usbstorage
+endif
+
+ifeq ($(CONFIG_I2C),y)
+CONFIGURED_APPS += system/i2c
+endif
+
+ifeq ($(CONFIG_CAN),y)
+CONFIGURED_APPS += examples/can
+endif
diff --git a/nuttx/configs/stm3210e-eval/nxconsole/defconfig b/nuttx/configs/stm3210e-eval/nxconsole/defconfig
new file mode 100644
index 000000000..5945bb642
--- /dev/null
+++ b/nuttx/configs/stm3210e-eval/nxconsole/defconfig
@@ -0,0 +1,1314 @@
+############################################################################
+# configs/stm3210e-eval/nxconsole/defconfig
+#
+# Copyright (C) 2012 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.
+#
+############################################################################
+#
+# architecture selection
+#
+# CONFIG_ARCH - identifies the arch subdirectory and, hence, the
+# processor architecture.
+# CONFIG_ARCH_family - for use in C code. This identifies the
+# particular chip family that the architecture is implemented
+# in.
+# CONFIG_ARCH_architecture - for use in C code. This identifies the
+# specific architecture within the chip familyl.
+# CONFIG_ARCH_CHIP - Identifies the arch/*/chip subdirectory
+# CONFIG_ARCH_CHIP_name - For use in C code
+# CONFIG_ARCH_BOARD - identifies the configs subdirectory and, hence,
+# the board that supports the particular chip or SoC.
+# CONFIG_ARCH_BOARD_name - for use in C code
+# CONFIG_ENDIAN_BIG - define if big endian (default is little endian)
+# CONFIG_BOARD_LOOPSPERMSEC - for delay loops
+# CONFIG_DRAM_SIZE - Describes the installed DRAM.
+# CONFIG_DRAM_START - The start address of DRAM (physical)
+# CONFIG_DRAM_END - Last address+1 of installed RAM
+# CONFIG_ARCH_IRQPRIO - The ST32F103Z supports interrupt prioritization
+# CONFIG_ARCH_INTERRUPTSTACK - This architecture supports an interrupt
+# stack. If defined, this symbol is the size of the interrupt
+# stack in bytes. If not defined, the user task stacks will be
+# used during interrupt handling.
+# CONFIG_ARCH_STACKDUMP - Do stack dumps after assertions
+# CONFIG_ARCH_BOOTLOADER - Set if you are using a bootloader.
+# CONFIG_ARCH_LEDS - Use LEDs to show state. Unique to board architecture.
+# CONFIG_ARCH_BUTTONS - Enable support for buttons. Unique to board architecture.
+# CONFIG_ARCH_CALIBRATION - Enables some build in instrumentation that
+# cause a 100 second delay during boot-up. This 100 second delay
+# serves no purpose other than it allows you to calibrate
+# CONFIG_BOARD_LOOPSPERMSEC. You simply use a stop watch to measure
+# the 100 second delay then adjust CONFIG_BOARD_LOOPSPERMSEC until
+# the delay actually is 100 seconds.
+# CONFIG_ARCH_DMA - Support DMA initialization
+#
+CONFIG_ARCH=arm
+CONFIG_ARCH_ARM=y
+CONFIG_ARCH_CORTEXM3=y
+CONFIG_ARCH_CHIP=stm32
+CONFIG_ARCH_CHIP_STM32F103ZET6=y
+CONFIG_ARCH_BOARD=stm3210e-eval
+CONFIG_ARCH_BOARD_STM3210E_EVAL=y
+CONFIG_BOARD_LOOPSPERMSEC=5483
+CONFIG_DRAM_SIZE=0x00010000
+CONFIG_DRAM_START=0x20000000
+CONFIG_DRAM_END=(CONFIG_DRAM_START+CONFIG_DRAM_SIZE)
+CONFIG_ARCH_IRQPRIO=y
+CONFIG_ARCH_INTERRUPTSTACK=n
+CONFIG_ARCH_STACKDUMP=y
+CONFIG_ARCH_BOOTLOADER=n
+CONFIG_ARCH_LEDS=y
+CONFIG_ARCH_BUTTONS=n
+CONFIG_ARCH_CALIBRATION=n
+CONFIG_ARCH_DMA=y
+
+#
+# Identify toolchain and linker options
+#
+CONFIG_STM32_CODESOURCERYW=y
+CONFIG_STM32_CODESOURCERYL=n
+CONFIG_STM32_DEVKITARM=n
+CONFIG_STM32_RAISONANCE=n
+CONFIG_STM32_BUILDROOT=n
+
+#
+# JTAG Enable settings (by default JTAG-DP and SW-DP are disabled):
+#
+# CONFIG_STM32_DFU - Use the DFU bootloader, not JTAG
+#
+# JTAG Enable options:
+#
+# CONFIG_STM32_JTAG_FULL_ENABLE - Enables full SWJ (JTAG-DP + SW-DP)
+# CONFIG_STM32_JTAG_NOJNTRST_ENABLE - Enables full SWJ (JTAG-DP + SW-DP)
+# but without JNTRST.
+# CONFIG_STM32_JTAG_SW_ENABLE - Set JTAG-DP disabled and SW-DP enabled
+#
+CONFIG_STM32_DFU=y
+CONFIG_STM32_JTAG_FULL_ENABLE=y
+CONFIG_STM32_JTAG_NOJNTRST_ENABLE=n
+CONFIG_STM32_JTAG_SW_ENABLE=n
+
+#
+# Individual subsystems can be enabled:
+# AHB:
+CONFIG_STM32_DMA1=n
+CONFIG_STM32_DMA2=y
+CONFIG_STM32_CRC=n
+CONFIG_STM32_FSMC=y
+CONFIG_STM32_SDIO=y
+# APB1:
+CONFIG_STM32_TIM2=n
+CONFIG_STM32_TIM3=n
+CONFIG_STM32_TIM4=n
+CONFIG_STM32_TIM5=n
+CONFIG_STM32_TIM6=n
+CONFIG_STM32_TIM7=n
+CONFIG_STM32_WWDG=n
+CONFIG_STM32_SPI2=n
+CONFIG_STM32_SPI4=n
+CONFIG_STM32_USART2=y
+CONFIG_STM32_USART3=n
+CONFIG_STM32_UART4=n
+CONFIG_STM32_UART5=n
+CONFIG_STM32_I2C1=n
+CONFIG_STM32_I2C2=n
+CONFIG_STM32_USB=y
+CONFIG_STM32_CAN1=n
+CONFIG_STM32_BKP=n
+CONFIG_STM32_PWR=n
+CONFIG_STM32_DAC=n
+# APB2:
+CONFIG_STM32_ADC1=n
+CONFIG_STM32_ADC2=n
+CONFIG_STM32_TIM1=n
+CONFIG_STM32_SPI1=n
+CONFIG_STM32_TIM8=n
+CONFIG_STM32_USART1=y
+CONFIG_STM32_ADC3=n
+
+#
+# Timer and I2C devices may need to the following to force power to be applied:
+#
+#CONFIG_STM32_FORCEPOWER=y
+
+#
+# STM32F103Z specific serial device driver settings
+#
+# CONFIG_USARTn_SERIAL_CONSOLE - selects the USARTn for the
+# console and ttys0 (default is the USART1).
+# CONFIG_USARTn_RXBUFSIZE - Characters are buffered as received.
+# This specific the size of the receive buffer
+# CONFIG_USARTn_TXBUFSIZE - Characters are buffered before
+# being sent. This specific the size of the transmit buffer
+# CONFIG_USARTn_BAUD - The configure BAUD of the UART. Must be
+# CONFIG_USARTn_BITS - The number of bits. Must be either 7 or 8.
+# CONFIG_USARTn_PARTIY - 0=no parity, 1=odd parity, 2=even parity
+# CONFIG_USARTn_2STOP - Two stop bits
+#
+CONFIG_USART1_SERIAL_CONSOLE=y
+CONFIG_USART2_SERIAL_CONSOLE=n
+CONFIG_USART3_SERIAL_CONSOLE=n
+CONFIG_USART4_SERIAL_CONSOLE=n
+CONFIG_USART5_SERIAL_CONSOLE=n
+
+CONFIG_USART1_TXBUFSIZE=256
+CONFIG_USART2_TXBUFSIZE=256
+CONFIG_USART3_TXBUFSIZE=256
+CONFIG_USART4_TXBUFSIZE=256
+CONFIG_USART5_TXBUFSIZE=256
+
+CONFIG_USART1_RXBUFSIZE=256
+CONFIG_USART2_RXBUFSIZE=256
+CONFIG_USART3_RXBUFSIZE=256
+CONFIG_USART4_RXBUFSIZE=256
+CONFIG_USART5_RXBUFSIZE=256
+
+CONFIG_USART1_BAUD=115200
+CONFIG_USART2_BAUD=115200
+CONFIG_USART3_BAUD=115200
+CONFIG_USART4_BAUD=115200
+CONFIG_USART5_BAUD=115200
+
+CONFIG_USART1_BITS=8
+CONFIG_USART2_BITS=8
+CONFIG_USART3_BITS=8
+CONFIG_USART4_BITS=8
+CONFIG_USART5_BITS=8
+
+CONFIG_USART1_PARITY=0
+CONFIG_USART2_PARITY=0
+CONFIG_USART3_PARITY=0
+CONFIG_USART4_PARITY=0
+CONFIG_USART5_PARITY=0
+
+CONFIG_USART1_2STOP=0
+CONFIG_USART2_2STOP=0
+CONFIG_USART3_2STOP=0
+CONFIG_USART4_2STOP=0
+CONFIG_USART5_2STOP=0
+
+#
+# STM32F103Z specific SSI device driver settings
+#
+# CONFIG_SSIn_DISABLE - select to disable all support for
+# the SSI
+# CONFIG_SSI_POLLWAIT - Select to disable interrupt driven SSI support
+# Poll-waiting is recommended if the interrupt rate would be to
+# high in the interrupt driven case.
+# CONFIG_SSI_TXLIMIT - Write this many words to the Tx FIFO before
+# emptying the Rx FIFO. If the SPI frequency is high and this
+# value is large, then larger values of this setting may cause
+# Rx FIFO overrun errors. Default: half of the Tx FIFO size (4).
+#
+CONFIG_SSI0_DISABLE=n
+CONFIG_SSI1_DISABLE=y
+CONFIG_SSI_POLLWAIT=y
+#CONFIG_SSI_TXLIMIT=4
+
+#
+# STM3210E-EVAL specific LCD settings
+#
+CONFIG_STM32_AM240320_DISABLE=n
+CONFIG_STM32_SPFD5408B_DISABLE=n
+CONFIG_STM32_R61580_DISABLE=y
+
+#
+# General build options
+#
+# CONFIG_RRLOAD_BINARY - make the rrload binary format used with
+# BSPs from www.ridgerun.com using the tools/mkimage.sh script
+# CONFIG_INTELHEX_BINARY - make the Intel HEX binary format
+# used with many different loaders using the GNU objcopy program
+# Should not be selected if you are not using the GNU toolchain.
+# CONFIG_MOTOROLA_SREC - make the Motorola S-Record binary format
+# used with many different loaders using the GNU objcopy program
+# Should not be selected if you are not using the GNU toolchain.
+# CONFIG_RAW_BINARY - make a raw binary format file used with many
+# different loaders using the GNU objcopy program. This option
+# should not be selected if you are not using the GNU toolchain.
+# CONFIG_HAVE_LIBM - toolchain supports libm.a
+#
+CONFIG_RRLOAD_BINARY=n
+CONFIG_INTELHEX_BINARY=y
+CONFIG_MOTOROLA_SREC=n
+CONFIG_RAW_BINARY=n
+CONFIG_HAVE_LIBM=n
+
+#
+# General OS setup
+#
+# CONFIG_APPS_DIR - Identifies the relative path to the directory
+# that builds the application to link with NuttX. Default: ../apps
+# CONFIG_DEBUG - enables built-in debug options
+# CONFIG_DEBUG_VERBOSE - enables verbose debug output
+# CONFIG_DEBUG_SYMBOLS - build without optimization and with
+# debug symbols (needed for use with a debugger).
+# CONFIG_HAVE_CXX - Enable support for C++
+# CONFIG_HAVE_CXXINITIALIZE - The platform-specific logic includes support
+# for initialization of static C++ instances for this architecture
+# and for the selected toolchain (via up_cxxinitialize()).
+# CONFIG_MM_REGIONS - If the architecture includes multiple
+# regions of memory to allocate from, this specifies the
+# number of memory regions that the memory manager must
+# handle and enables the API mm_addregion(start, end);
+# CONFIG_ARCH_LOWPUTC - architecture supports low-level, boot
+# time console output
+# CONFIG_MSEC_PER_TICK - The default system timer is 100Hz
+# or MSEC_PER_TICK=10. This setting may be defined to
+# inform NuttX that the processor hardware is providing
+# system timer interrupts at some interrupt interval other
+# than 10 msec.
+# CONFIG_RR_INTERVAL - The round robin timeslice will be set
+# this number of milliseconds; Round robin scheduling can
+# be disabled by setting this value to zero.
+# CONFIG_SCHED_INSTRUMENTATION - enables instrumentation in
+# scheduler to monitor system performance
+# CONFIG_TASK_NAME_SIZE - Spcifies that maximum size of a
+# task name to save in the TCB. Useful if scheduler
+# instrumentation is selected. Set to zero to disable.
+# CONFIG_START_YEAR, CONFIG_START_MONTH, CONFIG_START_DAY -
+# Used to initialize the internal time logic.
+# CONFIG_GREGORIAN_TIME - Enables Gregorian time conversions.
+# You would only need this if you are concerned about accurate
+# time conversions in the past or in the distant future.
+# CONFIG_JULIAN_TIME - Enables Julian time conversions. You
+# would only need this if you are concerned about accurate
+# time conversion in the distand past. You must also define
+# CONFIG_GREGORIAN_TIME in order to use Julian time.
+# CONFIG_DEV_CONSOLE - Set if architecture-specific logic
+# provides /dev/console. Enables stdout, stderr, stdin.
+# CONFIG_DEV_LOWCONSOLE - Use the simple, low-level serial console
+# driver (minimul support)
+# CONFIG_MUTEX_TYPES: Set to enable support for recursive and
+# errorcheck mutexes. Enables pthread_mutexattr_settype().
+# CONFIG_PRIORITY_INHERITANCE : Set to enable support for priority
+# inheritance on mutexes and semaphores.
+# CONFIG_SEM_PREALLOCHOLDERS: This setting is only used if priority
+# inheritance is enabled. It defines the maximum number of
+# different threads (minus one) that can take counts on a
+# semaphore with priority inheritance support. This may be
+# set to zero if priority inheritance is disabled OR if you
+# are only using semaphores as mutexes (only one holder) OR
+# if no more than two threads participate using a counting
+# semaphore.
+# CONFIG_SEM_NNESTPRIO. If priority inheritance is enabled,
+# then this setting is the maximum number of higher priority
+# threads (minus 1) than can be waiting for another thread
+# to release a count on a semaphore. This value may be set
+# to zero if no more than one thread is expected to wait for
+# a semaphore.
+# CONFIG_FDCLONE_DISABLE. Disable cloning of all file descriptors
+# by task_create() when a new task is started. If set, all
+# files/drivers will appear to be closed in the new task.
+# CONFIG_FDCLONE_STDIO. Disable cloning of all but the first
+# three file descriptors (stdin, stdout, stderr) by task_create()
+# when a new task is started. If set, all files/drivers will
+# appear to be closed in the new task except for stdin, stdout,
+# and stderr.
+# CONFIG_SDCLONE_DISABLE. Disable cloning of all socket
+# desciptors by task_create() when a new task is started. If
+# set, all sockets will appear to be closed in the new task.
+# CONFIG_SCHED_WORKQUEUE. Create a dedicated "worker" thread to
+# handle delayed processing from interrupt handlers. This feature
+# is required for some drivers but, if there are not complaints,
+# can be safely disabled. The worker thread also performs
+# garbage collection -- completing any delayed memory deallocations
+# from interrupt handlers. If the worker thread is disabled,
+# then that clean will be performed by the IDLE thread instead
+# (which runs at the lowest of priority and may not be appropriate
+# if memory reclamation is of high priority). If CONFIG_SCHED_WORKQUEUE
+# is enabled, then the following options can also be used:
+# CONFIG_SCHED_WORKPRIORITY - The execution priority of the worker
+# thread. Default: 50
+# CONFIG_SCHED_WORKPERIOD - How often the worker thread checks for
+# work in units of microseconds. Default: 50*1000 (50 MS).
+# CONFIG_SCHED_WORKSTACKSIZE - The stack size allocated for the worker
+# thread. Default: CONFIG_IDLETHREAD_STACKSIZE.
+# CONFIG_SIG_SIGWORK - The signal number that will be used to wake-up
+# the worker thread. Default: 4
+#
+#CONFIG_APPS_DIR=
+CONFIG_DEBUG=n
+CONFIG_DEBUG_VERBOSE=n
+CONFIG_DEBUG_GRAPHICS=n
+CONFIG_DEBUG_LCD=n
+CONFIG_DEBUG_SYMBOLS=n
+CONFIG_HAVE_CXX=n
+CONFIG_HAVE_CXXINITIALIZE=n
+CONFIG_MM_REGIONS=1
+CONFIG_ARCH_LOWPUTC=y
+CONFIG_RR_INTERVAL=200
+CONFIG_SCHED_INSTRUMENTATION=n
+CONFIG_TASK_NAME_SIZE=0
+CONFIG_START_YEAR=2012
+CONFIG_START_MONTH=3
+CONFIG_START_DAY=29
+CONFIG_GREGORIAN_TIME=n
+CONFIG_JULIAN_TIME=n
+CONFIG_DEV_CONSOLE=y
+CONFIG_DEV_LOWCONSOLE=n
+CONFIG_MUTEX_TYPES=n
+CONFIG_PRIORITY_INHERITANCE=n
+CONFIG_SEM_PREALLOCHOLDERS=0
+CONFIG_SEM_NNESTPRIO=0
+CONFIG_FDCLONE_DISABLE=n
+CONFIG_FDCLONE_STDIO=n
+CONFIG_SDCLONE_DISABLE=y
+CONFIG_SCHED_WORKQUEUE=y
+CONFIG_SCHED_WORKPRIORITY=50
+CONFIG_SCHED_WORKPERIOD=(50*1000)
+CONFIG_SCHED_WORKSTACKSIZE=1024
+CONFIG_SIG_SIGWORK=4
+
+#
+# Settings for NXFLAT
+#
+# CONFIG_NXFLAT. Enable support for the NXFLAT binary format.
+# This format will support execution of NuttX binaries located
+# in a ROMFS filesystem (see examples/nxflat).
+# CONFIG_NXFLAT_DUMPBUFFER. Dump a most buffers that NXFFLAT deals
+# with. CONFIG_DEBUG, CONFIG_DEBUG_VERBOSE, and
+# CONFIG_DEBUG_BINFMT have to be defined or
+# CONFIG_NXFLAT_DUMPBUFFER does nothing.
+# CONFIG_SYMTAB_ORDEREDBYNAME. Select if the system symbol table
+# is ordered by symbol name
+#
+CONFIG_NXFLAT=n
+CONFIG_NXFLAT_DUMPBUFFER=n
+CONFIG_SYMTAB_ORDEREDBYNAME=y
+
+#
+# The following can be used to disable categories of
+# APIs supported by the OS. If the compiler supports
+# weak functions, then it should not be necessary to
+# disable functions unless you want to restrict usage
+# of those APIs.
+#
+# There are certain dependency relationships in these
+# features.
+#
+# o mq_notify logic depends on signals to awaken tasks
+# waiting for queues to become full or empty.
+# o pthread_condtimedwait() depends on signals to wake
+# up waiting tasks.
+#
+CONFIG_DISABLE_CLOCK=n
+CONFIG_DISABLE_POSIX_TIMERS=n
+CONFIG_DISABLE_PTHREAD=n
+CONFIG_DISABLE_SIGNALS=n
+CONFIG_DISABLE_MQUEUE=n
+CONFIG_DISABLE_MOUNTPOINT=n
+CONFIG_DISABLE_ENVIRON=n
+CONFIG_DISABLE_POLL=y
+
+#
+# Misc libc settings
+#
+# CONFIG_NOPRINTF_FIELDWIDTH - sprintf-related logic is a
+# little smaller if we do not support fieldwidthes
+#
+CONFIG_NOPRINTF_FIELDWIDTH=n
+
+#
+# Allow for architecture optimized implementations
+#
+# The architecture can provide optimized versions of the
+# following to improve system performance
+#
+CONFIG_ARCH_MEMCPY=n
+CONFIG_ARCH_MEMCMP=n
+CONFIG_ARCH_MEMMOVE=n
+CONFIG_ARCH_MEMSET=n
+CONFIG_ARCH_STRCMP=n
+CONFIG_ARCH_STRCPY=n
+CONFIG_ARCH_STRNCPY=n
+CONFIG_ARCH_STRLEN=n
+CONFIG_ARCH_STRNLEN=n
+CONFIG_ARCH_BZERO=n
+
+#
+# Sizes of configurable things (0 disables)
+#
+# CONFIG_MAX_TASKS - The maximum number of simultaneously
+# active tasks. This value must be a power of two.
+# CONFIG_MAX_TASK_ARGS - This controls the maximum number of
+# of parameters that a task may receive (i.e., maxmum value
+# of 'argc')
+# CONFIG_NPTHREAD_KEYS - The number of items of thread-
+# specific data that can be retained
+# CONFIG_NFILE_DESCRIPTORS - The maximum number of file
+# descriptors (one for each open)
+# CONFIG_NFILE_STREAMS - The maximum number of streams that
+# can be fopen'ed
+# CONFIG_NAME_MAX - The maximum size of a file name.
+# CONFIG_STDIO_BUFFER_SIZE - Size of the buffer to allocate
+# on fopen. (Only if CONFIG_NFILE_STREAMS > 0)
+# CONFIG_STDIO_LINEBUFFER - If standard C buffered I/O is enabled
+# (CONFIG_STDIO_BUFFER_SIZE > 0), then this option may be added
+# to force automatic, line-oriented flushing the output buffer
+# for putc(), fputc(), putchar(), puts(), fputs(), printf(),
+# fprintf(), and vfprintf(). When a newline is encountered in
+# the output string, the output buffer will be flushed. This
+# (slightly) increases the NuttX footprint but supports the kind
+# CONFIG_NUNGET_CHARS - Number of characters that can be
+# buffered by ungetc() (Only if CONFIG_NFILE_STREAMS > 0)
+# CONFIG_PREALLOC_MQ_MSGS - The number of pre-allocated message
+# structures. The system manages a pool of preallocated
+# message structures to minimize dynamic allocations
+# CONFIG_MQ_MAXMSGSIZE - Message structures are allocated with
+# a fixed payload size given by this settin (does not include
+# other message structure overhead.
+# CONFIG_MAX_WDOGPARMS - Maximum number of parameters that
+# can be passed to a watchdog handler
+# CONFIG_PREALLOC_WDOGS - The number of pre-allocated watchdog
+# structures. The system manages a pool of preallocated
+# watchdog structures to minimize dynamic allocations
+# CONFIG_PREALLOC_TIMERS - The number of pre-allocated POSIX
+# timer structures. The system manages a pool of preallocated
+# timer structures to minimize dynamic allocations. Set to
+# zero for all dynamic allocations.
+#
+CONFIG_MAX_TASKS=16
+CONFIG_MAX_TASK_ARGS=4
+CONFIG_NPTHREAD_KEYS=4
+CONFIG_NFILE_DESCRIPTORS=12
+CONFIG_NFILE_STREAMS=12
+CONFIG_NAME_MAX=32
+CONFIG_STDIO_BUFFER_SIZE=64
+CONFIG_STDIO_LINEBUFFER=y
+CONFIG_NUNGET_CHARS=2
+CONFIG_PREALLOC_MQ_MSGS=8
+CONFIG_MQ_MAXMSGSIZE=32
+CONFIG_MAX_WDOGPARMS=2
+CONFIG_PREALLOC_WDOGS=4
+CONFIG_PREALLOC_TIMERS=4
+
+#
+# Framebuffer driver options
+#
+CONFIG_FB_CMAP=n
+CONFIG_FB_HWCURSOR=n
+CONFIG_FB_HWCURSORIMAGE=n
+#CONFIG_FB_HWCURSORSIZE
+#CONFIG_FB_TRANSPARENCY
+
+#
+# Filesystem configuration
+#
+# CONFIG_FS_FAT - Enable FAT filesystem support
+# CONFIG_FAT_SECTORSIZE - Max supported sector size
+# CONFIG_FAT_LCNAMES - Enable use of the NT-style upper/lower case 8.3
+# file name support.
+# CONFIG_FAT_LFN - Enable FAT long file names. NOTE: Microsoft claims
+# patents on FAT long file name technology. Please read the
+# disclaimer in the top-level COPYING file and only enable this
+# feature if you understand these issues.
+# CONFIG_FAT_MAXFNAME - If CONFIG_FAT_LFN is defined, then the
+# default, maximum long file name is 255 bytes. This can eat up
+# a lot of memory (especially stack space). If you are willing
+# to live with some non-standard, short long file names, then
+# define this value. A good choice would be the same value as
+# selected for CONFIG_NAME_MAX which will limit the visibility
+# of longer file names anyway.
+# CONFIG_FS_NXFFS: Enable NuttX FLASH file system (NXFF) support.
+# CONFIG_NXFFS_ERASEDSTATE: The erased state of FLASH.
+# This must have one of the values of 0xff or 0x00.
+# Default: 0xff.
+# CONFIG_NXFFS_PACKTHRESHOLD: When packing flash file data,
+# don't both with file chunks smaller than this number of data bytes.
+# CONFIG_NXFFS_MAXNAMLEN: The maximum size of an NXFFS file name.
+# Default: 255.
+# CONFIG_NXFFS_PACKTHRESHOLD: When packing flash file data,
+# don't both with file chunks smaller than this number of data bytes.
+# Default: 32.
+# CONFIG_NXFFS_TAILTHRESHOLD: clean-up can either mean
+# packing files together toward the end of the file or, if file are
+# deleted at the end of the file, clean up can simply mean erasing
+# the end of FLASH memory so that it can be re-used again. However,
+# doing this can also harm the life of the FLASH part because it can
+# mean that the tail end of the FLASH is re-used too often. This
+# threshold determines if/when it is worth erased the tail end of FLASH
+# and making it available for re-use (and possible over-wear).
+# Default: 8192.
+# CONFIG_FS_ROMFS - Enable ROMFS filesystem support
+# CONFIG_FS_RAMMAP - For file systems that do not support XIP, this
+# option will enable a limited form of memory mapping that is
+# implemented by copying whole files into memory.
+#
+CONFIG_FS_FAT=n
+CONFIG_FAT_LCNAMES=n
+CONFIG_FAT_LFN=n
+CONFIG_FAT_MAXFNAME=32
+CONFIG_FS_NXFFS=n
+CONFIG_FS_ROMFS=n
+
+#
+# SPI-based MMC/SD driver
+#
+# CONFIG_MMCSD_NSLOTS
+# Number of MMC/SD slots supported by the driver
+# CONFIG_MMCSD_READONLY
+# Provide read-only access (default is read/write)
+# CONFIG_MMCSD_SPICLOCK - Maximum SPI clock to drive MMC/SD card.
+# Default is 20MHz.
+#
+CONFIG_MMCSD_NSLOTS=1
+CONFIG_MMCSD_READONLY=n
+CONFIG_MMCSD_SPICLOCK=12500000
+
+#
+# Block driver buffering
+#
+# CONFIG_FS_READAHEAD
+# Enable read-ahead buffering
+# CONFIG_FS_WRITEBUFFER
+# Enable write buffering
+#
+CONFIG_FS_READAHEAD=n
+CONFIG_FS_WRITEBUFFER=n
+
+#
+# SDIO-based MMC/SD driver
+#
+# CONFIG_SDIO_DMA
+# SDIO driver supports DMA
+# CONFIG_MMCSD_MMCSUPPORT
+# Enable support for MMC cards
+# CONFIG_MMCSD_HAVECARDDETECT
+# SDIO driver card detection is 100% accurate
+#
+CONFIG_SDIO_DMA=y
+CONFIG_MMCSD_MMCSUPPORT=n
+CONFIG_MMCSD_HAVECARDDETECT=n
+
+#
+# TCP/IP and UDP support via uIP
+# CONFIG_NET - Enable or disable all network features
+# CONFIG_NET_IPv6 - Build in support for IPv6
+# CONFIG_NSOCKET_DESCRIPTORS - Maximum number of socket descriptors per task/thread.
+# CONFIG_NET_SOCKOPTS - Enable or disable support for socket options
+# CONFIG_NET_BUFSIZE - uIP buffer size
+# CONFIG_NET_TCP - TCP support on or off
+# CONFIG_NET_TCP_CONNS - Maximum number of TCP connections (all tasks)
+# CONFIG_NET_TCP_READAHEAD_BUFSIZE - Size of TCP read-ahead buffers
+# CONFIG_NET_NTCP_READAHEAD_BUFFERS - Number of TCP read-ahead buffers (may be zero)
+# CONFIG_NET_TCPBACKLOG - Incoming connections pend in a backlog until
+# accept() is called. The size of the backlog is selected when listen() is called.
+# CONFIG_NET_MAX_LISTENPORTS - Maximum number of listening TCP ports (all tasks)
+# CONFIG_NET_UDP - UDP support on or off
+# CONFIG_NET_UDP_CHECKSUMS - UDP checksums on or off
+# CONFIG_NET_UDP_CONNS - The maximum amount of concurrent UDP connections
+# CONFIG_NET_ICMP - ICMP ping response support on or off
+# CONFIG_NET_ICMP_PING - ICMP ping request support on or off
+# CONFIG_NET_PINGADDRCONF - Use "ping" packet for setting IP address
+# CONFIG_NET_STATISTICS - uIP statistics on or off
+# CONFIG_NET_RECEIVE_WINDOW - The size of the advertised receiver's window
+# CONFIG_NET_ARPTAB_SIZE - The size of the ARP table
+# CONFIG_NET_BROADCAST - Broadcast support
+# CONFIG_NET_FWCACHE_SIZE - number of packets to remember when looking for duplicates
+#
+CONFIG_NET=n
+CONFIG_NET_IPv6=n
+CONFIG_NSOCKET_DESCRIPTORS=0
+CONFIG_NET_SOCKOPTS=y
+CONFIG_NET_BUFSIZE=420
+CONFIG_NET_TCP=n
+CONFIG_NET_TCP_CONNS=40
+CONFIG_NET_MAX_LISTENPORTS=40
+CONFIG_NET_UDP=n
+CONFIG_NET_UDP_CHECKSUMS=y
+#CONFIG_NET_UDP_CONNS=10
+CONFIG_NET_ICMP=n
+CONFIG_NET_ICMP_PING=n
+#CONFIG_NET_PINGADDRCONF=0
+CONFIG_NET_STATISTICS=y
+#CONFIG_NET_RECEIVE_WINDOW=
+#CONFIG_NET_ARPTAB_SIZE=8
+CONFIG_NET_BROADCAST=n
+#CONFIG_NET_FWCACHE_SIZE=2
+
+#
+# UIP Network Utilities
+# CONFIG_NET_DHCP_LIGHT - Reduces size of DHCP
+# CONFIG_NET_RESOLV_ENTRIES - Number of resolver entries
+#
+CONFIG_NET_DHCP_LIGHT=n
+CONFIG_NET_RESOLV_ENTRIES=4
+
+#
+# USB Device Configuration
+#
+# CONFIG_USBDEV
+# Enables USB device support
+# CONFIG_USBDEV_ISOCHRONOUS
+# Build in extra support for isochronous endpoints
+# CONFIG_USBDEV_DUALSPEED
+# Hardware handles high and full speed operation (USB 2.0)
+# CONFIG_USBDEV_SELFPOWERED
+# Will cause USB features to indicate that the device is
+# self-powered
+# CONFIG_USBDEV_MAXPOWER
+# Maximum power consumption in mA
+# CONFIG_USBDEV_TRACE
+# Enables USB tracing for debug
+# CONFIG_USBDEV_TRACE_NRECORDS
+# Number of trace entries to remember
+#
+CONFIG_USBDEV=n
+CONFIG_USBDEV_ISOCHRONOUS=n
+CONFIG_USBDEV_DUALSPEED=n
+CONFIG_USBDEV_SELFPOWERED=y
+CONFIG_USBDEV_REMOTEWAKEUP=n
+CONFIG_USBDEV_MAXPOWER=100
+CONFIG_USBDEV_TRACE=n
+CONFIG_USBDEV_TRACE_NRECORDS=128
+
+#
+# USB Serial Device Configuration
+#
+# CONFIG_PL2303
+# Enable compilation of the USB serial driver
+# CONFIG_PL2303_EPINTIN
+# The logical 7-bit address of a hardware endpoint that supports
+# interrupt IN operation
+# CONFIG_PL2303_EPBULKOUT
+# The logical 7-bit address of a hardware endpoint that supports
+# bulk OUT operation
+# CONFIG_PL2303_EPBULKIN
+# The logical 7-bit address of a hardware endpoint that supports
+# bulk IN operation
+# # CONFIG_PL2303_NWRREQS and CONFIG_PL2303_NRDREQS
+# The number of write/read requests that can be in flight
+# CONFIG_PL2303_VENDORID and CONFIG_PL2303_VENDORSTR
+# The vendor ID code/string
+# CONFIG_PL2303_PRODUCTID and CONFIG_PL2303_PRODUCTSTR
+# The product ID code/string
+# CONFIG_PL2303_RXBUFSIZE and CONFIG_PL2303_TXBUFSIZE
+# Size of the serial receive/transmit buffers
+#
+CONFIG_PL2303=n
+CONFIG_PL2303_EPINTIN=1
+CONFIG_PL2303_EPBULKOUT=2
+CONFIG_PL2303_EPBULKIN=3
+CONFIG_PL2303_NWRREQS=4
+CONFIG_PL2303_NRDREQS=4
+CONFIG_PL2303_VENDORID=0x067b
+CONFIG_PL2303_PRODUCTID=0x2303
+CONFIG_PL2303_VENDORSTR="Nuttx"
+CONFIG_PL2303_PRODUCTSTR="USBdev Serial"
+CONFIG_PL2303_RXBUFSIZE=512
+CONFIG_PL2303_TXBUFSIZE=512
+
+#
+# USB Storage Device Configuration
+#
+# CONFIG_USBMSC
+# Enable compilation of the USB storage driver
+# CONFIG_USBMSC_EP0MAXPACKET
+# Max packet size for endpoint 0
+# CONFIG_USBMSC_EPBULKOUT and CONFIG_USBMSC_EPBULKIN
+# The logical 7-bit address of a hardware endpoints that support
+# bulk OUT and IN operations
+# CONFIG_USBMSC_NWRREQS and CONFIG_USBMSC_NRDREQS
+# The number of write/read requests that can be in flight
+# CONFIG_USBMSC_BULKINREQLEN and CONFIG_USBMSC_BULKOUTREQLEN
+# The size of the buffer in each write/read request. This
+# value needs to be at least as large as the endpoint
+# maxpacket and ideally as large as a block device sector.
+# CONFIG_USBMSC_VENDORID and CONFIG_USBMSC_VENDORSTR
+# The vendor ID code/string
+# CONFIG_USBMSC_PRODUCTID and CONFIG_USBMSC_PRODUCTSTR
+# The product ID code/string
+# CONFIG_USBMSC_REMOVABLE
+# Select if the media is removable
+#
+CONFIG_USBMSC=n
+CONFIG_USBMSC_EP0MAXPACKET=64
+CONFIG_USBMSC_EPBULKOUT=2
+CONFIG_USBMSC_EPBULKIN=5
+CONFIG_USBMSC_NRDREQS=2
+CONFIG_USBMSC_NWRREQS=2
+CONFIG_USBMSC_BULKINREQLEN=256
+CONFIG_USBMSC_BULKOUTREQLEN=256
+CONFIG_USBMSC_VENDORID=0x584e
+CONFIG_USBMSC_VENDORSTR="NuttX"
+CONFIG_USBMSC_PRODUCTID=0x5342
+CONFIG_USBMSC_PRODUCTSTR="USBdev Storage"
+CONFIG_USBMSC_VERSIONNO=0x0399
+CONFIG_USBMSC_REMOVABLE=y
+
+#
+# Graphics related configuration settings
+#
+# CONFIG_NX
+# Enables overall support for graphics library and NX
+# CONFIG_NX_MULTIUSER
+# Configures NX in multi-user mode
+# CONFIG_NX_NPLANES
+# Some YUV color formats requires support for multiple planes,
+# one for each color component. Unless you have such special
+# hardware, this value should be undefined or set to 1
+# CONFIG_NX_DISABLE_1BPP, CONFIG_NX_DISABLE_2BPP,
+# CONFIG_NX_DISABLE_4BPP, CONFIG_NX_DISABLE_8BPP,
+# CONFIG_NX_DISABLE_16BPP, CONFIG_NX_DISABLE_24BPP, and
+# CONFIG_NX_DISABLE_32BPP
+# NX supports a variety of pixel depths. You can save some
+# memory by disabling support for unused color depths.
+# CONFIG_NX_PACKEDMSFIRST
+# If a pixel depth of less than 8-bits is used, then NX needs
+# to know if the pixels pack from the MS to LS or from LS to MS
+# CONFIG_NX_LCDDRIVER
+# By default, NX builds to use a framebuffer driver (see
+# include/nuttx/fb.h). If this option is defined, NX will
+# build to use an LCD driver (see include/nuttx/lcd/lcd.h).
+# CONFIG_LCD_MAXPOWER - The full-on power setting for an LCD device.
+# CONFIG_LCD_MAXCONTRAST - The maximum contrast value for an LCD device.
+# CONFIG_NX_MOUSE
+# Build in support for mouse input
+# CONFIG_NX_KBD
+# Build in support of keypad/keyboard input
+# CONFIG_NXTK_BORDERWIDTH
+# Specifies with with of the border (in pixels) used with
+# framed windows. The default is 4.
+# CONFIG_NXTK_BORDERCOLOR1 and CONFIG_NXTK_BORDERCOLOR2
+# Specify the colors of the border used with framed windows.
+# CONFIG_NXTK_BORDERCOLOR2 is the shadow side color and so
+# is normally darker. The default is medium and dark grey,
+# respectively
+# CONFIG_NXTK_AUTORAISE
+# If set, a window will be raised to the top if the mouse position
+# is over a visible portion of the window. Default: A mouse
+# button must be clicked over a visible portion of the window.
+# CONFIG_NXFONTS_CHARBITS
+# The number of bits in the character set. Current options are
+# only 7 and 8. The default is 7.
+# CONFIG_NXFONT_SANS23X27
+# This option enables support for a tiny, 23x27 san serif font
+# (font ID FONTID_SANS23X27 == 1).
+# CONFIG_NXFONT_SANS22X29
+# This option enables support for a small, 22x29 san serif font
+# (font ID FONTID_SANS22X29 == 2).
+# CONFIG_NXFONT_SANS28X37
+# This option enables support for a medium, 28x37 san serif font
+# (font ID FONTID_SANS28X37 == 3).
+# CONFIG_NXFONT_SANS39X48
+# This option enables support for a large, 39x48 san serif font
+# (font ID FONTID_SANS39X48 == 4).
+# CONFIG_NXFONT_SANS22X29B
+# This option enables support for a small, 22x29 san serif bold font
+# (font ID FONTID_SANS22X29B == 5).
+# CONFIG_NXFONT_SANS28X37B
+# This option enables support for a medium, 28x37 san serif bold font
+# (font ID FONTID_SANS28X37B == 6).
+# CONFIG_NXFONT_SANS40X49B
+# This option enables support for a large, 40x49 san serif bold font
+# (font ID FONTID_SANS40X49B == 7).
+# CONFIG_NXFONT_SERIF22X29
+# This option enables support for a small, 22x29 font (with serifs)
+# (font ID FONTID_SERIF22X29 == 8).
+# CONFIG_NXFONT_SERIF29X37
+# This option enables support for a medium, 29x37 font (with serifs)
+# (font ID FONTID_SERIF29X37 == 9).
+# CONFIG_NXFONT_SERIF38X48
+# This option enables support for a large, 38x48 font (with serifs)
+# (font ID FONTID_SERIF38X48 == 10).
+# CONFIG_NXFONT_SERIF22X28B
+# This option enables support for a small, 27x38 bold font (with serifs)
+# (font ID FONTID_SERIF22X28B == 11).
+# CONFIG_NXFONT_SERIF27X38B
+# This option enables support for a medium, 27x38 bold font (with serifs)
+# (font ID FONTID_SERIF27X38B == 12).
+# CONFIG_NXFONT_SERIF38X49B
+# This option enables support for a large, 38x49 bold font (with serifs)
+# (font ID FONTID_SERIF38X49B == 13).
+#
+# NX Multi-user only options:
+#
+# CONFIG_NX_BLOCKING
+# Open the client message queues in blocking mode. In this case,
+# nx_eventhandler() will not return until a message is received and processed.
+# CONFIG_NX_MXSERVERMSGS and CONFIG_NX_MXCLIENTMSGS
+# Specifies the maximum number of messages that can fit in
+# the message queues. No additional resources are allocated, but
+# this can be set to prevent flooding of the client or server with
+# too many messages (CONFIG_PREALLOC_MQ_MSGS controls how many
+# messages are pre-allocated).
+#
+CONFIG_NX=y
+CONFIG_NX_MULTIUSER=y
+CONFIG_NX_NPLANES=1
+CONFIG_NX_DISABLE_1BPP=y
+CONFIG_NX_DISABLE_2BPP=y
+CONFIG_NX_DISABLE_4BPP=y
+CONFIG_NX_DISABLE_8BPP=y
+CONFIG_NX_DISABLE_16BPP=n
+CONFIG_NX_DISABLE_24BPP=y
+CONFIG_NX_DISABLE_32BPP=y
+CONFIG_NX_PACKEDMSFIRST=n
+CONFIG_NX_LCDDRIVER=y
+CONFIG_LCD_MAXPOWER=1
+CONFIG_LCD_MAXCONTRAST=1
+CONFIG_NX_MOUSE=y
+CONFIG_NX_KBD=y
+#CONFIG_NXTK_BORDERWIDTH=4
+CONFIG_NXTK_BORDERCOLOR1=0xd69a
+CONFIG_NXTK_BORDERCOLOR2=0xad55
+CONFIG_NXFONT_SANS22X29=n
+CONFIG_NXFONT_SANS23X27=y
+CONFIG_NXFONT_SANS28X37=n
+CONFIG_NXFONT_SANS22X29B=n
+CONFIG_NXFONT_SANS28X37B=n
+CONFIG_NXFONT_SANS40X49B=n
+CONFIG_NXFONT_SERIF22X29=n
+CONFIG_NXFONT_SERIF29X37=n
+CONFIG_NXFONT_SERIF38X48=n
+CONFIG_NXFONT_SERIF22X28B=n
+CONFIG_NXFONT_SERIF27X38B=n
+CONFIG_NXFONT_SERIF38X49B=n
+CONFIG_NXTK_AUTORAISE=n
+CONFIG_NXFONTS_CHARBITS=7
+CONFIG_NX_BLOCKING=y
+CONFIG_NX_MXSERVERMSGS=32
+CONFIG_NX_MXCLIENTMSGS=16
+
+#
+# NxConsole Configuration Settings:
+#
+# CONFIG_NXCONSOLE
+# Enables building of the NxConsole driver.
+# CONFIG_NXCONSOLE_BPP
+# Currently, NxConsole supports only a single pixel depth. This
+# configuration setting must be provided to support that single pixel depth.
+# Default: The smallest enabled pixel depth. (see CONFIG_NX_DISABLE_*BPP)
+# CONFIG_NXCONSOLE_NOGETRUN
+# NxConsole needs to know if it can read from the LCD or not. If reading
+# from the LCD is supported, then NxConsole can do more efficient
+# scrolling. Default: Supported
+# CONFIG_NXCONSOLE_MXCHARS
+# NxConsole needs to remember every character written to the console so
+# that it can redraw the window. This setting determines the size of some
+# internal memory allocations used to hold the character data. Default: 128.
+# CONFIG_NXCONSOLE_FONTCACHE
+# If this setting is defined, then caching of fonts will be supported by
+# NxConsole. Each font must be rendered from the tiny font storage format
+# to the full display size and pixel depth. If this setting is defined, then
+# the more recently used font glyphs will be retained in a cache of size
+# CONFIG_NXCONSOLE_CACHESIZE. Default: No font caching.
+# CONFIG_NXCONSOLE_CACHESIZE
+# If CONFIG_NXCONSOLE_FONTCACHE, then this setting will control the size
+# of the font cache (in number of glyphs). Default: 16.
+# CONFIG_NXCONSOLE_LINESEPARATION
+# This the space (in rows) between each row of test. Default: 2
+# CONFIG_NXCONSOLE_NOWRAP
+# By default, lines will wrap when the test reaches the right hand side
+# of the window. This setting can be defining to change this behavior so
+# that the text is simply truncated until a new line is encountered.
+#
+CONFIG_NXCONSOLE=y
+CONFIG_NXCONSOLE_BPP=16
+# CONFIG_NXCONSOLE_NOGETRUN
+CONFIG_NXCONSOLE_MXCHARS=256
+# CONFIG_NXCONSOLE_FONTCACHE
+# CONFIG_NXCONSOLE_CACHESIZE
+# CONFIG_NXCONSOLE_LINESEPARATION
+# CONFIG_NXCONSOLE_NOWRAP
+
+#
+# STM3210E-EVAL LCD Hardware Configuration
+#
+# CONFIG_LCD_LANDSCAPE - Define for 320x240 display "landscape"
+# support. Default is this 320x240 "landscape" orientation
+# (this setting is informative only... not used).
+# CONFIG_LCD_PORTRAIT - Define for 240x320 display "portrait"
+# orientation support. In this orientation, the STM3210E-EVAL's
+# LCD ribbon cable is at the bottom of the display. Default is
+# 320x240 "landscape" orientation.
+# CONFIG_LCD_RPORTRAIT - Define for 240x320 display "reverse
+# portrait" orientation support. In this orientation, the
+# STM3210E-EVAL's LCD ribbon cable is at the top of the display.
+# Default is 320x240 "landscape" orientation.
+# CONFIG_LCD_BACKLIGHT - Define to support a backlight.
+# CONFIG_LCD_PWM - If CONFIG_STM32_TIM1 is also defined, then an
+# adjustable backlight will be provided using timer 1 to generate
+# various pulse widthes. The granularity of the settings is
+# determined by CONFIG_LCD_MAXPOWER. If CONFIG_LCD_PWM (or
+# CONFIG_STM32_TIM1) is not defined, then a simple on/off backlight
+# is provided.
+#
+CONFIG_LCD_LANDSCAPE=y
+CONFIG_LCD_PORTRAIT=n
+CONFIG_LCD_RPORTRAIT=n
+CONFIG_LCD_BACKLIGHT=n
+CONFIG_LCD_PWM=n
+
+#
+# Settings for examples/uip
+#
+CONFIG_EXAMPLE_UIP_IPADDR=(10<<24|0<<16|0<<8|2)
+CONFIG_EXAMPLE_UIP_DRIPADDR=(10<<24|0<<16|0<<8|1)
+CONFIG_EXAMPLE_UIP_NETMASK=(255<<24|255<<16|255<<8|0)
+CONFIG_EXAMPLE_UIP_DHCPC=n
+
+#
+# Settings for examples/nettest
+CONFIG_EXAMPLE_NETTEST_SERVER=n
+CONFIG_EXAMPLE_NETTEST_PERFORMANCE=n
+CONFIG_EXAMPLE_NETTEST_NOMAC=n
+CONFIG_EXAMPLE_NETTEST_IPADDR=(10<<24|0<<16|0<<8|2)
+CONFIG_EXAMPLE_NETTEST_DRIPADDR=(10<<24|0<<16|0<<8|1)
+CONFIG_EXAMPLE_NETTEST_NETMASK=(255<<24|255<<16|255<<8|0)
+CONFIG_EXAMPLE_NETTEST_CLIENTIP=(10<<24|0<<16|0<<8|1)
+
+#
+# Settings for examples/ostest
+#
+CONFIG_EXAMPLES_OSTEST_LOOPS=1
+CONFIG_EXAMPLES_OSTEST_STACKSIZE=2048
+CONFIG_EXAMPLES_OSTEST_NBARRIER_THREADS=3
+
+#
+# Settings for apps/nshlib
+#
+# CONFIG_NSH_BUILTIN_APPS - Support external registered,
+# "named" applications that can be executed from the NSH
+# command line (see apps/README.txt for more information).
+# CONFIG_NSH_FILEIOSIZE - Size of a static I/O buffer
+# CONFIG_NSH_STRERROR - Use strerror(errno)
+# CONFIG_NSH_LINELEN - Maximum length of one command line
+# CONFIG_NSH_NESTDEPTH - Max number of nested if-then[-else]-fi
+# CONFIG_NSH_DISABLESCRIPT - Disable scripting support
+# CONFIG_NSH_DISABLEBG - Disable background commands
+# CONFIG_NSH_ROMFSETC - Use startup script in /etc
+# CONFIG_NSH_CONSOLE - Use serial console front end
+# CONFIG_NSH_CONDEV - Select the serial device used to support
+# the NSH console. Default: stdin and stdout
+# CONFIG_NSH_TELNET - Use telnetd console front end
+# CONFIG_NSH_ARCHINIT - Platform provides architecture
+# specific initialization (nsh_archinitialize()).
+#
+# If CONFIG_NSH_TELNET is selected:
+# CONFIG_NSH_IOBUFFER_SIZE -- Telnetd I/O buffer size
+# CONFIG_NSH_DHCPC - Obtain address using DHCP
+# CONFIG_NSH_IPADDR - Provides static IP address
+# CONFIG_NSH_DRIPADDR - Provides static router IP address
+# CONFIG_NSH_NETMASK - Provides static network mask
+# CONFIG_NSH_NOMAC - Use a bogus MAC address
+#
+# If CONFIG_NSH_ROMFSETC is selected:
+# CONFIG_NSH_ROMFSMOUNTPT - ROMFS mountpoint
+# CONFIG_NSH_INITSCRIPT - Relative path to init script
+# CONFIG_NSH_ROMFSDEVNO - ROMFS RAM device minor
+# CONFIG_NSH_ROMFSSECTSIZE - ROMF sector size
+# CONFIG_NSH_FATDEVNO - FAT FS RAM device minor
+# CONFIG_NSH_FATSECTSIZE - FAT FS sector size
+# CONFIG_NSH_FATNSECTORS - FAT FS number of sectors
+# CONFIG_NSH_FATMOUNTPT - FAT FS mountpoint
+#
+CONFIG_NSH_BUILTIN_APPS=y
+CONFIG_NSH_FILEIOSIZE=512
+CONFIG_NSH_STRERROR=n
+CONFIG_NSH_LINELEN=64
+CONFIG_NSH_NESTDEPTH=3
+CONFIG_NSH_DISABLESCRIPT=n
+CONFIG_NSH_DISABLEBG=n
+CONFIG_NSH_ROMFSETC=n
+CONFIG_NSH_CONSOLE=y
+#CONFIG_NSH_CONDEV="/dev/ttyS1"
+CONFIG_NSH_TELNET=n
+CONFIG_NSH_ARCHINIT=y
+CONFIG_NSH_IOBUFFER_SIZE=512
+CONFIG_NSH_DHCPC=n
+CONFIG_NSH_NOMAC=n
+CONFIG_NSH_IPADDR=(10<<24|0<<16|0<<8|2)
+CONFIG_NSH_DRIPADDR=(10<<24|0<<16|0<<8|1)
+CONFIG_NSH_NETMASK=(255<<24|255<<16|255<<8|0)
+CONFIG_NSH_ROMFSMOUNTPT="/etc"
+CONFIG_NSH_INITSCRIPT="init.d/rcS"
+CONFIG_NSH_ROMFSDEVNO=0
+CONFIG_NSH_ROMFSSECTSIZE=64
+CONFIG_NSH_FATDEVNO=1
+CONFIG_NSH_FATSECTSIZE=512
+CONFIG_NSH_FATNSECTORS=1024
+CONFIG_NSH_FATMOUNTPT=/tmp
+
+#
+# Architecture-specific NSH options
+#
+CONFIG_NSH_MMCSDSPIPORTNO=0
+CONFIG_NSH_MMCSDSLOTNO=0
+CONFIG_NSH_MMCSDMINOR=0
+
+#
+# Settings for examples/usbserial
+#
+# CONFIG_EXAMPLES_USBSERIAL_INONLY
+# Only verify IN (device-to-host) data transfers. Default: both
+# CONFIG_EXAMPLES_USBSERIAL_OUTONLY
+# Only verify OUT (host-to-device) data transfers. Default: both
+# CONFIG_EXAMPLES_USBSERIAL_ONLYSMALL
+# Send only small, single packet messages. Default: Send large and small.
+# CONFIG_EXAMPLES_USBSERIAL_ONLYBIG
+# Send only large, multi-packet messages. Default: Send large and small.
+#
+CONFIG_EXAMPLES_USBSERIAL_INONLY=n
+CONFIG_EXAMPLES_USBSERIAL_OUTONLY=n
+CONFIG_EXAMPLES_USBSERIAL_ONLYSMALL=n
+CONFIG_EXAMPLES_USBSERIAL_ONLYBIG=n
+
+CONFIG_EXAMPLES_USBSERIAL_TRACEINIT=n
+CONFIG_EXAMPLES_USBSERIAL_TRACECLASS=n
+CONFIG_EXAMPLES_USBSERIAL_TRACETRANSFERS=n
+CONFIG_EXAMPLES_USBSERIAL_TRACECONTROLLER=n
+CONFIG_EXAMPLES_USBSERIAL_TRACEINTERRUPTS=n
+
+#
+# Settings for examples/nx
+#
+# CONFIG_EXAMPLES_NX_BUILTIN -- Build the NX example as a "built-in"
+# that can be executed from the NSH command line
+# CONFIG_EXAMPLES_NX_VPLANE -- The plane to select from the frame-
+# buffer driver for use in the test. Default: 0
+# CONFIG_EXAMPLES_NX_DEVNO - The LCD device to select from the LCD
+# driver for use in the test: Default: 0
+# CONFIG_EXAMPLES_NX_BGCOLOR -- The color of the background. Default depends on
+# CONFIG_EXAMPLES_NX_BPP.
+# CONFIG_EXAMPLES_NX_COLOR1 -- The color of window 1. Default depends on
+# CONFIG_EXAMPLES_NX_BPP.
+# CONFIG_EXAMPLES_NX_COLOR2 -- The color of window 2. Default depends on
+# CONFIG_EXAMPLES_NX_BPP.
+# CONFIG_EXAMPLES_NX_TBCOLOR -- The color of the toolbar. Default depends on
+# CONFIG_EXAMPLES_NX_BPP.
+# CONFIG_EXAMPLES_NX_FONTID - Selects the font (see font ID numbers in
+# include/nuttx/nx/nxfonts.h)
+# CONFIG_EXAMPLES_NX_FONTCOLOR -- The color of the toolbar. Default depends on
+# CONFIG_EXAMPLES_NX_BPP.
+# CONFIG_EXAMPLES_NX_BPP -- Pixels per pixel to use. Valid options
+# include 2, 4, 8, 16, 24, and 32. Default is 32.
+# CONFIG_EXAMPLES_NX_RAWWINDOWS -- Use raw windows; Default is to
+# use pretty, framed NXTK windows with toolbars.
+# CONFIG_EXAMPLES_NX_STACKSIZE -- The stacksize to use when creating
+# the NX server. Default 2048
+# CONFIG_EXAMPLES_NX_CLIENTPRIO -- The client priority. Default: 80
+# CONFIG_EXAMPLES_NX_SERVERPRIO -- The server priority. Default: 120
+# CONFIG_EXAMPLES_NX_NOTIFYSIGNO -- The signal number to use with
+# nx_eventnotify(). Default: 4
+#
+CONFIG_EXAMPLES_NX_BUILTIN=n
+CONFIG_EXAMPLES_NX_VPLANE=0
+CONFIG_EXAMPLES_NX_DEVNO=0
+CONFIG_EXAMPLES_NX_BGCOLOR=0x0011
+CONFIG_EXAMPLES_NX_COLOR1=0xaedc
+CONFIG_EXAMPLES_NX_COLOR2=0xe7ff
+CONFIG_EXAMPLES_NX_TBCOLOR=0xd69a
+CONFIG_EXAMPLES_NX_FONTID=0
+CONFIG_EXAMPLES_NX_FONTCOLOR=0x0000
+CONFIG_EXAMPLES_NX_BPP=16
+CONFIG_EXAMPLES_NX_RAWWINDOWS=n
+CONFIG_EXAMPLES_NX_STACKSIZE=2048
+CONFIG_EXAMPLES_NX_CLIENTPRIO=80
+CONFIG_EXAMPLES_NX_SERVERPRIO=120
+CONFIG_EXAMPLES_NX_NOTIFYSIGNO=4
+CONFIG_EXAMPLES_NX_EXTERNINIT=n
+
+#
+# Settings for examples/nxtext
+#
+# CONFIG_EXAMPLES_NXTEXT_BUILTIN -- Build the NXTEXT example as a "built-in"
+# that can be executed from the NSH command line
+# CONFIG_EXAMPLES_NXTEXT_VPLANE -- The plane to select from the frame-
+# buffer driver for use in the test. Default: 0
+# CONFIG_EXAMPLES_NXTEXT_DEVNO - The LCD device to select from the LCD
+# driver for use in the test: Default: 0
+# CONFIG_EXAMPLES_NXTEXT_BGCOLOR -- The color of the background. Default
+# depends on CONFIG_EXAMPLES_NXTEXT_BPP.
+# CONFIG_EXAMPLES_NXTEXT_BGFONTID - Selects the font to use in the
+# background text (see font ID numbers in include/nuttx/nx/nxfonts.h)
+# CONFIG_EXAMPLES_NXTEXT_BGFONTCOLOR -- The color of the fonts used in the
+# background window. Default depends on CONFIG_EXAMPLES_NXTEXT_BPP.
+# CONFIG_EXAMPLES_NXTEXT_PUCOLOR -- The color of the pop-up window. Default
+# depends on CONFIG_EXAMPLES_NXTEXT_BPP.
+# CONFIG_EXAMPLES_NXTEXT_PUFONTID - Selects the font to use in the pop-up
+# windows (see font ID numbers in include/nuttx/nx/nxfonts.h)
+# CONFIG_EXAMPLES_NXTEXT_PUFONTCOLOR -- The color of the fonts used in the
+# background window. Default depends on CONFIG_EXAMPLES_NXTEXT_BPP.
+# CONFIG_EXAMPLES_NXTEXT_BPP -- Pixels per pixel to use. Valid options
+# include 2, 4, 8, 16, 24, and 32. Default is 32.
+# CONFIG_EXAMPLES_NXTEXT_NOGETRUN -- If your display is read-only OR if
+# reading is not reliable, then select this configuration to avoid
+# reading from the display.
+# CONFIG_EXAMPLES_NXTEXT_EXTERNINIT - The driver for the graphics device on
+# this platform requires some unusual initialization. This is the
+# for, for example, SPI LCD/OLED devices.
+# CONFIG_EXAMPLES_NXTEXT_BMCACHE - The maximum number of characters that
+# can be put in the background window. Default is 128.
+# CONFIG_EXAMPLES_NXTEXT_GLCACHE - The maximum number of pre-rendered
+# fonts that can be retained for the background window. Default is 16.
+# CONFIG_EXAMPLES_NXTEXT_STACKSIZE -- The stacksize to use when creating
+# the NX server. Default 2048
+# CONFIG_EXAMPLES_NXTEXT_CLIENTPRIO -- The client priority. Default: 100
+# CONFIG_EXAMPLES_NXTEXT_SERVERPRIO -- The server priority. Default: 120
+# CONFIG_EXAMPLES_NXTEXT_LISTENERPRIO -- The priority of the event listener
+# thread. Default 80.
+# CONFIG_EXAMPLES_NXTEXT_NOTIFYSIGNO -- The signal number to use with
+# nx_eventnotify(). Default: 4
+#
+CONFIG_EXAMPLES_NXTEXT_BUILTIN=n
+CONFIG_EXAMPLES_NXTEXT_VPLANE=0
+CONFIG_EXAMPLES_NXTEXT_DEVNO=0
+CONFIG_EXAMPLES_NXTEXT_BGCOLOR=0x0011
+CONFIG_EXAMPLES_NXTEXT_BGFONTID=11
+CONFIG_EXAMPLES_NXTEXT_BGFONTCOLOR=0xffdf
+CONFIG_EXAMPLES_NXTEXT_PUCOLOR=0xfd20
+CONFIG_EXAMPLES_NXTEXT_PUFONTID=1
+CONFIG_EXAMPLES_NXTEXT_PUFONTCOLOR=0x001f
+CONFIG_EXAMPLES_NXTEXT_BPP=16
+CONFIG_EXAMPLES_NXTEXT_NOGETRUN=y
+CONFIG_EXAMPLES_NXTEXT_EXTERNINIT=n
+CONFIG_EXAMPLES_NXTEXT_BMCACHE=512
+CONFIG_EXAMPLES_NXTEXT_GLCACHE=16
+CONFIG_EXAMPLES_NXTEXT_STACKSIZE=2048
+CONFIG_EXAMPLES_NXTEXT_CLIENTPRIO=80
+CONFIG_EXAMPLES_NXTEXT_SERVERPRIO=120
+CONFIG_EXAMPLES_NXTEXT_NOTIFYSIGNO=4
+
+#
+# Settings for examples/nximage
+#
+# CONFIG_EXAMPLES_NXIMAGE_BUILTIN -- Build the NXIMAGE example as a "built-in"
+# that can be executed from the NSH command line
+# CONFIG_EXAMPLES_NXIMAGE_VPLANE -- The plane to select from the frame-
+# buffer driver for use in the test. Default: 0
+# CONFIG_EXAMPLES_NXIMAGE_DEVNO - The LCD device to select from the LCD
+# driver for use in the test: Default: 0
+# CONFIG_EXAMPLES_NXIMAGE_BPP -- Pixels per pixel to use. Valid options
+# include 8, 16, and 24. Default is 16.
+# CONFIG_EXAMPLES_NXIMAGE_XSCALEp5, CONFIG_EXAMPLES_NXIMAGE_XSCALE1p5,
+# CONFIG_EXAMPLES_NXIMAGE_XSCALE2p0 -- The logo image width is 160 columns.
+# One of these may be defined to rescale the image horizontally by .5, 1.5,
+# or 2.0.
+# CONFIG_EXAMPLES_NXIMAGE_YSCALEp5, CONFIG_EXAMPLES_NXIMAGE_YSCALE1p5,
+# CONFIG_EXAMPLES_NXIMAGE_YSCALE2p0 -- The logo image height is 160 rows.
+# One of these may be defined to rescale the image vertically by .5, 1.5,
+# or 2.0.
+# CONFIG_EXAMPLES_NXIMAGE_EXTERNINIT - The driver for the graphics device on
+# this platform requires some unusual initialization. This is the
+# for, for example, SPI LCD/OLED devices. If this configuration is
+# selected, then the platform code must provide an LCD initialization
+# function.
+#
+CONFIG_EXAMPLES_NXIMAGE_BUILTIN=n
+CONFIG_EXAMPLES_NXIMAGE_VPLANE=0
+CONFIG_EXAMPLES_NXIMAGE_DEVNO=0
+CONFIG_EXAMPLES_NXIMAGE_BPP=16
+CONFIG_EXAMPLES_NXIMAGE_XSCALEp5=n
+CONFIG_EXAMPLES_NXIMAGE_XSCALE1p5=y
+CONFIG_EXAMPLES_NXIMAGE_XSCALE2p0=n
+CONFIG_EXAMPLES_NXIMAGE_YSCALEp5=n
+CONFIG_EXAMPLES_NXIMAGE_YSCALE1p5=y
+CONFIG_EXAMPLES_NXIMAGE_YSCALE2p0=n
+CONFIG_EXAMPLES_NXIMAGE_EXTERNINIT=n
+
+#
+# Settings for examples/nxlines
+#
+# CONFIG_EXAMPLES_NXLINES_BUILTIN -- Build the NXLINES example as a "built-in"
+# that can be executed from the NSH command line
+# CONFIG_EXAMPLES_NXLINES_VPLANE -- The plane to select from the frame-
+# buffer driver for use in the test. Default: 0
+# CONFIG_EXAMPLES_NXLINES_DEVNO - The LCD device to select from the LCD
+# driver for use in the test: Default: 0
+# CONFIG_EXAMPLES_NXLINES_BGCOLOR -- The color of the background. Default
+# depends on CONFIG_EXAMPLES_NXLINES_BPP.
+# CONFIG_EXAMPLES_NXLINES_LINEWIDTH - Selects the width of the lines in
+# pixels (default: 16)
+# CONFIG_EXAMPLES_NXLINES_LINECOLOR -- The color of the central lines drawn
+# in the background window. Default depends on CONFIG_EXAMPLES_NXLINES_BPP
+# (there really is no meaningful default).
+# CONFIG_EXAMPLES_NXLINES_BORDERWIDTH -- The width of the circular border
+# drawn in the background window. (default: 4).
+# CONFIG_EXAMPLES_NXLINES_BORDERCOLOR -- The color of the circular border
+# drawn in the background window. Default depends on CONFIG_EXAMPLES_NXLINES_BPP
+# (there really is no meaningful default).
+# CONFIG_EXAMPLES_NXLINES_CIRCLECOLOR -- The color of the circular region
+# filled in the background window. Default depends on CONFIG_EXAMPLES_NXLINES_BPP
+# (there really is no meaningful default).
+# CONFIG_EXAMPLES_NXLINES_BPP -- Pixels per pixel to use. Valid options
+# include 2, 4, 8, 16, 24, and 32. Default is 16.
+# CONFIG_EXAMPLES_NXLINES_EXTERNINIT - The driver for the graphics device on
+# this platform requires some unusual initialization. This is the
+# for, for example, SPI LCD/OLED devices. If this configuration is
+# selected, then the platform code must provide an LCD initialization
+# function.
+#
+CONFIG_EXAMPLES_NXLINES_BUILTIN=n
+CONFIG_EXAMPLES_NXLINES_VPLANE=0
+CONFIG_EXAMPLES_NXLINES_DEVNO=0
+CONFIG_EXAMPLES_NXLINES_BGCOLOR=0x0320
+CONFIG_EXAMPLES_NXLINES_LINEWIDTH=16
+CONFIG_EXAMPLES_NXLINES_LINECOLOR=0xffe0
+CONFIG_EXAMPLES_NXLINES_BORDERWIDTH=4
+CONFIG_EXAMPLES_NXLINES_BORDERCOLOR=0xffe0
+CONFIG_EXAMPLES_NXLINES_CIRCLECOLOR=0xf7bb
+CONFIG_EXAMPLES_NXLINES_BPP=16
+CONFIG_EXAMPLES_NXLINES_EXTERNINIT=n
+
+#
+# Stack and heap information
+#
+# CONFIG_BOOT_RUNFROMFLASH - Some configurations support XIP
+# operation from FLASH but must copy initialized .data sections to RAM.
+# (should also be =n for the STM3210E-EVAL which always runs from flash)
+# CONFIG_BOOT_COPYTORAM - Some configurations boot in FLASH
+# but copy themselves entirely into RAM for better performance.
+# CONFIG_CUSTOM_STACK - The up_ implementation will handle
+# all stack operations outside of the nuttx model.
+# CONFIG_STACK_POINTER - The initial stack pointer (arm7tdmi only)
+# CONFIG_IDLETHREAD_STACKSIZE - The size of the initial stack.
+# This is the thread that (1) performs the inital boot of the system up
+# to the point where user_start() is spawned, and (2) there after is the
+# IDLE thread that executes only when there is no other thread ready to
+# run.
+# CONFIG_USERMAIN_STACKSIZE - The size of the stack to allocate
+# for the main user thread that begins at the user_start() entry point.
+# CONFIG_PTHREAD_STACK_MIN - Minimum pthread stack size
+# CONFIG_PTHREAD_STACK_DEFAULT - Default pthread stack size
+# CONFIG_HEAP_BASE - The beginning of the heap
+# CONFIG_HEAP_SIZE - The size of the heap
+#
+CONFIG_BOOT_RUNFROMFLASH=n
+CONFIG_BOOT_COPYTORAM=n
+CONFIG_CUSTOM_STACK=n
+CONFIG_STACK_POINTER=
+CONFIG_IDLETHREAD_STACKSIZE=1024
+CONFIG_USERMAIN_STACKSIZE=2048
+CONFIG_PTHREAD_STACK_MIN=256
+CONFIG_PTHREAD_STACK_DEFAULT=2048
+CONFIG_HEAP_BASE=
+CONFIG_HEAP_SIZE=
diff --git a/nuttx/configs/stm3210e-eval/nxconsole/ld.script b/nuttx/configs/stm3210e-eval/nxconsole/ld.script
new file mode 100644
index 000000000..6e326c699
--- /dev/null
+++ b/nuttx/configs/stm3210e-eval/nxconsole/ld.script
@@ -0,0 +1,112 @@
+/****************************************************************************
+ * configs/stm3210e-eval/nxconsole/ld.script
+ *
+ * Copyright (C) 2012 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.
+ *
+ ****************************************************************************/
+
+/* The STM32F103ZET6 has 512Kb of FLASH beginning at address 0x0800:0000 and
+ * 64Kb of SRAM beginning at address 0x2000:0000. When booting from FLASH,
+ * FLASH memory is aliased to address 0x0000:0000 where the code expects to
+ * begin execution by jumping to the entry point in the 0x0800:0000 address
+ * range.
+ */
+
+MEMORY
+{
+ flash (rx) : ORIGIN = 0x08000000, LENGTH = 512K
+ sram (rwx) : ORIGIN = 0x20000000, LENGTH = 64K
+}
+
+OUTPUT_ARCH(arm)
+ENTRY(_stext)
+SECTIONS
+{
+ .text : {
+ _stext = ABSOLUTE(.);
+ *(.vectors)
+ *(.text .text.*)
+ *(.fixup)
+ *(.gnu.warning)
+ *(.rodata .rodata.*)
+ *(.gnu.linkonce.t.*)
+ *(.glue_7)
+ *(.glue_7t)
+ *(.got)
+ *(.gcc_except_table)
+ *(.gnu.linkonce.r.*)
+ _etext = ABSOLUTE(.);
+ } > flash
+
+ _eronly = ABSOLUTE(.);
+
+ /* The STM32F103Z has 64Kb of SRAM beginning at the following address */
+
+ .data : {
+ _sdata = ABSOLUTE(.);
+ *(.data .data.*)
+ *(.gnu.linkonce.d.*)
+ CONSTRUCTORS
+ _edata = ABSOLUTE(.);
+ } > sram AT > flash
+
+ .ARM.extab : {
+ *(.ARM.extab*)
+ } >sram
+
+ __exidx_start = ABSOLUTE(.);
+ .ARM.exidx : {
+ *(.ARM.exidx*)
+ } >sram
+ __exidx_end = ABSOLUTE(.);
+
+ .bss : {
+ _sbss = ABSOLUTE(.);
+ *(.bss .bss.*)
+ *(.gnu.linkonce.b.*)
+ *(COMMON)
+ _ebss = 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) }
+}
diff --git a/nuttx/configs/stm3210e-eval/nxconsole/ld.script.dfu b/nuttx/configs/stm3210e-eval/nxconsole/ld.script.dfu
new file mode 100644
index 000000000..7b9877ddf
--- /dev/null
+++ b/nuttx/configs/stm3210e-eval/nxconsole/ld.script.dfu
@@ -0,0 +1,111 @@
+/****************************************************************************
+ * configs/stm3210e-eval/nxconsole/ld.script.dfu
+ *
+ * Copyright (C) 2012 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.
+ *
+ ****************************************************************************/
+
+/* The STM32F103ZET6 has 512Kb of FLASH beginning at address 0x0800:0000 and
+ * 64Kb of SRAM beginning at address 0x2000:0000. Here we assume that the
+ * STM3210E-EVAL's DFU bootloader is being used. In that case, the corrct
+ * load .text load address is 0x08003000 (leaving 464Kb).
+ */
+
+MEMORY
+{
+ flash (rx) : ORIGIN = 0x08003000, LENGTH = 464K
+ sram (rwx) : ORIGIN = 0x20000000, LENGTH = 64K
+}
+
+OUTPUT_ARCH(arm)
+ENTRY(_stext)
+SECTIONS
+{
+ .text : {
+ _stext = ABSOLUTE(.);
+ *(.vectors)
+ *(.text .text.*)
+ *(.fixup)
+ *(.gnu.warning)
+ *(.rodata .rodata.*)
+ *(.gnu.linkonce.t.*)
+ *(.glue_7)
+ *(.glue_7t)
+ *(.got)
+ *(.gcc_except_table)
+ *(.gnu.linkonce.r.*)
+ _etext = ABSOLUTE(.);
+ } > flash
+
+ _eronly = ABSOLUTE(.);
+
+ /* The STM32F103Z has 64Kb of SRAM beginning at the following address */
+
+ .data : {
+ _sdata = ABSOLUTE(.);
+ *(.data .data.*)
+ *(.gnu.linkonce.d.*)
+ CONSTRUCTORS
+ _edata = ABSOLUTE(.);
+ } > sram AT > flash
+
+ .ARM.extab : {
+ *(.ARM.extab*)
+ } >sram
+
+ __exidx_start = ABSOLUTE(.);
+ .ARM.exidx : {
+ *(.ARM.exidx*)
+ } >sram
+ __exidx_end = ABSOLUTE(.);
+
+ .bss : {
+ _sbss = ABSOLUTE(.);
+ *(.bss .bss.*)
+ *(.gnu.linkonce.b.*)
+ *(COMMON)
+ _ebss = 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) }
+}
diff --git a/nuttx/configs/stm3210e-eval/nxconsole/setenv.sh b/nuttx/configs/stm3210e-eval/nxconsole/setenv.sh
new file mode 100755
index 000000000..629770245
--- /dev/null
+++ b/nuttx/configs/stm3210e-eval/nxconsole/setenv.sh
@@ -0,0 +1,62 @@
+#!/bin/bash
+# configs/stm3210e-eval/nxconsole/setenv.sh
+#
+# Copyright (C) 2012 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.
+#
+
+if [ "$_" = "$0" ] ; then
+ echo "You must source this script, not run it!" 1>&2
+ exit 1
+fi
+
+WD=`pwd`
+if [ ! -x "setenv.sh" ]; then
+ echo "This script must be executed from the top-level NuttX build directory"
+ exit 1
+fi
+
+if [ -z "${PATH_ORIG}" ]; then
+ export PATH_ORIG="${PATH}"
+fi
+
+# This the Cygwin path to the location where I installed the CodeSourcery
+# toolchain under windows. You will also have to edit this if you install
+# the CodeSourcery toolchain in any other location
+export TOOLCHAIN_BIN="/cygdrive/c/Program Files (x86)/CodeSourcery/Sourcery G++ Lite/bin"
+
+# This the Cygwin path to the location where I build the buildroot
+# toolchain.
+#export TOOLCHAIN_BIN="${WD}/../misc/buildroot/build_arm_nofpu/staging_dir/bin"
+
+# Add the path to the toolchain to the PATH varialble
+export PATH="${TOOLCHAIN_BIN}:/sbin:/usr/sbin:${PATH_ORIG}"
+
+echo "PATH : ${PATH}"
diff --git a/nuttx/configs/stm3210e-eval/nxlines/appconfig b/nuttx/configs/stm3210e-eval/nxlines/appconfig
index 0446d56cb..fb9c044c5 100644
--- a/nuttx/configs/stm3210e-eval/nxlines/appconfig
+++ b/nuttx/configs/stm3210e-eval/nxlines/appconfig
@@ -34,11 +34,5 @@
############################################################################
# Path to example in apps/examples containing the user_start entry point
-# Various NX tests can be supported, simply comment-out examples/nx and
-# uncomment the test you wish to perform
-#CONFIGURED_APPS += examples/nx
-#CONFIGURED_APPS += examples/nxhello
CONFIGURED_APPS += examples/nxlines
-#CONFIGURED_APPS += examples/nxtext
-#CONFIGURED_APPS += examples/nxconsole
diff --git a/nuttx/configs/stm3210e-eval/nxtext/appconfig b/nuttx/configs/stm3210e-eval/nxtext/appconfig
index 6c0928885..73e9154ec 100644
--- a/nuttx/configs/stm3210e-eval/nxtext/appconfig
+++ b/nuttx/configs/stm3210e-eval/nxtext/appconfig
@@ -34,12 +34,6 @@
############################################################################
# Path to example in apps/examples containing the user_start entry point
-# Various NX tests can be supported, simply comment-out examples/nx and
-# uncomment the test you wish to perform
-#CONFIGURED_APPS += examples/nx
-#CONFIGURED_APPS += examples/nxhello
-#CONFIGURED_APPS += examples/nxlines
CONFIGURED_APPS += examples/nxtext
-#CONFIGURED_APPS += examples/nxconsole
diff --git a/nuttx/graphics/README.txt b/nuttx/graphics/README.txt
index 3e7f61bcf..5d6e098e3 100644
--- a/nuttx/graphics/README.txt
+++ b/nuttx/graphics/README.txt
@@ -37,6 +37,9 @@ at the present, but here is the longer term roadmap:
NxConsole - NxConsole is a write-only character device that is built on top of
an NX window. This character device can be used to provide stdout
and stderr and, hence, can provide the output side of NuttX console.
+ NxConsole is only available when the multi-user NX implementation is
+ selected (CONFIG_NX_MULTIUSERs).
+
Related Header Files
^^^^^^^^^^^^^^^^^^^^
diff --git a/nuttx/graphics/nxconsole/Make.defs b/nuttx/graphics/nxconsole/Make.defs
index df84d758d..6438a93bf 100644
--- a/nuttx/graphics/nxconsole/Make.defs
+++ b/nuttx/graphics/nxconsole/Make.defs
@@ -37,3 +37,7 @@ NXCON_ASRCS =
NXCON_CSRCS = nx_register.c nxcon_driver.c nxcon_font.c nxcon_redraw.c
NXCON_CSRCS += nxcon_register.c nxcon_scroll.c nxcon_unregister.c
NXCON_CSRCS += nxtk_register.c nxtool_register.c
+
+ifeq ($(CONFIG_DEBUG),y)
+NXCON_CSRCS += nxcon_sem.c
+endif
diff --git a/nuttx/graphics/nxconsole/nxcon_driver.c b/nuttx/graphics/nxconsole/nxcon_driver.c
index d4ab71464..8c69272f3 100755
--- a/nuttx/graphics/nxconsole/nxcon_driver.c
+++ b/nuttx/graphics/nxconsole/nxcon_driver.c
@@ -136,7 +136,7 @@ static ssize_t nxcon_write(FAR struct file *filep, FAR const char *buffer,
/* Get exclusive access */
- ret = sem_wait(&priv->exclsem);
+ ret = nxcon_semwait(priv);
if (ret < 0)
{
return ret;
@@ -195,7 +195,7 @@ static ssize_t nxcon_write(FAR struct file *filep, FAR const char *buffer,
nxcon_putc(priv, (uint8_t)ch);
}
- sem_post(&priv->exclsem);
+ nxcon_sempost(priv);
return (ssize_t)buflen;
}
diff --git a/nuttx/graphics/nxconsole/nxcon_font.c b/nuttx/graphics/nxconsole/nxcon_font.c
index 436f91477..140da4ad7 100644
--- a/nuttx/graphics/nxconsole/nxcon_font.c
+++ b/nuttx/graphics/nxconsole/nxcon_font.c
@@ -241,10 +241,6 @@ nxcon_renderglyph(FAR struct nxcon_state_s *priv,
int col;
int ret;
- /* Make sure that there is room for another glyph */
-
- gvdbg("ch=%c [%02x]\n", isprint(ch) ? ch : '.', ch);
-
/* Allocate the glyph (always succeeds) */
glyph = nxcon_allocglyph(priv);
@@ -629,10 +625,7 @@ void nxcon_fillchar(FAR struct nxcon_state_s *priv,
src = (FAR const void *)glyph->bitmap;
ret = priv->ops->bitmap(priv, &intersection, &src,
&bm->pos, (unsigned int)glyph->stride);
- if (ret < 0)
- {
- gdbg("bitmap failed: %d\n", errno);
- }
+ DEBUGASSERT(ret >= 0);
}
}
diff --git a/nuttx/graphics/nxconsole/nxcon_internal.h b/nuttx/graphics/nxconsole/nxcon_internal.h
index 963511b29..62ae71705 100644
--- a/nuttx/graphics/nxconsole/nxcon_internal.h
+++ b/nuttx/graphics/nxconsole/nxcon_internal.h
@@ -70,6 +70,10 @@
#define NX_DEVNAME_FORMAT "/dev/nxcon%d"
#define NX_DEVNAME_SIZE 16
+/* Semaphore protection */
+
+#define NO_HOLDER (pid_t)-1
+
/****************************************************************************
* Public Types
****************************************************************************/
@@ -126,6 +130,9 @@ struct nxcon_state_s
FAR struct nxcon_window_s wndo; /* Describes the window and font */
NXHANDLE font; /* The current font handle */
sem_t exclsem; /* Forces mutually exclusive access */
+#ifdef CONFIG_DEBUG
+ pid_t holder; /* Deadlock avoidance */
+#endif
struct nxgl_point_s fpos; /* Next display position */
uint16_t maxchars; /* Size of the bm[] array */
@@ -165,6 +172,16 @@ extern const struct file_operations g_nxcon_drvrops;
/****************************************************************************
* Public Function Prototypes
****************************************************************************/
+/* Semaphore helpers */
+
+#ifdef CONFIG_DEBUG
+int nxcon_semwait(FAR struct nxcon_state_s *priv);
+int nxcon_sempost(FAR struct nxcon_state_s *priv);
+#else
+# define nxcon_semwait(p) sem_wait(&p->exclsem);
+# define nxcon_sempost(p) sem_post(&p->exclsem);
+#endif
+
/* Common device registration */
FAR struct nxcon_state_s *nxcon_register(NXCONSOLE handle,
diff --git a/nuttx/graphics/nxconsole/nxcon_redraw.c b/nuttx/graphics/nxconsole/nxcon_redraw.c
index 1a40a7ee1..05f0a47f8 100755
--- a/nuttx/graphics/nxconsole/nxcon_redraw.c
+++ b/nuttx/graphics/nxconsole/nxcon_redraw.c
@@ -117,7 +117,7 @@ void nxcon_redraw(NXCONSOLE handle, FAR const struct nxgl_rect_s *rect, bool mor
do
{
- ret = sem_wait(&priv->exclsem);
+ ret = nxcon_semwait(priv);
/* Check for errors */
@@ -148,5 +148,5 @@ void nxcon_redraw(NXCONSOLE handle, FAR const struct nxgl_rect_s *rect, bool mor
{
nxcon_fillchar(priv, rect, &priv->bm[i]);
}
- ret = sem_post(&priv->exclsem);
+ ret = nxcon_sempost(priv);
}
diff --git a/nuttx/graphics/nxconsole/nxcon_scroll.c b/nuttx/graphics/nxconsole/nxcon_scroll.c
index 81bd3a7e8..b0a1a2335 100755
--- a/nuttx/graphics/nxconsole/nxcon_scroll.c
+++ b/nuttx/graphics/nxconsole/nxcon_scroll.c
@@ -236,4 +236,4 @@ void nxcon_scroll(FAR struct nxcon_state_s *priv, int scrollheight)
/* Move the display in the range of 0-height up one scrollheight. */
nxcon_movedisplay(priv, priv->fpos.y, scrollheight);
-} \ No newline at end of file
+}
diff --git a/nuttx/graphics/nxconsole/nxcon_sem.c b/nuttx/graphics/nxconsole/nxcon_sem.c
new file mode 100644
index 000000000..0025005d2
--- /dev/null
+++ b/nuttx/graphics/nxconsole/nxcon_sem.c
@@ -0,0 +1,129 @@
+/****************************************************************************
+ * nuttx/graphics/nxconsole/nxcon_unregister.c
+ *
+ * Copyright (C) 2012 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 <unistd.h>
+#include <semaphore.h>
+#include <assert.h>
+#include <errno.h>
+
+#include "nxcon_internal.h"
+
+#ifdef CONFIG_DEBUG
+
+/****************************************************************************
+ * Pre-processor Definitions
+ ****************************************************************************/
+
+/****************************************************************************
+ * Private Function Prototypes
+ ****************************************************************************/
+
+/****************************************************************************
+ * Private Data
+ ****************************************************************************/
+
+/****************************************************************************
+ * Private Functions
+ ****************************************************************************/
+
+/****************************************************************************
+ * Public Functions
+ ****************************************************************************/
+
+/****************************************************************************
+ * Name: nxcon_semwait and nxcon_sempost
+ *
+ * Description:
+ * If debug is on, then lower level code may attempt console output while
+ * we are doing console output! In this case, we will toss the nested
+ * output to avoid deadlocks and infinite loops.
+ *
+ * Input Parameters:
+ * priv - Driver data structure
+ *
+ * Returned Value:
+ *
+ *
+ ****************************************************************************/
+
+int nxcon_semwait(FAR struct nxcon_state_s *priv)
+{
+ pid_t me;
+ int ret;
+
+ /* Does I already hold the semaphore */
+
+ me = getpid();
+ if (priv->holder != me)
+ {
+ /* No.. then wait until the thread that does hold it is finished with it */
+
+ ret = sem_wait(&priv->exclsem);
+ if (ret == OK)
+ {
+ /* No I hold the semaphore */
+
+ priv->holder = me;
+ }
+ return ret;
+ }
+
+ /* Abort, abort, abort! I have been re-entered */
+
+ set_errno(EBUSY);
+ return ERROR;
+}
+
+int nxcon_sempost(FAR struct nxcon_state_s *priv)
+{
+ pid_t me = getpid();
+
+ /* Make sure that I really hold the semaphore */
+
+ ASSERT(priv->holder == me);
+
+ /* Then let go of it */
+
+ priv->holder = NO_HOLDER;
+ return sem_post(&priv->exclsem);
+}
+
+#endif /* CONFIG_DEBUG */
diff --git a/nuttx/graphics/nxtk/nxtk_events.c b/nuttx/graphics/nxtk/nxtk_events.c
index e778b2736..7b081ec77 100644
--- a/nuttx/graphics/nxtk/nxtk_events.c
+++ b/nuttx/graphics/nxtk/nxtk_events.c
@@ -1,8 +1,8 @@
/****************************************************************************
* graphics/nxtk/nxtk_events.c
*
- * Copyright (C) 2008-2009 Gregory Nutt. All rights reserved.
- * Author: Gregory Nutt <spudmonkey@racsa.co.cr>
+ * Copyright (C) 2008-2009, 2012 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
@@ -131,7 +131,7 @@ static void nxtk_redraw(NXWINDOW hwnd, FAR const struct nxgl_rect_s *rect,
nxtk_containerclip(fwnd, &intersection, rect, &fwnd->fwrect);
- gvdbg("fwrect intersction={(%d,%d),(%d,%d)}\n",
+ gvdbg("fwrect intersection={(%d,%d),(%d,%d)}\n",
intersection.pt1.x, intersection.pt1.y,
intersection.pt2.x, intersection.pt2.y);
@@ -154,7 +154,7 @@ static void nxtk_redraw(NXWINDOW hwnd, FAR const struct nxgl_rect_s *rect,
nxtk_containerclip(fwnd, &intersection, rect, &fwnd->tbrect);
- gvdbg("tbrect intersction={(%d,%d),(%d,%d)}\n",
+ gvdbg("tbrect intersection={(%d,%d),(%d,%d)}\n",
intersection.pt1.x, intersection.pt1.y,
intersection.pt2.x, intersection.pt2.y);