mirror of
https://github.com/apache/nuttx.git
synced 2026-05-23 06:39:01 +08:00
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:
@@ -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 <NuttX-Directory>/tools
|
||||
./configure sim/nx
|
||||
./configure sim/nx11
|
||||
cd <NuttX-Directory>
|
||||
cp <NuttX-Directory>/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>
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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
|
||||
****************************************************************************/
|
||||
|
||||
@@ -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
@@ -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
@@ -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;
|
||||
}
|
||||
@@ -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
@@ -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:
|
||||
|
||||
|
||||
@@ -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 =
|
||||
@@ -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
|
||||
#
|
||||
Executable
+45
@@ -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}"
|
||||
Reference in New Issue
Block a user