From ad1878e8fe6fa997672a83ffe8bbee9883649781 Mon Sep 17 00:00:00 2001
From: patacongo Last Updated: March 4, 2013 Last Updated: March 15, 2013
- The 92nd release of NuttX, Version 6.25, was made on February 1, 2013, and is available for download from the
+ 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 the release consists of two tarballs:
- 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:
Or (HTTP):
Additional new features and extended functionality
@@ -1064,30 +1064,29 @@
-
NuttX RTOS
- nuttx-6.25 Release Notes
+NuttX-6.26 Release Notes
nuttx-6.25.tar.gz
and apps-6.25.tar.gz
.
+ Note that the 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)
The change log associated with the release is available here.
Unreleased changes after this release are available in SVN.
These unreleased changes are also listed here.
-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
-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
-
CONFIG_BUILTIN_APP_START
.
- 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 CONFIG_BOARD_INITIALIZE=y
).
- Task Creation + Tasking
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 arbirtrary value of 50).
- 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()
.
+ New interface task_spawn()
that is like posix_spawn()
, but uses entry point addresses like ask_create()
.
posix_spawn()
.
- This standard interface is a better match for an MMU-less architecture than are vfork()
) plus execv()
or execl()
.
+ 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, message queues.
- Task Parentage + Kernel Build
pthreads
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 (SVCalls).
CONFIG_SCHED_HAVE_PARENT
and CONFIG_SCHED_CHILD_STATUS
.
+ 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
).
posix_spawn()
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.
SIGCHLD
.
- Sent to all members of the parent "task group" when the finall member of the child task group exits.
- SIGCHLD
and retention of child task exist status are enabled, then a more spec-compliant version of waitpid()
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.
+ Signals +
+waitid()
and wait()
are also enabled when SIGCHLD
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.
- File System + Drivers
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.
+ Add a driver for the SST29VF NOR FLASH parts.
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()
.
+ USB device trace/debug feature extended to decode device-specific trace events to make the trace output more readable (from Petteri Aimonen).
SIGCHLD
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).
+ - Binary Formats + ARMv6-M (Cortex-M0)
apps/builtin
to nuttx/binfmt/libbuiltin
.
- Includes some extensions contributed by Mike Smith.
- exec()
, execv()
, execl()
, or posix_spawn()
.
+ Added support for the ARM Cortex-M0 family.
- Drivers + nuvoTon NUC120
apps/examples
hidkbd/
and keypadtest/
(the latter contributed by Denis Carlikli).
- CONFIG_SERIAL_REMOVABLE
.
+ Added support for the nuvoTon NUC120 MCU (Cortex-M0).
- ARMv7-M + nuvoTon NUC120 Boards
BASEPRI
register to disable interrupts (instead of the PRIMASK
register).
- 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.
+ Added basic support for the nuvoTon NuTiny-SDK-NUC120 board (Cortex-M0).
- STM32 Drivers + LPC17xx
- STM32 Boards + LPC17xx Boards
posix_spawn()
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).
- LM3S/LM4F + LPC17xx Drivers
- LM3S Boards + STM32
- LPC176x/LPC178x + STM32 Boards
- LPC176x/LPC178x Boards + Stellaris LM3S/LM4F
- LPC2148 Boards + Stellaris LM4F Boards
- Simulator + Networking
select()
should now allocate a little less memory.
- Networking + Memory Management
net_poll()
to create the internal interface psock_poll()
.
+ 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.
- LCDs + Build System
- Graphics + C Library
itoa()
contributed by Ryan Sundberg.
- Build System + Applications
task_spawn()
to start builtin applications.
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?"
+ 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. +
+- Kconfig Files + LM4F120 LaunchPad port
- 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 + WaveShare Open1788 port
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 (assumes the MinGW-GCC is available).
+ This port as actually complete and functional.
+ However, there is still ongoing development and testing of drivers.
- Applications + Kernel Build
-
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()
.
- -
-
posix_spawn()
.
- init.d/rcS
script will be executed once when NSH starts;
- the .nshrc
script will be executed for each session:
- Once for a serial console, once for each USB connection, and once for each Telnet session.
- + kconfig-frontends +
+wlan
example.
+ Conversion of old configurations to use the kconfig-frontends tool is an ongoing effort that will continue for some time.
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.
+ 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.
- Signals -
-sigtimedwait()
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.
- Drivers + ARMv7-M
- STM32 Drivers + Drivers
- STM32 Boards + STM32 Drivers
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).
/dev/ttyS0-5
is there is a serial console, but /dev/ttyS1-6
if there is no serial console.
+ Fixes to the OTG FS device driver from Petteri Aimonen.
- Binary Formats -
-- File Systems + Graphics
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.
- recvfrom()
and send()
.
- recv()
ever returned a value <= 0.
+ 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).
- Libraries + Memory Management
fread()
could hang on certain error conditions.
- SYSLOG
output to a character device from the IDLE task (because the IDLE task can't block).
+ mallinfo()
should hold the memory manager semaphore (from Petteri Aimonen.
- Additional Bugfixes + Applications
sig_timedwait()
and clock_time2ticks.c
: Timing "rounding" logic
- readline()
return value
+ Fixed an NSH memory leak:
+ Needed to detach after creating each pthread.
apps/examples
.
+ 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.
+ TI Stellaris LM4F120. + This port uses the TI Stellaris LM4F120 LaunchPad. + Jose Pablo Carballo is doing this port. +
++ STATUS: + 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. +
+-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 */ -- cgit v1.2.3