diff --git a/ChangeLog b/ChangeLog index d38eed7668309cbc152140f103c701a0fb5eaaaa..b5e50c3177fdb3fce82e189ff2ef9f37b6c9d2ac 100644 --- a/ChangeLog +++ b/ChangeLog @@ -316,9 +316,10 @@ * Added /dev/zero * 'errno' is now defined to be *get_errno_ptr() with no name conflicts * Added lseek() and fseek() - * Integrated pascal test case on the simulation platform. Needs pascal-0.1.1. - * Integrated pascal test case on the z16f platform. Needs pascal-0.1.2 (not - yet released). + * Integrated Pascal interpreter test case on the simulation platform. Needs + pascal-0.1.1. + * Add Pascal test case on the z16f platform. Needs pascal-0.1.2 (does not + yet work due to some tool issues). * C buffered I/O fixes: - Fix fflush() return value, - Add correct fflush behavior when the FILE argument is null. @@ -329,6 +330,7 @@ * Pascal P-Code files are now standardized to big-endian for portability * Fix a build problem with z80 and SDCC 2.7.0 (format of a map file changed) (see bug 1887170) + * Pascal P-Code runtime now compiles with the SDCC toolchain. diff --git a/Documentation/NuttX.html b/Documentation/NuttX.html index 623ac7651c9da633a4c3585d008f574669e37f99..59c0189838b2dbf5903bcad7ba57028385f865e8 100644 --- a/Documentation/NuttX.html +++ b/Documentation/NuttX.html @@ -8,7 +8,7 @@ <tr align="center" bgcolor="#e4e4e4"> <td> <h1><big><font color="#3c34ec"><i>NuttX RTOS</i></font></big></h1> - <p>Last Updated: February 5, 2008</p> + <p>Last Updated: February 7, 2008</p> </td> </tr> </table> @@ -974,9 +974,10 @@ nuttx-0.3.8 2008-xx-xx Gregory Nutt <spudmonkey@racsa.co.cr> * Added /dev/zero * 'errno' is now defined to be *get_errno_ptr() with no name conflicts * Added lseek() and fseek() - * Integrated pascal test case on the simulation platform. Needs pascal-0.1.1. - * Integrated pascal test case on the z16f platform. Needs pascal-0.1.2 (not - yet released). + * Integrated Pascal interpreter test case on the simulation platform. Needs + pascal-0.1.1. + * Add Pascal test case on the z16f platform. Needs pascal-0.1.2 (does not + yet work due to some tool issues). * C buffered I/O fixes: - Fix fflush() return value, - Add correct fflush behavior when the FILE argument is null. @@ -985,8 +986,9 @@ nuttx-0.3.8 2008-xx-xx Gregory Nutt <spudmonkey@racsa.co.cr> - When read data is flushed, reposition the file pointer to account for buffered, but unreand data * Pascal P-Code files are now standardized to big-endian for portability - * Fix a build problem with z80 and SDCC 2.7.0 (format of a map file changed). + * Fix a build problem with z80 and SDCC 2.7.0 (format of a map file changed) (see bug 1887170) + * Pascal P-Code runtime now compiles with the SDCC toolchain. pascal-0.1.2 2008-xx-xx Gregory Nutt <spudmonkey@racsa.co.cr> diff --git a/Documentation/NuttxPortingGuide.html b/Documentation/NuttxPortingGuide.html index 9ae720862ca0690396ec7b728ab016d09cb0edc7..3f6a84e3912209a43b3362f7857e6b88edab350b 100644 --- a/Documentation/NuttxPortingGuide.html +++ b/Documentation/NuttxPortingGuide.html @@ -16,7 +16,7 @@ </b></big> <p><small>by</small></p> <p>Gregory Nutt</p> - <p><small>Last Update: January 10, 2008</small></p> + <p><small>Last Update: February 7, 2008</small></p> </center> <center><h1>Table of Contents</h1></center> @@ -36,7 +36,7 @@ <li><a href="#summaryofconfigfiles">2.3.2 Summary of Files</a></li> <ul> <li><a href="#boardlogic">2.3.2.1 Board Specific Logic</a></li> - <li><a href="#boardconfigfiles">2.3.2.2 Board Specific Configuration Files</a></li> + <li><a href="#boardconfigsubdirs">2.3.2.2 Board Specific Configuration Sub-Directories</a></li> </ul> <li><a href="#supportedboards">2.3.3 Supported Boards</a></li> </ul> @@ -90,13 +90,13 @@ </ul> <li><a href="#NxFileSystem">5.0 NuttX File System</a></li> <li><a href="#apndxconfigs">Appendix A: NuttX Configuration Settings</a></li> - +<li><a href="#apndxtrademarks">Appendix B: Trademarks</a></li> <hr> <h1>1.0 <a name="Introduction">Introduction</a></h1> <p><b>Overview</b> This document provides and overview of the NuttX build and configuration - logic and provides hints for the incorporation of new processor/board archectures + logic and provides hints for the incorporation of new processor/board architectures into the build. </p> <p> @@ -132,7 +132,7 @@ | | | `-- <i>(chip-specific source files)</i> | | |--<i><other-chips></i>/ | | `-- <i>(architecture-specific source files)</i> -| `-- <i><other-architectures></i>/ +| `-- <i><other-architecture directories></i>/ |-- <a href="#DirStructConfigs">configs</a>/ | |-- <i><board-name></i>/ | | |-- include/ @@ -140,8 +140,10 @@ | | |-- src/ | | | |-- Makefile | | | `-- <i>(board-specific source files)</i> -| | `-- <i>(board-specific configuration files)</i> -| `-- <i><other-boards></i>/ +| | |---<i><config1-dir></i>/ +| | | `-- <i>(board-specific/configuration-specific files)</i> +| | `---<i>(other board-specific configuration sub-directories)</i>/ +| `-- <i><(other board directories)></i>/ |-- <a href="#DirStructDrivers">drivers</a>/ | |-- Makefile | `-- <i>(common driver source files)</i> @@ -226,14 +228,14 @@ </p> </li> <li> - <i>Board specific files</i>. + <i>Board specific configurations</i>. In order to be usable, the chip must be contained in a board environment. The board configuration defines additional properties of the board including such things as peripheral LEDs, external peripherals (such as network, USB, etc.). <p> These board-specific configuration files can be found in the <code>configs/</code><i><board-name></i><code>/</code> sub-directories and are discussed - in a a paragraph <a href="#configsdirectorystructure">below</a>. + in a paragraph <a href="#configsdirectorystructure">below</a>. </p> </li> </ul> @@ -251,8 +253,8 @@ This directory contains several sub-directories, each containing architecture-specific logic. The task of porting NuttX to a new processor consists of - add a new sudirectory under <code>arch/</code> containing logic specific - to the new architecuture. + add a new subdirectory under <code>arch/</code> containing logic specific + to the new architecture. The complete board port in is defined by the architecture-specific code in this directory (plus the board-specific configurations in the <code>config/</code> subdirectory). @@ -468,15 +470,24 @@ provide a subdirectory <board-name> under <code>configs/</code> with the following characteristics: </p> <ul><pre> + |-- Make.defs + |-- defconfig + `-- setenv.sh <i><board-name></i> |-- include/ | `-- <i>(board-specific header files)</i> |-- src/ | |-- Makefile | `-- <i>(board-specific source files)</i> - |-- Make.defs - |-- defconfig - `-- setenv.sh + |-- <i><config1-dir></i> + | |-- Make.defs + | |-- defconfig + | `-- setenv.sh + |-- <i><config2-dir></i> + | |-- Make.defs + | |-- defconfig + | `-- setenv.sh + `-- <i>(other board-specific configuration sub-directories)</i>/ </pre></ul> <h3><a name="summaryofconfigfiles">2.3.2 Summary of Files</a></h3> @@ -502,10 +513,15 @@ It must support the following targets: <code>libext$(LIBEXT)</code>, <code>clean</code>, and <code>distclean</code>. </li> </ul> -<h4><a name="boardconfigfiles">2.3.2.2 Board Specific Configuration Files</a></h4> +<h4><a name="boardconfigsubdirs">2.3.2.2 Board Specific Configuration Sub-Directories</a></h4> <p> The <code>configs/</code><i><board-name></i><code>/</code> sub-directory holds all of the files that are necessary to configure Nuttx for the particular board. + A board may have various different configurations using the common source files. + Each board configuration is described by three files: <code>Make.defs</code>, <code>defconfig</code>, and <code>setenv.sh</code>. + Typically, each set of configuration files is retained in a separate configuration sub-directory + (<i><config1-dir></i>, <i><config2-dir></i>, .. in the above diagram). + The procedure for configuring NuttX is described <a href="#configuringnuttx">below</a>, This paragraph will describe the contents of these configuration files. </p> @@ -530,7 +546,7 @@ </li> <li> <code>defconfig</code>: This is a configuration file similar to the Linux - configuration file. In contains varialble/value pairs like: + configuration file. In contains variable/value pairs like: <ul> <li><code>CONFIG_VARIABLE</code>=value</li> </ul> @@ -697,19 +713,20 @@ <p> <b>Manual Configuration</b>. Configuring NuttX requires only copying the - <a href="#boardconfigfiles">board-specific configuration files</a> into the top level directory which appears in the make files as the make variable, <code>${TOPDIR}</code>. + <a href="#boardconfigsubdirs">board-specific configuration files</a> into the top level directory which appears in the make files as the make variable, <code>${TOPDIR}</code>. This could be done manually as follows: </p> <ul> - <li>Copy <code>configs/</code><i><board-name></i></code>/Make.def</code> to <code>${TOPDIR}/Make.defs</code>,<li> - <li>Copy <code>configs/</code><i><board-name></i></code>/setenv.sh</code> to <code>${TOPDIR}/setenv.sh</code>, and</li> - <li>Copy <code>configs/</code><i><board-name></i></code>/defconfig</code> to <code>${TOPDIR}/.config</code></li> + <li>Copy <code>configs/</code><i><board-name></i><code>/[</code><i><config-dir></i><code>/]Make.def</code> to <code>${TOPDIR}/Make.defs</code>,<li> + <li>Copy <code>configs/</code><i><board-name></i><code>/[</code><i><config-dir></i><code>/]setenv.sh</code> to <code>${TOPDIR}/setenv.sh</code>, and</li> + <li>Copy <code>configs/</code><i><board-name></i><code>/[</code><i><config-dir></i><code>/]defconfig</code> to <code>${TOPDIR}/.config</code></li> </ul> <p> Where <i><board-name></i> is the name of one of the sub-directories of the NuttX <a href="#DirStructConfigs"><code>configs/</code></a> directory. This sub-directory name corresponds to one of the supported boards identified <a href="#supportedboards">above</a>. + And <config-dir> is the optional, specific configuration directory for the board. </p> <p> <b>Automated Configuration</b>. @@ -718,7 +735,7 @@ </p> <ul><pre> cd tools - ./configure.sh <i><board-name></i> + ./configure.sh <i><board-name></i></i><code>[/</code><i><config-dir></i><code>]</code> </pre></ul> <p> @@ -747,14 +764,14 @@ make That directory also holds: </p> <ul> - <li>The makefile fragment <a href="#boardconfigfiles"><code>.config</code></a> that describes the current configuration.</li> - <li>The makefile fragment <a href="#boardconfigfiles"><code>Make.defs</code></a> that provides customized build targers, and</li> - <li>The shell script <a href="#boardconfigfiles"><code>setenv.sh</code></a> that sets up the configuration environment for the build.</li> + <li>The makefile fragment <a href="#boardconfigsubdirs"><code>.config</code></a> that describes the current configuration.</li> + <li>The makefile fragment <a href="#boardconfigsubdirs"><code>Make.defs</code></a> that provides customized build targers, and</li> + <li>The shell script <a href="#boardconfigsubdirs"><code>setenv.sh</code></a> that sets up the configuration environment for the build.</li> </ul> <p> -The <a href="#boardconfigfiles"><code>setenv.sh</code></a> contains Linux environmental settings that are needed for the build. -The specific environmental definitions are unique for each board but should include, as a minimum, updates to the <code>PATH</code> variable to include the full path to the architecture-specific toolchain identified in <a href="#boardconfigfiles"><code>Make.defs</code></a>. -The <a href="#boardconfigfiles"><code>setenv.sh</code></a> only needs to be source'ed at the beginning of a session. +The <a href="#boardconfigsubdirs"><code>setenv.sh</code></a> contains Linux/Cygwin environmental settings that are needed for the build. +The specific environmental definitions are unique for each board but should include, as a minimum, updates to the <code>PATH</code> variable to include the full path to the architecture-specific toolchain identified in <a href="#boardconfigsubdirs"><code>Make.defs</code></a>. +The <a href="#boardconfigsubdirs"><code>setenv.sh</code></a> only needs to be source'ed at the beginning of a session. The system can be re-made subsequently by just typing <code>make</code>. </p> <p> @@ -1548,6 +1565,22 @@ The system can be re-made subsequently by just typing <code>make</code>. </li> </ul> +<h1><a name="apndxtrademarks">Appendix B: Trademarks</a></h1> + + <li>ARM, ARM7 ARM7TDMI, ARM9, ARM926EJS are trademarks of Advanced RISC Machines, Limited.</li> + <li>Cygwin is a trademark of Red Hat, Incorporated.</li> + <li>Linux is a registered trademark of Linus Torvalds.</li> + <li>LPC2148 is a trademark of NXP Semiconductors.</li> + <li>TI is a tradename of Texas Instruments Incorporated.</li> + <li>UNIX is a registered trademark of The Open Group.</li> + <li>VxWorks is a registered trademark of Wind River Systems, Incorporated.</li> + <li>ZDS, ZNEO, Z16F, Z80, and Zilog are a registered trademark of Zilog, Inc.</li> + +<p> + NOTE: NuttX is <i>not</i> licensed to use the POSIX trademark. NuttX uses the POSIX + standard as a development guideline only. +</p> + </body> </html> diff --git a/TODO b/TODO index 2351579fa52186179d4bb4aec1e4888c21f9c229..f851000402be8f477de769a056cc89ac99b4fa09 100644 --- a/TODO +++ b/TODO @@ -234,9 +234,10 @@ o Pascal Add-On (pcode/) Description: Need APIs to verify execution of P-Code from memory buffer. Status: Open - Priority: Medium + Priority: Low - Description: Pascal add-on does not build with the SDCC compiler. + Description: Loader and object format may be too large for some small + memory systems. Consider ways to reduce memory footprint. Status: Open Priority: Medium diff --git a/arch/README.txt b/arch/README.txt index 52ad1f3e1b3eb680a6b17a547750aea63c04937a..0e5581cc40eaeeb9cfda9dd9405d6ab16663c318 100644 --- a/arch/README.txt +++ b/arch/README.txt @@ -125,7 +125,7 @@ Supported Architectures arch/sim A user-mode port of NuttX to the x86 Linux platform is available. - The purpose of this port is primarily to support OS feature developement. + The purpose of this port is primarily to support OS feature development. This port does not support interrupts or a real timer (and hence no round robin scheduler) Otherwise, it is complete. @@ -160,11 +160,12 @@ arch/pjrc-8051 8051 Microcontroller. This port is not quite ready for prime time. arch/z16 - ZiLog z16f Microcontroller. - STATUS: A work in progress - + ZiLOG z16f Microcontroller. + STATUS: Released in nuttx-0.3.7. Fully functional other than issues + addressed in ${TOPDIR}/TODO. + arch/z80 - ZiLog z80 Microcontroller. + ZiLOG z80 Microcontroller. STATUS: Functional with no known defects. There are still several OS features that have not yet been tested (e.g., networking). diff --git a/configs/README.txt b/configs/README.txt index fb6c655657d6d7796693942d6121cd0626f4088b..e7675a947f40a917ec8f0d13fdd9a3e665eb64a8 100644 --- a/configs/README.txt +++ b/configs/README.txt @@ -33,7 +33,8 @@ o Board specific files. In order to be usable, the chip must be These board-specific configuration files can be found in the configs/<board-name>/ sub-directories and are discussed in this - README. + README. Additional configuration information maybe available in + board-specific configs/<board-name>/README.txt files. The configs/ subdirectory contains configuration data for each board. These board-specific configurations plus the architecture-specific configurations in @@ -53,10 +54,15 @@ following characteristics: |-- src/ | |-- Makefile | `-- (board-specific source files) - |-- Make.defs - |-- defconfig - `-- setenv.sh - + |-- <config1-dir> + | |-- Make.defs + | |-- defconfig + | `-- setenv.sh + |-- <config2-dir> + | |-- Make.defs + | |-- defconfig + | `-- setenv.sh + ... Summary of Files ^^^^^^^^^^^^^^^^ @@ -74,6 +80,12 @@ src/Makefile -- This makefile will be invoked to build the board specific drivers. It must support the following targets: libext$(LIBEXT), clean, and distclean. +A board may have various different configurations using these common source +files. Each board configuration is described by three files: Make.defs, +defconfig, and setenv.sh. Typically, each set of configuration files is +retained in a separate configuration sub-directory (<config1-dir>, +<config2-dir>, .. in the above diagram). + Make.defs -- This makefile fragment provides architecture and tool-specific build options. It will be included by all other makefiles in the build (once it is installed). This make fragment @@ -90,7 +102,7 @@ Make.defs -- This makefile fragment provides architecture and different if CONFIG_DEBUG=y. defconfig -- This is a configuration file similar to the Linux - configuration file. In contains varialble/value pairs like: + configuration file. In contains variable/value pairs like: CONFIG_VARIABLE=value @@ -137,7 +149,7 @@ defconfig -- This is a configuration file similar to the Linux CONFIG_DEBUG_SCHED - enable OS debug output (disabled by default) CONFIG_DEBUG_MM - enable memory management debug output - (disabld by default) + (disabled by default) CONFIG_DEBUG_NET - enable network debug output (disabled by default) CONFIG_DEBUG_FS - enable filesystem debug output (disabled @@ -160,7 +172,7 @@ defconfig -- This is a configuration file similar to the Linux be disabled by setting this value to zero. CONFIG_SCHED_INSTRUMENTATION - enables instrumentation in scheduler to monitor system performance - CONFIG_TASK_NAME_SIZE - Spcifies that maximum size of a + CONFIG_TASK_NAME_SIZE - Specifies that maximum size of a task name to save in the TCB. Useful if scheduler instrumentation is selected. Set to zero to disable. CONFIG_START_YEAR, CONFIG_START_MONTH, CONFIG_START_DAY - @@ -194,7 +206,7 @@ defconfig -- This is a configuration file similar to the Linux Allow for architecture optimized implementations The architecture can provide optimized versions of the - following to improve sysem performance + following to improve system performance CONFIG_ARCH_MEMCPY, CONFIG_ARCH_MEMCMP, CONFIG_ARCH_MEMMOVE CONFIG_ARCH_MEMSET, CONFIG_ARCH_STRCMP, CONFIG_ARCH_STRCPY @@ -282,12 +294,12 @@ Supported Boards configs/sim A user-mode port of NuttX to the x86 Linux platform is available. - The purpose of this port is primarily to support OS feature developement. + The purpose of this port is primarily to support OS feature development. This port does not support interrupts or a real timer (and hence no round robin scheduler) Otherwise, it is complete. NOTE: This target will not run on Cygwin probably for many reasons but - first off because it uses some of the same symbols as does cygwind.dll. + first off because it uses some of the same symbols as does cygwin.dll. configs/c5471evm This is a port to the Spectrum Digital C5471 evaluation board. The @@ -324,7 +336,7 @@ configs/pjrc-8051 configs/z16f2800100zcog z16f Microncontroller. This port use the Zilog z16f2800100zcog development kit and the Zilog ZDS-II Windows command line tools. The - development envirnoment is Cygwin under WinXP. + development environment is Cygwin under WinXP. configs/z80zim z80 Microcontroller. This port uses a Z80 instruction set simulator. @@ -341,14 +353,15 @@ Configuring NuttX Configuring NuttX requires only copying - configs/<board-name>/Make.def to ${TOPDIR}/Make.defs - configs/<board-name>/setenv.sh to ${TOPDIR}/setenv.sh - configs/<board-name>/defconfig to ${TOPDIR}/.config + configs/<board-name>/<config-dir>/Make.def to ${TOPDIR}/Make.defs + configs/<board-name>/<config-dir>/setenv.sh to ${TOPDIR}/setenv.sh + configs/<board-name>/<config-dir>/defconfig to ${TOPDIR}/.config -There is a script that automates these steps. The following steps will -accomplish the same configuration: +tools/configure.sh + There is a script that automates these steps. The following steps will + accomplish the same configuration: cd tools - ./configure.sh <board-name> + ./configure.sh <board-name>/<config-dir> diff --git a/configs/z16f2800100zcog/README.txt b/configs/z16f2800100zcog/README.txt index 0a63025fe469e75b22d41d1644544eb6803d12ad..9c7fc762acffd140afd19a4ad7627eeac179483a 100644 --- a/configs/z16f2800100zcog/README.txt +++ b/configs/z16f2800100zcog/README.txt @@ -4,15 +4,27 @@ README.txt ZDS-II Compiler Versions ^^^^^^^^^^^^^^^^^^^^^^^^ -The ZDS-II version 4.10.2 will not compiler NuttX. It reports "internal -errors" on some of the files. Upgreads to ZDS-II are available for download -from the Zilog website: http://www.zilog.com/software/zds2.asp +4.10.2 + The ZDS-II version 4.10.2 will not compile NuttX. It reports "internal + errors" on some of the files. Upgrades to ZDS-II are available for + download from the Zilog website: http://www.zilog.com/software/zds2.asp -Thusfar, I have encountered no insolvable problems with the newer 4.11.0 -version of the toolchain. +4.11.0 + NuttX compiles correctly with the newer 4.11.0 version of the ZDS-II + toolchain. However, I have found a few issues: + + - The code will not run without the -reduceopt option. There is, + apparently, some optimization related issue. This issue has not + been analyzed as of this writing. + + - Not all NuttX logic will not run with the -regvars option. There is + at least one failure that has been reported to ZiLOG as incident 81400. + + - The Pascal add-on interpreter includes a large switch statement and + exposes another compiler problem. This is reported as incident 81459. If you use any version of ZDS-II other than 4.11.0 or if you install ZDS-II -at anly location other than the default location, you will have to modify +at any location other than the default location, you will have to modify two files: (1) configs/z16f2800100zcog/*/setenv.sh and (2) configs/z16f2800100zcog/*/Make.defs. @@ -45,4 +57,4 @@ available: Configures to use examples/pashello for execution from FLASH See examples/README.txt for information about pashello. -Check out any README.txt files in these <sub-directory>s. +Check out any README.txt files in these <sub-directory>s. diff --git a/configs/z80sim/README.txt b/configs/z80sim/README.txt index 5026b23d8b62ea73e78b8e38a4329207b98126d0..77972c2d4ecac09eb3045d3f37cedbb5ebece51b 100644 --- a/configs/z80sim/README.txt +++ b/configs/z80sim/README.txt @@ -6,7 +6,7 @@ The instruction set emulator can be found in the NuttX CVS at http://nuttx.cvs.sourceforge.net/nuttx/misc/sims/z80sim The SDCC toolchain is available from http://sdcc.sourceforge.net/. All -testing has been performed using verison 2.6.0 of the SDDC toolchain. +testing has been performed using version 2.6.0 of the SDCC toolchain. Configuring NuttX ^^^^^^^^^^^^^^^^^ diff --git a/examples/README.txt b/examples/README.txt index e71d3f82354bca92477ff9280116c3d0efb8911d..39dee7f8fff5b278fec91351cadfa7ae0a59e966 100644 --- a/examples/README.txt +++ b/examples/README.txt @@ -26,7 +26,7 @@ examples/ostest examples/nsh ^^^^^^^^^^^^ - This directory containst the NuttShell (NSH). This is a simple + This directory contains the NuttShell (NSH). This is a simple shell-like application. With some additional development, NSH will someday be a great NuttX application debugger. At present, NSH supports the following commands: