Add a simulated touchscreen driver

git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@3989 42af7a65-404d-4744-a932-0658087f49c3
This commit is contained in:
patacongo
2011-09-28 17:41:58 +00:00
parent 848972b5ad
commit 145562eef1
13 changed files with 1361 additions and 90 deletions
+31 -22
View File
@@ -12,7 +12,7 @@
<h1><big><font color="#3c34ec">
<i>NX Graphics Subsystem</i>
</font></big></h1>
<p>Last Updated: August 24, 2011</p>
<p>Last Updated: September 28, 2011</p>
</td>
</tr>
</table>
@@ -3416,13 +3416,13 @@ static FAR const struct nx_fontpackage_s *g_fontpackages[] =
<p><b>Building <code>apps/examples/nx</code></b>.
NX testing was performed using <code>apps/examples/nx</code> with the
Linux/Cygwin-based NuttX simulator.
Configuration files for building this test can be found in <code>configs/sim/nx</code>.
Configuration files for building this test can be found in <code>configs/sim/nx</code>
and <code>configs/sim/nx11</code>.
There are two alternative configurations for building the simulation:
</p>
<ol>
<li>
The default configuration using the configuration file at
<code>configs/sim/nx/defconfig</code>.
The configuration using the configuration file at <code>configs/sim/nx/defconfig</code>.
This default configuration exercises the NX logic a 8 BPP but provides no visual feedback.
In this configuration, a very simple, simulated framebuffer driver is used that is
based upon a simple region of memory posing as video memory.
@@ -3437,18 +3437,17 @@ make
</li>
<li>
<p>
A preferred configuration extends the test with a simulated framebuffer driver
The preferred configuration is at <code>configs/sim/nx11/defconfig</code>.
This configuration extends the test with a simulated framebuffer driver
that uses an X window as a framebuffer.
This configuration uses the configuration file at <code>configs/sim/nx/defconfig-x11</code>.
This is a superior test configuration because the X window appears at your desktop
and you can see the NX output.
This preferred configuration can be built as follows:
</p>
<ul><pre>
cd &lt;NuttX-Directory&gt;/tools
./configure sim/nx
./configure sim/nx11
cd &lt;NuttX-Directory&gt;
cp &lt;NuttX-Directory&gt;/configs/sim/nx/defconfig-x11 .config
make
./nuttx
</pre></ul>
@@ -3456,29 +3455,40 @@ make
<i>Update:</i>
The sim target has suffered some bit-rot over the years and so the following caveats need to be added:
<ul>
<li>
The X target does not build under recent Cygwin configurations.
</li>
<li>
The X target does not build under current Ubuntu distributions;
it fails to locate the X header files.
</li>
<li>
<li><p>
The X target builds under recent Cygwin configurations, but does not execute.
(It fails inside of <code>XOpenDisplay()</code>.
</p></li>
<li><p>
The X target does not build under current (9.09) Ubuntu distributions.
I needed to make the following changes:
</p>
<ul></pre>
cd /usr/lib/
sudo ln -s libXext.so.6.4.0 libXext.so
</pre></ul>
<p>
The build will also fail to locate the X header files unless you install an X11 development package.
</p></li>
<li><p>
The sim target itself is broken under 64-bit Linux.
This is because the sim target is based upon some assembly language setjmp/longjmp logic that only works on 32-bit systems.
<p><small><b>NOTE</b>: There is a workaround in this case:
</p>
<p><small>
<b>NOTE</b>: There is a workaround in this case:
You can build for 32-bit execution on a 64-bit machine by adding <code>-m3</code> to the <code>CFLAGS</code> and <code>-m32 -m elf_i386</code> to the <code>LDFLAGS</code>.
See the patch file <code>0001-Quick-hacks-to-build-sim-nsh-ostest-on-x86_64-as-32-.patch</code>
that can be found in NuttX <a href="http://tech.groups.yahoo.com/group/nuttx/files">files</a>.
</small></p>
</small></p>
</li>
<li><p>
Refer to the readme file in sim configuration
<a href="http://nuttx.svn.sourceforge.net/viewvc/nuttx/trunk/nuttx/configs/sim/README.txt?view=log">README.txt</a> file for additional information.
</p></li>
</ul>
</p>
</li>
</ol>
<p>
Why isn't this configuration the default? Because not all systems the use NX support X.
</p>
<p><b>Test Coverage</b>.
At present, <code>apps/examples/nx</code>t only exercises a subset of NX;
@@ -3985,7 +3995,6 @@ make
</tr>
<tr>
<td align="left" valign="top"><a href="#nxfconvertbpp"><code>nxf_convert_32bpp()</code></a></td>
<td>Use <code>defconfig-x11</code> when building.</td>
<td align="center" bgcolor="skyblue">YES</td>
</tr>
</table></center>
+4
View File
@@ -53,6 +53,10 @@ else
CSRCS += up_framebuffer.c
ifeq ($(CONFIG_SIM_X11FB),y)
HOSTSRCS += up_x11framebuffer.c
ifeq ($(CONFIG_SIM_TOUCHSCREEN),y)
CSRCS += up_touchscreen.c
HOSTSRCS += up_x11eventloop.c
endif
endif
endif
-15
View File
@@ -113,21 +113,6 @@ static int up_getcursor(FAR struct fb_vtable_s *vtable, FAR struct fb_cursorattr
static int up_setcursor(FAR struct fb_vtable_s *vtable, FAR struct fb_setcursor_s *setttings);
#endif
/****************************************************************************
* Public Function Prototypes
****************************************************************************/
#ifdef CONFIG_SIM_X11FB
extern int up_x11initialize(unsigned short width, unsigned short height,
void **fbmem, unsigned int *fblen, unsigned char *bpp,
unsigned short *stride);
#ifdef CONFIG_FB_CMAP
extern int up_x11cmap(unsigned short first, unsigned short len,
unsigned char *red, unsigned char *green,
unsigned char *blue, unsigned char *transp);
#endif
#endif
/****************************************************************************
* Private Data
****************************************************************************/
+23
View File
@@ -44,6 +44,7 @@
#include <nuttx/arch.h>
#include <nuttx/fs.h>
#include "os_internal.h"
#include "up_internal.h"
/****************************************************************************
@@ -98,10 +99,32 @@ void up_initialize(void)
devnull_register(); /* Standard /dev/null */
devzero_register(); /* Standard /dev/zero */
up_devconsole(); /* Our private /dev/console */
#if defined(CONFIG_FS_FAT) && !defined(CONFIG_DISABLE_MOUNTPOINT)
up_registerblockdevice(); /* Our FAT ramdisk at /dev/ram0 */
#endif
#ifdef CONFIG_NET
uipdriver_init(); /* Our "real" netwok driver */
#endif
/* Start the X11 event loop and register the touchscreen driver */
#if defined(CONFIG_SIM_X11FB) && defined(CONFIG_SIM_TOUCHSCREEN)
{
int ret;
/* Start the X11 event loop */
ret = KERNEL_THREAD("evloop", CONFIG_SIM_EVLOOPPRIORITY,
CONFIG_SIM_EVLOOPSTACKSIZE,
(main_t)up_x11eventloop, (const char **)NULL);
ASSERT(ret != ERROR);
/* Register the touchscreen driver */
ret = up_tcregister(0);
ASSERT(ret == OK);
}
#endif
}
+78 -16
View File
@@ -1,7 +1,7 @@
/**************************************************************************
* up_internal.h
*
* Copyright (C) 2007, 2009 Gregory Nutt. All rights reserved.
* Copyright (C) 2007, 2009, 2011 Gregory Nutt. All rights reserved.
* Author: Gregory Nutt <spudmonkey@racsa.co.cr>
*
* Redistribution and use in source and binary forms, with or without
@@ -45,26 +45,56 @@
#include <nuttx/irq.h>
/**************************************************************************
* Public Definitions
* Pre-processor Definitions
**************************************************************************/
/* Configuration **********************************************************/
/* Storage order: %ebx, $esi, %edi, %ebp, sp, and return PC */
#ifdef __ASSEMBLY__
# define JB_EBX (0*4)
# define JB_ESI (1*4)
# define JB_EDI (2*4)
# define JB_EBP (3*4)
# define JB_SP (4*4)
# define JB_PC (5*4)
#ifndef CONFIG_SIM_X11FB
# ifdef CONFIG_SIM_TOUCHSCREEN
# error "CONFIG_SIM_TOUCHSCREEN depends on CONFIG_SIM_X11FB"
# undef CONFIG_SIM_TOUCHSCREEN
# endif
#endif
#ifndef CONFIG_INPUT
# ifdef CONFIG_SIM_TOUCHSCREEN
# error "CONFIG_SIM_TOUCHSCREEN depends on CONFIG_INPUT"
# undef CONFIG_SIM_TOUCHSCREEN
# endif
#endif
#ifdef CONFIG_SIM_TOUCHSCREEN
# ifndef CONFIG_SIM_EVLOOPPRIORITY
# define CONFIG_SIM_EVLOOPPRIORITY 50
# endif
# ifndef CONFIG_SIM_EVLOOPSTACKSIZE
# define CONFIG_SIM_EVLOOPSTACKSIZE 4096
# endif
#else
# define JB_EBX (0)
# define JB_ESI (1)
# define JB_EDI (2)
# define JB_EBP (3)
# define JB_SP (4)
# define JB_PC (5)
# undef CONFIG_SIM_EVLOOPPRIORITY
# undef CONFIG_SIM_EVLOOPSTACKSIZE
#endif
/* Context Switching Definitions ******************************************/
/* Storage order: %ebx, $esi, %edi, %ebp, sp, and return PC */
#ifdef __ASSEMBLY__
# define JB_EBX (0*4)
# define JB_ESI (1*4)
# define JB_EDI (2*4)
# define JB_EBP (3*4)
# define JB_SP (4*4)
# define JB_PC (5*4)
#else
# define JB_EBX (0)
# define JB_ESI (1)
# define JB_EDI (2)
# define JB_EBP (3)
# define JB_SP (4)
# define JB_PC (5)
#endif /* __ASSEMBLY__ */
/* Simulated Heap Definitions **********************************************/
/* Size of the simulated heap */
#if CONFIG_MM_SMALL
@@ -73,6 +103,7 @@
# define SIM_HEAP_SIZE (4*1024*1024)
#endif
/* File System Definitions **************************************************/
/* These definitions characterize the compressed filesystem image */
#define BLOCK_COUNT 1024
@@ -126,6 +157,37 @@ extern size_t up_hostwrite(const void *buffer, size_t len);
extern unsigned long up_getwalltime( void );
#endif
/* up_x11framebuffer.c ******************************************************/
#ifdef CONFIG_SIM_X11FB
extern int up_x11initialize(unsigned short width, unsigned short height,
void **fbmem, unsigned int *fblen, unsigned char *bpp,
unsigned short *stride);
#ifdef CONFIG_FB_CMAP
extern int up_x11cmap(unsigned short first, unsigned short len,
unsigned char *red, unsigned char *green,
unsigned char *blue, unsigned char *transp);
#endif
#endif
/* up_eventloop.c ***********************************************************/
#ifdef CONFIG_SIM_X11FB
#ifdef CONFIG_SIM_TOUCHSCREEN
extern int up_x11eventloop(int argc, char *argv[]);
#endif
#endif
/* up_eventloop.c ***********************************************************/
#ifdef CONFIG_SIM_X11FB
#ifdef CONFIG_SIM_TOUCHSCREEN
extern int up_tcregister(int minor);
extern int up_tcenter(int x, int y, int buttons);
extern int up_tcleave(int x, int y, int buttons);
#endif
#endif
/* up_tapdev.c ************************************************************/
#if defined(CONFIG_NET) && !defined(__CYGWIN__)
File diff suppressed because it is too large Load Diff
+168
View File
@@ -0,0 +1,168 @@
/****************************************************************************
* arch/sim/src/up_x11eventloop.c
*
* Copyright (C) 2011 Gregory Nutt. All rights reserved.
* Author: Gregory Nutt <spudmonkey@racsa.co.cr>
*
* 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 <stdio.h>
#include <X11/Xlib.h>
/****************************************************************************
* Definitions
****************************************************************************/
/****************************************************************************
* Private Type Declarations
***************************************************************************/
/****************************************************************************
* Private Function Prototypes
****************************************************************************/
/****************************************************************************
* Public Function Prototypes
****************************************************************************/
extern int up_tcenter(int x, int y, int buttons);
extern int up_tcleave(int x, int y, int buttons);
/****************************************************************************
* Public Variables
****************************************************************************/
/* Defined in up_x11framebuffer.c */
extern Display *g_display;
extern Window g_window;
/****************************************************************************
* Private Variables
****************************************************************************/
/****************************************************************************
* Private Functions
***************************************************************************/
/****************************************************************************
* Name: up_x11eventloop
***************************************************************************/
static int up_buttonmap(int state)
{
int ret = 0;
/* Remove any X11 dependencies. Possible bit settings include: Button1Mask,
* Button2Mask, Button3Mask, Button4Mask, Button5Mask, ShiftMask, LockMask,
* ControlMask, Mod1Mask, Mod2Mask, Mod3Mask, Mod4Mask, Mod5Mask. I assume
* that for a mouse device Button1Mask, Button2Mask, and Button3Mask are
* sufficient.
*/
if ((state & Button1Mask) != 0)
{
ret |= 1;
}
if ((state & Button2Mask) != 0)
{
ret |= 2;
}
if ((state & Button3Mask) != 0)
{
ret |= 4;
}
return ret;
}
/****************************************************************************
* Public Functions
***************************************************************************/
/****************************************************************************
* Name: up_x11eventloop
***************************************************************************/
int up_x11eventloop(int argc, char *argv[])
{
XEvent event;
int ret;
/* Grab the pointer (mouse) */
ret = XGrabPointer(g_display, g_window, 0,
EnterWindowMask|LeaveWindowMask,
GrabModeAsync, GrabModeAsync, None, None, CurrentTime);
if (ret != GrabSuccess)
{
fprintf(stderr, "Failed grap pointer\n");
return -1;
}
/* Then loop forever, waiting for events and processing events as they are
* received.
*/
for (;;)
{
XNextEvent(g_display, &event);
switch (event.type)
{
case EnterNotify:
{
fprintf(stderr, "EnterNotify event: (%d,%d) %08x\n",
event.xcrossing.x, event.xcrossing.y, event.xcrossing.state);
up_tcenter(event.xcrossing.x, event.xcrossing.y,
up_buttonmap(event.xcrossing.state));
}
break;
case LeaveNotify :
{
fprintf(stderr, "LeaveNotify event: (%d,%d) %08x\n",
event.xcrossing.x, event.xcrossing.y, event.xcrossing.state);
up_tcleave(event.xcrossing.x, event.xcrossing.y,
up_buttonmap(event.xcrossing.state));
}
break;
default :
fprintf(stderr, "Unrecognized event: %d\n", event.type);
break;
}
}
return 0;
}
+6 -4
View File
@@ -64,16 +64,19 @@
****************************************************************************/
/****************************************************************************
* Global Variables
* Public Variables
****************************************************************************/
/* Also used in up_x11eventloop */
Display *g_display;
Window g_window;
/****************************************************************************
* Private Variables
****************************************************************************/
static Display *g_display;
static int g_screen;
static Window g_window;
static GC g_gc;
#ifndef CONFIG_SIM_X11NOSHM
static XShmSegmentInfo g_xshminfo;
@@ -438,4 +441,3 @@ void up_x11update(void)
}
XSync(g_display, 0);
}
+94 -31
View File
@@ -68,7 +68,7 @@ X11 Issues
^^^^^^^^^^
There is an X11-based framebuffer driver that you can use exercise the NuttX graphics
subsystem on the simulator (see the sim/nx configuration below). This may require a
subsystem on the simulator (see the sim/nx11 configuration below). This may require a
lot of tinkering to get working, depending upon where your X11 installation stores
libraries and header files and how it names libraries.
@@ -87,6 +87,9 @@ Configurations
^^^^^^^^^^^^^^
mount
Description
-----------
Configures to use examples/mount. This configuration may be
selected as follows:
@@ -95,6 +98,8 @@ mount
nettest
Description
-----------
Configures to use examples/nettest. This configuration
enables networking using the network TAP device. It may
be selected via:
@@ -118,6 +123,9 @@ nettest
select the IP address that you want to use.
nsh
Description
-----------
Configures to use the NuttShell at examples/nsh. This configuration
may be selected as follows:
@@ -125,59 +133,112 @@ nsh
./configure.sh sim/nsh
nx
Description
-----------
Configures to use examples/nx. This configuration may be
selected as follows:
cd <nuttx-directory>/tools
./configure.sh sim/nx
Special Framebuffer Configuration
---------------------------------
Special simulated framebuffer configuration options:
CONFIG_SIM_X11FB - Use X11 window for framebuffer
CONFIG_SIM_FBHEIGHT - Height of the framebuffer in pixels
CONFIG_SIM_FBWIDTH - Width of the framebuffer in pixels.
CONFIG_SIM_FBBPP - Pixel depth in bits
CONFIG_SIM_FBHEIGHT - Height of the framebuffer in pixels
CONFIG_SIM_FBWIDTH - Width of the framebuffer in pixels.
CONFIG_SIM_FBBPP - Pixel depth in bits
NOTES:
- If CONFIG_SIM_X11FB is selected then the following are
needed
No Display!
-----------
This version has NO DISPLAY and is only useful for debugging NX
internals in environments where X11 is not supported. There is
and additonal configuration that may be added to include an X11-
based simulated framebuffer driver:
CONFIG_SIM_X11FB - Use X11 window for framebuffer
CONFIG_SIM_FBBPP (must match the resolution of the display).
CONFIG_FB_CMAP=y
See the nx11 configuration below for more information.
My system has 24-bit color, but packed into 32-bit words so
the correct seeting of CONFIG_SIM_FBBPP is 32.
Multi- and Single-User Modes
----------------------------
The default is the single-user NX implementation. To select
the multi-user NX implementation:
- For whatever value of CONFIG_SIM_FBBPP is selected, then
the corresponidng CONFIG_NX_DISABLE_*BPP setting must
not be disabled.
CONFG_NX_MULTIUSER=y
CONFIG_DISABLE_MQUEUE=n
- The default in defconfig is to use a generic memory buffer
for the framebuffer. defconfig-x11 is an example with X11
support enabled. To use this configuration you have to
configure as follows:
nx11
cd tools
./configure.sh sim/nx
cd ..
cp configs/sim/nx/defconfig-x11 .config
Description
-----------
Configures to use examples/nx. This configuration is similar
to the nx configuration except that it addes support for an X11-
based framebuffer driver. Of course, this configuration can only
be used in environments that support X11! (And it may not even
be usable in all of those environments without some "tweaking").
This configuration may be selected as follows:
- The default is the single-user NX implementation. To select
the multi-user NX implementation:
cd <nuttx-directory>/tools
./configure.sh sim/nx11
CONFG_NX_MULTIUSER=y
CONFIG_DISABLE_MQUEUE=n
Special Framebuffer Configuration
---------------------------------
This configuration uses the same special simulated framebuffer
configuration options as the nx configuration:
- To get the system to compile under various X11 installations
you may have to modify a few things. For example, in order
to find libXext, I had to make the following change under
Ubuntu 9.09:
CONFIG_SIM_X11FB - Use X11 window for framebuffer
CONFIG_SIM_FBHEIGHT - Height of the framebuffer in pixels
CONFIG_SIM_FBWIDTH - Width of the framebuffer in pixels.
CONFIG_SIM_FBBPP - Pixel depth in bits
X11 Configuration
-----------------
But now, since CONFIG_SIM_X11FB is also selected the following
definitions are needed
CONFIG_SIM_FBBPP (must match the resolution of the display).
CONFIG_FB_CMAP=y
My system has 24-bit color, but packed into 32-bit words so
the correct seeting of CONFIG_SIM_FBBPP is 32.
For whatever value of CONFIG_SIM_FBBPP is selected, the
corresponidng CONFIG_NX_DISABLE_*BPP setting must not be
disabled.
Touchscreen Support
-------------------
A X11 mouse-based touchscreen simulation can also be enabled
by setting:
CONFIG_INPUT=y
CONFIG_SIM_TOUCHSCREEN=y
X11 Build Issues
----------------
To get the system to compile under various X11 installations
you may have to modify a few things. For example, in order
to find libXext, I had to make the following change under
Ubuntu 9.09:
cd /usr/lib/
sudo ln -s libXext.so.6.4.0 libXext.so
Multi- and Single-User Modes
----------------------------
The default is the single-user NX implementation. To select
the multi-user NX implementation:
CONFG_NX_MULTIUSER=y
CONFIG_DISABLE_MQUEUE=n
ostest
Description
-----------
The "standard" NuttX examples/ostest configuration. This
configuration may be selected as follows:
@@ -186,6 +247,8 @@ ostest
pashello
Description
-----------
Configures to use examples/pashello. This configuration may
by selected as follows:
+110
View File
@@ -0,0 +1,110 @@
############################################################################
# configs/sim/nx11/Make.defs
#
# Copyright (C) 2008, 2011 Gregory Nutt. All rights reserved.
# Author: Gregory Nutt <spudmonkey@racsa.co.cr>
#
# 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
HOSTOS = ${shell uname -o 2>/dev/null || echo "Other"}
ifeq ($(CONFIG_DEBUG_SYMBOLS),y)
ARCHOPTIMIZATION = -g
else
ARCHOPTIMIZATION = -O2
endif
ARCHCPUFLAGS = -fno-builtin
ARCHPICFLAGS = -fpic
ARCHWARNINGS = -Wall -Wstrict-prototypes -Wshadow
ARCHDEFINES =
ARCHINCLUDES = -I. -isystem $(TOPDIR)/include
ARCHSCRIPT =
CROSSDEV =
CC = $(CROSSDEV)gcc
CPP = $(CROSSDEV)gcc -E
LD = $(CROSSDEV)ld
AR = $(CROSSDEV)ar rcs
NM = $(CROSSDEV)nm
OBJCOPY = $(CROSSDEV)objcopy
OBJDUMP = $(CROSSDEV)objdump
CFLAGS = $(ARCHWARNINGS) $(ARCHOPTIMIZATION) \
$(ARCHCPUFLAGS) $(ARCHINCLUDES) $(ARCHDEFINES) $(EXTRADEFINES) -pipe
CPPFLAGS = $(ARCHINCLUDES) $(ARCHDEFINES) $(EXTRADEFINES)
AFLAGS = $(CFLAGS) -D__ASSEMBLY__
OBJEXT = .o
LIBEXT = .a
ifeq ($(HOSTOS),Cygwin)
EXEEXT = .exe
else
EXEEXT =
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 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
MKDEP = $(TOPDIR)/tools/mkdeps.sh
HOSTCC = gcc
HOSTINCLUDES = -I.
HOSTCFLAGS = $(ARCHWARNINGS) $(ARCHOPTIMIZATION) \
$(ARCHCPUFLAGS) $(HOSTINCLUDES) $(ARCHDEFINES) $(EXTRADEFINES) -pipe
HOSTLDFLAGS =
+39
View File
@@ -0,0 +1,39 @@
############################################################################
# configs/sim/nx11/appconfig
#
# Copyright (C) 2011 Gregory Nutt. All rights reserved.
# Author: Gregory Nutt <spudmonkey@racsa.co.cr>
#
# 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/nx
@@ -1,7 +1,7 @@
############################################################################
# sim/nx/defconfig
# sim/nx11/defconfig
#
# Copyright (C) 2008, 2010 Gregory Nutt. All rights reserved.
# Copyright (C) 2008, 2010-2011 Gregory Nutt. All rights reserved.
# Author: Gregory Nutt <spudmonkey@racsa.co.cr>
#
# Redistribution and use in source and binary forms, with or without
@@ -51,11 +51,19 @@ CONFIG_ARCH_BOARD_SIM=y
#
# Simulated framebuffer configuration
#
CONFIG_SIM_X11FB=y
CONFIG_SIM_FBWIDTH=480
CONFIG_SIM_FBHEIGHT=240
CONFIG_SIM_FBBPP=32
#
# Simulated touchscreen configuration
# (Set both of the following to 'y' to enable)
#
CONFIG_INPUT=n
CONFIG_SIM_TOUCHSCREEN=n
#
# General OS setup
#
+45
View File
@@ -0,0 +1,45 @@
#!/bin/bash
# sim/nx11/setenv.sh
#
# Copyright (C) 2008, 2011 Gregory Nutt. All rights reserved.
# Author: Gregory Nutt <spudmonkey@racsa.co.cr>
#
# 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 [ "$(basename $0)" = "setenv.sh" ] ; then
echo "You must source this script, not run it!" 1>&2
exit 1
fi
if [ -z ${PATH_ORIG} ]; then export PATH_ORIG=${PATH}; fi
#export NUTTX_BIN=
#export PATH=${NUTTX_BIN}:/sbin:/usr/sbin:${PATH_ORIG}
echo "PATH : ${PATH}"