mirror of
https://gitee.com/mirrors_PX4/PX4-Autopilot.git
synced 2026-10-18 23:53:33 +08:00
Resync new repository with old repo r5166
git-svn-id: http://svn.code.sf.net/p/nuttx/code/trunk@5153 42af7a65-404d-4744-a932-0658087f49c3
This commit is contained in:
@@ -0,0 +1,21 @@
|
||||
#
|
||||
# For a description of the syntax of this configuration file,
|
||||
# see misc/tools/kconfig-language.txt.
|
||||
#
|
||||
|
||||
comment "Interpreters"
|
||||
|
||||
source "$APPSDIR/interpreters/ficl/Kconfig"
|
||||
|
||||
config PCODE
|
||||
bool "Pascal p-code interpreter"
|
||||
default n
|
||||
---help---
|
||||
Enable support for the Pascal p-code interpreter. See README file at misc/pascal
|
||||
and also the README.txt file in the apps/interpreter directory. Use of this
|
||||
configuration implies that you have performed the required installation of the
|
||||
Pascal run-time code.
|
||||
|
||||
if PCODE
|
||||
endif
|
||||
|
||||
@@ -0,0 +1,43 @@
|
||||
############################################################################
|
||||
# apps/interpreters/Make.defs
|
||||
# Adds selected applications to apps/ build
|
||||
#
|
||||
# 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.
|
||||
#
|
||||
############################################################################
|
||||
|
||||
ifeq ($(CONFIG_PCODE),y)
|
||||
CONFIGURED_APPS += interpreters/pcode
|
||||
endif
|
||||
|
||||
ifeq ($(CONFIG_FICL),y)
|
||||
CONFIGURED_APPS += interpreters/ficl
|
||||
endif
|
||||
@@ -0,0 +1,70 @@
|
||||
############################################################################
|
||||
# apps/interpreters/Makefile
|
||||
#
|
||||
# Copyright (C) 2011 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 # Current configuration
|
||||
|
||||
# Sub-directories containing interpreter runtime
|
||||
|
||||
SUBDIRS = pcode ficl
|
||||
|
||||
# Create the list of installed runtime modules (INSTALLED_DIRS)
|
||||
|
||||
define ADD_DIRECTORY
|
||||
INSTALLED_DIRS += ${shell if [ -r $1/Makefile ]; then echo "$1"; fi}
|
||||
endef
|
||||
|
||||
$(foreach DIR, $(SUBDIRS), $(eval $(call ADD_DIRECTORY,$(DIR))))
|
||||
|
||||
all: nothing
|
||||
.PHONY: nothing context depend clean distclean
|
||||
|
||||
nothing:
|
||||
|
||||
context:
|
||||
|
||||
depend:
|
||||
@for dir in $(INSTALLED_DIRS) ; do \
|
||||
$(MAKE) -C $$dir depend TOPDIR="$(TOPDIR)" APPDIR="$(APPDIR)"; \
|
||||
done
|
||||
|
||||
clean:
|
||||
@for dir in $(INSTALLED_DIRS) ; do \
|
||||
$(MAKE) -C $$dir clean TOPDIR="$(TOPDIR)" APPDIR="$(APPDIR)"; \
|
||||
done
|
||||
|
||||
distclean: clean
|
||||
@for dir in $(INSTALLED_DIRS) ; do \
|
||||
$(MAKE) -C $$dir distclean TOPDIR="$(TOPDIR)" APPDIR="$(APPDIR)"; \
|
||||
done
|
||||
@@ -0,0 +1,67 @@
|
||||
apps/interpreters README file
|
||||
=============================
|
||||
|
||||
This apps/ directory is set aside to hold interpreters that may be
|
||||
incorporated into NuttX.
|
||||
|
||||
ficl
|
||||
----
|
||||
|
||||
This is DIY port of Ficl (the "Forth Inspired Command Language"). See
|
||||
http://ficl.sourceforge.net/. It is a "DIY" port because the Ficl source
|
||||
is not in that directory, only an environment and instructions that will
|
||||
let you build Ficl under NuttX. The rest is up to you.
|
||||
|
||||
pcode
|
||||
-----
|
||||
|
||||
At present, only the NuttX Pascal add-on is supported. This NuttX add-on
|
||||
must be downloaded separately (or is available in an SVN snapshot in the
|
||||
misc/pascal directory).
|
||||
|
||||
This Pascal add-on must be installed into the NuttX apps/ directory. After
|
||||
unpacking the Pascal add-on package, an installation script and README.txt
|
||||
instructions can be found at pascal/nuttx.
|
||||
|
||||
INSTALL.sh -- The script that performs the operation. Usage:
|
||||
|
||||
./INSTALL.sh [-16|-32] <install-dir>
|
||||
|
||||
If you are using this standard NuttX apps/ package, the correct
|
||||
location for the <install-dir> is apps/interpreters. That is
|
||||
where the examples and build logic will expect to find the pcode
|
||||
sub-directory.
|
||||
|
||||
Example:
|
||||
|
||||
./INSTALL.sh -16 $PWD/../../../apps/interpreters
|
||||
|
||||
After installation, the NuttX apps/interpresters directory will contain
|
||||
the following files
|
||||
|
||||
pcode
|
||||
|-- Makefile
|
||||
|-- include
|
||||
| `-- Common header files
|
||||
|-- libboff
|
||||
| `-- Pascal object format (POFF) library
|
||||
`--insn
|
||||
|-- include
|
||||
| `-- model-specific header files
|
||||
`-- prun
|
||||
`-- model-specific source files
|
||||
|
||||
pashello
|
||||
|
||||
There is a simple Pascal example at apps/examples/pashello. This is the
|
||||
standard "Hello, World!" example written in Pascal and interpreted from
|
||||
Pascal P-Code at runtime. To use this example, place the following in
|
||||
your appconfig file"
|
||||
|
||||
# Path to example in apps/examples containing the passhello_main entry point
|
||||
|
||||
CONFIGURED_APPS += examples/pashello
|
||||
|
||||
# Path to the Pascal p-code runtime interpreter module
|
||||
|
||||
CONFIGURED_APPS += interpreters/pcode
|
||||
@@ -0,0 +1,16 @@
|
||||
#
|
||||
# For a description of the syntax of this configuration file,
|
||||
# see misc/tools/kconfig-language.txt.
|
||||
#
|
||||
|
||||
config FICL
|
||||
bool "Ficl Forth interpreter"
|
||||
default n
|
||||
---help---
|
||||
Enable support for the Ficl interpreter interpreter. See README.txt file in the
|
||||
apps/interpreters/ficl directory. Use of this configuration assumes
|
||||
that you have performed the required installation of the Ficl run-time code.
|
||||
|
||||
if FICL
|
||||
endif
|
||||
|
||||
@@ -0,0 +1,118 @@
|
||||
############################################################################
|
||||
# apps/interpreters/ficl/Makefile
|
||||
#
|
||||
# Copyright (C) 2011 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.
|
||||
#
|
||||
############################################################################
|
||||
|
||||
BUILDDIR := ${shell pwd | sed -e 's/ /\\ /g'}
|
||||
|
||||
-include $(TOPDIR)/.config
|
||||
-include $(TOPDIR)/Make.defs
|
||||
include $(APPDIR)/Make.defs
|
||||
|
||||
# Tools
|
||||
|
||||
INCDIR = $(TOPDIR)/tools/incdir.sh
|
||||
|
||||
ifeq ($(WINTOOL),y)
|
||||
INCDIROPT = -w
|
||||
endif
|
||||
|
||||
# Include paths
|
||||
|
||||
CFLAGS += ${shell $(INCDIR) $(INCDIROPT) "$(CC)" $(BUILDDIR)/$(FICL_SUBDIR) $(BUILDDIR)/src}
|
||||
|
||||
# Source Files
|
||||
|
||||
ASRCS =
|
||||
CXXSRCS =
|
||||
CSRCS = nuttx.c
|
||||
|
||||
-include Make.srcs
|
||||
|
||||
ASRCS += $(FICL_ASRCS)
|
||||
CXXSRCS += $(FICL_CXXSRCS)
|
||||
CSRCS += $(FICL_CSRCS)
|
||||
|
||||
AOBJS = $(ASRCS:.S=$(OBJEXT))
|
||||
COBJS = $(CSRCS:.c=$(OBJEXT))
|
||||
|
||||
SRCS = $(ASRCS) $(CSRCS)
|
||||
OBJS = $(AOBJS) $(COBJS)
|
||||
|
||||
ifeq ($(WINTOOL),y)
|
||||
BIN = "${shell cygpath -w $(APPDIR)/libapps$(LIBEXT)}"
|
||||
else
|
||||
BIN = "$(APPDIR)/libapps$(LIBEXT)"
|
||||
endif
|
||||
|
||||
ROOT_DEPPATH = --dep-path .
|
||||
SRC_DEPPATH = --dep-path src
|
||||
|
||||
VPATH = src:$(FICL_SUBDIR)
|
||||
|
||||
all: .built
|
||||
.PHONY: debug context depend clean distclean
|
||||
|
||||
$(AOBJS): %$(OBJEXT): %.S
|
||||
$(call ASSEMBLE, $<, $@)
|
||||
|
||||
$(COBJS): %$(OBJEXT): %.c
|
||||
$(call COMPILE, $<, $@)
|
||||
|
||||
debug:
|
||||
@#echo "FICL: $(FICL_SUBDIR)"
|
||||
@#echo "VPATH: $(VPATH)"
|
||||
@#echo "CFLAGS: $(CFLAGS)"
|
||||
|
||||
.built: debug $(OBJS)
|
||||
@( for obj in $(OBJS) ; do \
|
||||
$(call ARCHIVE, $(BIN), $${obj}); \
|
||||
done ; )
|
||||
@touch .built
|
||||
|
||||
context:
|
||||
|
||||
.depend: debug Makefile $(SRCS)
|
||||
@$(MKDEP) $(ROOT_DEPPATH) $(SRC_DEPPATH) $(FICL_DEPPATH) $(CC) -- $(CFLAGS) -- $(SRCS) >Make.dep
|
||||
@touch $@
|
||||
|
||||
depend: .depend
|
||||
|
||||
clean:
|
||||
@rm -f *.o *~ .*.swp .built
|
||||
$(call CLEAN)
|
||||
|
||||
distclean: clean
|
||||
@rm -f Make.dep .depend
|
||||
|
||||
-include Make.dep
|
||||
@@ -0,0 +1,42 @@
|
||||
apps/interpreter/README.txt
|
||||
===========================
|
||||
|
||||
Ficl is a programming language interpreter designed to be embedded into
|
||||
other systems as a command, macro, and development prototyping language.
|
||||
Ficl is an acronym for "Forth Inspired Command Language". See
|
||||
http://ficl.sourceforge.net/
|
||||
|
||||
Build Instructions
|
||||
------------------
|
||||
|
||||
Disclaimer: This installation steps have only been exercised using Ficl
|
||||
4.1.0. With new versions you will likely have to make some adjustments
|
||||
to this instructtions or to the files within this directory. Think of this
|
||||
information as "recommendations" -- not necessarily proven instructions.
|
||||
|
||||
1. CD to apps/interpreters/ficl
|
||||
|
||||
2. Download Ficl: http://sourceforge.net/projects/ficl/files/
|
||||
|
||||
3. Uznip the Ficl compressed file.
|
||||
|
||||
For example, 'unzip ficl-4.1.0.zip' will leave the file
|
||||
apps/interpreters/ficl/ficl-4.1.0
|
||||
|
||||
4. Configure to build Ficl in the apps/interpreters/ficl directory using
|
||||
the configure.sh script.
|
||||
|
||||
For example, './configure.sh ficl-4.1.0' will leave the Makefile
|
||||
fragment 'Make.srcs' in the ficl build directory.
|
||||
|
||||
5. Create your NuttX configuration. The appconfig file should include
|
||||
(1) the path to your application code, and (2) the path to the Ficl
|
||||
build directory. That latter would appear as the following line in
|
||||
your appconfig file:
|
||||
|
||||
CONFIGURED_APPS += interpreters/ficl
|
||||
|
||||
6. Configure and build NuttX. On successful completion, the Ficl objects
|
||||
will be available in apps/libapps.a and that NuttX binary will be
|
||||
linked against that file. Of course, Ficl will do nothing unless
|
||||
you have written some application code that uses it!
|
||||
Executable
+47
@@ -0,0 +1,47 @@
|
||||
#!/bin/bash
|
||||
|
||||
USAGE="$0 <Ficl-dir>"
|
||||
|
||||
FICLDIR=$1
|
||||
if [ -z "${FICLDIR}" ]; then
|
||||
echo "Missing command line argument"
|
||||
echo $USAGE
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ ! -d "${FICLDIR}" ]; then
|
||||
echo "Sub-directory ${FICLDIR} does not exist"
|
||||
echo $USAGE
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ ! -r "${FICLDIR}/Makefile" ]; then
|
||||
echo "Readable ${FICLDIR}/Makefile does not exist"
|
||||
echo $USAGE
|
||||
exit 1
|
||||
fi
|
||||
|
||||
OBJECTS=`grep "^OBJECTS" ${FICLDIR}/Makefile`
|
||||
if [ -z "${OBJECTS}" ]; then
|
||||
echo "No OBJECTS found in ${FICLDIR}/Makefile"
|
||||
echo $USAGE
|
||||
exit 1
|
||||
fi
|
||||
|
||||
OBJLIST=`echo ${OBJECTS} | cut -d'=' -f2 | sed -e "s/unix\.o//g"`
|
||||
|
||||
rm -f Make.srcs
|
||||
echo "# apps/interpreters/ficl/Make.obs" >> Make.srcs
|
||||
echo "# Auto-generated file.. Do not edit" >> Make.srcs
|
||||
echo "" >> Make.srcs
|
||||
echo "FICL_SUBDIR = ${1}" >> Make.srcs
|
||||
echo "FICL_DEPPATH = --dep-path ${1}" >> Make.srcs
|
||||
|
||||
unset CSRCS
|
||||
for OBJ in ${OBJLIST}; do
|
||||
SRC=`echo ${OBJ} | sed -e "s/\.o/\.c/g"`
|
||||
CSRCS=${CSRCS}" ${SRC}"
|
||||
done
|
||||
echo "FICL_ASRCS = " >> Make.srcs
|
||||
echo "FICL_CXXSRCS = " >> Make.srcs
|
||||
echo "FICL_CSRCS = ${CSRCS}" >> Make.srcs
|
||||
@@ -0,0 +1,65 @@
|
||||
#include <sys/stat.h>
|
||||
#include <sys/statfs.h>
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <errno.h>
|
||||
|
||||
#include "ficl.h"
|
||||
|
||||
void *ficlMalloc(size_t size)
|
||||
{
|
||||
return malloc(size);
|
||||
}
|
||||
|
||||
void *ficlRealloc(void *p, size_t size)
|
||||
{
|
||||
return realloc(p, size);
|
||||
}
|
||||
|
||||
void ficlFree(void *p)
|
||||
{
|
||||
free(p);
|
||||
}
|
||||
|
||||
void ficlCallbackDefaultTextOut(ficlCallback *callback, char *message)
|
||||
{
|
||||
FICL_IGNORE(callback);
|
||||
if (message != NULL)
|
||||
fputs(message, stdout);
|
||||
else
|
||||
fflush(stdout);
|
||||
return;
|
||||
}
|
||||
|
||||
int ficlFileStatus(char *filename, int *status)
|
||||
{
|
||||
struct stat statbuf;
|
||||
if (stat(filename, &statbuf) == 0)
|
||||
{
|
||||
*status = statbuf.st_mode;
|
||||
return 0;
|
||||
}
|
||||
*status = ENOENT;
|
||||
return -1;
|
||||
}
|
||||
|
||||
long ficlFileSize(ficlFile *ff)
|
||||
{
|
||||
struct stat statbuf;
|
||||
if (ff == NULL)
|
||||
return -1;
|
||||
|
||||
statbuf.st_size = -1;
|
||||
if (fstat(fileno(ff->f), &statbuf) != 0)
|
||||
return -1;
|
||||
|
||||
return statbuf.st_size;
|
||||
}
|
||||
|
||||
void ficlSystemCompilePlatform(ficlSystem *system)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,19 @@
|
||||
#include <stdint.h>
|
||||
|
||||
typedef int8_t ficlInteger8;
|
||||
typedef uint8_t ficlUnsigned8;
|
||||
typedef int16_t ficlInteger16;
|
||||
typedef uint16_t ficlUnsigned16;
|
||||
typedef int32_t ficlInteger32;
|
||||
typedef uint32_t ficlUnsigned32;
|
||||
|
||||
typedef intptr_t ficlInteger;
|
||||
typedef uintptr_t ficlUnsigned;
|
||||
typedef float ficlFloat;
|
||||
|
||||
#define FICL_PLATFORM_BASIC_TYPES (1)
|
||||
#define FICL_PLATFORM_HAS_2INTEGER (0)
|
||||
#define FICL_PLATFORM_HAS_FTRUNCATE (0)
|
||||
|
||||
#define FICL_PLATFORM_OS "ansi"
|
||||
#define FICL_PLATFORM_ARCHITECTURE "unknown"
|
||||
Reference in New Issue
Block a user