2011-05-10 17:50:23 +02:00
|
|
|
apps/interpreters README file
|
|
|
|
=============================
|
|
|
|
|
|
|
|
This apps/ directory is set aside to hold interpreters that may be
|
|
|
|
incorporated into NuttX.
|
|
|
|
|
2011-05-10 20:21:57 +02:00
|
|
|
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.
|
|
|
|
|
2015-01-11 16:34:51 +01:00
|
|
|
micropython
|
|
|
|
-----------
|
|
|
|
|
|
|
|
This is a port of a build environment for Micro Python:
|
|
|
|
|
|
|
|
https://micropython.org/
|
|
|
|
|
2015-01-11 21:07:51 +01:00
|
|
|
Configuration Options:
|
|
|
|
|
|
|
|
CONFIG_INTERPRETERS_MICROPYTHON - Enables support for the Micro Python
|
|
|
|
interpreter
|
|
|
|
CONFIG_INTERPRETERS_MICROPYTHON_URL - URL where Micro Python can be
|
2015-01-12 14:15:24 +01:00
|
|
|
downloaded. default "https://github.com/micropython/micropython/archive".
|
|
|
|
There are more recent snapshots at https://micropython.org/download/
|
2015-01-11 21:07:51 +01:00
|
|
|
CONFIG_INTERPRETERS_MICROPYTHON_VERSION - Version number. Default "1.3.8"
|
|
|
|
CONFIG_INTERPRETERS_MICROPYTHON_APPNAME - Executable name. Only needed
|
|
|
|
if CONFIG_NSH_BUILTIN_APPS=y. Default: "micropython"
|
|
|
|
CONFIG_INTERPRETERS_MICROPYTHON_STACKSIZE - Interpreter stack size. Only
|
|
|
|
needed if CONFIG_NSH_BUILTIN_APPS=y. Default: 2048
|
|
|
|
CONFIG_INTERPRETERS_MICROPYTHON_PRIORITY - Interpreter priority. Only
|
|
|
|
needed if CONFIG_NSH_BUILTIN_APPS=y. Default: 100
|
|
|
|
CONFIG_INTERPRETERS_MICROPYTHON_PROGNAME - Program name. Only needed
|
|
|
|
if CONFIG_BUILD_KERNEL=y. Default: "micropython"
|
|
|
|
|
2015-01-11 17:49:20 +01:00
|
|
|
NOTE that Micro Python is not included in this directory. Be default,
|
|
|
|
it will be downloaded at build time from the github . You can avoid
|
|
|
|
this download by pre-installing Micro Python. Before building, just
|
|
|
|
download Micro Python from:
|
2015-01-11 16:34:51 +01:00
|
|
|
|
|
|
|
https://micropython.org/download/
|
2015-01-11 17:49:20 +01:00
|
|
|
https://github.com/micropython/micropython/releases
|
2015-01-11 16:34:51 +01:00
|
|
|
|
2015-01-11 17:49:20 +01:00
|
|
|
Or clone from the GIT repository at:
|
2015-01-11 16:34:51 +01:00
|
|
|
|
|
|
|
https://github.com/micropython/
|
2015-01-11 17:49:20 +01:00
|
|
|
https://github.com/micropython/micropython
|
2015-01-11 16:34:51 +01:00
|
|
|
|
2015-01-11 21:07:51 +01:00
|
|
|
The Micro Python should be provided as a tarbll name:
|
|
|
|
|
|
|
|
apps/interpreters/micropython/v$(CONFIG_INTERPRETERS_MICROPYTHON_VERSION).tar.gz
|
|
|
|
|
|
|
|
and the unpacked code should reside in directory at:
|
|
|
|
|
|
|
|
apps/interpreters/micropython/micropython-$(CONFIG_INTERPRETERS_MICROPYTHON_VERSION)
|
2015-01-11 17:49:20 +01:00
|
|
|
|
|
|
|
This port was contributed by Dave Marples using Micro Python circa
|
2015-01-11 16:34:51 +01:00
|
|
|
1.3.8. It may not be compatible with other versions.
|
|
|
|
|
2015-01-12 15:27:25 +01:00
|
|
|
NOTES:
|
|
|
|
|
|
|
|
1. Micro Python will not build on Windows with a Windows native toolchain
|
|
|
|
due to use of POSIX paths in the Micro Python build system. It should build
|
|
|
|
correctly on Linux or under Cygwin with the NuttX buildroot tools.
|
|
|
|
|
|
|
|
2. Micro Python will not run correctly on a 64-bit target (such as the NuttX
|
|
|
|
simulation on a 64-bit platfform). In that case it generates assertions
|
|
|
|
like:
|
|
|
|
|
|
|
|
OverflowError: long int not supported in this build
|
|
|
|
|
|
|
|
This change to mpconfigport.h is a partial work-around but does not solve
|
|
|
|
all issues:
|
|
|
|
|
2015-01-13 21:56:17 +01:00
|
|
|
-#define MICROPY_LONGINT_IMPL (MICROPY_LONGINT_IMPL_MPZ)
|
2015-01-12 15:27:25 +01:00
|
|
|
+#define MICROPY_LONGINT_IMPL (MICROPY_LONGINT_IMPL_LONGLONG)
|
|
|
|
|
|
|
|
Someday it will probably be necessary to autogenerate the mpconfigport.h
|
|
|
|
header file with the correct properties for the target system.\
|
2015-01-11 17:49:20 +01:00
|
|
|
|
2015-01-13 21:56:17 +01:00
|
|
|
3. Can't fine alloca.h? With GCC compilers you may be able replace the
|
|
|
|
inclusion of alloca.h in mkconfigport.h with:
|
|
|
|
|
|
|
|
#define alloca(a) __builtin_alloca(a)
|
|
|
|
|
2015-01-13 23:24:56 +01:00
|
|
|
4. Micro Python needs the math library libm.a. The math library built into
|
|
|
|
NuttX is sufficient and that can be included with CONFIG_LIBM=y. If you
|
|
|
|
prefer a more highly tuned math library then refer to the discussion of
|
|
|
|
math.h in the the top-level nuttx/README.txt file. Also refer to the
|
|
|
|
discussions in the NuttX Yahoo! forum; people have found many creative
|
|
|
|
way to link with the newlib math library, for example.
|
|
|
|
|
2015-01-23 22:58:33 +01:00
|
|
|
5. See errors like this?
|
|
|
|
|
|
|
|
error: unknown type name 'wint_t'
|
|
|
|
|
|
|
|
You can't include the NuttX wchar.h header file where this is defined, but
|
2015-01-23 23:40:18 +01:00
|
|
|
you can add this to the mpconfigport.h header file (if it is not already
|
|
|
|
there):
|
2015-01-23 22:58:33 +01:00
|
|
|
|
|
|
|
typedef int wint_t;
|
|
|
|
|
2015-01-23 23:40:18 +01:00
|
|
|
Is the missing wint_t definition coming from alloca.h? You can either
|
|
|
|
(1) replace alloc(a) with the #define described above, or (2) move the
|
|
|
|
typedef of wint_t to before the inclusion of alloca.h.
|
|
|
|
|
2015-01-23 22:58:33 +01:00
|
|
|
6. Micro Python is released under the MIT license which is license-compatible
|
2015-01-14 16:10:26 +01:00
|
|
|
with the NuttX 3-clause BSD license. Here is the full text of the Micro
|
|
|
|
Python LICENSE file as of 2015-01-14:
|
|
|
|
|
|
|
|
The MIT License (MIT)
|
|
|
|
|
|
|
|
Copyright (c) 2013, 2014 Damien P. George
|
|
|
|
|
|
|
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
|
|
of this software and associated documentation files (the "Software"), to deal
|
|
|
|
in the Software without restriction, including without limitation the rights
|
|
|
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
|
|
copies of the Software, and to permit persons to whom the Software is
|
|
|
|
furnished to do so, subject to the following conditions:
|
|
|
|
|
|
|
|
The above copyright notice and this permission notice shall be included in
|
|
|
|
all copies or substantial portions of the Software.
|
|
|
|
|
|
|
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
|
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
|
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
|
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
|
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
|
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
|
|
THE SOFTWARE.
|
|
|
|
|
2011-05-10 17:50:23 +02:00
|
|
|
pcode
|
|
|
|
-----
|
|
|
|
|
|
|
|
At present, only the NuttX Pascal add-on is supported. This NuttX add-on
|
2013-04-20 02:35:06 +02:00
|
|
|
must be downloaded separately (or is available in an GIT snapshot in the
|
2011-05-10 17:50:23 +02:00
|
|
|
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:
|
2013-06-02 01:25:16 +02:00
|
|
|
|
2011-05-10 17:50:23 +02:00
|
|
|
./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
|
2013-06-02 01:25:16 +02:00
|
|
|
|
2011-05-10 17:50:23 +02:00
|
|
|
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
|
2013-06-02 01:25:16 +02:00
|
|
|
your defonfig file:
|
|
|
|
|
|
|
|
CONFIG_EXAMPLES_PASHELLO=y
|
|
|
|
CONFIG_INTERPRETERS_PCODE=y
|
2014-05-09 16:52:11 +02:00
|
|
|
|
|
|
|
prun
|
|
|
|
|
|
|
|
This directory holds some simple, convenience functions to simplify and
|
|
|
|
standardize the interaction with the P-Code library.
|