diff --git a/nuttx/ChangeLog b/nuttx/ChangeLog index 77b2207f6..a270f8252 100644 --- a/nuttx/ChangeLog +++ b/nuttx/ChangeLog @@ -258,7 +258,7 @@ * Improved ACK handling in send() to better hander deferred acknowledgements and polling intervals. Greatly improves send performance. -0.3.4 2007-xx-xx Gregory Nutt +0.3.4 2007-12-10 Gregory Nutt * Added and partially verified DHCP server logic (netutils/dhcpd) * Fix BROADCAST=y compilation problems @@ -266,6 +266,9 @@ * Correct processing of input UDP broadcast packets. * Verfied basic DHCP client functionality (netutils/dhcpc) * Implemented send() timeout logic + * Added and verifed a TELNETD front end to NSH (examples/nsh) * Add a skeleton Ethernet device driver (drivers/net/skeleton.c) * Added C5471 Ethernet device driver (arch/arm/src/c5471/c5471_ethernet.c) - * Improved utilization of read-ahead buffers + * Found and fixed several problems in uIP when compiled for ARM with optimization. + +0.3.5 2007-xx-xx Gregory Nutt diff --git a/nuttx/Documentation/NuttX.html b/nuttx/Documentation/NuttX.html index b5996a81f..0ab157618 100644 --- a/nuttx/Documentation/NuttX.html +++ b/nuttx/Documentation/NuttX.html @@ -8,7 +8,7 @@

NuttX RTOS

-

Last Updated: December 5, 2007

+

Last Updated: December 10, 2007

@@ -390,7 +390,7 @@

- The 15th release of NuttX (nuttx-0.3.3) is available for download + The 16th release of NuttX (nuttx-0.3.4) is available for download from the SourceForge website. The change log associated with the release is available here. @@ -398,40 +398,38 @@ These unreleased changes are listed here.

- NuttX 0.3.3 is the 4th release containing the integration of a network + NuttX 0.3.4 is the 5th release containing the integration of a network subsystem and the uIP TCP/IP, UDP, and ICMP stacks based on uIP into NuttX.

- Many network-related problems have been fixed from version 0.3.2 - and the implementation has matured significantly. - Changes in this release include: + This release is primarily a bug-fix release. New features include only:

    -
  • TCP-related bug-fixes for disconnecting sockets,
  • -
  • Correction of some TCP read-ahead logic,
  • -
  • TCP performance improvements,
  • -
  • Initial UDP integration, and
  • -
  • IMisc. additions and cleanup (See the ChangeLog for a complete list of - changes).
  • +
  • TELNET front-end to NSH,
  • +
  • DHCPC server functionality, and
  • +
  • C5471 Ethernet driver.
+

- The level of network reliability is at an early beta release level. The + Numerous network related problems were fixed related to DHCPC, UDP + input processing, UDP broadcast, send timeouts, and bad compilation when + uIP is compiled at high levels of optimizatin. +

+ +

+ The level of network reliability is at a strong beta release level. The baseline functionality of NuttX continues to mature and remains at - post-beta. Open network-related issues include only: + post-beta or production level.

-
    -
  • Some minor unimplemented BSD socket functionality,
  • -
  • Thread safety issues: the same socket cannot be used concurrently on - different threads,
  • -
  • Pending design changes necessary to support multiple network interfaces, and
  • -
  • IPv6 support is incomplete.
  • -
+

- This release has been verified only on the Neuros OSD (DM320 ARM9) - platform using the DM90x0 driver. Any feedback for improving the network - reliability/performance would be greatly appreciated. + Parts of this release were verified only on the Neuros OSD (DM320 ARM9) + platform using the DM90x0 Ethernet driver and other parts on the Spectrum + Digital C5471 EVM using the C5471 Ethernet driver. Any feedback about bugs + or suggestions for mproving the network reliability/performance would be + greatly appreciated.

@@ -918,17 +916,7 @@ Other memory: using examples/udp * recvfrom() and accept() now correctly return the remote address. * Fixed computation error in ntohl(). - -
- - - -
- ChangeLog for Current Release -
- -
    0.3.3 2007-11-28 Gregory Nutt * Removed unused uIP files @@ -947,13 +935,13 @@ Other memory:
    - Unreleased Changes + ChangeLog for Current Release
      -0.3.4 2007-xx-xx Gregory Nutt +0.3.4 2007-12-10 Gregory Nutt * Added and partially verified DHCP server logic (netutils/dhcpd) * Fix BROADCAST=y compilation problems @@ -961,10 +949,22 @@ Other memory: * Correct processing of input UDP broadcast packets. * Verfied basic DHCP client functionality (netutils/dhcpc) * Implemented send() timeout logic - * Add TELNETD front end to NSH (examples/nsh) + * Added and verifed a TELNETD front end to NSH (examples/nsh) * Add a skeleton Ethernet device driver (drivers/net/skeleton.c) * Added C5471 Ethernet device driver (arch/arm/src/c5471/c5471_ethernet.c) - * Improved utilization of read-ahead buffers + * Found and fixed several problems in uIP when compiled for ARM with optimization. +
+ + + + + +
+ Unreleased Changes +
+ +
    +0.3.5 2007-xx-xx Gregory Nutt
diff --git a/nuttx/Documentation/NuttxPortingGuide.html b/nuttx/Documentation/NuttxPortingGuide.html index fe18ecba8..4f54d4cda 100644 --- a/nuttx/Documentation/NuttxPortingGuide.html +++ b/nuttx/Documentation/NuttxPortingGuide.html @@ -16,7 +16,7 @@

by

Gregory Nutt

-

Last Update: September 8, 2007

+

Last Update: December 10, 2007

Table of Contents

@@ -88,6 +88,7 @@
  • 4.2.4 irq_dispatch()
  • +
  • 5.0 NuttX File System
  • Appendix A: NuttX Configuration Settings

  • @@ -607,13 +608,8 @@

    2.6 fs

    - This directory contains the NuttX filesystem. - The NuttX filesystem is very simple; it does not involve any block drivers or - particular filesystem (like FAT or EXT2 etc.). - The NuttX filesystem simply supports a set a filesystem APIs - (open(), close(), read(), write, etc.) - and a registration mechanism that allows devices drivers to a associated with nodes - in a file-system-like name space. + This directory contains the NuttX file system. + This file system is described below.

    2.7 include

    @@ -1144,6 +1140,56 @@ The system can be re-made subsequently by just typing make. the appropriate, registered handling logic.

    +

    5.0 NuttX File System

    + +

    Overview. + NuttX includes an optional, scalable file system. + This file-system may be omitted altogther; NuttX does not depend on the presence + of any file system. +

    + +

    Pseudo Root File System. + Or, a simple in-memory, psuedo file system can be enabled. + This simple file system can be enabled setting the CONFIG_NFILE_DESCRIPTORS + option to a non-zero value (see Appendix A). + This is an in-memory file system because it does not require any + storage medium or block driver support. + Rather, file system contents are generated on-the-fly as referenced via + standard file system operations (open, close, read, write, etc.). + In this sense, the file system is psuedo file system (in the + same sense that the Linux /proc file system is also + referred to as a psuedo file system). +

    + +

    + Any user supplied data or logic can be accessed via the psuedo-file system. + Built in support is provided for character and block drivers in the + /dev psuedo file system directory. +

    + +

    Mounted File Systems + The simple in-memory file system can be extended my mounting block + devices that provide access to true file systems backed up via some + mass storage device. + NuttX supports the standard mount() command that allows + a block driver to be bound to a mountpoint within the psuedo file system + and to a a file system. + At present, NuttX supports only the VFAT file system. +

    + +

    Comparison to Linux + From a programming perspective, the NuttX file system appears very similar + to a Linux file system. + However, there is a fundamental difference: + The NuttX root file system is a psuedo file system and true file systems may be + mounted in the psuedo file system. + In the typical Linux installation by comparison, the Linux root file system + is a true file system and psuedo file systems may be mounted in the true, + root file system. + The approach selected by NuttX is intended to support greater scalability + from the very tiny platform to the moderate platform. +

    +

    Appendix A: NuttX Configuration Settings

    @@ -1209,7 +1255,7 @@ The system can be re-made subsequently by just typing make. CONFIG_DEBUG_NET: enable network debug output (disabled by default)

  • - CONFIG_DEBUG_FS: enable filesystem debug output (disabled by default) + CONFIG_DEBUG_FS: enable file system debug output (disabled by default)
  • CONFIG_DEBUG_LIB: enable C library debug output (disabled by default) diff --git a/nuttx/Documentation/NuttxUserGuide.html b/nuttx/Documentation/NuttxUserGuide.html index 8485f287c..9e63bb0b5 100644 --- a/nuttx/Documentation/NuttxUserGuide.html +++ b/nuttx/Documentation/NuttxUserGuide.html @@ -21,7 +21,7 @@ User's Manual

    Gregory Nutt

    -Last Update: September 23, 2007 +Last Update: December 10, 2007

    1.0 Introduction

    @@ -54,7 +54,7 @@ Gregory Nutt
  • Paragraph 2.8 Signal Interfaces
  • Paragraph 2.9 Pthread Interfaces
  • Paragraph 2.10 Environment Variables
  • -
  • Paragraph 2.11 Filesystem Interfaces
  • +
  • Paragraph 2.11 File System Interfaces
  • Paragraph 2.12 Network Interfaces
  • @@ -5687,11 +5687,58 @@ interface of the same name. Zero on success.

    -

    2.11 Filesystem Interfaces

    +

    2.11 File System Interfaces

    + +

    Overview. + NuttX includes an optional, scalable file system. + This file-system may be omitted altogther; NuttX does not depend on the presence + of any file system. +

    + +

    Pseudo Root File System. + Or, a simple in-memory, psuedo file system can be enabled. + This simple file system can be enabled setting the CONFIG_NFILE_DESCRIPTORS + option to a non-zero value. + This is an in-memory file system because it does not require any + storage medium or block driver support. + Rather, file system contents are generated on-the-fly as referenced via + standard file system operations (open, close, read, write, etc.). + In this sense, the file system is psuedo file system (in the + same sense that the Linux /proc file system is also + referred to as a psuedo file system). +

    +

    - The NuttX filesystem is very simple; it does not involve any block drivers or - particular filesystem (like FAT or EXT2 etc.). - The NuttX filesystem simply supports a set a filesystem APIs + Any user supplied data or logic can be accessed via the psuedo-file system. + Built in support is provided for character and block drivers in the + /dev psuedo file system directory. +

    + +

    Mounted File Systems + The simple in-memory file system can be extended my mounting block + devices that provide access to true file systems backed up via some + mass storage device. + NuttX supports the standard mount() command that allows + a block driver to be bound to a mountpoint within the psuedo file system + and to a a file system. + At present, NuttX supports only the VFAT file system. +

    + +

    Comparison to Linux + From a programming perspective, the NuttX file system appears very similar + to a Linux file system. + However, there is a fundamental difference: + The NuttX root file system is a psuedo file system and true file systems may be + mounted in the psuedo file system. + In the typical Linux installation by comparison, the Linux root file system + is a true file system and psuedo file systems may be mounted in the true, + root file system. + The approach selected by NuttX is intended to support greater scalability + from the very tiny platform to the moderate platform. +

    + +

    File System Interfaces. + The NuttX file system simply supports a set of standard, file system APIs (open(), close(), read(), write, etc.) and a registration mechanism that allows devices drivers to a associated with nodes in a file-system-like name space. @@ -6597,7 +6644,7 @@ notify a task when a message is available on a queue.

  • Directory operations
  • Driver operations
  • exit
  • -
  • Filesystem interfaces
  • +
  • File system interfaces
  • getpid
  • getsockopt
  • gmtime_r
  • diff --git a/nuttx/ReleaseNotes b/nuttx/ReleaseNotes index 0001c1378..5953aba2e 100644 --- a/nuttx/ReleaseNotes +++ b/nuttx/ReleaseNotes @@ -1,31 +1,29 @@ -nuttx-0.3.3 +nuttx-0.3.4 ^^^^^^^^^^^ -This is the 15th release of NuttX and the 4th release containing +This is the 16th release of NuttX and the 5th release containing the integration of a network subsystem and the uIP TCP/IP, UDP, and ICMP stacks into NuttX (see http://www.sics.se/~adam/uip/index.php/Main_Page). -Many network-related problems have been fixed and the implementation -has matured significantly. This release consists of: +This release is primarily a bug-fix release. New features include +only: -o TCP-related bug-fixes for disconnecting sockets -o Correction of some TCP read-ahead logic -o TCP performance improvements -o Misc. additions and cleanup (See the ChangeLog for a complete list of - changes). +o TELNET front-end to NSH, +o DHCPC server functionality, and +o C5471 Ethernet driver. -The level of network reliability is at an early beta release level. The +Numerous network related problems were fixed related to DHCPC, UDP +input processing, UDP broadcast, send timeouts, and bad compilation when +uIP is compiled at high levels of optimizatin. + +The level of network reliability is at a strong beta release level. The baseline functionality of NuttX continues to mature and remains at -post-beta. Open network-related issues include only: +post-beta or production level. -o Some minor unimplemented BSD socket functionality, -o Thread safety issues: the same socket cannot be used concurrently on - different threads. -o Pending design changes necessary to support multiple network interfaces. -o IPv6 support is incomplete. +Parts of this release were verified only on the Neuros OSD (DM320 ARM9) +platform using the DM90x0 Ethernet driver and other parts on the Spectrum +Digital C5471 EVM using the C5471 Ethernet driver. Any feedback about bugs +or suggestions for mproving the network reliability/performance would be +greatly appreciated. -This release has been verified only on the Neuros OSD (DM320 ARM9) -platform using the DM90x0 driver. Any feedback for improving the network -reliability/performance would be greatly appreciated. - -This tarball contains a complete CVS snapshot from November 28, 2007. +This tarball contains a complete CVS snapshot from December 10, 2007. diff --git a/nuttx/arch/arm/src/c5471/c5471_ethernet.c b/nuttx/arch/arm/src/c5471/c5471_ethernet.c index e957eb970..a36b51908 100644 --- a/nuttx/arch/arm/src/c5471/c5471_ethernet.c +++ b/nuttx/arch/arm/src/c5471/c5471_ethernet.c @@ -1082,7 +1082,7 @@ static void c5471_rxstatus(struct c5471_driver_s *c5471) { if (EIM_TXDESC_OWN_HOST & getreg32(desc)) { - /* The incoming packe queue is empty. */ + /* The incoming packet queue is empty. */ break; } @@ -1274,7 +1274,7 @@ static void c5471_receive(struct c5471_driver_s *c5471) /* Set amount of data in c5471->c_dev.d_len. */ dev->d_len = packetlen; - nvdbg("Received packet, packetlen: %d type: %02x\n", packetlen, BUF->type); + nvdbg("Received packet, packetlen: %d type: %02x\n", packetlen, ntohs(BUF->type)); c5471_dumpbuffer(dev->d_buf, dev->d_len); /* We only accept IP packets of the configured type and ARP packets */ @@ -1286,7 +1286,7 @@ static void c5471_receive(struct c5471_driver_s *c5471) #endif { uip_arp_ipin(); - uip_input(&c5471->c_dev); + uip_input(dev); /* If the above function invocation resulted in data that should be * sent out on the network, the field d_len will set to a value > 0. @@ -1294,16 +1294,16 @@ static void c5471_receive(struct c5471_driver_s *c5471) * access rights to submit another Ethernet frame. */ - if (c5471->c_dev.d_len > 0 && + if (dev->d_len > 0 && (EIM_TXDESC_OWN_HOST & getreg32(c5471->c_rxcpudesc)) == 0) { - uip_arp_out(&c5471->c_dev); + uip_arp_out(dev); c5471_transmit(c5471); } } - else if (BUF->type == htons(UIP_ETHTYPE_ARP)) + else if (BUF->type == HTONS(UIP_ETHTYPE_ARP)) { - uip_arp_arpin(&c5471->c_dev); + uip_arp_arpin(dev); /* If the above function invocation resulted in data that should be * sent out on the network, the field d_len will set to a value > 0. @@ -1311,7 +1311,7 @@ static void c5471_receive(struct c5471_driver_s *c5471) * access rights to submit another Ethernet frame. */ - if (c5471->c_dev.d_len > 0 && + if (dev->d_len > 0 && (EIM_TXDESC_OWN_HOST & getreg32(c5471->c_rxcpudesc)) == 0) { c5471_transmit(c5471); diff --git a/nuttx/examples/nettest/nettest.h b/nuttx/examples/nettest/nettest.h index 318211e79..4805c8f9a 100644 --- a/nuttx/examples/nettest/nettest.h +++ b/nuttx/examples/nettest/nettest.h @@ -69,15 +69,9 @@ # define errno *get_errno_ptr() - /* If debug is enabled, use the synchronous lib_lowprintf so that the - * program output does not get disassociated in the debug output. - */ + /* Used lib_rawprintf() so that there is not confusion from buffered IO */ -# ifdef CONFIG_DEBUG -# define message(...) lib_lowprintf(__VA_ARGS__) -# else -# define message(...) printf(__VA_ARGS__) -# endif +# define message(...) lib_rawprintf(__VA_ARGS__) /* At present, uIP does only abortive disconnects */