Add a VNC NxWM configuration to support further VNC testing
This commit is contained in:
parent
8c1534e3ed
commit
fab5a71fe5
@ -11671,5 +11671,7 @@
|
||||
* arch/arm/src/stm32 and configs/stm32f429i-disco: Correct some bad
|
||||
commits that broke the LTDC display example. From Marco Krahl
|
||||
(2016-04-22).
|
||||
|
||||
* configs/samv71-xult/vnwwm: Add a more complex NxWM configuration
|
||||
to support further VNC testing (particularly of VNC keyboard and
|
||||
mouse intputs). Initial configuration is not functional (2016-04-23).
|
||||
|
||||
|
@ -2206,25 +2206,25 @@ Configuration sub-directories
|
||||
|
||||
The NxWM window manager can be found here:
|
||||
|
||||
nuttx-git/NxWidgets/nxwm
|
||||
NxWidgets/nxwm
|
||||
|
||||
The NxWM unit test can be found at:
|
||||
|
||||
nuttx-git/NxWidgets/UnitTests/nxwm
|
||||
NxWidgets/UnitTests/nxwm
|
||||
|
||||
Documentation for installing the NxWM unit test can be found here:
|
||||
|
||||
nuttx-git/NxWidgets/UnitTests/README.txt
|
||||
NxWidgets/UnitTests/README.txt
|
||||
|
||||
2. Here is the quick summary of the build steps. These steps assume
|
||||
that you have the entire NuttX GIT in some directory ~/nuttx-git.
|
||||
You may have these components installed elsewhere. In that case, you
|
||||
that you have the entire NuttX GIT in some directory HOME. You may
|
||||
have these components installed elsewhere. In that case, you
|
||||
will need to adjust all of the paths in the following accordingly:
|
||||
|
||||
a. Install the nxwm configuration
|
||||
a. Install the VNC nxwm configuration
|
||||
|
||||
$ cd ~/nuttx-git/nuttx/tools
|
||||
$ ./configure.sh samv71-xult/nxwm
|
||||
$ cd HOME/nuttx/tools
|
||||
$ ./configure.sh samv71-xult/vnc
|
||||
|
||||
b. Make the build context (only)
|
||||
|
||||
@ -2241,27 +2241,27 @@ Configuration sub-directories
|
||||
|
||||
c. Install the nxwm unit test
|
||||
|
||||
$ cd ~/nuttx-git/NxWidgets
|
||||
$ tools/install.sh ~/nuttx-git/apps nxwm
|
||||
$ cd HOME/NxWidgets
|
||||
$ tools/install.sh HOME/apps nxwm
|
||||
Creating symbolic link
|
||||
- To ~/nuttx-git/NxWidgets/UnitTests/nxwm
|
||||
- At ~/nuttx-git/apps/external
|
||||
- To HOME/NxWidgets/UnitTests/nxwm
|
||||
- At HOME/apps/external
|
||||
|
||||
d. Build the NxWidgets library
|
||||
|
||||
$ cd ~/nuttx-git/NxWidgets/libnxwidgets
|
||||
$ make TOPDIR=~/nuttx-git/nuttx
|
||||
$ cd HOME/NxWidgets/libnxwidgets
|
||||
$ make TOPDIR=HOME/nuttx
|
||||
...
|
||||
|
||||
e. Build the NxWM library
|
||||
|
||||
$ cd ~/nuttx-git/NxWidgets/nxwm
|
||||
$ make TOPDIR=~/nuttx-git/nuttx
|
||||
$ cd HOME/NxWidgets/nxwm
|
||||
$ make TOPDIR=HOME/nuttx
|
||||
...
|
||||
|
||||
f. Built NuttX with the installed unit test as the application
|
||||
|
||||
$ cd ~/nuttx-git/nuttx
|
||||
$ cd HOME/nuttx
|
||||
$ make
|
||||
|
||||
3. Reading from the LCD is not currently functional. The following
|
||||
@ -2381,3 +2381,132 @@ Configuration sub-directories
|
||||
quality in the remote display (since it is also 8 BPP). At 8
|
||||
BPP, the remote display is correct even with both GRAPHICS and
|
||||
UPDATER debug OFF -- and there is no hang!
|
||||
|
||||
2106-04-23: The NxImage example at apps/examplex/nximage. This was
|
||||
selected because it is a very simple graphics test. Continued
|
||||
testing, however, requires a more complex configuration. Hence,
|
||||
the vnxwm configuration was created.
|
||||
|
||||
vnxwm:
|
||||
|
||||
This is a special configuration setup for the NxWM window manager
|
||||
UnitTest. It provides an interactive windowing experience via a remote
|
||||
VNC client window running on your PC. The SAMV71-XULT is connected to
|
||||
the PC via Ethernet.
|
||||
|
||||
NOTES:
|
||||
|
||||
1. The NxWM window manager is a tiny window manager tailored for use
|
||||
with smaller LCDs. It supports a task, a start window, and
|
||||
multiple application windows with toolbars. However, to make the
|
||||
best use of the visible LCD space, only one application window is
|
||||
visible at at time.
|
||||
|
||||
The NxWM window manager can be found here:
|
||||
|
||||
NxWidgets/nxwm
|
||||
|
||||
The NxWM unit test can be found at:
|
||||
|
||||
NxWidgets/UnitTests/nxwm
|
||||
|
||||
Documentation for installing the NxWM unit test can be found here:
|
||||
|
||||
NxWidgets/UnitTests/README.txt
|
||||
|
||||
2. Here is the quick summary of the build steps. These steps assume
|
||||
that you have the entire NuttX GIT in some directory HOME. You may
|
||||
have these components installed elsewhere. In that case, you
|
||||
will need to adjust all of the paths in the following accordingly:
|
||||
|
||||
a. Install the nxwm configuration
|
||||
|
||||
$ cd HOME/nuttx/tools
|
||||
$ ./configure.sh samv71-xult/nxwm
|
||||
|
||||
b. Make the build context (only)
|
||||
|
||||
$ cd ..
|
||||
$ . ./setenv.sh
|
||||
$ make context
|
||||
...
|
||||
|
||||
NOTE: the use of the setenv.sh file is optional. All that it will
|
||||
do is to adjust your PATH variable so that the build system can find
|
||||
your tools. If you use it, you will most likely need to modify the
|
||||
script so that it has the correct path to your tool binaries
|
||||
directory.
|
||||
|
||||
c. Install the nxwm unit test
|
||||
|
||||
$ cd HOME/NxWidgets
|
||||
$ tools/install.sh HOME/apps nxwm
|
||||
Creating symbolic link
|
||||
- To HOME/NxWidgets/UnitTests/nxwm
|
||||
- At HOME/apps/external
|
||||
|
||||
d. Build the NxWidgets library
|
||||
|
||||
$ cd HOME/NxWidgets/libnxwidgets
|
||||
$ make TOPDIR=HOME/nuttx
|
||||
...
|
||||
|
||||
e. Build the NxWM library
|
||||
|
||||
$ cd HOME/NxWidgets/nxwm
|
||||
$ make TOPDIR=HOME/nuttx
|
||||
...
|
||||
|
||||
f. Built NuttX with the installed unit test as the application
|
||||
|
||||
$ cd HOME/nuttx
|
||||
$ make
|
||||
|
||||
3. Network configuration: IP address 10.0.0.2. The is easily changed
|
||||
via 'make menuconfig'. The VNC server address is 10.0.0.2:5900.
|
||||
|
||||
4. The default (local) framebuffer configuration is 320x240 with 8-bit
|
||||
RGB color.
|
||||
|
||||
I had some problems at 16-bits per pixle (see STATUS below). To
|
||||
select 16-bits per pixel RGB15 5:6:5
|
||||
|
||||
CONFIG_NX_DISABLE_8BPP=y
|
||||
# CONFIG_NX_DISABLE_16BPP is not set
|
||||
|
||||
# CONFIG_VNCSERVER_COLORFMT_RGB8 is not set
|
||||
CONFIG_VNCSERVER_COLORFMT_RGB16=y
|
||||
|
||||
CONFIG_EXAMPLES_NXIMAGE_BPP=16
|
||||
|
||||
To re-select 8-bits per pixel RGB8 3:3:2
|
||||
|
||||
# CONFIG_NX_DISABLE_8BPP is not set
|
||||
CONFIG_NX_DISABLE_16BPP=y
|
||||
|
||||
CONFIG_VNCSERVER_COLORFMT_RGB8=y
|
||||
# CONFIG_VNCSERVER_COLORFMT_RGB16 is not set
|
||||
|
||||
# CONFIG_EXAMPLES_NXIMAGE_GREYSCALE is not set
|
||||
CONFIG_EXAMPLES_NXIMAGE_BPP=8
|
||||
|
||||
5. There are complicated interactions between VNC and the network
|
||||
configuration. The CONFIG_VNCSERVER_UPDATE_BUFSIZE determines the
|
||||
size of update messages. That is 1024 bytes in that configuration
|
||||
(the full message with the header will be a little larger). The
|
||||
MTU (CONFIG_NET_ETH_MTU) is set to 590 so that a full update will
|
||||
require several packets.
|
||||
|
||||
Write buffering also effects network performance. This will break
|
||||
up the large updates into small (196 byte) groups. When we run out
|
||||
of read-ahead buffers, then partial updates may be sent causing a
|
||||
loss of synchronization.
|
||||
|
||||
STATUS:
|
||||
2106-04-23: Configuration created. See status up to this data in
|
||||
the vnc configuration. That probably all applies here as well.
|
||||
|
||||
Only some initial testing has been performed: The configuration
|
||||
does not work. No crashes or errors are reported, but the VNC
|
||||
client window stays black. I have not yet dug into this.
|
||||
|
117
configs/samv71-xult/vnxwm/Make.defs
Normal file
117
configs/samv71-xult/vnxwm/Make.defs
Normal file
@ -0,0 +1,117 @@
|
||||
############################################################################
|
||||
# configs/samv71-xult/vnxwm/Make.defs
|
||||
#
|
||||
# Copyright (C) 2016 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
|
||||
include ${TOPDIR}/tools/Config.mk
|
||||
include ${TOPDIR}/arch/arm/src/armv7-m/Toolchain.defs
|
||||
|
||||
ifeq ($(CONFIG_ARMV7M_DTCM),y)
|
||||
LDSCRIPT = flash-dtcm.ld
|
||||
else
|
||||
LDSCRIPT = flash-sram.ld
|
||||
endif
|
||||
|
||||
ifeq ($(WINTOOL),y)
|
||||
# Windows-native toolchains
|
||||
DIRLINK = $(TOPDIR)/tools/copydir.sh
|
||||
DIRUNLINK = $(TOPDIR)/tools/unlink.sh
|
||||
MKDEP = $(TOPDIR)/tools/mkwindeps.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)/scripts/$(LDSCRIPT)}"
|
||||
else
|
||||
# Linux/Cygwin-native toolchain
|
||||
MKDEP = $(TOPDIR)/tools/mkdeps$(HOSTEXEEXT)
|
||||
ARCHINCLUDES = -I. -isystem $(TOPDIR)/include
|
||||
ARCHXXINCLUDES = -I. -isystem $(TOPDIR)/include -isystem $(TOPDIR)/include/cxx
|
||||
ARCHSCRIPT = -T$(TOPDIR)/configs/$(CONFIG_ARCH_BOARD)/scripts/$(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
|
||||
endif
|
||||
|
||||
ifneq ($(CONFIG_DEBUG_NOOPT),y)
|
||||
ARCHOPTIMIZATION += $(MAXOPTIMIZATION)
|
||||
endif
|
||||
|
||||
ARCHCFLAGS = -fno-builtin
|
||||
ARCHCXXFLAGS = -fno-builtin -fno-exceptions -fno-rtti
|
||||
ARCHWARNINGS = -Wall -Wstrict-prototypes -Wshadow -Wundef -fno-strict-aliasing
|
||||
ARCHWARNINGSXX = -Wall -Wshadow -Wundef
|
||||
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-pcrel.ld -no-check-sections
|
||||
LDNXFLATFLAGS = -e main -s 2048
|
||||
|
||||
ASMEXT = .S
|
||||
OBJEXT = .o
|
||||
LIBEXT = .a
|
||||
EXEEXT =
|
||||
|
||||
ifneq ($(CROSSDEV),arm-nuttx-elf-)
|
||||
LDFLAGS += -nostartfiles -nodefaultlibs
|
||||
endif
|
||||
ifeq ($(CONFIG_DEBUG_SYMBOLS),y)
|
||||
LDFLAGS += -g
|
||||
endif
|
||||
|
||||
|
||||
HOSTCC = gcc
|
||||
HOSTINCLUDES = -I.
|
||||
HOSTCFLAGS = -Wall -Wstrict-prototypes -Wshadow -Wundef -g -pipe
|
||||
HOSTLDFLAGS =
|
||||
|
1567
configs/samv71-xult/vnxwm/defconfig
Normal file
1567
configs/samv71-xult/vnxwm/defconfig
Normal file
File diff suppressed because it is too large
Load Diff
77
configs/samv71-xult/vnxwm/setenv.sh
Normal file
77
configs/samv71-xult/vnxwm/setenv.sh
Normal file
@ -0,0 +1,77 @@
|
||||
#!/bin/bash
|
||||
# configs/samv7-xult/vnxwm/Make.defs
|
||||
#
|
||||
# Copyright (C) 2016 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 is the Cygwin path to the location where I installed the Atmel GCC
|
||||
# toolchain under Windows. You will also have to edit this if you install
|
||||
# this toolchain in any other location
|
||||
#export TOOLCHAIN_BIN="/cygdrive/c/Program Files (x86)/Atmel/Atmel Toolchain/ARM GCC/Native/4.7.3.99/arm-gnu-toolchain/bin"
|
||||
|
||||
# This is 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"
|
||||
#export TOOLCHAIN_BIN="/cygdrive/c/Program Files (x86)/CodeSourcery/Sourcery_CodeBench_Lite_for_ARM_EABI/bin"
|
||||
# export TOOLCHAIN_BIN="/cygdrive/c/Users/MyName/MentorGraphics/Sourcery_CodeBench_Lite_for_ARM_EABI/bin"
|
||||
|
||||
# This is the location where I installed the ARM "GNU Tools for ARM Embedded Processors"
|
||||
# You can this free toolchain here https://launchpad.net/gcc-arm-embedded
|
||||
export TOOLCHAIN_BIN="/cygdrive/c/Program Files (x86)/GNU Tools ARM Embedded/4.9 2015q2/bin"
|
||||
|
||||
# This is the path to the location where I installed the devkitARM toolchain
|
||||
# You can get this free toolchain from http://devkitpro.org/ or http://sourceforge.net/projects/devkitpro/
|
||||
#export TOOLCHAIN_BIN="/cygdrive/c/Program Files (x86)/devkitARM/bin"
|
||||
|
||||
# This is the Cygwin path to the location where I build the buildroot
|
||||
# toolchain.
|
||||
# export TOOLCHAIN_BIN="${WD}/../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}"
|
Loading…
x
Reference in New Issue
Block a user