diff options
Diffstat (limited to 'nuttx')
-rw-r--r-- | nuttx/ChangeLog | 10 | ||||
-rw-r--r-- | nuttx/Documentation/NuttX.html | 1183 | ||||
-rw-r--r-- | nuttx/ReleaseNotes | 240 | ||||
-rw-r--r-- | nuttx/libc/stdio/lib_sscanf.c | 5 |
4 files changed, 728 insertions, 710 deletions
diff --git a/nuttx/ChangeLog b/nuttx/ChangeLog index 9cb94e79e..ae585ae33 100644 --- a/nuttx/ChangeLog +++ b/nuttx/ChangeLog @@ -4096,7 +4096,7 @@ STM32F4. Includes untested additions for the F1 implementation as well. From Petteri Aimonen. -6.26 2013-xx-xx Gregory Nutt <gnutt@nuttx.org> +6.26 2013-03-15 Gregory Nutt <gnutt@nuttx.org> * drivers/serial/serial.c: Correct some race conditions when checking for disconnection of a removable serial device. @@ -4175,7 +4175,7 @@ example "+-" would look weird. From Petteri Aimonen. * mm/mm_mallinfo.c: Take MM semaphore in mm_mallinfo. From Petteri Aimonen. - * configs/stm32f3discovery/nsh/defconfig: Disable SPI. It is nto + * configs/stm32f3discovery/nsh/defconfig: Disable SPI. It is not used. * drivers/mtd/sst39vf: Add a driver for the SST29VF NOR FLASH parts. * sched/os_start.c: Add an additional call-out to support board- @@ -4233,7 +4233,7 @@ * arch/arm/src/stm32f20xxx_dma.c and stm32f40xxx_dma.c: Fix a typo in assigned base register addresses for each DMA channel. From Yan T. - * Several build fixes from Mike Smithe were incorporated. These were + * Several build fixes from Mike Smith were incorporated. These were mostly compilation errors introduced into the system because of the large number of recent changes with broad scope (2013-03-04). * configs/zkit-arm-17969/src/up_can.c: Add CAN support to the @@ -4329,4 +4329,6 @@ heap in the flat build. But not in the kernel build: The base of the heap is elsewhere so the naming was wrong. (2013-03-13). * libc/stdlib/lib_itoa.c: Implementation of itoa() contributed by - Ryan Sundberg. (2013-03-14).
\ No newline at end of file + Ryan Sundberg. (2013-03-14). + +6.27 2013-xx-xx Gregory Nutt <gnutt@nuttx.org> diff --git a/nuttx/Documentation/NuttX.html b/nuttx/Documentation/NuttX.html index 3d3782ab6..d7b797e83 100644 --- a/nuttx/Documentation/NuttX.html +++ b/nuttx/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: March 4, 2013</p> + <p>Last Updated: March 15, 2013</p> </td> </tr> </table> @@ -1064,30 +1064,29 @@ </tr> </table> -<h2>nuttx-6.25 Release Notes</h2> +<h2>NuttX-6.26 Release Notes</h2> <p> - The 92<sup>nd</sup> release of NuttX, Version 6.25, was made on February 1, 2013, and is available for download from the + The 93<sup>rd</sup> release of NuttX, Version 6.26, was made on March 15, 2013, and is available for download from the <a href="http://sourceforge.net/projects/nuttx/files/">SourceForge</a> website. - Note that the release consists of two tarballs: <code>nuttx-6.25.tar.gz</code> and <code>apps-6.25.tar.gz</code>. + Note that the release consists of two tarballs: <code>nuttx-6.26.tar.gz</code> and <code>apps-6.26.tar.gz</code>. Both may be needed (see the top-level <code>nuttx/README.txt</code> file for build information) The change log associated with the release is available <a href="#currentrelease">here</a>. Unreleased changes after this release are available in SVN. These unreleased changes are also listed <a href="#pendingchanges">here</a>. </p> <p> - This release corresponds with SVN release number: r5595, + This release corresponds with SVN release number: r5745, Note that all SVN information has been stripped from the tarballs. If you need the SVN configuration, you should check out directly from SVN. - Revision r5595 should equivalent to release 6.25 of NuttX: + Revision r5745 should equivalent to release 6.26 of NuttX: </p> <ul><pre> -svn checkout -r5595 svn://svn.code.sf.net/p/nuttx/code/trunk nuttx-code +svn checkout -r5745 svn://svn.code.sf.net/p/nuttx/code/trunk nuttx-code </pre></ul> <p>Or (HTTP):</p> <ul><pre> -svn checkout -r5595 http://svn.code.sf.net/p/nuttx/code/trunk nuttx-code +svn checkout -r5745 http://svn.code.sf.net/p/nuttx/code/trunk nuttx-code </pre></ul> - <p> <b>Additional new features and extended functionality</b> </p> @@ -1098,407 +1097,308 @@ svn checkout -r5595 http://svn.code.sf.net/p/nuttx/code/trunk nuttx-code </p> <ul> <li> - Removed support for <code>CONFIG_BUILTIN_APP_START</code>. - This is not really a useful feature and creates a violation of the OS layered architecture. + Add an additional call-out to support board-specific driver initialization during the boot-up phase (available with <code>CONFIG_BOARD_INITIALIZE=y</code>). </ul> </li> <li> <p> - <b>Task Creation</b> + <b>Tasking</b> </p> <ul> <li> - Implement a simple <code>vfork()</code>). - In NuttX-6.25, this interface is available only for ARM7/9, ARMv7-M (Cortext-M3/4), and MIPS32 (PIC32MX) platforms. - </li> - <li> - <code>exec()</code> now sets the priority of the new task to the same priority as the parent task (instead of the arbirtrary value of 50). - </li> - <li> - New, partially complient implementations of <code>execv()</code> and <code>execl()</code>. - These are only partially compliant because they do not overlay any existing "process space" but rather create the new task and <code>exit()</code>. + New interface <code>task_spawn()</code> that is like <code>posix_spawn()</code>, but uses entry point addresses like <code>ask_create()</code>. </li> <li> - Add a complete implementation of <code>posix_spawn()</code>. - This standard interface is a better match for an MMU-less architecture than are <code>vfork()</code>) plus <code>execv()</code> or <code>execl()</code>. + Additional data restructuring as a continuation of the <i>task group</i> changes of NuttX 6.25. + These data structures were moved from the TCB structure into the task group: + pthread join data, <code>atexit</code>/<code>on_exit</code> callbacks, <code>waitpid</code>data structures, message queues. </li> <li> - Add a task start hook that will be called before the task main executes. - This can be used, for example, to schedule C++ static constructors to run automatically in the context of the new task. + TCBs for tasks and pthreads are now separate structures. + This saves a little memory since tasks do not have to carry the overhead for threads and vice versa. </li> </ul> </li> <li> <p> - <b>Task Parentage</b> + <b>Kernel Build</b> </p> <ul> <li> - Repartitioned tasking data structures. - All shared resources are now collected together in a "task group". - A "task group" includes the resource for the original task that are shared with all of the <code>pthreads</code> created by the task. + Extensive changes were made to support the kernel build mode. + In this mode, NuttX is built as a monolithic kernel. + NuttX is built as a separate kernel mode "blob" and the applications are built as a separate user mode "blob". + The kernel runs in kernel mode and the applications run in user mode (with the MPU restricting user + mode accesses). + Access to the kernel from the user blob is only via system calls (<i>SVCalls</i>). </li> <li> - Added support for remember the parent "task group" when a new task is started. + Extensive changes were made to the syscall, SVCall, and trapping logic. + Many internal interfaces were renamed. </li> <li> - Added optional support to record the membership of each thread in the "task group". + The memory manager was extended to support both kernel- and user-mode allocations. + Logic within the kernel needs to use the correct kernel- or user-space allocator, depending upon the user of the allocated memory. </li> <li> - 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 <code>CONFIG_SCHED_HAVE_PARENT</code> and <code>CONFIG_SCHED_CHILD_STATUS</code>. + The user-space blob now contains a header built in at the beginning of the block that provides the same information that was previously provided by a kludgy, auto-generated header file (<code>user_map.h</code>). </li> <li> - 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 <code>posix_spawn()</code> to be reparented for the eventual child thread. + Basic support implemented for the ARMv7-M family with fragments also implemetned for the ARMv6-M and MIPS32 families. </li> <li> - Added support for <code>SIGCHLD</code>. - Sent to all members of the parent "task group" when the finall member of the child task group exits. - </li> - <li> - If <code>SIGCHLD</code> and retention of child task exist status are enabled, then a more spec-compliant version of <code>waitpid()</code> is enabled. + Kernel build supported added for the LPC17xx Open1788 and for the Atmel SAM3U-EK board. + All testing is being performed on the Open1788 board. </li> + </ul> + </li> + <li> + <p> + <b>Signals</b> + </p> + <ul> <li> - New interfaces <code>waitid()</code> and <code>wait()</code> are also enabled when <code>SIGCHLD</code> is enabled. + Delivery of signals to threads within a task group is now compatible with the way that signals are delivered to threads within a process. </li> </ul> </li> <li> <p> - <b>File System</b> + <b>Drivers</b> </p> <ul> <li> - <code>dup()</code> and <code>dup2()</code> can new be used with opened files in a mounted file system. - This supports re-direction of output in NSH to files. + Add a driver for the SST29VF NOR FLASH parts. </li> <li> - The <code>binfs</code> file system was moved from <code>apps/builtin</code> to <code>fs/binfs</code>. - The <code>binfs</code> file system was extended to support execution of "builtin applications" using <code>exec()</code>, <code>execv()</code>, <code>execl()</code>, or <code>posix_spawn()</code>. + USB device trace/debug feature extended to decode device-specific trace events to make the trace output more readable (from Petteri Aimonen). </li> <li> - Added logic based on <code>SIGCHLD</code> to automatically unload and clean-up after running a task that was loaded into memory. + USB MSC device driver can not support names of differing sizes in the USB descriptor and the SCSI fields (from Petteri Aimonen). + </li> + <li> + Locking added to MMC/SD SPI drivers so that MMC/SD can co-exist on the same bus as other SPI devices. + Frequency is reset each time that the MMC/SD SPI has the bus locked. (from Petteri Aimonen). </li> </ul> </li> <li> <p> - <b>Binary Formats</b> + <b>ARMv6-M (Cortex-M0)</b> </p> <ul> <li> - Much of the logic for "builtin applications" was moved from <code>apps/builtin</code> to <code>nuttx/binfmt/libbuiltin</code>. - Includes some extensions contributed by Mike Smith. - </li> - <li> - A binary loader was added for builtin applications to support execution of "builtin applications" using <code>exec()</code>, <code>execv()</code>, <code>execl()</code>, or <code>posix_spawn()</code>. + Added support for the ARM Cortex-M0 family. </li> </ul> </li> <li> <p> - <b>Drivers</b> + <b>nuvoTon NUC120</b> </p> <ul> <li> - 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 is fully integrated into the <code>apps/examples</code> <code>hidkbd/</code> and <code>keypadtest/</code> (the latter contributed by Denis Carlikli). - </li> - <li> - Driver for the UG-2864HSWEG01 OLED contributed by Darcy Gong. - </li> - <li> - Add support for removable serial devices (like USB serial). - This support is enabled by <code>CONFIG_SERIAL_REMOVABLE</code>. + Added support for the nuvoTon NUC120 MCU (Cortex-M0). </li> </ul> </li> <li> <p> - <b>ARMv7-M</b> + <b>nuvoTon NUC120 Boards</b> </p> <ul> <li> - Added an option to use the <code>BASEPRI</code> register to disable interrupts (instead of the <code>PRIMASK</code> register). - This eliminates some innocuous hardfaults that interfere with some debug tools. - You need to switch to the <code>BASEPRI</code> method only if you have such tool interference. + Added basic support for the nuvoTon NuTiny-SDK-NUC120 board (Cortex-M0). </li> </ul> </li> <li> <p> - <b>STM32 Drivers</b> + <b>LPC17xx</b> </p> <ul> <li> - Bring STM32 F1 DMA capabilities up to par with the STM32 F2/F4 (contributed by Mike Smith). - </li> - <li> - Add support for USART single wire mode (Contributed by the PX4 team). - </li> - <li> - Updates to support for SPI DMA on the STM32 F1/F2/F4. - From Petteri Aimonen. + Added support for the LPC177x and LPC178x families. + Most of this is the work of Rommel Marcelo. </li> </ul> </li> <li> <p> - <b>STM32 Boards</b> + <b>LPC17xx Boards</b> </p> <ul> <li> - New configuration to support the UG-2864HSWEG01 OLED on the STM32F4Discovery board. + Added support for Zilogic System's ARM development Kit, ZKIT-ARM-1769. + From Rashid. </li> <li> - Added a <code>posix_spawn()</code> test configuration for the STM32F4Discovery. + The port for the WaveShare Open1788 board is now functional. + Basic OS test and NuttShell (NSH) configurations are functional. + More driver development and testing is needed (from Rommel Marcelo). </li> </ul> </li> <li> <p> - <b>LM3S/LM4F</b> + <b>LPC17xx Drivers</b> </p> <ul> <li> - Files and directories repartitioned to support both LM3S and LM4F using the STM32 organization as a model. - </li> - <li> - Partial definitions for the LM4F contributed by Jose Pablo Carballo (this is still a work in progress). + Added an SD card MSI driver for the LPC178x. + The driver is marginally functional but requires DMA capability to be reliable. </li> </ul> </li> <li> <p> - <b>LM3S Boards</b> + <b>STM32</b> </p> <ul> <li> - Added scripts and documentation to use OpenOCD with the LM3S (from Jose Pablo Carballo). + Support extended to handle the STM32 F3 family (Cortex-M4 with F1-like peripherals). </li> </ul> </li> <li> <p> - <b>LPC176x/LPC178x</b> + <b>STM32 Boards</b> </p> <ul> <li> - 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. + Added support the STMicro STM32F3Discovery board (STM32 F3). </li> </ul> </li> <li> <p> - <b>LPC176x/LPC178x Boards</b> + <b>Stellaris LM3S/LM4F</b> </p> <ul> <li> - Added a configuration to support the Wave Share Open1788 board. - This is still a work in progress by Rommel Marcelo. + Basic support for the LM4F120 family is in place, but untested (mostly from Jose Pablo Carballo). </li> </ul> </li> <li> <p> - <b>LPC2148 Boards</b> + <b>Stellaris LM4F Boards</b> </p> <ul> <li> - Add basic support for the The0.net ZP213x/4xPA board (with the LPC2148 and the UG_2864AMBAG01 OLED). + Add support for the LM4F120 LaunchPad (untested). </li> - <li> - Add an nxlines configuration for the ZP213x/4xPA (with the LPC2148 and the UG_2864AMBAG01). - </li> </ul> </li> <li> <p> - <b>Simulator</b> + <b>Networking</b> </p> <ul> <li> - Add an nxlines configuration for the simulator. + <code>select()</code> should now allocate a little less memory. </li> </ul> </li> <li> <p> - <b>Networking</b> + <b>Memory Management</b> </p> <ul> <li> - Add logic to work around delayed ACKs by splitting packets (contributed by Yan T.). + Extended to support multiple heaps. + This is used as part of the kernel build in order to support separater user- and kernel-mode heaps. </li> <li> - Split <code>net_poll()</code> to create the internal interface <code>psock_poll()</code>. + The stand-alone memory manger test had to be removed. + It was too entangled and made extension of the memory manager nearly impossible. + This is a loss. </li> </ul> </li> <li> <p> - <b>LCDs</b> + <b>Build System</b> </p> <ul> <li> - Added support for LCD1602 alphanumeric LCD (HD4468OU controller). + Several configurations converted to use the <i>kconfig-frontends</i> configuration tool. + There are still many more that need to be converted. </li> </ul> </li> <li> <p> - <b>Graphics</b> + <b>C Library</b> </p> <ul> <li> - Added 5x8 monospace font. - This tiny font is useful for graph labels and for small bitmapped display. - Contributed by Petteri Aimonen. + Move the workqueue logic into the C library. + There is now a special user-space version of the work queue (which will only be used with a NuttX kernel build). + </li> + <li> + Implementation of <code>itoa()</code> contributed by Ryan Sundberg. </li> </ul> </li> <li> <p> - <b>Build System</b> + <b>Applications</b> </p> <ul> <li> - Add an options to better manage toolchain prefixes. + The NSH builtin task logic now uses <code>task_spawn()</code> to start builtin applications. </li> <li> - Redesigned how the context targer works in the <code>apps/</code> 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?" + The OS test now includes a test cased to verify <code>task_restart()</code>. </li> </ul> </li> +</ul> +<p> + <b>Efforts In Progress</b>. + The following are features that are partially implemented but present in this release. + Most are expected to be fully available in NuttX 6.27. +</p> +<ul> <li> <p> - <b>Kconfig Files</b> + <b>LM4F120 LaunchPad port</b> </p> <ul> <li> - <p> - 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: - </p> - <ul> - <li> - <code>configs/sim/nxwm</code> - </li> - <li> - <code>configs/sim/nsh</code> - </li> - <li> - <code>configs/stm3220g-eval/nxwm</code> - </li> - <li> - <code>configs/stm32f4discovery/posix_spawn</code> - </li> - <li> - <code>configs/olimex-lpc1766stk/nsh</code> - </li> - <li> - <code>configs/olimex-lpc1766stk/hidkbd</code> - </li> - <li> - <code>configs/olimex-lpc1766stk/nettest</code> - </li> - <li> - <code>configs/open1788/ostest</code> - </li> - <li> - <code>configs/stm32f4discovery/nsh</code> - </li> - <li> - <code>configs/stm32f4discovery/usbnsh</code> - </li> - <li> - <code>configs/lm326965-ek</code> (all configurations) - </li> - <li> - <code>configs/mcu123-214x/nsh</code> - </li> - <li> - <code>configs/ubw32/ostest</code> - </li> - </ul> + Code is in place, but nothing has been tested. </li> </ul> </li> <li> <p> - <b>Tools</b> + <b>WaveShare Open1788 port</b> </p> <ul> <li> - <code>tools/kconfig.bat</code>: Kludge to run kconfig-frontends from a DOS shell. - </li> - <li> - <code>tools/configure.c</code>: <code>configure.c</code> can be used to build a work-alike program as a replacement for <code>configure.sh</code>. - This work-alike program would be used in environments that do not support Bash scripting (such as the Windows native environment). - </li> - <li> - <code>tools/configure.bat</code>: <code>configure.bat</code> is a small Windows batch file that can be used as a replacement for <code>configure.sh</code> in a Windows native environment. - <code>configure.bat</code> is actually just a thin layer that executes <code>configure.exe</code> if it is available. - If <code>configure.exe</code> is not available, then configure.bat will attempt to build it first (assumes the MinGW-GCC is available). + This port as actually complete and functional. + However, there is still ongoing development and testing of drivers. </li> </ul> </li> <li> <p> - <b>Applications</b> + <b>Kernel Build</b> </p> <ul> <li> - New and modified examples: - <p> - <ul> - <li> - <code>apps/examples/wlan</code>: Remove non-functional example. - </li> - <li> - <code>apps/examples/ostest</code>: Added a test of <code>vfork()</code>). - Extend signal handler test to catch death-of-child signals (<code>SIGCHLD</code>). - Add a test for <code>waitpid()</code>, <code>waitid()</code>, and <code>wait()</code>. - </li> - <li> - <code>apps/exampes/posix_spawn</code>: Added a test of <code>posix_spawn()</code>. - </li> - </ul> - <p> - </li> - <li> - NSH: - <p> - <ul> - <li> - NSH now supports re-direction of I/O to files (but still not from). - </li> - <li> - The block driver source argument to the mount command is now optional for file systems that do not require a block driver. - </li> - </ul> - </p> - </li> - <li> - NSH can now execute a program from a file system using <code>posix_spawn()</code>. - </li> - <li> - Added support for a login script. - The <code>init.d/rcS</code> script will be executed once when NSH starts; - the <code>.nshrc</code> script will be executed for each session: - Once for a serial console, once for each USB connection, and once for each Telnet session. - </li> - <li> - Supports a new daemon that can be used to monitor USB trace outpout. + Much progress has been made, but there kernel build is not yet fully functional due to several user resources that are not yet properly disentangled from the kernel blob. </li> + </ul> + </li> + <li> + <p> + <b><i>kconfig-frontends</i></b> + </p> + <ul> <li> - Removed non-functional <code>wlan</code> example. + Conversion of old configurations to use the <i>kconfig-frontends</i> tool is an ongoing effort that will continue for some time. </li> </ul> </li> @@ -1514,79 +1414,63 @@ svn checkout -r5595 http://svn.code.sf.net/p/nuttx/code/trunk nuttx-code </p> <ul> <li> - Fixed a *critical* task exit bug. - Here is the failure scenario: - (1) <code>sched_lock()</code> is called increments the lockcount on the current TCB (i.e., the one at the head of the ready to run list), - (2) <code>sched_mergepending()</code> is called which may change the task at the head of the ready-to-run list, then - (3) <code>sched_unlock()</code> 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. + The wrong PID was being signalled with <code>SIGCHILD</code>. + It should be the PID of the task that create the task group, not the ID of the last thread to leave the task group. </li> - </ul> - </li> - <li> - <p> - <b>Signals</b> - </p> - <ul> <li> - <code>sigtimedwait()</code> would return a bad signal number if the signal was already pending when the function was called. + Added logic so that some internal resources and states are recovered when tasks are deleted or restarted. + Handle cases where there are outstanding timed events pending when tasks are deleted or restarted. </li> </ul> </li> <li> <p> - <b>Drivers</b> + <b>ARMv7-M</b> </p> <ul> <li> - 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. + Several fixes to the MPU control logic. </li> </ul> </li> <li> <p> - <b>STM32 Drivers</b> + <b>Drivers</b> </p> <ul> <li> - STM32 FLASH driver counting error (from Freddie Chopin). + Removable serial drivers race conditions fixed. </li> <li> - STM32 F4 maximum SPI frequency was wrong (corrected by Petteri Aimonen). + MAX11802 timing bug (from Petteri Aimonen). </li> </ul> </li> <li> <p> - <b>STM32 Boards</b> + <b>STM32 Drivers</b> </p> <ul> <li> - Due to cloning of untested code, the logic to control on-board LEDs did not work on any STM32 boards. + Handle cases were SPI DMA logic fails if <code>sem_wait()</code> is awakened by a signal. + Need to clear error flags to prevent corruption of subsequent transfers. + Also, bit count should not be changed while the SPI peripheral is enabled (from Petteri Aimonen). </li> <li> - Serial devices number <code>/dev/ttyS0-5</code> is there is a serial console, but <code>/dev/ttyS1-6</code> if there is no serial console. + Fixes to the OTG FS device driver from Petteri Aimonen. </li> - </ul> - </li> - <li> - <p> - <b>Binary Formats</b> - </p> - <ul> <li> - 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). + Fix typos in DMA register header file (from Yan T.) </li> </ul> </li> <li> <p> - <b>File Systems</b> + <b>Graphics</b> </p> <ul> <li> - Several FAT-related bugs fixed by Petteri Aimonen. + Correction to the hyphen in the SANS 17x22 font (from Petteri Aimonen). </li> </ul> </li> @@ -1596,27 +1480,19 @@ svn checkout -r5595 http://svn.code.sf.net/p/nuttx/code/trunk nuttx-code </p> <ul> <li> - Fix poll/select issure reported by Qiang: <code>poll_interrupt()</code> must call <code>net_lostconnection()</code> 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. - </li> - <li> - Similar issues corrected for <code>recvfrom()</code> and <code>send()</code>. - </li> - <li> - Telnetd would hang in a loop if <code>recv()</code> ever returned a value <= 0. + Corrected errors in the socket <code>poll</code>/<code>select</code> logic. Additional + state logic was needed to detect if the socket is still connected + before starting the poll wait. (bug reported by Qiang Yu). </li> </ul> </li> <li> <p> - <b>Libraries</b> + <b>Memory Management</b> </p> <ul> <li> - <code>fread()</code> could hang on certain error conditions. - </li> - <li> - Can't handle <code>SYSLOG</code> output to a character device from the IDLE task (because the IDLE task can't block). + <code>mallinfo()</code> should hold the memory manager semaphore (from Petteri Aimonen. </li> </ul> </li> @@ -1626,27 +1502,24 @@ svn checkout -r5595 http://svn.code.sf.net/p/nuttx/code/trunk nuttx-code </p> <ul> <li> - Serial was driver was not being built if there is no console device. - Obviously, the serial driver may be needed even in this case. + Resolved several build errors reported by Mike Smith. </li> </ul> </li> <li> <p> - <b>Additional Bugfixes</b> + <b>Applications</b> </p> <ul> <li> - <code>sig_timedwait()</code> and <code>clock_time2ticks.c</code>: Timing "rounding" logic - </li> - <li> - ARM9 Compilation issue with low vectors. - </li> - <li> - <code>readline()</code> return value + Fixed an NSH memory leak: + Needed to detach after creating each pthread. </li> <li> - As well as other, less critical bugs as detailed in the ChangeLog: HID keyboard, LPC17xx bit definitions, strndup(), PL2303, SYSLOG error handling, AT25, <code>apps/examples</code>. + <code>readline()</code> now returns <code>EOF</code> on any failure (instead of a negated <code>errno</code> value). + This is because the underlying read is based on logic similar to <code>getc</code>. + The value zero (meaning end-of-file) was being confused with a NUL. + So if a NUL was received, the NSH session would terminate because it thought it was the end of file. </li> </ul> </li> @@ -1680,7 +1553,7 @@ svn checkout -r5595 http://svn.code.sf.net/p/nuttx/code/trunk nuttx-code <li><a href="#arm926ejs">ARM926EJS</a> (3) </li> <li><a href="#armcortexm0">ARM Cortex-M0</a> (1)</li> <li><a href="#armcortexm3">ARM Cortex-M3</a> (17)</li> - <li><a href="#armcortexm4">ARM Cortex-M4</a> (6)</li> + <li><a href="#armcortexm4">ARM Cortex-M4</a> (7)</li> </ul> <li>Atmel AVR <ul> @@ -2546,7 +2419,7 @@ nsh> <b>STATUS:</b> This is still a work in progess. At present there is a working basic port with OS verification and Nuttshell (<a href="http://www.nuttx.org/Documentation/NuttShell.html">NSH</a>) configurations. - This is stablilizing nicely now and the next steps will involve getting solid LCD support on the WaveShare board. + This is stablilizing nicely now and the next steps will involve getting solid driver support for the SD slot and the LCD on the WaveShare board. </ul> </td> </tr> @@ -2753,6 +2626,27 @@ nsh> <tr> <td><br></td> <td> + <p> + <b>TI Stellaris LM4F120</b>. + This port uses the TI Stellaris LM4F120 LaunchPad. + Jose Pablo Carballo is doing this port. + </p> + <ul> + <p> + <b>STATUS:</b> + As of this writing, the basic port is code complete but still untested. + The fully verified LM4F120 LaunchPad port is expected in NuttX-6.27. + </p> + </ul> + </td> +</tr> +<tr> + <td><br></td> + <td><hr></td> +</tr> +<tr> + <td><br></td> + <td> <p> <b>Development Environments:</b> 1) Linux with native Linux GNU toolchain, 2) Cygwin/MSYS with Cygwin GNU Cortex-M3 or 4 toolchain, 3) Cygwin/MSYS with Windows native GNU Cortex-M3 or M4 toolchain (CodeSourcery or devkitARM), or 4) Native Windows. A DIY toolchain for Linux or Cygwin is provided by the NuttX @@ -3842,421 +3736,318 @@ Other memory: </table> <ul><pre> -nuttx-6.25 2013-02-01 Gregory Nutt <gnutt@nuttx.org> +nuttx-6.26 2013-05-15 Gregory Nutt <gnutt@nuttx.org> - * graphics/: Adds 5x8 monospace font. This tiny font is useful for graph - labels and for small bitmapped display. Contributed by Petteri + * drivers/serial/serial.c: Correct some race conditions when checking + for disconnection of a removable serial device. + * sched/task_posixspawn.c, task_spawn.c, task_spawnparms.c and + spawn_internal.h: Create new interface task_spawn() that is + like posix_spawn(), but uses entry point addresses like + task_create(). + * Corrected all argv[] arguments. Should be char * const *, not + const char **. + * sched/pthread* and include/nuttx/sched: Move pthread join data + and pthread key calculation data into the "task group" structure. + * sched/atexit.c, on_exit.c, task_exithook.c and include/nuttx/sched.h: + Move atexit and on_exit data structures to task group. These + callbacks are only issued now when the final member of the task + group exits. + * sched/waitpid.c, task_exithook.c and include/nuttx/sched.h: + Move waitpid data data structures to task group. Callers of + of waitpid() are now only awakened whent he final thread of the + task group exits. + * sched/mq_descreate.c, mq_open.c, mq_remove.c, group_leave.c, and + include/nuttx/sched.h: Move list of opened message queues to + the task group structures. Now all message queues opened by + members of the group are closed when the last member of the group + exits. + * includes/nuttx/sched.h and Lots of files: Change name of _TCB to + struct tcb_s so that (1) it is consitent with other NuttX naming and + so that (2) the naming can handle some upcoming changes. + * includes/nuttx/sched.h and sched/: There are three TCB structures: + struct tcb_s is a generic common version, struct task_tcb_s is a + version for tasks and kernel threads and pthread_tcb_s is a version + for pthreads. By dividing the TCB structure into these variants, + pthreads do not have to be burdened by task-specific data structures + (and vice versa). + * sched/task_exithook.c adn group_create.c: Fix an error, the + task within the task group may exit early leaving a pthread to + exit the task group last. In this case, we need to remember the + the PID of the main task in the task group and use that PID for + signalling SIGCHILD to the parent task group. + * included/nuttx/sched.h and sched/sig*.c: Numerous changes to the + signal deliver logic so that the delivery of signals to threads + within a task group will be compliant with delivery of signals + to threads within a POSIX process. + * sched/mq_recover.c and task_exithook.c: Add logic to handle the + case where a task is deleted (or pthread canceled) while it is + waiting on a message queue. task_delete() and pthread_cancel() + are dangerous interfaces. This is only one feeble recover measure + of *many* that would be needed to do this safely. + * sched/group_killchildren.c, task_recover.c, group_foreachchild.c, + sched/restart.c, sched/task_delete.c, and others: Beef up logic + to better support task deletion and pthread cancellation. Needed + to pass need OS test case for task_restart(). + * sched/include/sched.h and all timed functions in sched/: Move + timer from local variables to TCB. This is needed so that if a + task is canceled or restarted while it is waiting for a timed + event, we can gracefully recover. We can't let the timer expire + after the task has been deleted. + * arch/arm/include/stm32 and arch/arm/src/stm32: Add support for + the STM32 F3 family (still missing some things). + * configs/stm32f3discovery: This will (eventually) be support for + the STM32F3Discovery board. + * STM32 F3 and STM32F3Discovery port is complete a ready for test. + * arch/arm/src/lpc17xx: Add support for the Cortex-M4 FPU and + Mikes "common vector" logic. The LPC1788 is going to need + these things. + * arch/arm/src/stm32/stm32_spi.c: Fix SPI DMA logic that does + not work if sem_wait() is interrupt by a signal. From Petteri + Aimonen. + * drivers/input/max11802.c: MAX11802: Fix a timing bug that + corrupted coordinates. From Petteri Aimonen. + * drivers/mmcsd/mmcsd_spi.c: Use SPI locking so that MMC/SD can + exist on the same bus as other SPI devices. From Petteri + Aimonen. + * graphics/nxfonts/nxfonts_sans17x22.h: Small mod to hyphen in + sans17x22 font. The hyphen did not have any space on its sides. + This caused it to run together with other characters so that for + example "+-" would look weird. From Petteri Aimonen. + * mm/mm_mallinfo.c: Take MM semaphore in mm_mallinfo. From Petteri Aimonen. - * configs/stm3220g-eval/nxwm: Converted to use the kconfig-frontends - configuration tool. - * configs/sim/nxwm: Converted to use the kconfig-frontends configuration - tool. - * include/pthread.h: In sys/prctl.h because it is needed by - pthread_[set|get]name_np() - * tools/kconfig.bat: Kludge to run kconfig-frontends from a DOS shell. - * sched/sig_timedwait.c: Should always move the time up to the next - largest number of system ticks. The logic was rounding. Noted by - Petteri Aimonen. - * arch/arm/src/up_head.S: Fix backward conditional compilation. NOTE - there is a issue of ARM9 systems with low vectors and large memories - that will have to be addressed in the future. - * libc/misc/lib_kbdencode.c and lib_kbddecode.c: Add logic to marshal - and serialized "out-of-band" keyboard commands intermixed with normal - ASCII data (not yet hooked into anything). - * drivers/usbhost/usbhost_hidkbd.c: If CONFIG_HIDKBD_ENCODED is - defined, this driver will now use libc/misc/lib_kbdencode.c to - encode special function keys. - * configs/olimex-lpc1766stk/hidkbd: This configuration has been - converted to use the kconfig-frontends configuration tool. - * drivers/lcd/ug-2864hsweg01.c and include/nuttx/lcd/ug-2864hsweg01.h: - Driver for UG-2864HSWEG01 OLED contributed by Darcy Gong. - * configs/stm32f4discovery/src/up_ug2864hsweg01.c: Support for the - UG-2864HSWEG01 OLED for the STM32F4Discovery board. - * drivers/usbhost/usbhost_hidkbd.c: Correct a logic error in how - tasks waiting for read data are awakened. - * libc/misc/lib_kbdencode.c and lib_kbddecode.c: Now handles keypress - events too. However, the USB HID keyboard driver has not yet been - updated to detect key release events. That is kind of tricky in - the USB HID keyboard report data. - * configs/mcu123-214x/nsh: Converted to use the kconfig-frontends - configuration tool. - * configs/zp214xpa: Add basic support for the The0.net ZP213x/4xPA - board (with the LPC2148 and the UG_2864AMBAG01). - * configs/sim/nxlines: Add an nxlines configuration for the - simulator. - * configs/zp214xpa/nxlines: Add an nxlines configuration for the - ZP213x/4xPA (with the LPC2148 and the UG_2864AMBAG01). Working - as of 2012-12-30. - * configs/olimex-lpc1766stk/wlan: Remove non-functional - configuration. - * configs/stm32f4discovery/src and nuttx/drivers/lcd/ug-2864hsweg01.c: - Updates and correctinos for the UG-2864HSWEG01 from Darcy Gong. - * configs/lm326965-ek: All configurations converted to use the - kconfig-frontends configuration tool. - * configs/Kconfig: NSH_MMCSDSPIPORTNO should depend on MMCSD_SPI, - not just SPI (from Jose Pablo Carballo). - * arch/arm/src/arm/Kconfig and armv7m/Kconfig: Add an option for - buildroot toolchains: They may be EABI or OABI. - * include/nuttx/progmem and arch/arm/src/stm32/stm32_flash.c: - Fix a counting bug plus change interface to use either relative - or absolute FLASH addressing (from Freddie Chopin). - * libc/misc/Make.defs: Fix error in conditional for KBD CODEC. - * libc/Kconfig and configs/*/defconfig (several): The default - setting should be CONFIG_LIB_KBDCODEC=n - * 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. - * arch/arm/src/lpc17xx/lpc17_syscon.h: Correct some typos in bit - definitions (from Rommel Marcelo). - * libc/string/lib_strndup.c: strndup() should use strnlen(), not - strlen(), to determine the size of the string. - * sched/os_bringup.c: Remove support for CONFIG_BUILTIN_APP_START. - This is not really a useful feature and creates a violation of the - OS layered architecture. - * include/unistd.h, arch/arch/src/*: Implement a simple vfork(). - On initial checkin, this API is available only for ARM platforms. - * binfmt/binfmt_exec.c: exec() now sets the priority of the new task - to the same priority as the current task (instead of the arbirtrary - value of 50). - * libc/unisted/lib_execv.c and lib_execl.c: New, somewhat flawed, - implementations of execv() and execl(). - * tools/cfgdefine.c: Strips quotes from CONFIG_EXECFUNCS_SYMTAB - value. - * arch/arm/include/lm3s/chip.h: Move chip definitions into - public include area for compatibility with other architectures. - * arch/arm/src/lm3s/chip: Move register definition header files - into a new chip/ sub-directory. - * arch/arm/src/lm3s/lm3s_internal.h: Broke up into several - smaller header files. - * arch/arm/src/lm: Rename the arch/arm/src/lm3s directory to - arch/arm/src/lm so that is can support other members of the - Stellaris family. - * libc/spawn: Add file action interfaces needed by posix_spawn(). - * sched/clock_time2ticks.c: Another case where time was being - rounded down instead of up (from Mike Smith). - * libc/spawn: Implementation of posix_spawn() is complete but - untested and undocumented. - * drivers/usbdev/pl2303.c: Fix typols in the PL2303 driver - (from Max Holtzberg). - * configs/stm32f4discovery/posix_spawn: Added a configuration - that can be used for testing posix_spawn(). - * arch/arm/src/stm32: Bring F1 support for general DMA and serial - DMA in paricular up to parity with F2/F4 (from Mike Smith). - * libc/stdio/lib_libfread.c: Correct some error handling when - lib_fread() was passed a bad stream. Needed to move the - releasing of a semaphore inside of some conditional logic - (cosmetic). - * include/nuttx/sched.h, sched/task_setup.c, and sched/task_exithook.c: - Add support for remembering the parent task and sending - SIGCHLD to the parent when the task exists. - * sched/task_exithook.c: Fixed a *critical* bug. Here is - the 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. - * sched/sched_waitpid.c: Use SIGCHLD instead of a semaphore. This - is a much more spec-compliant implementation. However, there are - some issues with overruning signals because NuttX does not support - queueing of signals (POSIX does not require it). I think it may - need to. - * sched/sched_waitid.c and sched_wait.c: Add support for waitid() - and wait(). See issues with waitpid() above. - * include/nuttx/fs/fs.h and fs/fs_files.c: Add a dup() method to - the struct mountpt_operations. When dup'ing a file that resides - on a mounted volume, let the file system's dup() method do the - work. - * fs/romfs/fs_romfs.c: Implemented the dup() method for the ROMFS - file system. - * fs/fat/fs_fat32.c, fs/nxffs/nxffs_initialize, and - fs/nfs/nfs_vfsops.c: Add hooks for dup() method (not yet - implemented). - * fs/romfs: Remove the rf_open flag. It looks good, but actually - does nothing. - * fs/fat: Remove the ff_open flag. Same story as for the ROMFS - rf_open flag. - * fs/fat/fs_fat32.c, fs/nxffs/nxffs_initialize, and - fs/nfs/nfs_vfsops.c: Completed implementation of the dup() methods. - There is still no good test available. - * sched/sig_timedwait.c: sigtimedwait() would return a bad signal - number if the signal was already pending when the function was - called. - * configs/ubw32/scripts: All common linker scripts moved to this - scripts sub-directory - * configs/ubw32/ostest: Configuration configured to use the - kconfig-frontends tools. - * arch/mips/src/mips32/up_vfork.c, up_vfork.h, and vfork.S: - Implement vfork() for MIPS32 (no floating point support) - * configs/ubw32/ostest: Enable the vfork() test. - * fs/binfs: Move apps/builtin/binfs.c to fs/binfs/fs_binfs.c - CONFIG_APPS_BINDIR rename CONFIG_FS_BINFS - * include/nuttx/binfmt/builtin.h: Some of the content of - apps/include/apps.h moved to include/nuttx/binfmt/builtin.h - * binfmt/libbuiltin/libbuiltin_utils.c: Move builtin - utility functions from apps/builtin/exec_builtins.c to - binfmt/libbuiltin/libbuiltin_utils.c - * binfmt/builtin.c and binfmt/libbuiltin: Add a binary "loader" - that can be used to execute builtin programs from the BINFS - file system. - * configs/sim/nsh: Convert to use kconfig-frontends configuration - tool. - * binfmt/binfmt_schedunload.c: Add logic based on SIGCHLD to - automatically unload and clean-up after running a task that - was loaded into memory. - * binfmt/libbuiltin: Extensions from Mike Smith - * sched/task_reparent.c: Add internal interface to change the - parent task. - * sched/task_posixspawn(): Move libc/spawn/lib_ps.c to - sched/task_posixspawn() now it requires internal, reparenting - interfaces - * include/nuttx/spawn(): Move libc/spawn.h to include/nuttx/spawn.h - * arch/arm/include/lpc17xx/chip.h, irq178x.h: Integrate Marcelo - Rommel's LPC1788 definitions into the base LPC17xx. - * configs/olimex-lpc1766stk/nsh: Convert configuration to use - the kconfig-frontends tools. - * sched/task_reparent.c: Simplify reparenting interface. - * arch/arm/src/[many]: More LPC1788 definitions from Rommel - Marcelo incorporated. - * configs/open1788: Board configuration for the Wave Share - Open1788 board. Still fragmentary (contributed by Rommel - Marcelo, adapted to use kconfig-frontends. - * net/send(): Add logic to work around delayed ACKs by splitting - packets (contributed by Yan T.). - * net/recvfrom(): Fix a bug. When the host closes a connection - (gracefully). recv[from]() returned success and the closure - was never detected. Hmmm.. I don't know why the network monitor - did not catch this event. This is an important bug fix. - * net/recvfrom(): Fix a introduced with the last bugfix. If - the peer does an orderly closure of the socket, report 0 not - -ENOTCONN - * configs/lm3s6965-ek/README.txt and tools/: Add an OpenOCD - configuration for the LM3S (from Jose Pablo Carballo). - * nuttx/lcd/hd4478ou.h and configs/pcblogic-pic32mx/src/up_lcd1602: - Start of support of LCD1602 alphanumeric LCD. I need a few - more parts before I can finish integrating this one. - * arch/arm/src/*/chip.h and arch/arm/include/*/chip.h: Move all - priority ranges from the src to the include chip.h header file. - * arch/arm/include/armv7-m/irq.h: Add inline functions to enable - and disable interrupts via the BASEPRI register. - * arch/arm/Kconfig: Add new option CONFIG_ARM7VM_USEBASEI - * arch/arm/src/*/*_irq.c: Set the priority of the SVCALL exception - to the highest possible value. - * arch/armv7-m/up_hardfault.c: Fail if a hardfault occurs - while CONFIG_ARM7VM_USEBASEPRI=y. - * arch/arm/src/stm32/stm32_serial.c: Add support for USART - single wire mode (Contributed by the PX4 team). - * sched/: Implement support for retaining child task status 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 support for keyboard encode to the keypad test (from - Denis Carikli). - * configs/olimex-lpc1766stk/nettest: Configuration converted to - use the kconfig-frontends tools. - * net/net_poll.c: Split net_poll() to create psock_poll() too. - * net/net_poll.c: 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 know that the connection has been lost. - * sched/group_create.c, group_join.c, and group_leave.c: Add - support for task groups. - * sched/group_signal.c and task_exithook.c: Send signal to all - members for the parent task group. - * include/nuttx/sched.h and sched/env_*.c: Move environment - variables into task group structure. - * sched/: Lots of file changed. Don't keep the parent task's - task ID in the child task's TCB. Instead, keep the parent - task group IN the child task's task group. - * fs/, sched/, include/nuttx/sched.h, and include/nutts/fs/fs.h: - Move file data from the TCB to the task group structure. - * libc/stdio/, sched/, include/nuttx/lib.h, and include/nutts/fs/fs.h: - Move stream data from the TCB to the task group structure. - * net/, sched/, and include/nuttx/net/net.h: Move socket data - from the TCB to the task group structure. - * sched/task_starthook.c, sched/task_start.c, and include/nuttx/sched.h: - Add a task start hook that will be called before the task main - is started. This can be used to schedule C++ constructors to run - automatically in the context of the new task. - * binfmt/binfmt_execmodule: Execute constructors as a start hook. - * sched/os_start.c: Fix ordering of group initialization. - * configs/stm32f4discovery/usbnsh: Add an NSH STM32F4Discovery - configuration that uses USB CDC/ACM for the NSH console. - * configs/stm32f4discovery/nsh: Converted to use the kconfig-frontends - tools. - * configs/*/src/up_userleds.c: Fix a error that was cloned into - all STM32 user LED code. The wrong definitions were being used - to set LEDs on or off. - * arch/*/common/up_internal.h and arch/*/common/up_initialize.c: - Serial was driver was not being built if there is no console - device. Obviously, the serial driver may be needed even in - this case. - * arch/arm/src/stm32/stm32_serial.c: If there is a serial console, - it would be ttyS0 and the others would be ttyS1-5. If there - is not serial console, was labeling them ttyS1-6; now labels them - ttyS0-5. - * fs/fs_syslog.c: Can't handle SYSLOG output to character device from - the IDLE task (because it can't block). syslog_putc now returns EOF - on failure and sets errno. Fixed some errors in error handling. - * libc/stdio/lib_syslogstream.c: Checking of return value from - syslog_putc was bogus. Switching to EOF for all errors solves - this. - * arch/arm/src/lm/chip/lm4f_memorymap.h: More LM4F changes from - Jose Pablo Carballo. - * drivers/serial/serial.c, include/nuttx/serial/serial.h, - drivers/usbdev/cdcacm.c, and drivers/pl2303.c: Add support for - removable serial devices (like USB serial). This support is enabled - by CONFIG_SERIAL_REMOVABLE. - * arch/*/src/*/Toolchain.defs: Change assignment so that we can - override CROSSDEV with a make command line argument. - * include/assert.h: Mark assertion functions as non-returning. - * arch/*/src/*/up_assert.h: Mark _up_assert() as non-returning. - * drivers/mtd/at25.c: When the AT25 device was not available the - initialization did not fail like it should. From Petteri Aimonen. - * fs/fat/fs_configfat.c: Fix some errors in FAT formatting logic - for large devices and for FAT32. From Petteri Aimonen. - * fs/fat/fs_fat32util.c: Fix an initialization error found by - Petteri Aimonen. freecount and next freecount initialization were - reversed. - * drivers/mmcsd/mmcsd_spi.c: 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 patch makes it work also - without pull-up. From Petteri Aimonen. - * fs/fat/fs_fat32.c: Fix a compilation error when FAT_DMAMEMORY=y. + * configs/stm32f3discovery/nsh/defconfig: Disable SPI. It is not + used. + * drivers/mtd/sst39vf: Add a driver for the SST29VF NOR FLASH parts. + * sched/os_start.c: Add an additional call-out to support board- + specific driver initialization during the start phase: If + CONFIG_BOARD_INITIALIZE is defined, then an additioinal + initialization function called board_initialize() will be called + just after up_initialize() is called and just before the initial + application is started. + * arch/arm/src/stm32/stm32_otgfsdev.c, drivers/usbdev/usbdev_trprintf.c, + and include/nuttx/usb/usbdev_trace.h: Add logic to support decoding + of device-specific trace events to make the trace ouput more readable. From Petteri Aimonen. - * arch/arm/src/stm32/chip/stm32_spi.h: STM32F4 max SPI clock freq is - 37.5 MHz. Patch from Petteri Aimonen. - * arch/arm/src/stm32/stm32_spi.c: Fixes for SPI DMA work on the - STM32F4. Includes untested additions for the F1 implementation as - well. From Petteri Aimonen. + * arch/arm/src/stm32/stm32_otgfsdev.c: Need to manually set CNAK in + the case where we are waiting for a SETUP command with DATA. Otherwise, + the core may NAK further transactions. From Petteri Aimonen. + * arch/arm/src/stm32/stm32_otgfsdev.c: Add logic to prevent premature + to IDLE state. This change (plus the previous) was necessary to get + the CDC/ACM driver working the certain STM32 F4 hardware (but not others). + These changes appear to prevent certain race conditions that may or may + not cause USB problems. From Petteri Aimonen. + * arch/arm/include/armv6-m and arch/arm/src/armv6-m: First cut at support + for the Cortex-M0 + * configs/nutiny-nuc120, arch/arm/include/nu1xx, and arch/arm/src/nuc1xx: + Support for Nuvoton NuTiny NUC120. + * 2013-02-22: the Cortex-M0, NuvoTron NUC1xx, and NuTiny-SDK-NUC120 port + is code complete and ready for testing. + * configs/ekk-lm3s9b96/ostest and nsh: All EKK-LM3S9B96 configurations + converted to use the mconf configuration tool. + * configs/zkit-arm-1769: Add support for Zilogic System's ARM development + Kit, ZKIT-ARM-1769. From Rashid. + * configs/zkit-arm-1769/hello: Add a "Hello, World!" configuration for + the KBIT-ARM-1769 board. From Rashid. + * configs/zkit-arm-1769/thttpd: Add a THTTPD configuration for the + KBIT-ARM-1769 board. From Rashid. + * 2013-02-27: All configurations for the Cortex-M0 NuTINY-SDK-NUC120 + appear to be functional and stable. + * configs/zkit-arm-1769/nsh: Add an NSH configuration for the + KBIT-ARM-1769 board. From Rashid. + * arch/arm/src/stm32/stm32_otgfsdev.c: Fixes from Petterri Aimonen + related to corner cases that can cause infinite interrupts. + * drivers/usbdev/usbmsc_scsi.c: Change to allow the full name in the + USB descriptor but a truncated, 8-byte name in the SCSI field. + From Petteri Aimonen. + * arch/arm/src/stm32/stm32_spi.c: Need to clear error flags to prevent + corruption of subsequent transfers. Also, bit count should not be + changed while the SPI peripheral is enabled. From Petteri Aimonen. + * drivers/mmcsd/mmcsd_spi.c: When bus is shared, the speed has to be + set every time. Also SD cards require a few dummy clocks to react + into CS release. From Petteri Aimonen. + * configs/lm4f120-launchpad: In initial configuration for testing + the LM4F120 LaunchPad port. This is to support testing only and + is not yet a functional board port (as of 2013-03-01). + * arch/arm/include/lm/lm4f_irq.h and arch/arm/src/lm/chip/lm4f_vector.h: + Add interrupt vector/IRQ number definitions for the LM4F120. + * arch/arm/src/stm32f20xxx_dma.c and stm32f40xxx_dma.c: Fix a typo + in assigned base register addresses for each DMA channel. From + Yan T. + * Several build fixes from Mike Smith were incorporated. These were + mostly compilation errors introduced into the system because of the + large number of recent changes with broad scope (2013-03-04). + * configs/zkit-arm-17969/src/up_can.c: Add CAN support to the + Zilogics Technologies ZKIT-ARM-1769 board (From Rashid Fatah, (2013-03-04)). + * arch/arm/src/lpc17/lpc17*_clockconfig.c: The WaveShare Open1788 + board now boots and passes the OS test. This is the work of + Rommel Marcelo (2013-03-04). + * arch/arm/src/lm/lm_gpio.c, lm_gpio.h, and chip/lm4f_pinconfig.h + Extend GPIO logic to handle LM4F. Add LM4F pin configuration header + file (2013-03-04). + * configs/open1788: Enable LED support in all configurations. + (2013-03-04) + * configs/open1788/nsh: NSH configuration verified function. By Rommel + Marcelo (2013-03-05). + * configs/open1788/src/lpc17_nsh.c: Use the SD card interface, not SPI + to interface with SD cards (2013-03-05. + * arch/arm/src/lpc17xx/lpc17_sdcard.c and header files: Clone the STM32 + SD card interface to the LPC1788. It appears to be the same IP. + (2013-03-05) + * libc/wqueue: Work queue logic moved from sched/ to libc/wqueue. It + is not really core OS functionality and this move helps prepare for + user-space work queues. (2013-03-05) + * libc/wqueue: Implemented user-space work queues. These will not + get tested until the next time I attempt a NuttX kernel build. + (2013-03-05). + * arch/arm: Correct some bad syscall dispatching logic. This change + cannot be fully tested until there is a fielded NuttX kernel build. + (2013-03-06). + * net/net_poll.c: Correct logic that checks if the socket is + disconnected when the poll is setup. That is bad logic: Listen + sockets, for example, are not connected. In that case, the purpose of + the poll is to wait for connection events. As a result of this, + poll/select would return immediately with POLLHUP with it was used to + detect connection events. This fix for now was to check instead if + the socket is closed (meaning that it was connected at one time but + was closed by the remote peer). That excludes the listen socket which + was never connected. This does introduce a new problem, however. If + the socket was not closed, but lost the connection through an abnormal + event, then poll/select will hang. That needs to be revisited. + (2013-03-07) + * fs/fs_select.c: Was not checking if the timeout parameter was NULL + but would, instead, setup a bogus timeout based on whatever it found at + address zero. Also, improved some of the memory allocation logic so + that it will not use so much memory. (2013-03-07) + * net/net_poll.c: Handle the missing case. Now tests for not connected + AND not listening. I think that now covers all of the cases including + the missing case noted above. (2013-03-07) + * mm/: Move all memory manager globals into a structure. A reference + to this structure is now passed internally between mm APIs. This + change will (eventually) support multiple heaps and heap allocators. + (2013-03-08). + * mm/ and include/nuttx/mm.h: Implement support for multiple heaps. + (2013-03-08). + * arch/*/src: xyz_addregion() needs to call kmm_addregion, not mm_addregion. + (2013-03-08). + * sched/kmm*.c: Move this garbage kmm*.c file to mm/. until I decide what + to do with them (which is probably to just delete them). (2013-03-08). + * mm/mm_test.c and Makefile.test: Deleted the memory test. This was + a good test and helped me a lot when I wrote the memory manager, but + now it is in the way and paralyzing other efforts. So the memory unit + test was deleted. (2013-03-08) + * sched/sched_free.c: Rename sched_free() to sched_ufree(); Add + sched_kfree() to handler deferred kernel heap allocations. (2013-03-10) + * arch/: User user-accessible heap to allocate all stacks. (2013-03-10) + * arch/arm/src/sam3u: The AT91SAM3U will now support a kernel heap if + so configured. (2013-03-10) + * configs/sam3u-ek/knsh: This configuration was converted to use the + kconfigs-frontends build tool. (2013-03-10) + * configs/*/include/user_map.h and include/nuttx/userspace.h: Remove + the very kludgy user_map.h file and replace it with a header that + is expected at the beginning of the user-space blob. (2013-03-10) + * configs/sam3u-ek/kernel/up_userspace.c: This is the header for + the SAM3U-EK's user space. (2013-03-10) + * sched/os_bringup.c: In the kernel build, os_bringup() now uses the + user-space header to automatically start the user-space work queue, + if so configured. (2013-03-10) + * arch/arm/src/lpc17xx/lpc17_mpuinit.c and lpc17_userpace.c: Add + support for the MPU and kernel build for the LPC17xx family. + (2013-03-11) + * configs/open1788/kernel and knsh: Add kernel build support and + a kernel NSH configuration for the WaveShare Open1788 board. + (2013-03-11) + * configs/sam3u_ek/kernel, knsh, and scripts: Move some files around + for better supportability. (2013-03-11) + * configs/open1788/kernel, knsh, and scripts: Add a kernel mode build + configuration for the WaveShare Open1788 board. (2013-03-11) + * arch/arm/src/armv7-m/up_mpu.c: Several fixes to MPU logic. + (2013-03-12). + * arch/arm, configs/sam3u-ek, configs/open1788: Fix memory map for + kernel mode build; Some regions were overlapping. (2013-03-13). + * arch/: Rename g_heapbase to g_idle_topstack. This is the same value + however: The top of the IDLE stack is the same as the base of the + heap in the flat build. But not in the kernel build: The base of + the heap is elsewhere so the naming was wrong. (2013-03-13). + * libc/stdlib/lib_itoa.c: Implementation of itoa() contributed by + Ryan Sundberg. (2013-03-14). -apps-6.25 2013-02-01 Gregory Nutt <gnutt@nuttx.org> +apps-6.26 2013-03-15 Gregory Nutt <gnutt@nuttx.org> - * Makefiles: Removed dependency of distclean on clean in most top-level - files. It makes sense for 'leaf' Makefiles to have this dependency, - but it does not make sense for upper-level Makefiles. - * apps/namedapp/: Renamed to builtins in preparation for another change. - * .context: Removed the .context kludge. This caused lots of problems - when changing configurations because there is no easy way to get the - system to rebuild the context. Now, the context will be rebuilt - whenever there is a change in either .config or the Makefile. - * apps/builtin/registry: Updated new built-in registration logic to handle - cases where (1) old apps/.config is used, and (2) applications ared - removed, not just added. - * apps/examples/nettest/Makefile: Fix an error that crept in during - some of the recent, massive build system changes. - * apps/builtin/Makefile: Need to have auto-generated header files - in place early in the dependency generation phase to avoid warnings. - It is not important if they are only stubbed out header files at - this build phase. - * apps/examples/hidbkd: Now supports decoding of encoded special keys - if CONFIG_EXAMPLES_HIDKBD_ENCODED is defined. - * apps/examples/hidbkd: Add support for decoding key release events - as well. However, the USB HID keyboard drier has not yet been - updated to detect key release events. That is kind of tricky in - the USB HID keyboard report data. - * apps/examples/wlan: Remove non-functional example. - * apps/examples/ostest/vfork.c: Added a test of vfork(). - * apps/exampes/posix_spawn: Added a test of posix_spawn(). - * apps/examples/ostest: Extend signal handler test to catch - death-of-child signals (SIGCHLD). - * apps/examples/ostest/waitpid.c: Add a test for waitpid(), waitid(), - and wait(). - * builtin/binfs.c: Add hooks for dup() method (not implemented). - * builtin/exec_builtin.c, nshlib/nsh_parse.c, and nshlib/nsh_builtin.c: - NSH now supports re-direction of I/O to files (but still not from). - * builtin/binfs.c: Greatly simplified (it is going to need to be - very lightweight). Now supports open, close, and a new ioctl to recover - the builtin filename. The latter will be needed to support a binfs - binfmt. - * builtin/binfs.c: Move apps/builtin/binfs.c to fs/binfs/fs_binfs.c - CONFIG_APPS_BINDIR rename CONFIG_FS_BINFS - * apps/include/builtin.h: Some of the content of - apps/include/apps.h moved to include/nuttx/binfmt/builtin.h. - apps/include/apps.h renamed builtin.h - * apps/builtin/exec_builtins.c: Move builtin - utility functions from apps/builtin/exec_builtins.c to - binfmt/libbuiltin/libbuiltin_utils.c - * apps/nshlib/nsh_mountcmds.c: The block driver/source - argument is now optional. Many files systems do not need - a source and it is really stupid to have to enter a bogus - source parameter. - * apps/nshlib/nsh_fileapp.c: Add the ability to execute a file - from a file system using posix_spawn(). - * apps/builtin/: Extensions from Mike Smith. - * apps/examples/ftpd/Makefile: Name ftpd_start is not the name of - the entrypoint. Should be ftpd_main (from Yan T.) - * apps/netutils/telnetd/telnetd_driver: Was stuck in a loop if - recv[from]() ever returned a value <= 0. - * apps/examples/nettest and poll: Complete Kconfig files. - * apps/examples/ostest/waitpid.c: Need to use WEXITSTATUS() - to decode the correct exit status. - * apps/system/usbmonitor: A daemon that can be used to monitor USB - trace outpout. - * apps/nshlib/nsh_usbdev.c, nsh_consolemain.c, nsh_session.c, nsh_script.c: - Add 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. - * apps/system/readline: Correct readline() return value. Was not - any returning special values when end-of-file or read errors - occur (it would return an empty string which is not very useful). + * apps/builtin/exec_builtin.c: Now uses task_spawn() to start + builtin applications. + * Type of argv has changed from const char ** to char * const * + * apps/nshlib/nsh_parse.c: Fix memory lead: Need to detach after + creating a pthread. + * apps/examples and nshlib: Change name of _TCB to struct tcb_s to + match NuttX name change. + * apps/examples/ostest/restart.c: Add a test case to verify + task_restart(). + * apps/system/readline.c: readline() now returns EOF on any failure + (instead of a negated errno value). This is because the underlying + read is based on logic similar to getc. The value zero was being + confused with a NUL. So if a NUL was received, the NSH session + would terminate because it thought it was the end of file. -NxWidgets-1.5 2013-02-01 Gregory Nutt <gnutt@nuttx.org> +NxWidgets-1.6 2013-03-15 Gregory Nutt <gnutt@nuttx.org> - * NxWidgets::CGraphicsPort::move(): Fix typo bug in bounding rectangle - calculation (from Petteri Aimonen). - * NxWM::CScrollingPanel::scrollChildren(): Avoid unnecessary redraws in - CScrollingPanel (contributed by Petteri Aimonen). - * NxWM::CCycleButton: Remove the separator from CCycleButton. It draws in - wrong place, and doesnt look very good in the correct place either. - (from Petteri Aimonen). - * NxWidgets::CGraphicsPort: Many times we only want a constant background. - In that case the old code fills the background, reads it back, renders - the text and then writes it back. When used with LCD's (instead of - framebuffers) this causes unnecessary delay and screen flicker. - This commit adds a variant of drawText that takes background color, - so that the background and text can both be rendered at one go. - The old functions still function as before (Petteri Aimonen). - * NxWidgets::CLabel: The label was drawn as a single rectangular region, - then a text was added to the on top of this. The result is that the - text would flicker when the CLabel was updated. With this change, the - two step update is replaced with a five step update: The background - is updated as four rectangulear regions (leaving the previous text in - place), then the new text is updated. This eliminates the flicker - (Petteri Aimonen). - * Kconfig: Many NxWidgets/NxWM settings do not have meaningful, generic - default values. Colors, for example, depend on pixel depth. Some - geometry settings depending on other geometry settings. Font IDs are - not know-able by the configuration system. etc. In these cases, it - is best if the settings are just not undefined so that the system can - calculate a reasonable default. however, if no default is provided - in the .config file, mconf will complain and generate errors. So work - around this, I added several "enabling" settings to override the - default setting. This is awkward and I preferred the configuration as - it was before, but this avoids the mconf errors and warnings. - * UnitTests: Changed occurrences of lib_rawprintf() and lib_lowprintf() - to match recent changes to NuttX (will be in NuttX-6.25) - * CGraphicsPort::_drawText: Renamed from CGraphicsPort::drawText in order - to eliminate some naming collisions when overloaded in some configurations - (i.e., when both bool and nx_pixel_t are uint8_t). From Petteri Aimonen. - * CNxWidgets::drawContents: Change base drawContents from a do-nothing - function to a function that fills the widget with the background color. - This is useful when using CNxWidgets as a "panel" , i.e. a container - for other widgets. Subclasses will override drawContents and decide - themselves how to draw the background. - * CNxWidgets::CTabPanel: A new widget contributed by Petteri Aimonen. - This widget provides a tab panel, which has a button bar at the top - and panels below it. Pressing a button will select the corresponding - panel. + * Type of argv[] has changed from const char ** to char * const * + * NXWidgets::CNxWidget: Add an inline function to get the current style. + * NxWM::CTaskBar: Make a some methods of CTaskbar virtual to allow + customizations. From Petteri Aimonen. + * NXWidgets::CCycleButton: Make CCycleButton change state in onPreRelease(). + This way the new value is already available when a listener gets the + action event. From Petteri Aimonen. + * NxWidgets/tools/bitmap_converter.py: Fix bitmap_converter.py so that + it works with indexed input images. + * NxWidgets::CLabel: Fix backward conditional compilation in the + "flicker free" logic. + * NxWidgets::CNxTimer: Previously repeated timers were re-enabled after + the timer action event. Consequently, if the action event handler tried + to stop the timer, the request would be ignored. Changes the order + so that the timer is re-enabled before the callback. There is still + no risk of re-entrancy, because everything executes on the USRWORK work + queue. From Petteri Aimonen. + * NxWidgets::CMultiLineTestBox: Fix text placement error. From Petteri + Aimonen. + * NxWidgets::CWidgetControl: Added another semaphore, boundssem, which + is set as soon as the screen bounds are known. This corrects two + problems: + 1) Due to the way nxgl_rectsize computes the size, it will never + be 0,0 like CWidgetControl expects. Therefore the size is considered + valid even though it has not been set yet. + 2) After the check is fixed to test for > 1, NxWM window creation will + hang. This is due to the fact that it uses the screen bounds for + determining window size. This was being blocked on geosem, which + is only posted after the size has been set. + From Petteri Aimonen. + * NxWidgets::CImage: Two enhancements: + 1) Allow changing the bitmap even after the control has been created. + 2) Allow giving 'null' to have the control draw no image at all. + From Petteri Aimonen. + * NxWM::CTaskBar: Allow windows with null icon. This makes sense for e.g. + full screen windows. From Petteri Aimonen. + * NxWM::CApplicationWindow: Add config options to override NxWM + stop/minimize icons. From Petteri Aimonen. + * NwWM::CStartWindow, NxWM::CWindowMessenger: Get rid of the start window + thread. Instead, handle all events through the USRWORK work queue. + For me, this was necessary because I would open some files in button + handlers and close them in NxTimer handlers. If these belonged to + different tasks, the close operation would fail. Further benefits: + + Gets rid of one task and message queue. + + Reduces the amount of code required + + Decouples CStartWindow from everything else - now it is just a window + with application icons, not an integral part of the event logic. + + All events come from the same thread, which reduces the possibility of + multithreading errors in user code. + + The user code can also send events to USRWORK, so that everything gets + serialized nicely without having to use so many mutexes. + Drawbacks: + - Currently the work state structure is malloc()ed, causing one allocation + and free per each input event. Could add a memory pool for these later, but + the speed difference doesn't seem noticeable. + - The work queue will add ~50 ms latency to input events. This is however + configurable, and the delay is anyway short enough that it is unnoticeable. + From Petteri Aimonen. uClibc++-1.0 2011-11-05 <gnutt@nuttx.org> @@ -4264,31 +4055,11 @@ uClibc++-1.0 2011-11-05 <gnutt@nuttx.org> C++ library for NuttX. This package was contributed ay Qiang Yu and David for the RGMP team. -buildroot-1.11 2011-11-05 <gnutt@nuttx.org> +buildroot-1.12 2011-13-15 <gnutt@nuttx.org> - * configs/avr-defconfig-4.3.3 - Added --enable-long-long as a GCC - option. - * configs/avr-defconfig-4.5.2 - New configuration. - * Config.in and almost all configurations in configs/ - Changed the - default nuttx path to $(TOPDIR)/../../nuttx - * Misc files. Patch provided by Gerd v. Egidy that solves the following - problems - - binutils 2.21 is not available on the gnu servers anymore, they replaced - it with 2.21.1 - - there is some assembler error when compiling gcc for arm, gcc bugzilla - 43999 - - you can't build nuttx for cortex m3/m4 because of a missing instruction - in the assembler, binutils bugzilla 12296 - * Add support for binutils 2.22 and GCC 4.6.3. - * Change name of all tools from xxx-elf to xxx-nuttx-elf - * Added an ARM EABI GCC 4.6.3 configuration (tool name is arm-nuttx-eabi-). - * ldnxflat: Add support for the R_ARM_REL32 relocation. This relocation - type was not generated by GCC/LD prior to gcc-4.6.3 - * R_ARM_REL32 logic is conditionally disabled because it has not been - tested. - * ldnxflat: Correct a memory allocation error that could cause written - past the end of allocated memory. Partial restoration of R_ARM_REL32 - logic. There are lots of issues that I still do not understand here. + * Fix typo toolchain/gdb/Config.in that prevented GDB 7.4 from building + (from Ken Bannister). + * Add support for a Cortex-M0 toolchain based on GCC 4.6.3. pascal-3.0 2011-05-15 Gregory Nutt <gnutt@nuttx.org> diff --git a/nuttx/ReleaseNotes b/nuttx/ReleaseNotes index 4e8768b96..b8382f0ac 100644 --- a/nuttx/ReleaseNotes +++ b/nuttx/ReleaseNotes @@ -3760,3 +3760,243 @@ Bugfixes (see the ChangeLog for details). Some of these are very important: - Others as detailed in the ChangeLog: HID keyboard, LPC17xx bit definitions, strndup(), PL2303, SYSLOG error handling, AT25, apps/examples. + +NuttX-6.26 +^^^^^^^^^^ + +The 93rd release of NuttX, Version 6.26, was made on March 15, 2013, +and is available for download from the SourceForge website. Note +that release consists of two tarballs: nuttx-6.26.tar.gz and +apps-6.26.tar.gz. Both may be needed (see the top-level nuttx/README.txt +file for build information). + +This release corresponds with SVN release number: r5745 + +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 r5745 should equivalent to release 6.26 of NuttX: + + svn checkout -r5745 svn://svn.code.sf.net/p/nuttx/code/trunk nuttx-code + +Or (HTTP): + + svn checkout -r5745 http://svn.code.sf.net/p/nuttx/code/trunk nuttx-code + +Additional new features and extended functionality: + + * OS Initialization: + + - Add an additional call-out to support board-specific driver + initialization during the boot-up phase (available with + CONFIG_BOARD_INITIALIZE=y). + + * Tasking: + + - New interface task_spawn() that is like posix_spawn(), but uses + entry point addresses like task_create(). + - Additional data restructuring as a continuation of the task group + changes of NuttX 6.25. These data structures were moved from the + TCB structure into the task group: pthread join data, + atexit/on_exit callbacks, waitpid data structures, and message + queues. + - TCBs for tasks and pthreads are now separate structures. This + saves a little memory since tasks do not have to carry the overhead + for threads and vice versa. + + * Kernel Build: + + - Extensive changes were made to support the kernel build mode. In + this mode, NuttX is built as a monolithic kernel. NuttX is built + as a separate kernel mode "blob" and the applications are built + as a separate user mode "blob". The kernel runs in kernel mode and + the applications run in user mode (with the MPU restricting user + mode accesses). Access to the kernel from the user blob is only + via system calls (SVCalls). + - Extensive changes were made to the syscall, SVCall, and trapping + logic. Many internal interfaces were renamed. + - The memory manager was extended to support both kernel- and user- + mode allocations. Logic within the kernel needs to use the + correct kernel- or user-space allocator, depending upon the user + of the allocated memory. + - The user-space blob now contains a header built in at the beginning + of the block that provides the same information that was previously + provided by a kludgy, auto-generated header file (user_map.h). + - Basic support implemented for the ARMv7-M family with fragments + also implemetned for the ARMv6-M and MIPS32 families. + - Kernel build supported added for the LPC17xx Open1788 and for + the Atmel SAM3U-EK board. All testing is being performed on the + Open1788 board. + + * Signals: + + - Delivery of signals to threads within a task group is now compatible + with the way that signals are delivered to threads within a process. + + * Drivers: + + - Add a driver for the SST29VF NOR FLASH parts. + - USB device trace/debug feature extended to decode device-specific + trace events to make the trace output more readable (from Petteri + Aimonen). + - USB MSC device driver can not support names of differing sizes + in the USB descriptor and the SCSI fields (from Petteri Aimonen). + - Locking added to MMC/SD SPI drivers so that MMC/SD can co-exist on + the same bus as other SPI devices. Frequency is reset each time + that the MMC/SD SPI has the bus locked. (from Petteri Aimonen). + + * ARMv6-M (Cortex-M0): + + - Added support for the ARM Cortex-M0 family. + + * nuvoTon NUC120: + + - Added support for the nuvoTon NUC120 MCU (Cortex-M0). + + * nuvoTon NUC120 Boards: + + - Added basic support for the nuvoTon NuTiny-SDK-NUC120 board (Cortex-M0). + + * LPC17xx: + + - Added support for the LPC177x and LPC178x families. Most of this is + the work of Rommel Marcelo. + + * LPC17xx Boards: + + - Added support for Zilogic System's ARM development Kit, ZKIT-ARM-1769. + From Rashid. + - The port for the WaveShare Open1788 board is now functional. Basic + OS test and NuttShell (NSH) configurations are functional. More + driver development and testing is needed (from Rommel Marcelo). + + * LPC17xx Drivers: + + - Added an SD card MSI driver for the LPC178x. The driver is marginally + functional but requires DMA capability to be reliable. + + * STM32 + + - Support extended to handle the STM32 F3 family (Cortex-M4 with F1-like + peripherals). + + * STM32 Boards + + - Added support the STMicro STM32F3Discovery board (STM32 F3). + + * Stellaris LM3S/LM4F + + - Basic support for the LM4F120 family is in place, but untested (mostly + from Jose Pablo Carballo). + + * Stellaris LM4F Boards + + - Add support for the LM4F120 LaunchPad (untested). + + * Networking: + + - select() should now allocate a little less memory. + + * Memory Management: + + - Extended to support multiple heaps. This is used as part of + the kernel build in order to support separater user- and + kernel-mode heaps. + - The stand-alone memory manger test had to be removed. It + was too entangled and made extension of the memory manager + nearly impossible. This is a loss. + + * Build System: + + - Several configurations converted to use the kconfig-frontends + configuration tool. There are still many more that need to + be converted. + + * C Library: + + - Move the workqueue logic into the C library. There is now a + special user-space version of the work queue (which will only + be used with a NuttX kernel build). + - Implementation of itoa() contributed by Ryan Sundberg. + + * Applications: + + - The NSH builtin task logic now uses task_spawn() to start builtin + applications. + - The OS test now includes a test cased to verify task_restart(). + +Efforts In Progress. The following are features that are partially +implemented but present in this release. Most are expected to be fully +available in NuttX 6.27. + + * LM4F120 LaunchPad port. Code is in place, but nothing has been tested. + + * WaveShare Open1788 port. This port as actually complete and + functional. However, there is still ongoing development and + testing of drivers. + + * Kernel Build. Much progress has been made, but there kernel build is + not yet fully functional due to several user resources that are not yet + properly disentangled from the kernel blob. + + * Conversion of old configurations to use the kconfig-frontends + tool is an ongoing effort that will continue for some time. + +Bugfixes (see the ChangeLog for details). Some of these are very important: + + * Tasking: + + - The wrong PID was being signalled with SIGCHILD. It should be + the PID of the task that create the task group, not the ID of + the last thread to leave the task group. + - Added logic so that some internal resources and states are recovered + when tasks are deleted or restarted. Handle cases where there are + outstanding timed events pending when tasks are deleted or restarted. + + * ARMv7-M: + + - Several fixes to the MPU control logic. + + * Drivers: + + - Removable serial drivers race conditions fixed. + - MAX11802 timing bug (from Petteri Aimonen). + + * STM32 Drivers: + + - Handle cases were SPI DMA logic fails if sem_wait is awakened + by a signal. Need to clear error flags to prevent corruption of + subsequent transfers. Also, bit count should not be changed while + the SPI peripheral is enabled (from Petteri Aimonen). + - Fixes to the OTG FS device driver from Petteri Aimonen. + - Fix typos in DMA register header file (from Yan T.) + + * Graphics: + + - Correction to the hyphen in the SANS 17x22 font (from Petteri + Aimonen). + + * Networking: + + - Corrected errors in the socket poll/select logic. Additional + state logic was needed to detect if the socket is still connected + before starting the poll wait. (bug reported by Qiang Yu). + + * Memory Management: + + - mallinfo() should hold the memory manager semaphore (from Petteri + Aimonen. + + * Build System: + + - Resolved several build errors reported by Mike Smith. + + * Applications: + + - Fixed an NSH memory leak: Needed to detach after creating each + pthread. + - readline() now returns EOF on any failure (instead of a negated + errno value). This is because the underlying read is based on + logic similar to getc. The value zero (meaning end-of-file) + was being confused with a NUL. So if a NUL was received, the + NSH session would terminate because it thought it was the end of + file. diff --git a/nuttx/libc/stdio/lib_sscanf.c b/nuttx/libc/stdio/lib_sscanf.c index 77a6cf212..3666cbf2b 100644 --- a/nuttx/libc/stdio/lib_sscanf.c +++ b/nuttx/libc/stdio/lib_sscanf.c @@ -197,6 +197,11 @@ int vsscanf(FAR char *buf, FAR const char *fmt, va_list ap) noassign = false; lflag = false; + /* NOTE that there is a flaw in this loop logic: The fmt string often + * terminates with %n which would have to be processes at the end of the + * buf string. That won't happen here. + */ + while (*fmt && *buf) { /* Skip over white space */ |