375 lines
14 KiB
Groff
375 lines
14 KiB
Groff
|
NuttX-7.6
|
||
|
---------
|
||
|
|
||
|
The 106th release of NuttX, Version 7.6, was made on November 26, 2014,
|
||
|
and is available for download from the SourceForge website. Note
|
||
|
that release consists of two tarballs: nuttx-7.6.tar.gz and
|
||
|
apps-7.6.tar.gz. Both may be needed (see the top-level nuttx/README.txt
|
||
|
file for build information).
|
||
|
|
||
|
Additional new features and extended functionality:
|
||
|
|
||
|
* Core OS:
|
||
|
|
||
|
- Moved name semaphore and message queue support out of the OS and
|
||
|
into the VFS. These improves the architecture by unifying the
|
||
|
management of named resources, removes redundant resource management
|
||
|
logic, and makes named semaphores and message queues visible in the
|
||
|
file system. By default, these are visible at /var/lock and
|
||
|
/var/mqueue.
|
||
|
- Add SIGPOLL for use as part of the AIO implementation.
|
||
|
- Remove CONFIG_MAX_TASK_ARGS configuration. There is now no
|
||
|
predetermined limit on the number of arguments that may be passed
|
||
|
to a new task on start-up.
|
||
|
|
||
|
* Work queues:
|
||
|
|
||
|
- Add support for priority inheritance on the low priority worker
|
||
|
queue. That is, if a higher priority thread has scheduled work, the
|
||
|
priority of the low priority worker thread(s) will be boost to the
|
||
|
priority of the queuing thread. At work is performed at at least
|
||
|
thread priority of the scheduling thread. If there are multiple
|
||
|
worker threads, then all threads get reprioritized. Currently
|
||
|
only implemented for AIO.
|
||
|
- Add support for multiple low-priority work queue threads. This
|
||
|
allows individual worker threads to block indefinitely for I/O as
|
||
|
necessary without halting the entire work queue.
|
||
|
|
||
|
* VFS/General Drivers:
|
||
|
|
||
|
- Implement create() (as a macro).
|
||
|
- Add pread() and pwrite(). Also added pread() and pwrite()
|
||
|
system calls.
|
||
|
- AIO: Add aio_read(), aio_write(), aio_return(), aio_error(),
|
||
|
aio_suspend(), aio_canel(), lio_listio(), and aio_fsync(). This
|
||
|
logic minimizes the creation of new threads by using the new
|
||
|
features also added to the low priority work queue with this
|
||
|
release. It uses the new low priority worker thread interface
|
||
|
to adjust the priority of the worker thread according to the
|
||
|
priority of the AIO client thread
|
||
|
- Implement standard syslogmask() to control logging (also removing
|
||
|
the non-standard syslog_enable()).
|
||
|
|
||
|
* File Systems/Block Drivers/MTD:
|
||
|
|
||
|
- Extend MTD support to the M25P16. From Sébastien Lorquet.
|
||
|
|
||
|
* Drivers:
|
||
|
|
||
|
- BCH (Block-to-Character): Add support for seeking in BCH. From
|
||
|
Sébastien Lorquet.
|
||
|
|
||
|
* Graphics Support/Graphics-Related Drivers:
|
||
|
|
||
|
- Add support for a generic ILI9341 LCD driver. From Marco Krahl.
|
||
|
- Add ANSI/VT100 foreground and background color commands.
|
||
|
- Add driver for ST7565 LCD that works with NHD-C12864KGZ display. From Pierre-noel Bouteville.
|
||
|
|
||
|
* Networking:
|
||
|
|
||
|
- Verify that multiple networks can be supported.
|
||
|
- Add support for the case where there are multiple networks: One
|
||
|
being Ethernet and the other not (SLIP, PPP, ...). The primary
|
||
|
difference from the standpoint of the stack is that (1) ARP may or
|
||
|
may not be necessary, (2) the size of the link layer header will
|
||
|
vary, and (3) different MTUs and TCP receive windows may be used
|
||
|
with each link. Suggested by Brennan Ashton.
|
||
|
- Extensions to UDP and TCP connection structures for the case of
|
||
|
multiple networks. In this case, assigned port numbers only have to
|
||
|
be unique with respect to the IP address. So, for example, you
|
||
|
could have multiple port 80's, one on each network.
|
||
|
|
||
|
* Host Simulation:
|
||
|
|
||
|
- Removed the old, strange up_stdio.c and implemented a simulated UART
|
||
|
driver to provide the console input. The new logic starts a
|
||
|
separate, Linux domain pthread to read the console input in raw mode
|
||
|
and provides the incoming data to NuttX via standard NuttX domain
|
||
|
IPCs.
|
||
|
- Add support for 64-bit longjmp/setjmp in simulator platform. This
|
||
|
will permit operation of the simulation natively on a 64-bit
|
||
|
platform.
|
||
|
|
||
|
* ARMv7-M:
|
||
|
|
||
|
- Add ARMv7-M CMSIS ITM header file and library. From Pierre-noel
|
||
|
Bouteville.
|
||
|
- Add ARMv7-M CMSIS DWT and TPI header files. From Pierre-noel
|
||
|
Bouteville.
|
||
|
- Add ARMv7-M support to use ITM for SYSLOG debug output. Includes
|
||
|
logic from Pierre-noel Bouteville.
|
||
|
|
||
|
* Atmel SAM3/4 Drivers:
|
||
|
|
||
|
- Add support for SAM3/4 basic serial TERMIOS and flow control.
|
||
|
There are issues with IFLOW control: PDC or DMAC support is
|
||
|
required.
|
||
|
|
||
|
* Atmel SAM3/4 Boards:
|
||
|
|
||
|
- SAM4E-EK: Add support for PHY interrupt.
|
||
|
|
||
|
* Atmel SAMA5D Boards:
|
||
|
|
||
|
- SAMA5D3-Xplained: Add a configuration that provides a simple test
|
||
|
for the EMAC and GMAC on the SAMA5D3 working together.
|
||
|
- SAMA5D4-EK: Add a configuration that provides a simple test for the
|
||
|
EMAC0 and EMAC1 on the SAMA5D4 working together.
|
||
|
|
||
|
* Freescale KL:
|
||
|
|
||
|
- Add an I2C header file for the Freescale KL family. From Alan
|
||
|
Carvalho de Assis.
|
||
|
|
||
|
* NXP LPC32xx:
|
||
|
|
||
|
- Add support for tickless operation using the NXP LPC43xx. From
|
||
|
Brandon Warhurst.
|
||
|
|
||
|
* SiLabs EFM32:
|
||
|
|
||
|
- Add a basic port for the SiLabs EFM32 family. Includes many files
|
||
|
contributed by Pierre-noel Bouteville .
|
||
|
|
||
|
* SiLabs EFM32 Boards:
|
||
|
|
||
|
- Add board support for the EFM32 Gecko Starter Kit.
|
||
|
- Add board support for the Olimex EFM32G8809128 STK. NOTE: I am
|
||
|
unable to test this configuration due to tool-related issues.
|
||
|
- Add board support for the SiLbas EFM32GG Giant Gecko Starter kit.
|
||
|
|
||
|
* STMicro STM32:
|
||
|
|
||
|
- Add support for the STM32 F411RE from Serg Podtynnyi.
|
||
|
- Add support for the STM32F103RG. From Murilo Ponte.
|
||
|
|
||
|
* STMicro STM32 Drivers:
|
||
|
|
||
|
- STM32 F4: Add logic that implement true high speed support for the
|
||
|
STM32 OTGHS peripheral and concurrent support for both LS and HS
|
||
|
OTG. New OTGHS drivers provided for both device and host. From
|
||
|
Brennan Ashton.
|
||
|
|
||
|
* STMicro STM32 Boards:
|
||
|
|
||
|
- STM32 Nucleo-F411RE: Extend this board configuration to also support
|
||
|
the Nucleo-F411RE. From Serg Podtynnyi.
|
||
|
- Add support for the STM32F429i Discovery's LCD (SPI based). From
|
||
|
Marco Krahl.
|
||
|
- configs/stm32f100rc_generic: Removed this generic board configuration.
|
||
|
I have decided to stop support of generic board configurations. Generic
|
||
|
board configurations do not provide support for any specific hardware
|
||
|
but can be useful only if there are not other examples for the setup
|
||
|
for a particular architecture. Not the case here.
|
||
|
|
||
|
* C Library:
|
||
|
|
||
|
- Add a mostly bogus wchar.h header file. This file is mostly bogus
|
||
|
because none of the wide character operations are currently
|
||
|
supported in the NuttX C library. The file does provide the wchar_t
|
||
|
types needed by some software, however.
|
||
|
- Add isatty() function. From Alan Carvalho de Assis.
|
||
|
- Add mktemp(), mkstemp(), tmpnam() and tempnam().
|
||
|
|
||
|
* Configuration/Build System:
|
||
|
|
||
|
- Add a PRELINK macro to Config.mk. From Kriegleder.
|
||
|
- compiler.h: Defines inline functions as not instrumented - this is
|
||
|
relevant for anyone using instrumentation. From Lorenz Meier.
|
||
|
|
||
|
* Applications:
|
||
|
|
||
|
- apps/interpreter/bas: Added in the Michael Haardt's BAS 2.4 adapted
|
||
|
for use by NuttX by Alan Carvalho de Assis. Includes support for
|
||
|
VT100 terminals and color commands.
|
||
|
- Examples: Added bastest/ which holds a special version of Michael
|
||
|
Haardt's BAS 2.4 test files adapted for use by NuttX on a ROMFS file
|
||
|
system.
|
||
|
- Examples: Add a simple UDP relay bridge for testing configurations
|
||
|
with multiple networks. Includes a host-side test driver for
|
||
|
testing the bridge.
|
||
|
- Netutils: Add implementation of timeouts for the netutils webclient.
|
||
|
From Brennan Ashton
|
||
|
- NSH: Add support for a custom NSH ROMFS startup image header file
|
||
|
location. From Martin Lederhilger.
|
||
|
- OS test: Add a simple test of named semaphores.
|
||
|
- OS test: Add AIO test case in OS test.
|
||
|
|
||
|
Efforts In Progress. The following are features that are partially
|
||
|
implemented but present in this release. They are not likely to be
|
||
|
completed soon.
|
||
|
|
||
|
* Processes. Much of the work in this release is focused on the
|
||
|
realization of Unix-style user processes in NuttX. There is more to
|
||
|
be done, however. The full roadmap and status is available at:
|
||
|
https://cwiki.apache.org/confluence/display/NUTTX/Memory+Configurations
|
||
|
|
||
|
* XMega: There are some fragments in place for an XMega port. That
|
||
|
port has not really started, however.
|
||
|
|
||
|
* Galileo: Similarly, there are fragments in place for an Intel Galileo
|
||
|
port. The port not been started in earnest either.
|
||
|
|
||
|
Bugfixes. Only the most critical bugfixes are listed here (see the
|
||
|
ChangeLog for the complete list of bugfixes and for additional, more
|
||
|
detailed bugfix information):
|
||
|
|
||
|
I ran cppcheck against the entire code base and correct many latent bugs
|
||
|
including things as serious as memory leaks, two locations where interrupts
|
||
|
were be disabled but never re-enabled, and errors in the Tickless mode of
|
||
|
operation. My thanks to the developers of cppcheck! I am impressed!
|
||
|
|
||
|
* Core OS:
|
||
|
|
||
|
- vfork(): Now that arguments are kept on the stack, the way that
|
||
|
arguments are passed from parent to child in vfork() must change.
|
||
|
This bug has always been present, but was not visible with the
|
||
|
old strdup() way of passing arguments.
|
||
|
- vfork() problem: If we get to vfork() via system call, then we
|
||
|
need to clone some system call information so that the return form
|
||
|
the cloned system call works correctly.
|
||
|
- Fixes to tickless operation code, especially in alarm mode. From
|
||
|
Brandon Warhurst.
|
||
|
- Fix an important bug in the watchdog timer creation logic.
|
||
|
- Calling mq_timedreceived() with immediate timeout was getting stuck
|
||
|
and not timing out. Immediate timeout is achieved by setting absolute
|
||
|
timeout value to past time, for example abstime={ .tv_sec=0,
|
||
|
.tv_nsec=0 }. However absolute time was converted to relative time
|
||
|
using unsigned integer arithmetic and resulted large ticks count by
|
||
|
clock_abstime2ticks, instead of expected negative ticks value.
|
||
|
Change corrects clock_abstime2ticks() to return negative ticks, if
|
||
|
absolute time is in the past. From Jussi Kivilinna.
|
||
|
|
||
|
* Memory Management:
|
||
|
|
||
|
- Fix a place in the memory manager where it explicitly assumed that
|
||
|
the size of a pointer is 4 bytes. That assumption was OK if the
|
||
|
actual size is smaller but made the heap unstable when used with
|
||
|
the x86_64 host simulation.
|
||
|
- Granule Allocator: If the INTR granule allocator mode is enabled,
|
||
|
there is no semaphore to destroy. From Lorenz Meier.
|
||
|
|
||
|
* Networking:
|
||
|
|
||
|
- Network routing: I don't think that the net_route() function has
|
||
|
ever worked correctly. The source IP was updated in the match
|
||
|
struct instead of the route IP. From Brennan Ashton.
|
||
|
- Move and rename IP header flag definitions. The problem fixed here
|
||
|
is that there IP header flag definitions were not available when TCP
|
||
|
was disabled. The IP flags are used in ICMP and IGMP.
|
||
|
- Network routing: Refuse to perform routing table lookups for the
|
||
|
Broadcast IP address. From Brennan Ashton.
|
||
|
- Network routing: Add logic to netdev_findbyaddr() to return the
|
||
|
correct network device for the case where a broadcast
|
||
|
address is used. This change caused trivial ripples through other
|
||
|
files because additional parameters are required for
|
||
|
netdev_findbyaddr() when CONFIG_NET_MULTINIC.
|
||
|
|
||
|
* File Systems/Block Drivers/MTD:
|
||
|
|
||
|
- NXFFS Dump: Fix problems with redefinitions of fdbg macro. With the
|
||
|
fix to the syslog prototype, a LOG priority must now be the first
|
||
|
parameter. Fixed by replacing all occurrences of fdbg with
|
||
|
syslog(LOG_DEBUG, and eliminating the macro redefinitions. Noted
|
||
|
by Sebastien Lorquet.
|
||
|
- poll() was not waking up from signals (for example mq_notify()
|
||
|
events). From Jussi Kivilinna.
|
||
|
- poll(): Add proper handling for sem_timedwait errnos. From Jussi
|
||
|
Kivilinna.
|
||
|
- include/nuttx/fs/fs.h: Fix typo in conditional compilation. From
|
||
|
Alan Carvalho de Assis.
|
||
|
|
||
|
* Graphics/Graphic-Related Drivers:
|
||
|
|
||
|
- Remove warnings when CONFIG_NXTK_BORDERWIDTH is set to zero. From
|
||
|
Pierre-Noel Bouteville.
|
||
|
|
||
|
* Common Drivers:
|
||
|
|
||
|
- Make standard syslog and vsyslog POSIX compliant (also modify
|
||
|
non-standard syslog functions for compatibility).
|
||
|
- R/W buffering: Fix typo that can cause compilation error.
|
||
|
|
||
|
* Atmel SAM3/4:
|
||
|
|
||
|
- SAM4S: Add missing SPI0 clock configuration macro for the SAM4S. From spasbyspas.
|
||
|
|
||
|
* Atmel SAM3/4 Drivers:
|
||
|
|
||
|
- SAM4E-EK: Fix an error in a USART1 pin number.
|
||
|
|
||
|
* Atmel SAMA5D3/4 Drivers:
|
||
|
|
||
|
- SAMA5DF4: Fix several typos that will prevented EMAC1 from
|
||
|
initializing properly.
|
||
|
|
||
|
* NXP LPC43xx:
|
||
|
|
||
|
- Fixes to allow compile of lpc43_gpioint.c. From Brandon Warhurst.
|
||
|
|
||
|
* STMicro STM32:
|
||
|
|
||
|
- Add missing ADC pinmap definitions for the STM32 F103R from Martin
|
||
|
Lederhilger.
|
||
|
|
||
|
* STMicro STM32 Drivers:
|
||
|
|
||
|
- STM32 EXTI: Correct STM32 RTC EXTI bit definition. From Lazlo.
|
||
|
- STM32 IWDG, WWDG, DBGMCU: Fix watchdog stop bit usage. From Lazlo.
|
||
|
- STM32 OTGFS: Correct a typo in the STM32 OTGFS register bit definitions.
|
||
|
|
||
|
* ARM:
|
||
|
|
||
|
- ARM up_internal.h: Add protection from C++ name mangling in the
|
||
|
ARM up_internal.h. From Lorenz Meier.
|
||
|
|
||
|
* MicroChip PIC32MX:
|
||
|
|
||
|
- PIC32MX7: DEVCFG0 bit 2 must be set. Writing bit 2 as zero can
|
||
|
brick the CPU on some versions. From Cris Kvist.
|
||
|
|
||
|
* C Library:
|
||
|
|
||
|
- The implementation of access() as vararg macro has the issue that
|
||
|
any function call with the same name (even in a C++ class) will
|
||
|
match with it and result in a compile error. Replaced with a small
|
||
|
function. This resolves the compile issue, and shouldn't have
|
||
|
negative side effects for users of the function. From Lorenz Meier.
|
||
|
- The definition of strncpy() is that empty space should be zero-
|
||
|
filled, the change adds the zero filling (See the POSIX spec here:
|
||
|
http://pubs.opengroup.org/onlinepubs/7908799/xsh/strncpy.html). From
|
||
|
Lorenz Meier.
|
||
|
- limits.h: Remove the definition of INT_FAST32_MIN which is already
|
||
|
defined in stdint.h (the correct location). From Lorenz Meier.
|
||
|
|
||
|
* Applications:
|
||
|
|
||
|
- apps/: Correct everything under apps to use the corrected syslog
|
||
|
interfaces. Remove any non-portable uses of syslog.
|
||
|
- NSH: Fix ls -l output for regular files.
|
||
|
- NSH: Fix reversed in/out file closing in DD command when an error
|
||
|
occurs. From Ken Pettit.
|
||
|
- NSH: Add logic to restart the console wait if an error occurs
|
||
|
while reading from the console. In USB console startup, the logic
|
||
|
must be able to open the USB serial and receive 3 newlines.
|
||
|
However, it the USB driver is disconnected or otherwise fails before
|
||
|
the 3 newlines are received, the receive loop becomes a killer,
|
||
|
infinite loop, CPU hog. Noted by spasbyspas.
|
||
|
- Netutils: Fix memcpy of host address in netlib_gethostaddr(). From
|
||
|
Brennan Ashton.
|
||
|
- Netutils: If you make a DNS request before the DNS address it would
|
||
|
cause an assertion. The state of the IP setting is not something the
|
||
|
application should be aware of, it should only be concerned with
|
||
|
whether or not the name was resolved. From Brennan Ashton.
|
||
|
- Netutils: Fix md5 hashing when digest[$i] islower that 16. From
|
||
|
Sergey.
|
||
|
- Stack Monitor: Fix compile problems introduced when the syslog()
|
||
|
prototype changed; Also update Makefile for kernel build From
|
||
|
Radoslaw Adamczyk.
|
||
|
- Examples: Update NxTerm makefile for kernel-build issues. From
|
||
|
Radoslaw Adamczyk.
|
||
|
- Examples: Fixes to keypadtest from Pierre-Noel Bouteville.
|
||
|
- Examples: These examples all set the IP address of eth1 but the
|
||
|
netmask and gateway of eth0 if DHCP is enabled: discover, tcpecho,
|
||
|
webserver, xmlrpc. That can't be right.
|