mirror of
https://github.com/apache/nuttx.git
synced 2026-05-27 19:36:35 +08:00
docs/components/tools: Give tools their own doc pages
All of the tools listed on the original documentation are now given their own individual doc pages. This makes it much easier to cross-reference them from other documentation locations (as many are used in CI/for specific architectures) and it also makes it easier for users to digest the information. Signed-off-by: Matteo Golin <matteo.golin@gmail.com>
This commit is contained in:
@@ -0,0 +1,75 @@
|
|||||||
|
================
|
||||||
|
``abi_check.py``
|
||||||
|
================
|
||||||
|
|
||||||
|
``abi_check.py`` is a Python tool for checking binary compatibility based on
|
||||||
|
DWARF debug information.
|
||||||
|
|
||||||
|
It supports three related workflows:
|
||||||
|
|
||||||
|
1. Given one or more static libraries (``.a``) and an ELF file, collect the
|
||||||
|
undefined (external) symbols referenced by the libraries, locate those
|
||||||
|
functions in the ELF file, and write their function signatures to a JSON
|
||||||
|
file.
|
||||||
|
2. Generate two JSON files from two different ELF files (for example, an old
|
||||||
|
build and a new build), and compare the signatures of functions with the
|
||||||
|
same name (return type, parameters, and for structs also size, member
|
||||||
|
offsets, member types, etc.).
|
||||||
|
3. Given a single ELF file, detect structs with the same name but different
|
||||||
|
members.
|
||||||
|
|
||||||
|
Prerequisites:
|
||||||
|
|
||||||
|
- Python 3
|
||||||
|
- ``pyelftools`` (used to read ELF/DWARF)
|
||||||
|
- ``ar`` (used to extract object files from ``.a`` archives)
|
||||||
|
- ``pahole`` (only for ``--struct_check``)
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
|
||||||
|
Although the help text mentions ``.so``, the current implementation uses
|
||||||
|
``ar x`` on each ``--lib`` input, so it expects ``.a`` archives.
|
||||||
|
|
||||||
|
Help message::
|
||||||
|
|
||||||
|
$ python3 tools/abi_check.py -h
|
||||||
|
usage: abi_check.py [-h] [-a LIB [LIB ...]] [-e ELF] [-c] [-d] [-j JSON] [-s]
|
||||||
|
[-i INPUT_JSON INPUT_JSON]
|
||||||
|
|
||||||
|
This tool is used to check the binary compatibility of static libraries and has the following features:
|
||||||
|
1. The input consists of multiple static libraries and an ELF file. The tool searches
|
||||||
|
for external APIs used by the static libraries, then locates these API function signatures
|
||||||
|
in the ELF file, and outputs the results as a JSON file.
|
||||||
|
2. Using the first feature, with the static libraries unchanged,
|
||||||
|
the tool can take a new ELF file and an old ELF file as input, output two JSON files,
|
||||||
|
and compare the function signatures of functions with the same name in the two JSON files.
|
||||||
|
The comparison includes return values, parameters, and if they are structures,
|
||||||
|
it also compares the structure size, member offsets, member types, etc.
|
||||||
|
3.When the input is a single ELF file, the tool can check if structures with the same name have different members.
|
||||||
|
|
||||||
|
options:
|
||||||
|
-h, --help show this help message and exit
|
||||||
|
-a LIB [LIB ...], --lib LIB [LIB ...]
|
||||||
|
Path to liba.so or lib.a
|
||||||
|
-e ELF, --elf ELF Path to elf file
|
||||||
|
-c, --check If the static library contains debug information,
|
||||||
|
try to find the function in the static library,
|
||||||
|
and output the result to lib_<json> file
|
||||||
|
-d, --dump Dump result
|
||||||
|
-j JSON, --json JSON Save result to json file
|
||||||
|
-s, --struct_check Dump struct different
|
||||||
|
-i INPUT_JSON INPUT_JSON, --input_json INPUT_JSON INPUT_JSON
|
||||||
|
Diff two json files
|
||||||
|
|
||||||
|
Examples::
|
||||||
|
|
||||||
|
# 1) Extract signatures for external APIs referenced by one or more archives
|
||||||
|
$ python3 tools/abi_check.py -a libfoo.a libbar.a -e nuttx -j out.json
|
||||||
|
|
||||||
|
# 2) Compare signatures across two ELF files
|
||||||
|
$ python3 tools/abi_check.py -a libfoo.a libbar.a -e nuttx_old -j old.json
|
||||||
|
$ python3 tools/abi_check.py -a libfoo.a libbar.a -e nuttx_new -j new.json
|
||||||
|
$ python3 tools/abi_check.py -i old.json new.json
|
||||||
|
|
||||||
|
# 3) Find struct definition mismatches within a single ELF
|
||||||
|
$ python3 tools/abi_check.py -e nuttx -s
|
||||||
@@ -0,0 +1,137 @@
|
|||||||
|
=================
|
||||||
|
``bdf-convert.c``
|
||||||
|
=================
|
||||||
|
|
||||||
|
This C file is used to build the bdf-converter program. The bdf-converter
|
||||||
|
program can be used to convert fonts in Bitmap Distribution Format (BDF)
|
||||||
|
into fonts that can be used in the NX graphics system.
|
||||||
|
|
||||||
|
Below are general instructions for creating and installing a new font
|
||||||
|
in the NX graphic system:
|
||||||
|
|
||||||
|
1. Locate a font in BDF format,
|
||||||
|
2. Use the bdf-converter program to convert the BDF font to the NuttX
|
||||||
|
font format. This will result in a C header file containing
|
||||||
|
definitions. That header file should be installed at, for example,
|
||||||
|
libnx/nxfonts/nxfonts_myfont.h.
|
||||||
|
|
||||||
|
Create a new NuttX configuration variable. For example, suppose
|
||||||
|
you define the following variable: CONFIG_NXFONT_MYFONT. Then
|
||||||
|
you would need to:
|
||||||
|
|
||||||
|
3. Define CONFIG_NXFONT_MYFONT=y in your NuttX configuration file.
|
||||||
|
|
||||||
|
A font ID number has to be assigned for each new font. The font ID
|
||||||
|
is defined in the file include/nuttx/nx/nxfonts.h. Those definitions
|
||||||
|
have to be extended to support your new font. Look at how the font ID
|
||||||
|
enabled by CONFIG_NXFONT_SANS23X27 is defined and add an ID for your
|
||||||
|
new font in a similar fashion:
|
||||||
|
|
||||||
|
4. include/nuttx/nx/nxfonts.h. Add your new font as a possible system
|
||||||
|
default font::
|
||||||
|
|
||||||
|
#if defined(CONFIG_NXFONT_SANS23X27)
|
||||||
|
# define NXFONT_DEFAULT FONTID_SANS23X27
|
||||||
|
#elif defined(CONFIG_NXFONT_MYFONT)
|
||||||
|
# define NXFONT_DEFAULT FONTID_MYFONT
|
||||||
|
#endif
|
||||||
|
|
||||||
|
Then define the actual font ID. Make sure that the font ID value
|
||||||
|
is unique::
|
||||||
|
|
||||||
|
enum nx_fontid_e
|
||||||
|
{
|
||||||
|
FONTID_DEFAULT = 0 /* The default font */
|
||||||
|
#ifdef CONFIG_NXFONT_SANS23X27
|
||||||
|
, FONTID_SANS23X27 = 1 /* The 23x27 sans serif font */
|
||||||
|
#endif
|
||||||
|
#ifdef CONFIG_NXFONT_MYFONT
|
||||||
|
, FONTID_MYFONT = 2 /* My shiny, new font */
|
||||||
|
#endif
|
||||||
|
...
|
||||||
|
|
||||||
|
Now add the font to the NX build system. There are several files that
|
||||||
|
you have to modify to do this. Look how the build system uses the
|
||||||
|
font CONFIG_NXFONT_SANS23X27 for examples:
|
||||||
|
|
||||||
|
5. nuttx/graphics/Makefile. This file needs logic to auto-generate
|
||||||
|
a C source file from the header file that you generated with the
|
||||||
|
the bdf-converter program. Notice NXFONTS_FONTID=2; this must be
|
||||||
|
set to the same font ID value that you defined in the
|
||||||
|
include/nuttx/nx/nxfonts.h file::
|
||||||
|
|
||||||
|
genfontsources:
|
||||||
|
ifeq ($(CONFIG_NXFONT_SANS23X27),y)
|
||||||
|
@$(MAKE) -C nxfonts -f Makefile.sources NXFONTS_FONTID=1 EXTRAFLAGS=$(EXTRAFLAGS)
|
||||||
|
endif
|
||||||
|
ifeq ($(CONFIG_NXFONT_MYFONT),y)
|
||||||
|
@$(MAKE) -C nxfonts -f Makefile.sources NXFONTS_FONTID=2 EXTRAFLAGS=$(EXTRAFLAGS)
|
||||||
|
endif
|
||||||
|
|
||||||
|
6. nuttx/libnx/nxfonts/Make.defs. Set the make variable NXFSET_CSRCS.
|
||||||
|
NXFSET_CSRCS determines the name of the font C file to build when
|
||||||
|
NXFONTS_FONTID=2::
|
||||||
|
|
||||||
|
ifeq ($(CONFIG_NXFONT_SANS23X27),y)
|
||||||
|
NXFSET_CSRCS += nxfonts_bitmaps_sans23x27.c
|
||||||
|
endif
|
||||||
|
ifeq ($(CONFIG_NXFONT_MYFONT),y)
|
||||||
|
NXFSET_CSRCS += nxfonts_bitmaps_myfont.c
|
||||||
|
endif
|
||||||
|
|
||||||
|
7. nuttx/libnx/nxfonts/Makefile.sources. This is the Makefile used
|
||||||
|
in step 5 that will actually generate the font C file. So, given
|
||||||
|
your NXFONTS_FONTID=2, it needs to determine a prefix to use for
|
||||||
|
auto-generated variable and function names and (again) the name of
|
||||||
|
the auto-generated file to create (this must be the same name that
|
||||||
|
was used in nuttx/libnx/nxfonts/Make.defs)::
|
||||||
|
|
||||||
|
ifeq ($(NXFONTS_FONTID),1)
|
||||||
|
NXFONTS_PREFIX := g_sans23x27_
|
||||||
|
GEN_CSRC = nxfonts_bitmaps_sans23x27.c
|
||||||
|
endif
|
||||||
|
ifeq ($(NXFONTS_FONTID),2)
|
||||||
|
NXFONTS_PREFIX := g_myfont_
|
||||||
|
GEN_CSRC = nxfonts_bitmaps_myfont.c
|
||||||
|
endif
|
||||||
|
|
||||||
|
8. graphics/libnx/nxfonts_bitmaps.c. This is the file that contains
|
||||||
|
the generic font structures. It is used as a "template" file by
|
||||||
|
nuttx/libnx/nxfonts/Makefile.sources to create your customized
|
||||||
|
font data set::
|
||||||
|
|
||||||
|
#if NXFONTS_FONTID == 1
|
||||||
|
# include "nxfonts_sans23x27.h"
|
||||||
|
#elif NXFONTS_FONTID == 2
|
||||||
|
# include "nxfonts_myfont.h"
|
||||||
|
#else
|
||||||
|
# error "No font ID specified"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
Where nxfonts_myfont.h is the NuttX font file that we generated in
|
||||||
|
step 2 using the bdf-converter tool.
|
||||||
|
|
||||||
|
9. libnx/nxfonts/nxfonts_getfont.c. Finally, we need to extend the
|
||||||
|
logic that does the run-time font lookups so that can find our new
|
||||||
|
font. The lookup function is NXHANDLE nxf_getfonthandle(enum nx_fontid_e fontid).
|
||||||
|
The new font information needs to be added to data structures used by
|
||||||
|
that function::
|
||||||
|
|
||||||
|
#ifdef CONFIG_NXFONT_SANS23X27
|
||||||
|
extern const struct nx_fontpackage_s g_sans23x27_package;
|
||||||
|
#endif
|
||||||
|
#ifdef CONFIG_NXFONT_MYFONT
|
||||||
|
extern const struct nx_fontpackage_s g_myfont_package;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
static FAR const struct nx_fontpackage_s *g_fontpackages[] =
|
||||||
|
{
|
||||||
|
#ifdef CONFIG_NXFONT_SANS23X27
|
||||||
|
&g_sans23x27_package,
|
||||||
|
#endif
|
||||||
|
#ifdef CONFIG_NXFONT_MYFONT
|
||||||
|
&g_myfont_package,
|
||||||
|
#endif
|
||||||
|
NULL
|
||||||
|
};
|
||||||
|
|
||||||
@@ -0,0 +1,43 @@
|
|||||||
|
===================
|
||||||
|
``checkkconfig.py``
|
||||||
|
===================
|
||||||
|
|
||||||
|
``checkkconfig.py`` is a Python script that simulates the effects of modifying a CONFIG item.
|
||||||
|
It can be used to check whether my config changes are what I expected.
|
||||||
|
|
||||||
|
Help message::
|
||||||
|
|
||||||
|
$ tools/checkkconfig.py -h
|
||||||
|
usage: checkkconfig.py [-h] -f FILE (-s CONFIG VALUE | -d DIFF)
|
||||||
|
|
||||||
|
optional arguments:
|
||||||
|
-h, --help show this help message and exit
|
||||||
|
-f FILE, --file FILE Path to the input defconfig file
|
||||||
|
-s CONFIG_XXX VALUE, --single CONFIG VALUE
|
||||||
|
Analyze single change: CONFIG_NAME y/m/n
|
||||||
|
-d DIFF, --diff DIFF Analyze changes from diff file
|
||||||
|
|
||||||
|
example: ./tools/checkkconfig.py -f defconfig -s ELF n
|
||||||
|
|
||||||
|
outputs:
|
||||||
|
Change report for ELF=n
|
||||||
|
Config Option Old New
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
BINFMT_LOADABLE y n
|
||||||
|
ELF y n
|
||||||
|
ELF_STACKSIZE 8192 <unset>
|
||||||
|
LIBC_ARCH_ELF y n
|
||||||
|
LIBC_MODLIB y n
|
||||||
|
MODLIB_ALIGN_LOG2 2 <unset>
|
||||||
|
MODLIB_BUFFERINCR 32 <unset>
|
||||||
|
MODLIB_BUFFERSIZE 32 <unset>
|
||||||
|
MODLIB_MAXDEPEND 2 <unset>
|
||||||
|
MODLIB_RELOCATION_BUFFERCOUNT 256 <unset>
|
||||||
|
MODLIB_SYMBOL_CACHECOUNT 256 <unset>
|
||||||
|
|
||||||
|
As we can see, we can clearly know that
|
||||||
|
if I turn off ELF in defconfig at this time,
|
||||||
|
it will bring about the following configuration linkage changes
|
||||||
|
|
||||||
|
It can also parse diff files, which can be used to check the changes of multiple
|
||||||
|
configs.
|
||||||
@@ -0,0 +1,29 @@
|
|||||||
|
=================
|
||||||
|
``checkpatch.sh``
|
||||||
|
=================
|
||||||
|
|
||||||
|
``checkpatch.sh`` is a bash script that makes use of ``nxstyle`` and
|
||||||
|
``codespell`` tools to format patches and ensure that files conform to NuttX
|
||||||
|
coding standard. It is used in NuttX's GitHub CI.
|
||||||
|
|
||||||
|
Help message:
|
||||||
|
|
||||||
|
.. code:: console
|
||||||
|
|
||||||
|
$ tools/checkpatch.sh -h
|
||||||
|
USAGE: tools/checkpatch.sh [options] [list|-]
|
||||||
|
|
||||||
|
Options:
|
||||||
|
-h
|
||||||
|
-c spell check with codespell (install with: pip install codespell)
|
||||||
|
-u encoding check with cvt2utf (install with: pip install cvt2utf)
|
||||||
|
-r range check only (coupled with -p or -g)
|
||||||
|
-p <patch file names> (default)
|
||||||
|
-m Check commit message (coupled with -g)
|
||||||
|
-g <commit list>
|
||||||
|
-f <file list>
|
||||||
|
-x format supported files (only .py, requires: pip install black)
|
||||||
|
- read standard input mainly used by git pre-commit hook as below:
|
||||||
|
git diff --cached | ./tools/checkpatch.sh -
|
||||||
|
Where a <commit list> is any syntax supported by git for specifying git revision, see GITREVISIONS(7)
|
||||||
|
Where a <patch file names> is a space separated list of patch file names or wildcard. or *.patch
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
===============
|
||||||
|
``cmpconfig.c``
|
||||||
|
===============
|
||||||
|
|
||||||
|
This C file can be used to build a utility for comparing two NuttX configuration
|
||||||
|
files.
|
||||||
@@ -0,0 +1,29 @@
|
|||||||
|
======================================================================================
|
||||||
|
``configure.sh``, ``configure.bat``, ``configure.c``, ``cfgparser.c``, ``cfgparser.h``
|
||||||
|
======================================================================================
|
||||||
|
|
||||||
|
``configure.sh`` is a bash script that is used to configure NuttX for a given
|
||||||
|
target board in a environment that supports POSIX paths (Linux, Cygwin, macOS,
|
||||||
|
or similar). See :doc:`/components/boards` or
|
||||||
|
Documentation/NuttXPortingGuide.html for a description of how to configure NuttX
|
||||||
|
with this script.
|
||||||
|
|
||||||
|
configure.c, cfgparser.c, and cfgparser.h can be used to build a work-alike
|
||||||
|
program as a replacement for configure.sh. This work-alike program would be
|
||||||
|
used in environments that do not support Bash scripting (such as the Windows
|
||||||
|
native environment).
|
||||||
|
|
||||||
|
configure.bat is a small Windows batch file that can be used as a replacement
|
||||||
|
for configure.sh in a Windows native environment. configure.bat is actually
|
||||||
|
just a thin layer that executes configure.exe if it is available. If
|
||||||
|
configure.exe is not available, then configure.bat will attempt to build it
|
||||||
|
first.
|
||||||
|
|
||||||
|
In order to build configure.exe from configure.c in the Windows native
|
||||||
|
environment, two assumptions are made:
|
||||||
|
|
||||||
|
1) You have installed the MinGW GCC toolchain. This toolchain can be
|
||||||
|
downloaded from http://www.mingw.org/. It is recommended that you not
|
||||||
|
install the optional MSYS components as there may be conflicts.
|
||||||
|
2) That path to the bin/ directory containing mingw-gcc.exe must be
|
||||||
|
included in the PATH variable.
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
======================
|
||||||
|
``convert-comments.c``
|
||||||
|
======================
|
||||||
|
|
||||||
|
Convert C++-style comments to C89 C-style comments. Usage:
|
||||||
|
|
||||||
|
.. code:: console
|
||||||
|
|
||||||
|
$ convert-comments <source-file> <out-file>
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
=============================
|
||||||
|
``define.sh``, ``define.bat``
|
||||||
|
=============================
|
||||||
|
|
||||||
|
Different compilers have different conventions for specifying pre-
|
||||||
|
processor definitions on the compiler command line. This bash
|
||||||
|
script allows the build system to create command line definitions
|
||||||
|
without concern for the particular compiler in use.
|
||||||
|
|
||||||
|
The define.bat script is a counterpart for use in the native Windows
|
||||||
|
build.
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
===========
|
||||||
|
``detab.c``
|
||||||
|
===========
|
||||||
|
|
||||||
|
Convert tabs to spaces in a file. Usage:
|
||||||
|
|
||||||
|
.. code:: console
|
||||||
|
|
||||||
|
$ detab [-4] <source-file> <out-file>
|
||||||
|
|
||||||
|
Default ``<source-file>`` tab size is 8 spaces; ``-4`` selects 4 space tab size.
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
===============
|
||||||
|
``discover.py``
|
||||||
|
===============
|
||||||
|
|
||||||
|
Example script for discovering devices in the local network. It is the counter
|
||||||
|
part to :doc:`/applications/netutils/discover/index`.
|
||||||
@@ -0,0 +1,13 @@
|
|||||||
|
===================
|
||||||
|
``flash_writer.py``
|
||||||
|
===================
|
||||||
|
|
||||||
|
This flash writer is using the xmodem for firmware transfer on
|
||||||
|
boards based on cxd56 chip (Ex. Spresense). This tool depends on
|
||||||
|
the xmodem package (https://pypi.org/project/xmodem/).
|
||||||
|
|
||||||
|
For flashing the ``.spk`` image to the board please use:
|
||||||
|
|
||||||
|
.. code:: console
|
||||||
|
|
||||||
|
$ tools/flash_writer.py -s -c /dev/ttyUSB0 -d -b 115200 -n nuttx.spk
|
||||||
@@ -0,0 +1,18 @@
|
|||||||
|
===============
|
||||||
|
``gencromfs.c``
|
||||||
|
===============
|
||||||
|
|
||||||
|
This is a C program that is used to generate CROMFS file system images.
|
||||||
|
Usage is simple:
|
||||||
|
|
||||||
|
.. code:: console
|
||||||
|
|
||||||
|
$ gencromfs <dir-path> <out-file>
|
||||||
|
|
||||||
|
Where:
|
||||||
|
|
||||||
|
* ``<dir-path>`` is the path to the directory will be at the root of the new
|
||||||
|
CROMFS file system image.
|
||||||
|
|
||||||
|
* ``<out-file>`` the name of the generated, output C file. This file must be
|
||||||
|
compiled in order to generate the binary CROMFS file system image.
|
||||||
@@ -0,0 +1,114 @@
|
|||||||
|
===================
|
||||||
|
``ide_exporter.py``
|
||||||
|
===================
|
||||||
|
|
||||||
|
This Python script will help to create NuttX project in the IAR and
|
||||||
|
uVision IDEs. These are few simple the steps to export the IDE
|
||||||
|
workspaces.
|
||||||
|
|
||||||
|
1) Start the NuttX build from the Cygwin command line before trying to
|
||||||
|
create your project by running::
|
||||||
|
|
||||||
|
make V=1 |& tee build_log
|
||||||
|
|
||||||
|
This is necessary to certain auto-generated files and directories that
|
||||||
|
will be needed. This will provide the build log to construct the IDE
|
||||||
|
project also.
|
||||||
|
|
||||||
|
2) Export the IDE project base on that make log. The script usage:
|
||||||
|
|
||||||
|
usage: ide_exporter.py [-h] [-v] [-o OUT_DIR] [-d] build_log {iar,uvision_armcc,uvision_gcc} template_dir
|
||||||
|
|
||||||
|
positional arguments::
|
||||||
|
|
||||||
|
build_log Log file from make V=1
|
||||||
|
{iar,uvision_armcc,uvision_gcc}
|
||||||
|
The target IDE: iar, uvision_gcc, (uvision_armcc is experimental)
|
||||||
|
template_dir Directory that contains IDEs template projects
|
||||||
|
|
||||||
|
optional arguments::
|
||||||
|
|
||||||
|
-h, --help show this help message and exit
|
||||||
|
-v, --version show program's version number and exit
|
||||||
|
-o OUT_DIR, --output OUT_DIR
|
||||||
|
Output directory
|
||||||
|
-d, --dump Dump project structure tree
|
||||||
|
|
||||||
|
Example::
|
||||||
|
|
||||||
|
cd nuttx
|
||||||
|
make V=1 |& tee build_log
|
||||||
|
|
||||||
|
./tools/ide_exporter.py makelog_f2nsh_c iar ./boards/<arch>/<chip>/<board>/ide/template/iar -o ./boards/<arch>/<chip>/<board>/ide/nsh/iar
|
||||||
|
|
||||||
|
or::
|
||||||
|
|
||||||
|
./tools/ide_exporter.py makelog_f2nsh_c uvision_gcc ./boards/<arch>/<chip>/<board>/ide/template/uvision_gcc/ -o ./boards/<arch>/<chip>/<board>/ide/nsh/uvision
|
||||||
|
|
||||||
|
3) Limitations:
|
||||||
|
|
||||||
|
- IAR supports C only. Iar C++ does not compatible with g++ so disable
|
||||||
|
C++ if you want to use IAR.
|
||||||
|
- uvision_armcc : nuttx asm (inline and .asm) can't be compiled with
|
||||||
|
armcc so do not use this option.
|
||||||
|
- uvision_gcc : uvision project that uses gcc. Need to specify path to
|
||||||
|
gnu toolchain.
|
||||||
|
In uVison menu, select::
|
||||||
|
|
||||||
|
Project/Manage/Project Items.../FolderExtension/Use GCC compiler/ PreFix, Folder
|
||||||
|
|
||||||
|
4) Template projects' constrains:
|
||||||
|
|
||||||
|
- mcu, core, link script shall be configured in template project
|
||||||
|
- Templates' name are fixed:
|
||||||
|
|
||||||
|
- template_nuttx.eww : IAR nuttx workspace template
|
||||||
|
- template_nuttx_lib.ewp : IAR nuttx library project template
|
||||||
|
- template_nuttx_main.ewp : IAR nuttx main project template
|
||||||
|
- template_nuttx.uvmpw : uVision workspace
|
||||||
|
- template_nuttx_lib.uvproj : uVision library project
|
||||||
|
- template_nuttx_main.uvproj : uVision main project
|
||||||
|
- iar:
|
||||||
|
|
||||||
|
- Library option shall be set to 'None' so that IAR could use nuttx
|
||||||
|
libc
|
||||||
|
- __ASSEMBLY__ symbol shall be defined in assembler
|
||||||
|
|
||||||
|
- uVision_gcc:
|
||||||
|
|
||||||
|
- There should be one fake .S file in projects that has been defined
|
||||||
|
__ASSEMBLY__ in assembler.
|
||||||
|
- In Option/CC tab : disable warning
|
||||||
|
- In Option/CC tab : select Compile thump code (or Misc control =
|
||||||
|
-mthumb)
|
||||||
|
- template_nuttx_lib.uvproj shall add 'Post build action' to copy .a
|
||||||
|
file to .\lib
|
||||||
|
- template_nuttx_main.uvproj Linker:
|
||||||
|
|
||||||
|
- Select 'Do not use Standard System Startup Files' and 'Do not
|
||||||
|
use Standard System Libraries'
|
||||||
|
- Do not select 'Use Math libraries'
|
||||||
|
- Misc control = --entry=__start
|
||||||
|
|
||||||
|
5) How to create template for other configurations:
|
||||||
|
|
||||||
|
1) uVision with gcc toolchain:
|
||||||
|
|
||||||
|
- Copy 3 uVision project files
|
||||||
|
- Select the MCU for main and lib project
|
||||||
|
- Correct the path to ld script if needed
|
||||||
|
|
||||||
|
2) iar:
|
||||||
|
|
||||||
|
- Check if the arch supports IAR (only armv7-m is support IAR
|
||||||
|
now)
|
||||||
|
- Select the MCU for main and lib project
|
||||||
|
- Add new ld script file for IAR
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
|
||||||
|
Due to bit rot, the template files for the stm3220g-eval and for the
|
||||||
|
stm32f429-disco have been removed from the NuttX repository. For reference,
|
||||||
|
they can be found in the Obsoleted repository at
|
||||||
|
Obsoleted/stm32f429i_disco/ltcd/template and at
|
||||||
|
Obsoleted/stm3220g-eval/template.
|
||||||
@@ -0,0 +1,14 @@
|
|||||||
|
===========================================
|
||||||
|
``incdir.sh``, ``incdir.bat``, ``incdir.c``
|
||||||
|
===========================================
|
||||||
|
|
||||||
|
Different compilers have different conventions for specifying lists
|
||||||
|
of include file paths on the compiler command line. This incdir.sh
|
||||||
|
bash script allows the build system to create include file paths without
|
||||||
|
concern for the particular compiler in use.
|
||||||
|
|
||||||
|
The incdir.bat script is a counterpart for use in the native Windows
|
||||||
|
build. However, there is currently only one compiler supported in
|
||||||
|
that context: MinGW-GCC.
|
||||||
|
|
||||||
|
incdir.c is a higher performance version of incdir.sh, converted to C.
|
||||||
@@ -0,0 +1,68 @@
|
|||||||
|
=============
|
||||||
|
``indent.sh``
|
||||||
|
=============
|
||||||
|
|
||||||
|
This script can be used to indent .c and .h files in a manner similar
|
||||||
|
to the NuttX coding style. It doesn't do a really good job, however
|
||||||
|
(see below and the comments at the top of the indent.sh file).
|
||||||
|
|
||||||
|
USAGE::
|
||||||
|
|
||||||
|
tools/indent.sh [-d] [-p] -o <out-file> <in-file>
|
||||||
|
tools/indent.sh [-d] [-p] <in-file-list>
|
||||||
|
tools/indent.sh [-d] -h
|
||||||
|
|
||||||
|
Where::
|
||||||
|
|
||||||
|
-<in-file>
|
||||||
|
A single, unformatted input file
|
||||||
|
-<in-file-list>
|
||||||
|
A list of unformatted input files that will be reformatted in place.
|
||||||
|
-o <out-file>
|
||||||
|
Write the single, reformatted <in-file> to <out-file>. <in-file>
|
||||||
|
will not be modified.
|
||||||
|
-d
|
||||||
|
Enable script debug
|
||||||
|
-p
|
||||||
|
Comments are pre-formatted. Do not reformat.
|
||||||
|
-h
|
||||||
|
Show this help message and exit
|
||||||
|
|
||||||
|
The conversions make by the indent.sh script differs from the NuttX coding
|
||||||
|
style in that:
|
||||||
|
|
||||||
|
1. The coding standard requires that the trailing ``*/`` of a multi-line
|
||||||
|
comment be on a separate line. By default, indent.sh will put the
|
||||||
|
final ``*/`` on the same line as the last comment text. If your C file
|
||||||
|
already has properly formatted comments then using the ``-p`` option will
|
||||||
|
eliminate that bad behavior
|
||||||
|
|
||||||
|
2. If your source file has highly formatted comments containing things
|
||||||
|
such as tables or lists, then use the -p option to preserve those
|
||||||
|
pre-formatted comments.
|
||||||
|
|
||||||
|
3. I usually align things vertically (like '=' in assignments),
|
||||||
|
|
||||||
|
4. indent.sh puts a bogus blank line at the top of the file,
|
||||||
|
|
||||||
|
5. I don't like the way it handles nested conditional compilation
|
||||||
|
intermixed with code. I prefer the preprocessor conditional tests
|
||||||
|
be all right justified in that case.
|
||||||
|
|
||||||
|
6. I also indent brackets differently on structures than does this script.
|
||||||
|
|
||||||
|
7. I normally use no spaces in casts. indent.sh adds spaces in casts like
|
||||||
|
``(FAR void *)&foo`` becomes ``(FAR void *) & foo``.
|
||||||
|
|
||||||
|
8. When used with header files, the initial idempotence conditional test
|
||||||
|
causes all preprocessor directives to be indented in the file. So for
|
||||||
|
header files, you will need to substitute "^# " with "#" in the
|
||||||
|
converted header file.
|
||||||
|
|
||||||
|
You will manually need to check for the issues listed above after
|
||||||
|
performing the conversions. nxstyle.c provides a good test that will
|
||||||
|
catch most of the indent.sh screw-ups. Together, they do a pretty good
|
||||||
|
job of formatting.
|
||||||
|
|
||||||
|
See also nxstyle.c and uncrustify.cfg
|
||||||
|
|
||||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,9 @@
|
|||||||
|
===================
|
||||||
|
``initialconfig.c``
|
||||||
|
===================
|
||||||
|
|
||||||
|
This is a C file that can be used to create an initial configuration. This
|
||||||
|
permits creating a new configuration from scratch, without relying on any
|
||||||
|
existing board configuration in place. This utility will create a barebones
|
||||||
|
``.config`` file sufficient only for instantiating the symbolic links necessary
|
||||||
|
to do a real configuration.
|
||||||
@@ -0,0 +1,30 @@
|
|||||||
|
===============
|
||||||
|
``kconfig.bat``
|
||||||
|
===============
|
||||||
|
|
||||||
|
Recent versions of NuttX support building NuttX from a native Windows
|
||||||
|
CMD.exe shell. But kconfig-frontends is a Linux tool and is not yet
|
||||||
|
available in the pure CMD.exe environment. At this point, there are
|
||||||
|
only a few options for the Windows user (see the top-level README.txt
|
||||||
|
file).
|
||||||
|
|
||||||
|
You can, with some effort, run the Cygwin kconfig-mconf tool directly
|
||||||
|
in the CMD.exe shell. In this case, you do not have to modify the
|
||||||
|
.config file, but there are other complexities: You need to
|
||||||
|
temporarily set the Cygwin directories in the PATH variable and
|
||||||
|
then run kconfig-mconf outside of the Make system.
|
||||||
|
|
||||||
|
kconfig.bat is a Windows batch file at tools/kconfig.bat that automates
|
||||||
|
these steps. It is used from the top-level NuttX directory like::
|
||||||
|
|
||||||
|
tools/kconfig menuconfig
|
||||||
|
|
||||||
|
NOTE: There is currently an issue with accessing DOS environment
|
||||||
|
variables from the Cygwin kconfig-mconf running in the CMD.exe shell.
|
||||||
|
The following change to the top-level Kconfig file seems to work around
|
||||||
|
these problems::
|
||||||
|
|
||||||
|
config APPSDIR
|
||||||
|
string
|
||||||
|
- option env="APPSDIR"
|
||||||
|
+ default "../apps"
|
||||||
@@ -0,0 +1,37 @@
|
|||||||
|
==================
|
||||||
|
``kconfig2html.c``
|
||||||
|
==================
|
||||||
|
|
||||||
|
This is a C file that can be used to build a utility for converting the
|
||||||
|
NuttX configuration in the Kconfig files to an HTML document. This
|
||||||
|
auto-generated documentation will, eventually, replace the manually
|
||||||
|
updated configuration documentation that is falling woefully behind:
|
||||||
|
|
||||||
|
.. code:: console
|
||||||
|
|
||||||
|
$ tools/kconfig2html.exe -h
|
||||||
|
USAGE: tools/kconfig2html [-d] [-a <apps directory>] {-o <out file>] [<Kconfig root>]
|
||||||
|
tools/kconfig2html [-h]
|
||||||
|
|
||||||
|
Where::
|
||||||
|
|
||||||
|
-a : Select relative path to the apps/ directory. This path is relative
|
||||||
|
to the <Kconfig directory>. Default: ../apps
|
||||||
|
-o : Send output to <out file>. Default: Output goes to stdout
|
||||||
|
-d : Enable debug output
|
||||||
|
-h : Prints this message and exits
|
||||||
|
<Kconfig root> is the directory containing the root Kconfig file.
|
||||||
|
Default <Kconfig directory>: .
|
||||||
|
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
|
||||||
|
In order to use this tool, some configuration must be in-place with
|
||||||
|
all necessary symbolic links. You can establish the configured symbolic
|
||||||
|
links with::
|
||||||
|
|
||||||
|
make context
|
||||||
|
|
||||||
|
or more quickly with::
|
||||||
|
|
||||||
|
make .dirlinks
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
=========================================================================
|
||||||
|
``Libraries.mk``, ``FlatLibs.mk``, ``ProtectedLibs.mk``, ``KernelLib.mk``
|
||||||
|
=========================================================================
|
||||||
|
|
||||||
|
Libraries.mk has the build rules for all NuttX libraries.
|
||||||
|
|
||||||
|
FlatLibs.mk, ProtectedLibs.mk, and KernelLib.mk: These control the
|
||||||
|
selection of libraries to be built, depending on the selected build mode.
|
||||||
@@ -0,0 +1,42 @@
|
|||||||
|
.. _build_system_linking:
|
||||||
|
|
||||||
|
============================================================
|
||||||
|
``link.[sh|bat]``, ``copydir.[sh|bat]``, ``unlink.[sh|bat]``
|
||||||
|
============================================================
|
||||||
|
|
||||||
|
Different file systems have different capabilities for symbolic links.
|
||||||
|
Some Windows file systems have no native support for symbolic links.
|
||||||
|
Cygwin running under Windows has special links built in that work with
|
||||||
|
all cygwin tools. However, they do not work when Windows native tools
|
||||||
|
are used with cygwin. In that case something different must be done.
|
||||||
|
|
||||||
|
If you are building under Linux or under cygwin with a cygwin tool
|
||||||
|
chain, then your Make.defs file may have definitions like the
|
||||||
|
following::
|
||||||
|
|
||||||
|
DIRLINK = $(TOPDIR)/tools/link.sh
|
||||||
|
DIRUNLINK = (TOPDIR)/tools/unlink.sh
|
||||||
|
|
||||||
|
The first definition is not always present because link.sh is the
|
||||||
|
default. link.sh is a bash script that performs a normal, Linux-style
|
||||||
|
symbolic link; unlink.sh is a do-it-all unlinking script.
|
||||||
|
|
||||||
|
But if you are building under cygwin using a Windows native toolchain
|
||||||
|
within a POSIX framework (such as Cygwin), then you will need something
|
||||||
|
like the following in you Make.defs file::
|
||||||
|
|
||||||
|
DIRLINK = $(TOPDIR)/tools/copydir.sh
|
||||||
|
DIRUNLINK = (TOPDIR)/tools/unlink.sh
|
||||||
|
|
||||||
|
copydir.sh will copy the whole directory instead of linking it.
|
||||||
|
|
||||||
|
Finally, if you are running in a pure native Windows environment with
|
||||||
|
a CMD.exe shell, then you will need something like this::
|
||||||
|
|
||||||
|
DIRLINK = $(TOPDIR)/tools/copydir.bat
|
||||||
|
DIRUNLINK = (TOPDIR)/tools/unlink.bat
|
||||||
|
|
||||||
|
Note that this will copy directories. link.bat might also be used in
|
||||||
|
this case. link.bat will attempt to create a symbolic link using the
|
||||||
|
NTFS mklink.exe command instead of copying files. That logic, however,
|
||||||
|
has not been verified as of this writing.
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
============
|
||||||
|
``lowhex.c``
|
||||||
|
============
|
||||||
|
|
||||||
|
Convert hexadecimal representation in a file from upper-case to lower-case.
|
||||||
|
|
||||||
|
Usage:
|
||||||
|
|
||||||
|
.. code:: console
|
||||||
|
|
||||||
|
$ lowhex <source-file> <out-file>
|
||||||
@@ -0,0 +1,17 @@
|
|||||||
|
.. _makefile_host:
|
||||||
|
|
||||||
|
=================
|
||||||
|
``Makefile.host``
|
||||||
|
=================
|
||||||
|
|
||||||
|
This is the makefile that is used to make the mkconfig program from
|
||||||
|
the mkconfig.c C file, the cmpconfig program from cmpconfig.c C file,
|
||||||
|
the mkversion program from the mkconfig.c C file, or the mksyscall
|
||||||
|
program from the mksyscall.c file.
|
||||||
|
|
||||||
|
Usage:
|
||||||
|
|
||||||
|
.. code:: console
|
||||||
|
|
||||||
|
$ cd tools/
|
||||||
|
$ make -f Makefile.host <program>
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
=======================
|
||||||
|
``Makefile.[unix|win]``
|
||||||
|
=======================
|
||||||
|
|
||||||
|
Unix.mk is the Makefile used when building NuttX in Unix-like systems.
|
||||||
|
It is selected from the top-level Makefile.
|
||||||
|
|
||||||
|
Win.mk is the Makefile used when building natively under Windows.
|
||||||
|
It is selected from the top-level Makefile.
|
||||||
|
|
||||||
@@ -0,0 +1,15 @@
|
|||||||
|
================================================
|
||||||
|
``mkconfig.c``, ``cfgdefine.c``, ``cfgdefine.h``
|
||||||
|
================================================
|
||||||
|
|
||||||
|
These are C files that are used to build mkconfig program. The mkconfig
|
||||||
|
program is used during the initial NuttX build.
|
||||||
|
|
||||||
|
When you configure NuttX, you will copy a configuration file called .config
|
||||||
|
in the top level NuttX directory (See :doc:`/components/boards` or
|
||||||
|
Documentation/NuttXPortingGuide.html). The first time you make NuttX,
|
||||||
|
the top-level makefile will build the mkconfig executable from mkconfig.c
|
||||||
|
(using Makefile.host). The top-level Makefile will then execute the mkconfig
|
||||||
|
program to convert the .config file in the top level directory into
|
||||||
|
include/nuttx/config.h. config.h is a another version of the NuttX
|
||||||
|
configuration that can be included by C files.
|
||||||
@@ -0,0 +1,27 @@
|
|||||||
|
===================
|
||||||
|
``mkconfigvars.sh``
|
||||||
|
===================
|
||||||
|
|
||||||
|
The HTML documentation expects to have a copy of the auto-generated
|
||||||
|
configuration variable documentation Documentation/NuttXConfigVariables.html.
|
||||||
|
The script mkconfigvars.sh is a simple script that can be used to
|
||||||
|
re-generated that file as needed.
|
||||||
|
|
||||||
|
Help:
|
||||||
|
|
||||||
|
.. code:: console
|
||||||
|
|
||||||
|
$ tools/mkconfigvars.sh -h
|
||||||
|
tools/mkconfigvars.sh is a tool for generation of configuration variable documentation
|
||||||
|
|
||||||
|
USAGE: tools/mkconfigvars.sh [-d|h] [-v <major.minor.patch>]
|
||||||
|
|
||||||
|
Where::
|
||||||
|
|
||||||
|
-v <major.minor.patch>
|
||||||
|
The NuttX version number expressed as a major, minor and patch number separated
|
||||||
|
by a period
|
||||||
|
-d
|
||||||
|
Enable script debug
|
||||||
|
-h
|
||||||
|
show this help message and exit
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
==============
|
||||||
|
``mkctags.sh``
|
||||||
|
==============
|
||||||
|
|
||||||
|
A script for creating ctags from Ken Pettit. See http://en.wikipedia.org/wiki/Ctags
|
||||||
|
and http://ctags.sourceforge.net/
|
||||||
@@ -0,0 +1,35 @@
|
|||||||
|
.. _mkdeps:
|
||||||
|
|
||||||
|
===================================================================
|
||||||
|
``mkdeps.c``, ``cnvwindeps.c``, ``mkwindeps.sh``, ``mknulldeps.sh``
|
||||||
|
===================================================================
|
||||||
|
|
||||||
|
NuttX uses the GCC compiler's capabilities to create Makefile dependencies.
|
||||||
|
The program mkdeps is used to run GCC in order to create the dependencies.
|
||||||
|
If a NuttX configuration uses the GCC toolchain, its Make.defs file (see
|
||||||
|
:doc:`/components/boards`) will include a line like::
|
||||||
|
|
||||||
|
MKDEP = $(TOPDIR)/tools/mkdeps[.exe] (See NOTE below)
|
||||||
|
|
||||||
|
If the NuttX configuration does not use a GCC compatible toolchain, then
|
||||||
|
it cannot use the dependencies and instead it uses mknulldeps.sh::
|
||||||
|
|
||||||
|
MKDEP = $(TOPDIR)/tools/mknulldeps.sh
|
||||||
|
|
||||||
|
The mknulldeps.sh is a stub script that does essentially nothing.
|
||||||
|
|
||||||
|
mkwindeps.sh is a version that creates dependencies using the Windows
|
||||||
|
native toolchain. That generates Windows native paths in the dependency
|
||||||
|
file. But the mkwindeps.sh uses cnvwindeps.c to convert the Windows
|
||||||
|
paths to POSIX paths. This adds some time to the Windows dependency
|
||||||
|
generation but is generally the best option available for that mixed
|
||||||
|
environment of Cygwin with a native Windows GCC toolchain.
|
||||||
|
|
||||||
|
mkdeps.c generates mkdeps (on Linux) or mkdeps.exe (on Windows).
|
||||||
|
However, this version is still under-development. It works well in
|
||||||
|
the all POSIX environment or in the all Windows environment but also
|
||||||
|
does not work well in mixed POSIX environment with a Windows toolchain.
|
||||||
|
In that case, there are still issues with the conversion of things like
|
||||||
|
'c:\Program Files' to 'c:program files' by bash. Those issues may,
|
||||||
|
eventually be solvable but for now continue to use mkwindeps.sh in
|
||||||
|
that mixed environment.
|
||||||
@@ -0,0 +1,15 @@
|
|||||||
|
==============================
|
||||||
|
``mkexport.sh``, ``Export.mk``
|
||||||
|
==============================
|
||||||
|
|
||||||
|
These implement part of the top-level Makefile's 'export' target. That
|
||||||
|
target will bundle up all of the NuttX libraries, header files, and the
|
||||||
|
startup object into an export-able, binary NuttX distribution. The
|
||||||
|
Export.mk is used only by the mkexport.sh script to parse out options
|
||||||
|
from the top-level Make.defs file.
|
||||||
|
|
||||||
|
USAGE: tools/mkexport.sh [-d] [-z] [-u] -t <top-dir> [-x <lib-ext>] -l "lib1 [lib2 [lib3 ...]]"
|
||||||
|
|
||||||
|
This script also depends on the environment variable MAKE which is set
|
||||||
|
in the top-level Makefile before starting mkexport.sh. If MAKE is not
|
||||||
|
defined, the script will set it to `which make`.
|
||||||
@@ -0,0 +1,13 @@
|
|||||||
|
===============
|
||||||
|
``mkfsdata.pl``
|
||||||
|
===============
|
||||||
|
|
||||||
|
This perl script is used to build the "fake" file system and CGI support
|
||||||
|
as needed for the apps/netutils/webserver. It is currently used only
|
||||||
|
by the Makefile at apps/examples/uip. That example serves as an example
|
||||||
|
of how to configure the uIP webserver "fake" file system.
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
|
||||||
|
This perl script comes from uIP and was (probably) written by Adam Dunkels.
|
||||||
|
uIP has a license that is compatible with NuttX.
|
||||||
@@ -0,0 +1,12 @@
|
|||||||
|
=================
|
||||||
|
``mkromfsimg.sh``
|
||||||
|
=================
|
||||||
|
|
||||||
|
This script may be used to automate the generation of a ROMFS file system
|
||||||
|
image. It accepts an rcS script "template" and generates an image that
|
||||||
|
may be mounted under /etc in the NuttX pseudo file system.
|
||||||
|
|
||||||
|
.. tip::
|
||||||
|
|
||||||
|
Edit the resulting header file and mark the generated data values as
|
||||||
|
``const`` so that they will be stored in FLASH.
|
||||||
@@ -0,0 +1,31 @@
|
|||||||
|
================================================
|
||||||
|
``mksymtab.c``, ``cvsparser.c``, ``cvsparser.h``
|
||||||
|
================================================
|
||||||
|
|
||||||
|
This is a C file that is used to build symbol tables from comma separated
|
||||||
|
value (CSV) files. This tool is not used during the NuttX build, but
|
||||||
|
can be used as needed to generate files.
|
||||||
|
|
||||||
|
Usage:
|
||||||
|
|
||||||
|
.. code:: console
|
||||||
|
|
||||||
|
$ ./mksymtab [-d] <cvs-file> <symtab-file> [<symtab-name> [<nsymbols-name>]]
|
||||||
|
|
||||||
|
Where::
|
||||||
|
|
||||||
|
<cvs-file> : The path to the input CSV file (required)
|
||||||
|
<symtab-file> : The path to the output symbol table file (required)
|
||||||
|
<symtab-name> : Optional name for the symbol table variable
|
||||||
|
Default: "g_symtab"
|
||||||
|
<nsymbols-name> : Optional name for the symbol table variable
|
||||||
|
Default: "g_nsymbols"
|
||||||
|
-d : Enable debug output
|
||||||
|
|
||||||
|
Example:
|
||||||
|
|
||||||
|
.. code:: console
|
||||||
|
|
||||||
|
$ cd nuttx/tools
|
||||||
|
$ cat ../syscall/syscall.csv ../lib/libc.csv | sort >tmp.csv
|
||||||
|
$ ./mksymtab.exe tmp.csv tmp.c
|
||||||
@@ -0,0 +1,24 @@
|
|||||||
|
=================================================
|
||||||
|
``mksyscall.c``, ``cvsparser.c``, ``cvsparser.h``
|
||||||
|
=================================================
|
||||||
|
|
||||||
|
This is a C file that is used to build mksyscall program. The mksyscall
|
||||||
|
program is used during the initial NuttX build by the logic in the top-
|
||||||
|
level syscall/ directory.
|
||||||
|
|
||||||
|
If you build NuttX as a separately compiled, monolithic kernel and separate
|
||||||
|
applications, then there is a syscall layer that is used to get from the
|
||||||
|
user application space to the NuttX kernel space. In the user application
|
||||||
|
"proxies" for each of the kernel functions are provided. The proxies have
|
||||||
|
the same function signature as the kernel function, but only execute a
|
||||||
|
system call.
|
||||||
|
|
||||||
|
Within the kernel, there are "stubs" for each of the system calls. The
|
||||||
|
stubs receive the marshalled system call data, and perform the actually
|
||||||
|
kernel function call (in kernel-mode) on behalf of the proxy function.
|
||||||
|
|
||||||
|
Information about the stubs and proxies is maintained in a comma separated
|
||||||
|
value (CSV) file in the syscall/ directory. The mksyscall program will
|
||||||
|
accept this CVS file as input and generate all of the required proxy or
|
||||||
|
stub files as output. See :doc:`/components/syscall` for additional information.
|
||||||
|
|
||||||
@@ -0,0 +1,15 @@
|
|||||||
|
=================================================
|
||||||
|
``mkversion.c``, ``cfgdefine.c``, ``cfgdefine.h``
|
||||||
|
=================================================
|
||||||
|
|
||||||
|
This is C file that is used to build mkversion program. The mkversion
|
||||||
|
program is used during the initial NuttX build.
|
||||||
|
|
||||||
|
When you build NuttX there should be a version file called .version in
|
||||||
|
the top level NuttX directory (See Documentation/NuttXPortingGuide.html).
|
||||||
|
The first time you make NuttX, the top-level makefile will build the
|
||||||
|
mkversion executable from mkversion.c (using Makefile.host). The top-level
|
||||||
|
Makefile will then execute the mkversion program to convert the
|
||||||
|
.version file in the top level directory into include/nuttx/version.h.
|
||||||
|
version.h provides version information that can be included by C files.
|
||||||
|
|
||||||
@@ -0,0 +1,19 @@
|
|||||||
|
=============
|
||||||
|
``netusb.sh``
|
||||||
|
=============
|
||||||
|
|
||||||
|
Helper script used to set up the CDC ECM Ethernet Over USB driver,
|
||||||
|
host routes, and IP Tables rules to support networking with a NuttX
|
||||||
|
system that has a CDC ECM Ethernet Over USB driver configured. Only
|
||||||
|
supported on Linux.
|
||||||
|
|
||||||
|
General usage:
|
||||||
|
|
||||||
|
.. code:: console
|
||||||
|
|
||||||
|
$ ./tools/netusb.sh
|
||||||
|
Usage: tools/netusb.sh <main-interface> <usb-net-interface> <on|off>
|
||||||
|
|
||||||
|
This has been tested on the SAMA5D3-Xplained board; see
|
||||||
|
`Documentation/platforms/arm/sama5/boards/sama5d3-xplained/README.txt`
|
||||||
|
for more information on how to configure the CDC ECM driver for that board.
|
||||||
@@ -0,0 +1,35 @@
|
|||||||
|
=============
|
||||||
|
``nxstyle.c``
|
||||||
|
=============
|
||||||
|
|
||||||
|
I am embarrassed that this is here. This program is a complete hack but,
|
||||||
|
unfortunately, it has become so useful to me that I need to keep it here.
|
||||||
|
|
||||||
|
A little background: I have tinkered with pretty printers for some
|
||||||
|
time and have not been happy with the results. An alternative that
|
||||||
|
occurred to me would be just a standard checker that examines a C
|
||||||
|
file that gives warnings for violations of the coding standard.
|
||||||
|
|
||||||
|
This turns out to be more difficult that you might think. A pretty
|
||||||
|
printer understands C syntax: They break the file up into its C
|
||||||
|
components then reassembles the output in the format. But parsing the
|
||||||
|
C loses the original file layout and so it not useful in this case.
|
||||||
|
|
||||||
|
This program instead, uses a collection of heuristics (i.e., hacks and
|
||||||
|
bandaids) to examine the C file for obvious violations of the coding
|
||||||
|
standard. This program is completely ignorant of C syntax; it simply
|
||||||
|
performs crude pattern matching to check the file.
|
||||||
|
|
||||||
|
Prints formatted messages that are classified as info, warn, error,
|
||||||
|
fatal. In a parsable format that can be used by editors and IDEs.
|
||||||
|
|
||||||
|
Usage::
|
||||||
|
|
||||||
|
nxstyle [-m <excess>] [-v <level>] [-r <start,count>] <filename>
|
||||||
|
nxstyle -h this help
|
||||||
|
nxstyle -v <level> where level is
|
||||||
|
0 - no output
|
||||||
|
1 - PASS/FAIL
|
||||||
|
2 - output each line (default)
|
||||||
|
|
||||||
|
See also indent.sh and uncrustify.cfg
|
||||||
@@ -0,0 +1,22 @@
|
|||||||
|
======================
|
||||||
|
``nxtagspkgsfetch.sh``
|
||||||
|
======================
|
||||||
|
|
||||||
|
This script downloads all NuttX RTOS and Application snapshot packages
|
||||||
|
from the upstream git repository based on the provided git tags list.
|
||||||
|
These are NOT official release packages as checksum will differ.
|
||||||
|
When launched from the local NuttX git repository clone the script will
|
||||||
|
obtain all available tags to be downloaded, otherwise list of tags needs
|
||||||
|
to be provided manually (or when just selected tag is required).
|
||||||
|
This script uses ``wget`` underneath, make sure this tool is installed.
|
||||||
|
Fetch log file is created with a timestamp in name next to the packages.
|
||||||
|
|
||||||
|
Having all tags packaged is important for changes comparison
|
||||||
|
between specific versions, testing a specific version, compatibility
|
||||||
|
checks, searching for a feature introduction timeline, etc.
|
||||||
|
|
||||||
|
Usage: ``./nxtagspkgsfetch.sh [download_path] [tags_list_space_separated]``
|
||||||
|
|
||||||
|
You can provide optional download path (default ``../../nuttx-packages``)
|
||||||
|
and tags list to get packages for (default all tags from local git clone).
|
||||||
|
When providing tags you also need to provide download path.
|
||||||
@@ -1,5 +1,6 @@
|
|||||||
parsetrace.py
|
=================
|
||||||
=============
|
``parsetrace.py``
|
||||||
|
=================
|
||||||
|
|
||||||
`parsetrace.py` is a trace log parsing tool for the NuttX RTOS. It supports converting binary or text trace logs into a human-readable systrace format, and can resolve symbols and type information from ELF files. The tool also supports real-time trace data parsing via serial port.
|
`parsetrace.py` is a trace log parsing tool for the NuttX RTOS. It supports converting binary or text trace logs into a human-readable systrace format, and can resolve symbols and type information from ELF files. The tool also supports real-time trace data parsing via serial port.
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,5 @@
|
|||||||
|
=======
|
||||||
|
pic32mx
|
||||||
|
=======
|
||||||
|
|
||||||
|
This directory contains build tools used only for PIC32MX/Z platforms
|
||||||
@@ -0,0 +1,122 @@
|
|||||||
|
==============
|
||||||
|
``refresh.sh``
|
||||||
|
==============
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
|
||||||
|
This script with ``--silent`` is really obsolete. The silent option really
|
||||||
|
adds default values. However, as of 217-07-09, defconfig files are retained
|
||||||
|
in a compressed format, i.e., with default values removed. So the
|
||||||
|
``--silent`` option will accomplish nothing. Without ``--silent``, you will
|
||||||
|
have the opportunity over override the default value from the command line
|
||||||
|
and, in that case, the script may still have some minimal value.
|
||||||
|
|
||||||
|
This is a bash script that automates refreshing of board default configuration
|
||||||
|
(defconfig) files. It does not do anything special that you cannot do manually,
|
||||||
|
but is useful for updating dozens of configuration files. It is also used in the
|
||||||
|
NuttX CI process.
|
||||||
|
|
||||||
|
Configuration files have to be updated because over time, the configuration
|
||||||
|
settings change; new configurations are added and new dependencies are added.
|
||||||
|
So an old configuration file may not be usable anymore until it is refreshed.
|
||||||
|
|
||||||
|
Help is also available:
|
||||||
|
|
||||||
|
.. code:: console
|
||||||
|
|
||||||
|
$ tools/refresh.sh --help
|
||||||
|
tools/refresh.sh is a tool for refreshing board configurations
|
||||||
|
|
||||||
|
USAGE: tools/refresh.sh [options] <board>:<config>+
|
||||||
|
|
||||||
|
Where [options] include:
|
||||||
|
--debug
|
||||||
|
Enable script debug
|
||||||
|
--silent
|
||||||
|
Update board configuration without interaction. Implies --defaults.
|
||||||
|
Assumes no prompt for save. Use --silent --prompt to prompt before saving.
|
||||||
|
--prompt
|
||||||
|
Prompt before updating and overwriting the defconfig file. Default is to
|
||||||
|
prompt unless --silent
|
||||||
|
--defaults
|
||||||
|
Do not prompt for new default selections; accept all recommended default values
|
||||||
|
--nocopy
|
||||||
|
Do not copy defconfig from nuttx/boards/<board>/configs to nuttx/.config
|
||||||
|
--help
|
||||||
|
Show this help message and exit
|
||||||
|
<board>
|
||||||
|
The board directory under nuttx/boards/arch/chip/
|
||||||
|
<config>
|
||||||
|
The board configuration directory under nuttx/boards/arch/chip/<board>/configs
|
||||||
|
<archname>
|
||||||
|
The architecture directory under nuttx/boards/
|
||||||
|
<chipname>
|
||||||
|
The chip family directory under nuttx/boards/<arch>/
|
||||||
|
|
||||||
|
Note1: all configurations are refreshed if <board>:<config> is replaced with "all" keyword
|
||||||
|
Note2: all configurations of arch XYZ are refreshed if "arch:<namearch>" is passed
|
||||||
|
Note3: all configurations of chip XYZ are refreshed if "chip:<chipname>" is passed
|
||||||
|
Note4: all configurations of board XYZ are refreshed if "board:<boardname>" is passed
|
||||||
|
|
||||||
|
The steps to refresh the file taken by ``refresh.sh`` are:
|
||||||
|
|
||||||
|
1. Make ``tools/cmpconfig`` if it is not already built.
|
||||||
|
|
||||||
|
2. Copy the defconfig file to the top-level NuttX directory as ``.config``
|
||||||
|
(being careful to save any previous ``.config`` file that you might want to
|
||||||
|
keep!).
|
||||||
|
|
||||||
|
3. Execute ``make` oldconfig` to update the configuration. ``make oldconfig``
|
||||||
|
will prompt you for each change in the configuration that requires that you
|
||||||
|
make some decision. With the ``--silent`` option, the script will use ``make
|
||||||
|
oldefconfig`` instead and you won't have to answer any questions; the refresh
|
||||||
|
will simply accept the default value for any new configuration settings.
|
||||||
|
|
||||||
|
4. Then it runs ``tools/cmpconfig`` to show the real differences between the
|
||||||
|
configuration files. Configuration files are complex and things can move
|
||||||
|
around so a simple 'diff' between two configuration files is often not
|
||||||
|
useful. But tools/cmpconfig will show only the meaningful differences
|
||||||
|
between the two configuration files.
|
||||||
|
|
||||||
|
5. It will edit the .config file to comment out the setting of the
|
||||||
|
``CONFIG_APPS_DIR=`` setting. This setting should not be in checked-in
|
||||||
|
defconfig files because the actually must be determined at the next time that
|
||||||
|
the configuration is installed.
|
||||||
|
|
||||||
|
6. Finally, the refreshed defconfig file is copied back in place where it can be
|
||||||
|
committed with the next set of difference to the command line. If you select
|
||||||
|
the ``--silent`` option, this file copy will occur automatically. Otherwise,
|
||||||
|
refresh.sh will prompt you first to avoid overwriting the defconfig file with
|
||||||
|
changes that you may not want.
|
||||||
|
|
||||||
|
Usage examples:
|
||||||
|
|
||||||
|
Update all boards without verbose output:
|
||||||
|
|
||||||
|
.. code:: console
|
||||||
|
|
||||||
|
$ ./tools/refresh.sh --silent --defaults all
|
||||||
|
|
||||||
|
Update all boards and configs from `arm` architecture:
|
||||||
|
|
||||||
|
.. code:: console
|
||||||
|
|
||||||
|
$ ./tools/refresh.sh --silent arch:arm
|
||||||
|
|
||||||
|
Update all boards from ``stm32f7`` chip family:
|
||||||
|
|
||||||
|
.. code:: console
|
||||||
|
|
||||||
|
$ ./tools/refresh.sh --silent chip:stm32f7
|
||||||
|
|
||||||
|
Update all configs from ``stm32f103-minimum`` board:
|
||||||
|
|
||||||
|
.. code:: console
|
||||||
|
|
||||||
|
$ ./tools/refresh.sh --silent board:stm32f103-minimum
|
||||||
|
|
||||||
|
Update only the `.nsh.` config from stm32f103-minimum board:
|
||||||
|
|
||||||
|
.. code:: console
|
||||||
|
|
||||||
|
$ ./tools/refresh.sh --silent stm32f103-minimum:nsh
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
==========
|
||||||
|
``rmcr.c``
|
||||||
|
==========
|
||||||
|
|
||||||
|
Removes all white space from the end of lines. Whitespace here includes space
|
||||||
|
characters, TAB characters, horizontal and vertical TABs, and carriage returns.
|
||||||
|
Lines will be terminated with the newline character only.
|
||||||
@@ -0,0 +1,46 @@
|
|||||||
|
==============
|
||||||
|
``sethost.sh``
|
||||||
|
==============
|
||||||
|
|
||||||
|
Saved configurations may run on Linux, Cygwin (32- or 64-bit), or other
|
||||||
|
platforms. The platform characteristics can be changed use 'make menuconfig'.
|
||||||
|
Sometimes this can be confusing due to the differences between the platforms.
|
||||||
|
Enter sethost.sh
|
||||||
|
|
||||||
|
sethost.sh is a simple script that changes a configuration to your host
|
||||||
|
platform. This can greatly simplify life if you use many different
|
||||||
|
configurations. For example, if you are running on Linux and you configure like
|
||||||
|
this:
|
||||||
|
|
||||||
|
.. code:: console
|
||||||
|
|
||||||
|
$ tools/configure.sh board:configuration
|
||||||
|
|
||||||
|
The you can use the following command to both (1) make sure that the
|
||||||
|
configuration is up to date, AND (2) the configuration is set up
|
||||||
|
correctly for Linux:
|
||||||
|
|
||||||
|
.. code:: console
|
||||||
|
|
||||||
|
$ tools/sethost.sh -l
|
||||||
|
|
||||||
|
Or, if you are on a Windows/Cygwin 64-bit platform:
|
||||||
|
|
||||||
|
.. code:: console
|
||||||
|
|
||||||
|
$ tools/sethost.sh -c
|
||||||
|
|
||||||
|
Other options are available:
|
||||||
|
|
||||||
|
.. code:: console
|
||||||
|
|
||||||
|
$ ./sethost.sh -h
|
||||||
|
|
||||||
|
USAGE: ./sethost.sh [-l|m|c|g|n] [make-opts]
|
||||||
|
./sethost.sh -h
|
||||||
|
|
||||||
|
Where:
|
||||||
|
-l|m|c|g|n selects Linux (l), macOS (m), Cygwin (c),
|
||||||
|
MSYS/MSYS2 (g) or Windows native (n). Default Linux
|
||||||
|
make-opts directly pass to make
|
||||||
|
-h will show this help test and terminate
|
||||||
@@ -0,0 +1,14 @@
|
|||||||
|
===============
|
||||||
|
``showsize.sh``
|
||||||
|
===============
|
||||||
|
|
||||||
|
Show the top 10 biggest memory hogs in code and data spaces. This must be
|
||||||
|
executed from the top-level NuttX directory like:
|
||||||
|
|
||||||
|
.. code:: console
|
||||||
|
|
||||||
|
$ tools/showsize.sh
|
||||||
|
TOP 10 BIG DATA
|
||||||
|
...
|
||||||
|
TOP 10 BIG CODE
|
||||||
|
...
|
||||||
@@ -0,0 +1,15 @@
|
|||||||
|
================
|
||||||
|
``simbridge.sh``
|
||||||
|
================
|
||||||
|
|
||||||
|
Helper script used to set up a bridge to support networking with the
|
||||||
|
simulator under Linux.
|
||||||
|
|
||||||
|
General usage:
|
||||||
|
|
||||||
|
.. code:: console
|
||||||
|
|
||||||
|
$ tools/simbridge.sh
|
||||||
|
Usage: tools/simbridge.sh <interface> <on|off>
|
||||||
|
|
||||||
|
See ``boards/sim/sim/sim/NETWORK-LINUX.txt`` for further information.
|
||||||
@@ -0,0 +1,15 @@
|
|||||||
|
===================
|
||||||
|
``simhostroute.sh``
|
||||||
|
===================
|
||||||
|
|
||||||
|
Helper script used to set up the tap driver, host routes, and IP Tables rules to
|
||||||
|
support networking with the simulator under Linux.
|
||||||
|
|
||||||
|
General usage:
|
||||||
|
|
||||||
|
.. code:: console
|
||||||
|
|
||||||
|
$ tools/simhostroute.sh
|
||||||
|
Usage: tools/simhostroute.sh <interface> <on|off>
|
||||||
|
|
||||||
|
See ``boards/sim/sim/sim/NETWORK-LINUX.txt`` for further information.
|
||||||
@@ -0,0 +1,75 @@
|
|||||||
|
================
|
||||||
|
``testbuild.sh``
|
||||||
|
================
|
||||||
|
|
||||||
|
This script automates building of a set of configurations. The intent is
|
||||||
|
simply to assure that the set of configurations build correctly. The -h
|
||||||
|
option shows the usage:
|
||||||
|
|
||||||
|
.. code:: console
|
||||||
|
|
||||||
|
$ ./testbuild.sh -h
|
||||||
|
USAGE: tools/testbuild.sh -h [-l|m|c|g|n] [-d] [-e <extraflags>] [-x] [-j <ncpus>] [-a <appsdir>] [-t <topdir>] [-p]
|
||||||
|
[-A] [-C] [-G] [-N] [-R] [-S] [--codechecker] <testlist-file>
|
||||||
|
|
||||||
|
Where:
|
||||||
|
-h will show this help test and terminate
|
||||||
|
-l|m|c|g|n selects Linux (l), macOS (m), Cygwin (c),
|
||||||
|
MSYS/MSYS2 (g) or Windows native (n). Default Linux
|
||||||
|
-d enables script debug output
|
||||||
|
-e pass extra c/c++ flags such as -Wno-cpp via make command line
|
||||||
|
-x exit on build failures
|
||||||
|
-j <ncpus> passed on to make. Default: No -j make option.
|
||||||
|
-a <appsdir> provides the relative path to the apps/ directory. Default ../apps
|
||||||
|
-t <topdir> provides the absolute path to top nuttx/ directory. Default ../nuttx
|
||||||
|
-p only print the list of configs without running any builds
|
||||||
|
-A store the build executable artifact in ARTIFACTDIR (defaults to ../buildartifacts
|
||||||
|
-C Skip tree cleanness check.
|
||||||
|
-G Use "git clean -xfdq" instead of "make distclean" to clean the tree.
|
||||||
|
This option may speed up the builds. However, note that:
|
||||||
|
* This assumes that your trees are git based.
|
||||||
|
* This assumes that only nuttx and apps repos need to be cleaned.
|
||||||
|
* If the tree has files not managed by git, they will be removed
|
||||||
|
as well.
|
||||||
|
-N Use CMake with Ninja as the backend.
|
||||||
|
-R execute "run" script in the config directories if exists.
|
||||||
|
-S Adds the nxtmpdir folder for third-party packages.
|
||||||
|
--codechecker enables CodeChecker statically analyze the code.
|
||||||
|
<testlist-file> selects the list of configurations to test. No default
|
||||||
|
|
||||||
|
Your PATH variable must include the path to both the build tools and the
|
||||||
|
kconfig-frontends tools
|
||||||
|
|
||||||
|
This script needs two pieces of information:
|
||||||
|
|
||||||
|
1. A description of the platform that you are testing on. This description
|
||||||
|
is provided by the optional -l, -m, -c, -g and -n options.
|
||||||
|
|
||||||
|
2. A list of configurations to build. That list is provided by a test
|
||||||
|
list file. The final, non-optional parameter, <testlist-file>,
|
||||||
|
provides the path to that file.
|
||||||
|
|
||||||
|
The test list file is a sequence of build descriptions, one per line. One
|
||||||
|
build descriptions consists of two comma separated values. For example::
|
||||||
|
|
||||||
|
stm32f429i-disco:nsh
|
||||||
|
arduino-due:nsh
|
||||||
|
/arm
|
||||||
|
/risc-v
|
||||||
|
|
||||||
|
The first value is the usual configuration description of the form
|
||||||
|
``<board-name>:<configuration-name>`` or ``/<folder-name>`` and must correspond to a
|
||||||
|
configuration or folder in the nuttx/boards directory.
|
||||||
|
|
||||||
|
The second value is valid name for a toolchain configuration to use
|
||||||
|
when building the configuration. The set of valid toolchain
|
||||||
|
configuration names depends on the underlying architecture of the
|
||||||
|
configured board.
|
||||||
|
|
||||||
|
The prefix ``-`` can be used to skip a configuration::
|
||||||
|
|
||||||
|
-stm32f429i-disco/nsh
|
||||||
|
|
||||||
|
or skip a configuration on a specific host(e.g. Darwin)::
|
||||||
|
|
||||||
|
-Darwin,sim:rpserver
|
||||||
@@ -0,0 +1,69 @@
|
|||||||
|
==================
|
||||||
|
``uncrustify.cfg``
|
||||||
|
==================
|
||||||
|
|
||||||
|
This is a configuration script for the uncrustify code beautifier.
|
||||||
|
Uncrustify does well with forcing braces into "if" statements and
|
||||||
|
indenting per the NuttX C coding standard. It correctly does things
|
||||||
|
like placing all braces on separate lines at the proper indentation
|
||||||
|
level. It cannot handle certain requirements of the coding standard
|
||||||
|
such as
|
||||||
|
|
||||||
|
- FAR attributes in pointer declarations.
|
||||||
|
- The NuttX standard function header block comments.
|
||||||
|
- Naming violations such as use of CamelCase variable names,
|
||||||
|
lower case pre-processor definitions, etc.
|
||||||
|
|
||||||
|
Comment blocks, function headers, files headers, etc. must be formatted
|
||||||
|
manually.
|
||||||
|
|
||||||
|
Its handling of block comments is fragile. If the comment is perfect,
|
||||||
|
it leaves it alone, but if the block comment is deemed to need a fix
|
||||||
|
it starts erroneously indenting the continuation lines of the comment.
|
||||||
|
|
||||||
|
- uncrustify.cfg messed up the indent of most block comments.
|
||||||
|
cmt_sp_before_star_cont is applied inconsistently. I added::
|
||||||
|
|
||||||
|
cmt_indent_multi = false # disable all multi-line comment changes
|
||||||
|
|
||||||
|
to the .cfg file to limit its damage to block comments.
|
||||||
|
- It is very strict at wrapping lines at column 78. Even when column 79
|
||||||
|
just contained the ``/`` of a closing ``*/``. That created many
|
||||||
|
bad continuation lines.
|
||||||
|
|
||||||
|
- It moved '{' that opened a struct to the line defining the struct.
|
||||||
|
nl_struct_brace = add (or force) seemed to be ignored.
|
||||||
|
|
||||||
|
- It also aligned variable names in declarations and '=' signs in
|
||||||
|
assignment statements in a seemingly arbitrary manner. Making changes
|
||||||
|
that were not necessary.
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
|
||||||
|
uncrustify.cfg should **ONLY** be used with new files that have an
|
||||||
|
inconsistent coding style. uncrustify.cfg should get you in the ballpark,
|
||||||
|
but you should expect to review and hand-edit the files to assume 100%
|
||||||
|
compliance.
|
||||||
|
|
||||||
|
.. warning::
|
||||||
|
|
||||||
|
**NEVER** use uncrustify.cfg for modifications to existing NuttX files. It
|
||||||
|
will probably corrupt the style in subtle ways!
|
||||||
|
|
||||||
|
This was last verified against uncrustify 0.66.1 by Bob Feretich.
|
||||||
|
|
||||||
|
About uncrustify: Uncrustify is a highly configurable, easily modifiable
|
||||||
|
source code beautifier. To learn more about uncrustify:
|
||||||
|
|
||||||
|
http://uncrustify.sourceforge.net/
|
||||||
|
|
||||||
|
Source code is available on GitHub:
|
||||||
|
|
||||||
|
https://github.com/uncrustify/uncrustify
|
||||||
|
|
||||||
|
Binary packages are available for Linux via command line installers.
|
||||||
|
Binaries for both Windows and Linux are available at:
|
||||||
|
|
||||||
|
https://sourceforge.net/projects/uncrustify/files/
|
||||||
|
|
||||||
|
See also :doc:`/components/tools/indent` and :doc:`/components/tools/nxstyle`.
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
===
|
||||||
|
zds
|
||||||
|
===
|
||||||
|
|
||||||
|
This directory contains build tools used only with the ZDS-II
|
||||||
|
platforms (z8, ez80, zNeo).
|
||||||
@@ -0,0 +1,27 @@
|
|||||||
|
============
|
||||||
|
``zipme.sh``
|
||||||
|
============
|
||||||
|
|
||||||
|
I use this script to create the nuttx-xx.yy.tar.gz tarballs for
|
||||||
|
release. It is handy because it also does the kind of clean up
|
||||||
|
that you need to do to make a clean code release.
|
||||||
|
It can also PGP sign the final tarballs and create their SHA512 hash.
|
||||||
|
Any VCS files or directories are excluded from the final tarballs.
|
||||||
|
|
||||||
|
Help:
|
||||||
|
|
||||||
|
.. code:: console
|
||||||
|
|
||||||
|
$ ./tools/zipme.sh -h
|
||||||
|
USAGE="USAGE: ./tools/zipme.sh [-d|h|v|s] [-b <build]> [-e <exclude>] [-k <key-id>] [<major.minor.patch>]"
|
||||||
|
|
||||||
|
Examples:
|
||||||
|
|
||||||
|
.. code:: console
|
||||||
|
|
||||||
|
$ ./tools/zipme.sh -s 9.0.0
|
||||||
|
# Create version 9.0.0 tarballs and sign them.
|
||||||
|
$ ./tools/zipme.sh -s -k XXXXXX 9.0.0
|
||||||
|
# Same as above but use the key-id XXXXXX to sign the tarballs
|
||||||
|
$ ./tools/zipme.sh -e "*.swp tmp" 9.0.0
|
||||||
|
# Create the tarballs but exclude any .swp file and the "tmp" directory.
|
||||||
Reference in New Issue
Block a user