nuttx/Documentation/ReleaseNotes/NuttX-7.12

290 lines
11 KiB
Plaintext
Raw Normal View History

NuttX-7.12
----------
The 112th release of NuttX, Version 7.12, was made on October 1, 2015,
and is available for download from the Bitbucket.org website. Note
that release consists of two tarballs: nuttx-7.12.tar.gz and
apps-7.12.tar.gz. These are available from:
https://bitbucket.org/patacongo/nuttx/downloads
https://bitbucket.org/nuttx/apps/downloads
Both may be needed (see the top-level nuttx/README.txt file for build
information).
Additional new features and extended functionality:
* Graphics/Graphic Drivers:
- Added SSD1351 OLED controller support. Contributed by Paul
Alexander Patience.
* Common Device Drivers:
- MS58xx: Generalize the MS5805 altimeter driver to support other
family members. From Paul Alexander Patience.
- CAN driver interface: Add an error indication bit to the CAN
message report.
- Developed a new interface for QSPI. Most QSPI hardware (such as the
SAMV71) used a programmed interface to access the QuadSPI FLASH.
That programmed interface is no compatible with the simpler NuttX
SPI data transfer interface.
- Added a driver for ST25L1*K QuadSPI parts.
- Renamed the battery driver interface to battery_gauge since it
really only implements a battery fuel gauge. From Alan Carvalho de
Assis.
- Added a new framework to support a batter charger interface. From
Alan Carvalho de Assis.
- Added a BQ24250 battery charger driver. From Alan Carvalho de Assis.
* Networking:
- Added support for the local loopback device (dev lo, hostname localhost).
- Added NetDB support for the local loopback device.
- Network initialization: Automatically initialize all the TUN and
loopback devices if they arein the configuration.
* Simulation Platform:
- The simulation now runs under Cygwin64. Modern Cygwin X86_64
machines follow the Microsoft ABI for parameter passing. The Linux
System 5 ABI would not work on X86_64-based Cygwin machines. Newer
Cygwin tool chains do nor pre-pend symbol names with the underscore
character.
* Atmel SAMA5Dx:
- Added architectural support for the Atmel SAMA5D2 parts. Not fully
verified in this NuttX release.
* Atmel SAMA5Dx Boards:
- Added support for the Atmel SAMA45D2 Xplained Ultra board. Not
fully verified in this NuttX release.
* Atmel SAMV7 Drivers:
- SAMV7 USBHS DCD: The device controller driver is (finally)
functional.
* NXP LPC17xx:
- Implement options to use external SDRAM and or SRAM for the heap.
From Pavel Pisa.
* NXP LPC43x:
- Added architectural support for the LPC4370. From Lok Tep.
* NXP LPC43xx Drivers:
- Added Ethernet support. From Ilya Averyanov.
- Added LPC43xx EHCI driver from Ilya Averyanov.
* NXP LPC43xx Drivers:
- Added support for the NXP LPC4370-Link2 development board from Lok
Tep.
* STMicro STM32:
- Added architectural for STM32F303K6, STM32F303K8, STM32F303C6,
STM32F303C8, STM32F303RD, and STM32F303RE devices. From Paul
Alexander Patience.
* STMicro STM32 Drivers:
- Added OTG support for STM32F44x. From David Sidrane.
* STMicro STM32 Boards:
- Added support for the STMicro Nucleo F303ERE board from Paul
Alexander Patience.
* C Library/Header Files:
- stdlib: Add support for div() to the C library. From OrbitalFox.
Also added ldiv() and lldiv() which are equivalent to div() with
long and long long types, respectively, instead of int.
- Added an implementation of the standard shutdown function.
* Tools:
- tools/mksymtab: declare g_symtab array as const to occupy RO section
(Flash). From Pavel Pisa.
* Build/Configuration System:
- Simplify configs/ Makefiles by combining common logic into a new
Board.mk Makefile fragment. From Paul Alexander Patience.
* Applications: apps/system:
- apps/system/symtab: Optional canned symtab inclusion to the build.
When option CONFIG_SYSTEM_SYMTAB is selected and symbol table file
libc/symtab/canned_symtab.inc is prepared then application can use
system provided complete symbol table. The option has substantial
effect on system image size. Mainly code/text. If loading of
applications at runtime is not planned do not select this. From
Pavel Pisa.
* Applications: apps/canutils:
- apps/canutils/uavcan: Add support for libuavcan. From Paul Alexander Patience.
* Applications: apps/examples:
- apps/examples/can: Extend the CAN loopback test by adding more
command line options.
- apps/examples/usbserial: Can now be run as an NSH builtin-function.
Now uses a configurable IO buffer size.
- apps/examples/nettest: Add option to suppress network initialization.
This is necessary if the nettest is run from NSH which has already
initialized the network.
- apps/examples/nettest: Extend test so that can be performed using
the local loopback device.
- apps/examples/netloop: Add a test of the local loopback device.
- apps/examples/udpblaster: Add a test to stress the network by
sending UDP packets at a very high rate. .
- apps/examples/uavcan: libuavcan example from Paul Alexander Patience.
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):
* Core OS:
- wd_create(): Correct a counting error in the number of available
watchdog timers. When the number of free timers is low, the counter
could be incremented below zero.
- mq_open(): When message queue is opened, inode_reserve() leaves the
reference count at zero. mq_open() logic must assure that the
reference count of the newly created inode is one.
- work_queue(): Logic that sets the queued indication and the logic
that does the actual queuing must be atomic.
* Binary Loader:
- Fix a memory leak in the built-in application logic: File was not
being closed. From Bruno Herrera.
* File System/Block Drivers:
- poll(): If we fail to setup the poll for any file descriptor, for
any reason, set the POLLERR bit.
- rwbuffer: Fix some logic errors. From Dmitry Nikolaev via Juha
Niskanen.
- ROMFS: One allocation was not being freed if there was a subsequent
failure to allocation I/O buffers resulting in a memory leak on
certain error conditions. From Bruno Herrera.
* Networking/Network Drivers:
- Fix a bug in tun interface driver. From Max Neklyudov.
- recvfrom(): Correct wait for new data when NET_UDP_READAHEAD is
enabled. Fix size accounting when recvfrom_udpreadahead() sets
state.rf_recvlen == -1. I have not checked if data are accumulated
to the right position in the buffer however. From Pavel Pisa.
- networking: Correct return value from psock_tcp_accept(). From
SaeHie Park.
- TCP: Fix a problem in when there are multiple network devices.
Polls were being sent to all TCP sockets before. This is not good
because it means that packets may sometimes be sent out on the wrong
device. That is inefficient because it will cause retransmissions
and bad performance. But, worse, when one of the devices is not
Ethernet, it will have a different MSS and, as a result, incorrect
data transfers can cause crashes. The fix is to lock into a single
device once the MSS is locked locked down.
- net/tcp: The logic that binds a specific network device to a
connection was faulty for the case of multiple network devices. On
bind(), the local address should be used to associate a device with
the connection (if the local address is not INADDR_ANY); On connect(),
the remote address should be used (in case the local address is
INADDR_ANY). On accept(), it does not matter but the remote address
is the one guaranteed to be available.
- net/tcp: Fix unbuffered send compilation error when Ethernet is not
enabled. From Alan Cavalho de Assis.
* ARMv7-M:
- All ARMV7-M IRQ setup: Always set the NVIC vector table address
unconditionally. This is needed in cases where the code is running
with a bootload and when the code is running from RAM. It is also
needed by the logic of up_ramvec_initialize() which gets the vector
base address from the NVIC. Suggested by Pavel Pisa.
- Fix some H/W floating point logic: In the original implementation,
!defined(CONFIG_ARMV7M_CMNVECTOR) was a sufficient test to determine
if lazy floating point register saving was being used. But recents
changes added common lazy register as well so now that test must be
(!defined(CONFIG_ARMV7M_CMNVECTOR) || defined(CONFIG_ARMV7M_LAZYFPU)).
- ARMv7-M, all "lazy" interrupt stack logic. Assembly instruction
that fetches the saved value is incorrect; replace with more
traditional push and pop. This is an important fix. Noted by
Stefan Kolb.
- All ARMV7-M: Force 8-byte stack alignment when calling from assembly
to C to interrupt handling.
- up_schedulesigaction(): Fix logic that determines if there is a
pending signal action before scheduling the next signal action.
Both the test and the scheduling action need to be atomic. This
problem was fixed on the ARMv7-M but also ported to other
architectures that had the same issue.
* NXP LPC43xx:
- LPC43xx: Fix NVIC_SYSH_PRIORITY_STEP define. From Ilya Averyanov.
- LPC43xx: Fix missing #define in eeprom. From Ilya Averyanov.
* NXP LPC43xx Drivers:
- Fixed the SPI driver. From Ilya Averyanov.
* Atmel SAMA5 Drivers:
- LPC31 and SAMA5D EHCI: Fix qh_ioccheck to move bp to next QH. From
Ilya Averyanov.
- LPC31 and SAMA5D EHCI: Performance improvement: Do not disable the
asynchronous queue when adding a new QH structure. From Ilya
Averyanov.
* C Library/Header Files:
- gethostbyname(): correct returned address format when DNS is used.
The hostent.h_addr_list should point to raw in_addr or in6_addr
as defined in the standard. Original implementation used that for
numeric addresses but for DNS lookup returned pointer to whole
sockaddr_in or sockaddr_in6. From Pavel Pisa .
- asin(): The function did not convert for some input values. asing()
did not convert for values which do not belong to the domain of the
function. But aside of that the function also did not converge for
allowed values. I achieved a conversion of the function by
reducing the DBL_EPSION and by checking if the input value is in
the domain of the function. This is a fix for the problem but the
function should always terminate after a given number of iterations.
From Stefan Kolb.
- Change all references from avsprintf to vasprintf. From Sebastien
Lorquet.
* Applications: apps/nshlib:
- Fix error handling in 'cat' command. On a failure to allocate
memory, a file was not being closed. From Bruno Herrera.
- Fix error handling in 'mv' command. On a failure to expand the
second path, the memory allocated for the expansion of the first
path was not being freed. From Bruno Herrera.
* Applications: apps/system:
- apps/system/netdb: Failed to build if CONFIG_NET_HOSTFILE was not
defined because gethostbyaddr() was not available. Noted by
OrbitalFox.
* Applications: apps/netutils:
- Various Kconfig files in netutils: Fix some changes from from
NETUTILS_DNSCLIENT to NETDB_DNSCLIENT. From Pavel Pisa.
* Applications: apps/modbus:
- Macros PR_BEGIN_EXTERN_C and PR_END_EXTERN_C were not defined in
all contexts. Replace with explicit expansion in all cases. From Stefan Kolb.