| NuttX-6.25 |
| ---------- |
| |
| The 92nd release of NuttX, Version 6.25, was made on February 1, 2013, |
| and is available for download from the SourceForge website. Note |
| that release consists of two tarballs: nuttx-6.25.tar.gz and |
| apps-6.25.tar.gz. Both may be needed (see the top-level nuttx/README.txt |
| file for build information). |
| |
| This release corresponds with SVN release number: r5595 |
| |
| Note that all SVN information has been stripped from the tarballs. If you |
| need the SVN configuration information, you should check out directly from |
| SVN. Revision r5595 should equivalent to release 6.25 of NuttX: |
| |
| svn checkout -r5595 svn://svn.code.sf.net/p/nuttx/code/trunk nuttx-code |
| |
| Or (HTTP): |
| |
| svn checkout -r5595 http://svn.code.sf.net/p/nuttx/code/trunk nuttx-code |
| |
| Additional new features and extended functionality: |
| |
| * OS Initialization |
| |
| - Removed support for CONFIG_BUILTIN_APP_START. This is not really a |
| useful feature and creates a violation of the OS layered |
| architecture. |
| |
| * Task Creation: |
| |
| - Implement a simple vfork(). In NuttX-6.25, this interface is |
| available only for ARM7/9, ARMv7-M (Cortext-M3/4), and MIPS32 |
| (PIC32MX) platforms. |
| - exec() now sets the priority of the new task to the same priority as |
| the parent task (instead of the arbitrary value of 50). |
| - New, partially compliant implementations of execv() and execl(). |
| These are only partially compliant because they do not overlay any |
| existing "process space" but rather create the new task and exit(). |
| - Add a complete implementation of posix_spawn(). This standard |
| interface is a better match for an MMU-less architecture than are |
| vfork() plus execv() or execl(). |
| - Add a task start hook that will be called before the task main |
| is started. This can be used, for example, to schedule C++ |
| static constructors to run automatically in the context of the |
| new task. |
| |
| * Task Parentage |
| |
| - Repartitioned tasking data structures. All shared resources are now |
| collected together in a "task group". A task group includes the |
| original task plus all of the pthreads created by the task. |
| - Added support for remember the parent "task group" when a new task is |
| started. |
| - Added optional support to record the membership of each thread in |
| the "task group". |
| - Implement support for retaining child task status in the "task group" |
| after the child task exists. This is behavior required by POSIX. |
| But in NuttX is only enabled with CONFIG_SCHED_HAVE_PARENT and |
| CONFIG_SCHED_CHILD_STATUS |
| - Add internal logic to "reparent" a task. This is useful, |
| for example, where the child task is created through a trampoline |
| task that redirects I/O. Reparenting allows the caller of posix_spawn() |
| to be reparented for the eventual child thread. |
| - Added support for SIGCHLD. Sent to all members of the parent task |
| group when the file member of the child task group exits. |
| - If SIGCHLD and retention of child task exist status are enabled, then |
| a more spec-compliant version of waitpid() is enabled. |
| - New interfaces waitid() and wait() are also enabled when SIGCHLD |
| is enabled. |
| |
| * File System |
| |
| - dup() and dup2() can new be used with opened files in a mounted file |
| system. This supports re-direction of output in NSH to files. |
| - The binfs file system was moved from apps/builtin to fs/binfs. The |
| binfs file system was extended to support execution of "builtin |
| applications" using exec(), execv(), execl(), or posix_spawn(). |
| - Added logic based on SIGCHLD to automatically unload and clean-up |
| after running a task that was loaded into memory. |
| |
| * Binary Formats |
| |
| - Much of the logic for "builtin applications" was moved from |
| apps/builtin to nuttx/binfmt/libbuiltin. Includes some extensions |
| contributed by Mike Smith. |
| - A binary loader was added for builtin applications to support |
| execution of "builtin applications" using exec(), execv(), |
| execl(), or posix_spawn(). |
| |
| * Drivers: |
| |
| - Added logic to marshal and serialized "out-of-band" keyboard |
| commands (such as cursor controls and key release events) intermixed |
| with normal ASCII keypress data. The encoding is partially integrated |
| in the HID keyboard driver and the decoding full integrated into the |
| apps/examples hidkbd and keypadtest (the latter contributed by Denis |
| Carlikli). |
| - Driver for the UG-2864HSWEG01 OLED contributed by Darcy Gong. |
| - Add support for removable serial devices (like USB serial). This |
| support is enabled by CONFIG_SERIAL_REMOVABLE. |
| |
| * ARMv7-M: |
| |
| - Added an option to use the BASEPRI register to disable interrupts |
| (instead of the PRIMASK). This eliminates some innocuous hardfaults |
| that interfere with some debug tools. You need to switch to the |
| BASEPRI method only if you have such tool interference. |
| |
| * STM32 Drivers |
| |
| - Bring STM32 F1 DMA capabilities up to par with the STM32 F2/F4 |
| (contributed by Mike Smith). |
| - Add support for USART single wire mode (Contributed by the PX4 |
| team). |
| - Updates to support for SPI DMA on the STM32 F1/F2/F4. From |
| Petteri Aimonen. |
| |
| * STM32 Boards: |
| |
| - New configuration to support the UG-2864HSWEG01 OLED on the |
| STM32F4Discovery board. |
| - Added a posix_spawn() test configuration for the STM32F4Discovery. |
| |
| * LM3S/LM4F |
| |
| - Files and directories repartitioned to support both LM3S and LM4F |
| using the STM32 organization as a model. |
| - Partial definitions for the LM4F contributed by Jose Pablo Carballo |
| (this is still a work in progress). |
| |
| * LM3S Boards |
| |
| - Added scripts and documentation to use OpenOCD with the LM3S (from |
| Jose Pablo Carballo). |
| |
| * LPC176x/LPC178x |
| |
| - Files and directories repartitioned to support both LPC175x/LPC176x |
| and the LPC177x/LPC178x families using the STM32 organization as a |
| model. The LPC1788 port is a work in progress by Rommel Marcelo. |
| |
| * LPC176x/LPC178x Boards: |
| |
| - Added a configuration to support the Wave Share Open1788 board. |
| This is still a work in progress by Rommel Marcelo. |
| |
| * LPC2148 Boards: |
| |
| - Add basic support for the The0.net ZP213x/4xPA board (with the LPC2148 |
| and the UG_2864AMBAG01 OLED). |
| - Add an nxlines configuration for the ZP213x/4xPA (with the LPC2148 |
| and the UG_2864AMBAG01). |
| |
| * Simulator: |
| |
| - Add an nxlines configuration for the simulator. |
| |
| * Networking: |
| |
| - Add logic to work around delayed ACKs by splitting packets |
| (contributed by Yan T.). |
| - Split net_poll() to create the internal interface psock_poll(). |
| |
| * LCDs: |
| |
| - Added support for LCD1602 alphanumeric LCD (HD4468OU controller). |
| |
| * Graphics: |
| |
| - Added 5x8 monospace font. This tiny font is useful for graph |
| labels and for small bitmapped display. Contributed by Petteri |
| Aimonen. |
| |
| * Build System: |
| |
| - Add an options to better manage toolchain prefixes. |
| - Redesigned how the context target works in the apps/ directory. |
| The old design caused lots of problems when changing configurations |
| because there is no easy way to get the system to rebuild the |
| context. This change should solve most the problems and eliminate |
| questions like "Why don't I see my builtin application in NSH?" |
| |
| * Kconfig Files: |
| |
| - There are several new configurations that use the kconfig-frontends |
| tools and several older configurations that have been converted to |
| use these tools. There is still a long way to go before the conversion |
| is complete: |
| |
| configs/sim/nxwm |
| configs/sim/nsh |
| configs/stm3220g-eval/nxwm |
| configs/stm32f4discovery/posix_spawn |
| configs/olimex-lpc1766stk/nsh |
| configs/olimex-lpc1766stk/hidkbd |
| configs/olimex-lpc1766stk/nettest |
| configs/open1788/ostest |
| configs/stm32f4discovery/nsh |
| configs/stm32f4discovery/usbnsh |
| configs/lm326965-ek (all configurations) |
| configs/mcu123-214x/nsh |
| configs/ubw32/ostest |
| |
| * Tools: |
| |
| - tools/kconfig.bat: Kludge to run kconfig-frontends from a DOS shell. |
| - tools/configure.c: configure.c 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). |
| - tools/configure.bat: 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. |
| |
| * Applications: |
| |
| - New and modified examples: |
| |
| apps/examples/wlan: Remove non-functional example. |
| apps/examples/ostest: Added a test of vfork(). Extend signal |
| handler test to catch death-of-child signals (SIGCHLD). Add a |
| test for waitpid(), waitid(), and wait(). |
| apps/exampes/posix_spawn: Added a test of posix_spawn(). |
| |
| - NSH: |
| |
| NSH now supports re-direction of I/O to files (but still not from). |
| The block driver source argument to the mount command is now |
| optional for file systems that do not require a block driver. |
| NSH can now execute a program from a file system using posix_spawn(). |
| Added support for a login script. The init.d/rcS script will be |
| executed once when NSH starts; the .nshrc script will be executed |
| for each session: Once for serial, once for each USB connection, |
| once for each Telnet session. |
| |
| - Supports a new daemon that can be used to monitor USB trace outpout. |
| - Removed non-functional wlan example. |
| |
| Bugfixes (see the ChangeLog for details). Some of these are very important: |
| |
| * Tasking: |
| |
| - Fixed a *critical* task exit bug. Here is the failure scenario: |
| (1) sched_lock() is called increments the lockcount on the current |
| TCB (i.e., the one at the head of the ready to run list), (2) |
| sched_mergepending is called which may change the task at the head |
| of the ready-to-run list, then (3) sched_unlock() is called which |
| decrements the lockcount on the wrong TCB. The failure case that |
| I saw was that pre-emption got disabled in the IDLE thread, locking |
| up the whole system. |
| |
| * Signals: |
| |
| - sigtimedwait() would return a bad signal number if the signal was |
| already pending when the function was called. |
| |
| * Drivers: |
| |
| - Some SD cards will appear busy until switched to SPI mode for |
| first time. Having a pull-up resistor on MISO may avoid this |
| problem, but this fix from Petteri Aimonen makes it work also |
| without pull-up. |
| |
| * STM32 Drivers: |
| |
| - STM32 FLASH driver counting error (from Freddie Chopin). |
| - STM32 F4 maximum SPI frequency was wrong (corrected by Petteri |
| Aimonen). |
| |
| * STM32 Boards |
| |
| - Due to cloning of untested code, the logic to control on-board |
| LEDs did not work on any STM32 boards. |
| - Serial devices number /dev/ttyS0-5 is there is a serial console, |
| but /dev/ttyS1-6 if there is no serial console. |
| |
| * Binary Formats |
| |
| - C++ static constructors execute now using a start taskhook |
| so that they execute in the context of the child task (instead |
| of in the context of the parent task). |
| |
| * File Systems: |
| |
| - Several FAT-related bugs fixed by Petteri Aimonen. |
| |
| * Networking: |
| |
| - Fix poll/select issure reported by Qiang: poll_interrupt() must call |
| net_lostconnection() when a loss of connection is reported. Otherwise, |
| the system will not remember that the connection has been lost and will |
| hang waiting on a unconnected socket later. |
| - Similar issues corrected for recvfrom() and send(). |
| - Telnetd would hang in a loop if recv() ever returned a value <= 0. |
| |
| * Libraries: |
| |
| - fread() could hang on certain error conditions. |
| - Can't handle SYSLOG output to a character device from the IDLE task |
| (because the IDLE task can't block). |
| |
| * Build System: |
| |
| - Serial was driver was not being built if there is no console |
| device. Obviously, the serial driver may be needed even in |
| this case. |
| |
| * Additional Bugfixes: |
| |
| - sig_timedwait() and clock_time2ticks.c: Timing "rounding" logic |
| - ARM9 Compilation issue with low vectors. |
| - readline() return value |
| - Others as detailed in the ChangeLog: HID keyboard, LPC17xx bit |
| definitions, strndup(), PL2303, SYSLOG error handling, AT25, |
| apps/examples. |