diff --git a/ChangeLog b/ChangeLog index 7b700a0d289..d43911d1797 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1765,7 +1765,9 @@ * lib/drivers/cc1101: Add initial, functional CC1101 wireless driver (contributed by Uros Platise) * arch/mips and configs/pcblogic-pic32mx: The MicroChip PIC32MX port is now - code complete and ready to begin testing. + code complete and ready to begin testing. Unfortunately, it looks like + testing will be delayed due to tool issues (My PICkit 2 will not work the + the MPLAB debugger on PIC32; I will need to get a PICkit 3). * drivers/net/e1000.c/h: A PCI-based E1000 ethernet driver submitted by Yu Qiang. * lib/net/lib_inetaddr.c: An implementatino of the inet_addr() function diff --git a/Documentation/NuttX.html b/Documentation/NuttX.html index 65a8744d837..b29bf7ab0ac 100644 --- a/Documentation/NuttX.html +++ b/Documentation/NuttX.html @@ -8,7 +8,7 @@
Last Updated: May 15, 2011
+Last Updated: May 25, 2011
STATUS: - This port is in its very earliest stages -- most just header file development. - Stay tuned for future releases including verified PIC32 support. + This port is code complete and has begun testing. + Testing is, unfortunately, delayed until I obtain some additional test equipment + (you can't use PICkit 2 with the PIC32; you need PICkit 3).
nuttx-6.4 2011-xx-xx Gregory Nutt <spudmonkey@racsa.co.cr>
+ * lib/drivers/cc1101: Add initial, functional CC1101 wireless driver
+ (contributed by Uros Platise)
+ * arch/mips and configs/pcblogic-pic32mx: The MicroChip PIC32MX port is now
+ code complete and ready to begin testing. Unfortunately, it looks like
+ testing will be delayed due to tool issues (My PICkit 2 will not work the
+ the MPLAB debugger on PIC32; I will need to get a PICkit 3).
+ * drivers/net/e1000.c/h: A PCI-based E1000 ethernet driver submitted
+ by Yu Qiang.
+ * lib/net/lib_inetaddr.c: An implementatino of the inet_addr() function
+ submitted y Yu Qiang.
+
apps-6.4 2011-xx-xx Gregory Nutt <spudmonkey@racsa.co.cr>
+ * nshlib/nsh_netcmds.c: If a network device name and IP address are provided
+ with the ifconfig command, then this command will now set the network address.
+ (Contributed by Yu Qiang).
+
pascal-3.1 2011-xx-xx Gregory Nutt <spudmonkey@racsa.co.cr>
buildroot-1.11 2011-xx-xx <spudmonkey@racsa.co.cr>
diff --git a/Documentation/NuttxPortingGuide.html b/Documentation/NuttxPortingGuide.html
index 3c122166b46..fb06f794ee5 100644
--- a/Documentation/NuttxPortingGuide.html
+++ b/Documentation/NuttxPortingGuide.html
@@ -12,7 +12,7 @@
NuttX RTOS Porting Guide
- Last Updated: May 11, 2011
+ Last Updated: May 25, 2011
@@ -741,12 +741,44 @@
as described below.
configs/avr32dev1:
+ This is a port of NuttX to the Atmel AVR32DEV1 board. That board is
+ based on the Atmel AT32UC3B0256 MCU and uses a specially patched
+ version of the GNU toolchain: The patches provide support for the
+ AVR32 family. That patched GNU toolchain is available only from the
+ Atmel website. STATUS: This port is functional but very basic. There
+ are configurations for NSH and the OS test.
+ configs/c5471evm:
This is a port to the Spectrum Digital C5471 evaluation board. The
C5471 is a dual core processor from TI with an ARM7TDMI general purpose
- processor and a c54 SDP. NuttX runs on the ARM core and is built with
- with a GNU arm-elf toolchain* under Linux or Cygwin.
- This port is complete, verified, and included in the NuttX release.
+ processor and a c54 DSP. It is also known as TMS320DA180 or just DA180.
+ NuttX runs on the ARM core and is built with with a GNU arm-elf toolchain
+ under Linux or Cygwin. This port is complete and verified.
+ configs/demo9s12ne64:
+ Feescale DMO9S12NE64 board based on the MC9S12NE64 hcs12 cpu. This
+ port uses the m9s12x GCC toolchain. STATUS: (Still) under development; it
+ is code complete but has not yet been verified.
+ configs/detron:
+ This is a NuttX port to the Detron LPC1768 board from Decio Renno
+ (Detron Electronica)
+ configs/ea3131:
+ Embedded Artists EA3131 Development bard. This board is based on the
+ an NXP LPC3131 MCU. This OS is built with the arm-elf toolchain.
+ STATUS: This port is complete and mature.
+ configs/eagle100:
+ Micromint Eagle-100 Development board. This board is based on the
+ an ARM Cortex-M3 MCU, the Luminary LM3S6918. This OS is built with the
+ arm-elf toolchain. STATUS: This port is complete and mature.
configs/ez80f0910200kitg
@@ -755,9 +787,38 @@
tools. The development environment is Cygwin under WinXP.
configs/ez80f910200zco:
+ ez80Acclaim! Microcontroller. This port use the Zilog ez80f0910200zco
+ development kit, eZ80F091 part, and the Zilog ZDS-II Windows command line
+ tools. The development environment is Cygwin under WinXP.
+ configs/lm3s6965-ek:
+ Stellaris LM3S6965 Evaluation Kit. This board is based on the
+ an ARM Cortex-M3 MCU, the Luminary/TI LM3S6965. This OS is built with the
+ arm-elf toolchain. STATUS: This port is complete and mature.
+ configs/lm3s8962-ek:
+ Stellaris LMS38962 Evaluation Kit. STATUS: contributed.
+ configs/lpcxpresso-lpc1768:
+ Embedded Artists base board with NXP LPCExpresso LPC1768. This board
+ is based on the NXP LPC1768. The Code Red toolchain is used by default.
+ STATUS: Under development.
+ configs/m68322evb:
- This is a work in progress for the venerable m68322evb board from
- Motorola.
+ This is a partial port for the venerable m68322evb board from Motorola.
+ This port was never completed and there are no plans to complete.
+ It will probably just be removed from the source tree at some point.
+ configs/mbed:
+ The configurations in this directory support the mbed board (http://mbed.org)
+ that features the NXP LPC1768 microcontroller. This OS is also built
+ with the arm-elf toolchain. STATUS: Contributed.
configs/mcu123-lpc214x:
@@ -767,6 +828,20 @@
The port supports serial, timer0, spi, and usb.
configs/mx1ads:
+ This is a port to the Motorola MX1ADS development board. That board
+ is based on the Freescale i.MX1 processor. The i.MX1 is an ARM920T.
+ STATUS: This port is nearly code complete but was never fully
+ integrated due to tool-related issues.
+ configs/ne64badge:
+ Future Electronics Group NE64 /PoE Badge board based on the
+ MC9S12NE64 hcs12 cpu. This port uses the m9s12x GCC toolchain.
+ STATUS: Under development. The port is code-complete but has
+ not yet been fully tested.
+ configs/ntosd-dm320:
This port uses the Neuros OSD with a GNU arm-elf toolchain* under Linux or Cygwin.
See Neuros Wiki
@@ -776,12 +851,36 @@
NuttX 0.2.1 release.
configs/nucleus2g:
+ This port uses the Nucleus 2G board (with Babel CAN board).
+ This board features an NXP LPC1768 processor.
+ See the 2G Engineering website for more information about the Nucleus 2G.
+ configs/olimex-lpc1766stk:
+ This port uses the Olimex LPC1766-STK board and a GNU GCC toolchain under
+ Linux or Cygwin. STATUS: Complete and mature.
+ configs/olimex-lpc2378:
+ This port uses the Olimex-lpc2378 board and a GNU arm-elf toolchain under
+ Linux or Cygwin. STATUS: ostest and NSH configurations available.
+ configs/olimex-strp711:
This port uses the Olimex STR-P711 board arm-elf toolchain* under Linux or Cygwin.
See the Olimex web site
for further information.
- STATUS: Coding for the basic port -- serial console and system timer -- is complete
- but untested to problems I am having using OpenOCD with a wiggler clone JTAG.
+ STATUS: Configurations for the basic OS test and NSH are complete and verified.
+ configs/pcblogic-pic32mx:
+ This is the port of NuttX to the PIC32MX board from PCB Logic Design Co.
+ This board features the MicroChip PIC32MX460F512L.
+ The board is a very simple -- little more than a carrier for the PIC32
+ MCU plus voltage regulation, debug interface, and an OTG connector.
+ STATUS: Code complete but testing has been stalled due to tool related problems
+ (PICkit 2 does not work with the PIC32).
configs/pjrc-8051:
@@ -790,6 +889,36 @@
This port is not quite ready for prime time.
configs/qemu-i486:
+ Port of NuttX to QEMU in i486 mode. This port will also run on real i486
+ hardwared (Google the Bifferboard).
+ configs/rgmp:
+ RGMP stands for RTOS and GPOS on Multi-Processor. RGMP is a project for
+ running GPOS and RTOS simultaneously on multi-processor platforms. You can
+ port your favorite RTOS to RGMP together with an unmodified Linux to form a
+ hybrid operating system. This makes your application able to use both RTOS
+ and GPOS features.
+ See the RGMP Wiki for further information about RGMP.
+ configs/sam3u-ek:
+ The port of NuttX to the Atmel SAM3U-EK development board.
+ configs/skp16c26:
+ Renesas M16C processor on the Renesas SKP16C26 StarterKit. This port
+ uses the GNU m32c toolchain. STATUS: The port is complete but untested
+ due to issues with compiler internal errors.
+ configs/stm3210e-eval:
+ STMicro STM3210E-EVAL development board based on the STMicro STM32F103ZET6
+ microcontroller (ARM Cortex-M3). This port uses the GNU Cortex-M3
+ toolchain.
+ 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 development.
@@ -809,6 +938,13 @@
old processor for the time being.
configs/vsn:
+ ISOTEL NetClamps VSN V1.2 ready2go sensor network platform based on the
+ STMicro STM32F103RET6. Contributed by Uros Platise.
+ See the Isotel web site for further information
+ about the NetClamps board.
+ configs/xtrs:
TRS80 Model 3. This port uses a vintage computer based on the Z80.
An emulator for this computer is available to run TRS80 programs on a
@@ -841,6 +977,12 @@
development kit, Z8F6423 part, and the Zilog ZDS-II Windows command line
tools. The development environment is Cygwin under WinXP.
configs/z8f64200100kit:
+ z8Encore! Microcontroller. This port use the Zilog z8f64200100kit
+ development kit, Z8F6423 part, and the Zilog ZDS-II Windows command line
+ tools. The development environment is Cygwin under WinXP.
+ System Timer
+ In most implementations, system time is provided by a timer interrupt.
+ That timer interrupt runs at rate determined by System Timer Accuracy
+ On many system, the exact timer interval specified by
@@ -1650,7 +1792,87 @@ The system can be re-made subsequently by just typing
make.
4.1.20 System Time and Clock
-4.1.20.1 UTC Time Representation
+4.1.20.1 Basic System Timer
+
+CONFIG_MSEC_PER_TICKS (default 10 or 100Hz).
+ The timer generates an interrupt each CONFIG_MSEC_PER_TICKS milliseconds and increments a counter called g_system_timer.
+ g_system_timer then provides a time-base for calculating up-time and elapsed time intervals in units of CONFIG_MSEC_PER_TICKS.
+CONFIG_MSEC_PER_TICKS cannot be achieved due to limitations in frequencies or in dividers.
+ As a result, the time interval specified by CONFIG_MSEC_PER_TICKS may only be approximate and there may be small errors in the apparent up-time time.
+ These small errors, however, will accumulate over time and after a long period of time may have an unacceptably large error in the apparent up-time of the MCU.
+CONFIG_MSEC_PER_TICKS and if there you require accurate up-time for the MCU, then there are measures that you can take:
+
CONFIG_MSEC_PER_TICKS to a different value so that an exactly CONFIG_MSEC_PER_TICKS can be accomplished.
+ Delta-Sigma Modulation Example.
+ Consider this case: The system timer is a count-up timer driven at 32.768KHz.
+ There are dividers that can be used, but a divider of one yields the highest accuracy.
+ This counter counts up until the count equals a match value, then a timer interrupt is generated.
+ The desire frequency is 100Hz (CONFIG_MSEC_PER_TICKS is 10).
+
+ This exact frequency of 100Hz cannot be obtained in this case. + In order to obtain that exact frequency a match value of 327.68 would have to be provided. + The closest integer value is 328 but the ideal match value is between 327 and 328. + The closest value, 328, would yield an actual timer frequency of 99.9Hz! + That will may cause significant timing errors in certain usages. +
++ Use of Delta-Sigma Modulation can eliminate this error in the long run. + Consider this example implementation: +
++accumulator = 0; +match = 328; ++
+if (match == 328)
+ {
+ accumulator += 32; // 100*(328 - 327.68)
+ }
+else
+ {
+ accumulator -= 68; // (100*(327 - 327.68)
+ }
+
+
+if (accumulator < 0)
+ {
+ match = 328;
+ }
+else
+ {
+ match = 327;
+ }
+
++ In this way, the timer interval is controlled from interrupt-to-interrupt to produce an average frequency of exactly 100Hz. +
+ +To enable UTC time representation use option:
@@ -2950,7 +3172,7 @@ build This link object is assumed to be an incremental (relative) link object, but could be a static library (archive) (some modification to this Makefile would be required if CONFIG_PASS1_TARGET generates an archive). Pass 1 1ncremental (relative) link objects should be put into the processor-specific source directory - where other link objects will be created - ff the pass1 obect is an archive, it could go anywhere. + where other link objects will be created - ff the pass1 obect is an archive, it could go anywhere.