nuttx/Documentation/ReleaseNotes/NuttX-7.11

384 lines
14 KiB
Plaintext
Raw Normal View History

NuttX-7.11
------------------------
The 111th release of NuttX, Version 7.11, was made on August 13 2015,
and is available for download from the Bitbucket.org website. Note
that release consists of two tarballs: nuttx-7.11.tar.gz and
apps-7.11.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:
* Core OS:
- clock_gettime(): Use up_timer_gettime for CLOCK_MONOTONIC in
tickless mode. From Max Neklyudov.
- waitpid(): Implement WNOHANG for waitpid() only and for the case of
CONFIG_SCHED_HAVE_PARENT not selected. From Max Neklyudov.
- SCHED_SPORADIC: Add a sporadic scheduler to NuttX.
- Extend the processor-specific interface to include information to
support the Sporadic Scheduler.
- sem_tickwait(): Added this function for internal use within the OS.
It is a non-standard but more efficient version of sem_timedwait()
for use in higher performance device drivers.
* Binary Loader:
* Graphics/Graphic Drivers:
- Graphics: Implement anti-aliasing in order to clean the drawing of
all edges. Anti-aliasing is supported in the horizontal, raster
direction only.
- SSD1306 LCD Driver: Modify the SSD1306 LCD driver to support either
the SPI or I2C interface. From Alan Carvalho de Assis.
* File Systems/Block Drivers/MTD:
- mount: Add the ability to mount a file system on top of en existing
node in the pseudo-file system.
- epoll(): Add a very simple epoll layer just around poll calls. To
satisfy build app requirements. From Anton D. Kachalov.
* Common Device Drivers:
- IOCTL: Add relay IOCTL definitions. From Max Neklyudov.
- I/O Expander Framework: Add an I/O expander driver framework. From
Sebastien Lorquet
- NXP PCA9555 I/O Explander. Add PCA9555 driver.From Sebastien
Lorquet
- BMP180 Barameter: Add support to Bosch BMP180 barometer. From
Alan Carvalho de Assis.
- CAN IOCTLs: Add CAN IOCTL command definitions to manage CAN message
filtering
- CAN Driver: Add configuration to support DLC to byte conversions
needed for CAN FD mode.
- SPI Slave Interface: Add a definition of an SPI slave interface.
- LM92 Temperature Sensor: Add a driver for the LM92 temperature
sensor. Contributed by Paul Alexander Patience.
- AS5048B Rotary Magnetic Sensor: Add support for an AS5048B rotary
magnetic sensor. From Paul Alexander Patience.
- Ramtron Driver: Update to include supportf for newer RAMTRON parts.
From David Sidrane.
- MB7040 Sonar Driver: Add support for a MB7040 sonar driver. From
Paul Alexander Patience.
- ms5805 Altimeter Driver: Add support for an MS5805 altimeter. From
Paul Alexander Patience.
* Networking:
- DNS Client: Implement the low-level network DNS packet protocol to
request and receive IPv6 address mappings.
- NetDB: Add support for a DNS host name resolution cache. This can
save a lot of DNS name server lookups (but might also have the
negative consequence of using stale IP address mappings.
- NetDB: Name resolution logic now supports lookups from a file like
/etc/hosts.
- Network Initialization: Add CONFIG_NETDEV_LATEINIT that can be
used to suppress calls to up_netinitialize() from early in
initialization.
- FTMAC100 Ethernet MAC Driver. Add support for Faraday FTMCA100
Ethernet MAC/ From Anton D. Kachalov.
- UDP Networking: Add support for send() for connected UDP sockets.
* Crypto:
- Add CFB and MAC AES modes. From Max Neklyudov.
* Simulation Platform:
- Simulation: Implement board_power_off() for the simulation platform.
This allows for a graceful exit from the simulation.
* MoxaRT:
- MoxaRT SoC: Add support for MoxaRT SoC found in the most Moxa serial
converters such as NP51x0, NP66xx, UC72xx. From Anton D. Kachalov.
* MoxaRT Boards:
- Moxa NP51x0: Moxa NP51x0 series of 2-port advanced RS-232/422/485
serial device servers. From Anton D. Kachalov.
* ARMv6-M:
- ARMv6-M Assertions: Port some per-process stack dumping logic from
ARMv7-M to ARMv6-M. From Alan Carvalho de Assis.
* Atmel SAMD/L Boards:
- SAML21: DMA: Add SAML21 DMA support.
- SAMD21: Add architecture support for the SAMD21 family.
- SAMD21-Xplained: Board configuration for the SAMD21 Xplained board.
* Atmel SAM3/4 Drivers:
- SAM4E: Add default loop optimization if EEFC_FMR is available in the
configuration (i.e., for SAM4S and 4E). From Marco Aurélio da Cruz.
- crypto/ and SAM4CM: Add CFB and MAC AES modes. From Max Neklyudov.
- SAM3/4: Add a TWI driver for the SAM4CM. From Max Neklyudov.
* Freescale (NXP) Kinetis:
- Kinetis: Add support for MK20DN--VLH5 and MK20DX---VLH5. Needed
for backward compatible support for Teensy-3.0.
* Freescale (NXP) Kinetis Boards:
- Teensy 3.x: Add board support for the PJRC Teensy-3.0 and
Teensy-3.1 boards.
* Atmel SAMV7 Drivers:
- SAMV7: Add an MCAN driver for the SAMV7 platform.
- SAMV7 SPI Slave Driver: Add the an SPI slave driver.
* STMicro STM32:
- STMicro STM32 F7: Add architecture support for the STMicro STM32
F7.
- STM32 F446: Add support for the STMicro STM32 F446. From David
Sidrane.
* STMicro STM32 Drivers:
- STM32 F7: Add an STM32 F7 Ethernet driver.
- STM32 F7: Port the STM32 F4 DMA driver.
- STM32 F4 ADC: Add DMA support to the ADC driver for STM32 F4. From
Max Kriegler.
* STMicro STM32 Boards:
- STM32F762G-Disco: Add support for the STMicro STM32 F7 Discovery
board.
- STM32F4-Disco: Add support to BMP180 driver on the STM32F4 Discovery.
From Alan Carvalho de Assis.
* C Library/Header Files:
- Add asctime(), asctime_r(), ctime(), and ctime_r().
- sethostname(): Add support for sethostname().
- gethostbyname() and gethostbyaddr(): Add support for
gethostbyname() and gethostbyaddr(). Also support included for the
non-standard gethostbyname_r() and gethostbyaddr_r(). This moves
the DNS client logic from apps/ into the NuttX libc implementation.
* Tools:
- testbuild.sh: Add a script that can be used to perform building
testing for several board configurations.
* Build/Configuration System:
- apps/ Build System: No longer depends on hardcoded lists of
directories. Instead, it does a wildcard search to find all
appropriate directories. This means that to install a new
application, you simply have to copy the directory (or link it) into
the apps/ directory. If the new directory includes a Makefile and
Make.defs file, then it will automatically be included in the build.
- mkkonfig.sh: Add the tool mkkconfig.sh that dynamically builds the
apps/Kconfig file at configuration time. The hardcoded
configuration file has been removed and now the top-level Makefile
executes tools/mkkconfig.sh to auto-generate the top-level Kconfig
file. A new apps/ make target call preconfig: was added to support
this operation. Now you do not have to modify the top-level Kconfig
file to add a new directory into the configuration; the top-level
subdirectory simply needs to include a Kconfig file and it will
automatically be included in the configuration. The native Windows
build is temporarily broken until a new apps/tools/mkconfig.bat
script is generated.
- mkkconfig.bat: Add the Windows script corresponding to
apps/tools/mkkconfig.sh. Needed for a Windows native build.
* Applications: apps/nshlib:
- NSH shutdown command: NSH will now support an (optional) shutdown
command if the board provides the option CONFIG_BOARDCTL_POWEROFF.
The command can also be used to reset the system if
CONFIG_BOARDCTL_RESET=y.
- NSH uname command: Add support for a uname command.
- NSH nslookup command: Add an nslookup command.
* Applications: apps/system:
- NetDB: Add a system command to access the network database.
- readline(): Add support for Unix-style tab complete to readline.
Contributed by Nghia Ho.
- readline(): Extended the tab-completion support to also expand NSH
command names.
- readline(): Add support for an in-memory command line history that
can be retrieved using the up and down arrows. Contributed by Nghia
Ho.
* Applications: apps/netutils:
- DNS client: Moved the DNS client logic into the NuttX C library.
It is a necessary part for the full implementation of the netdb logic
and provides more flexibility in that location.
- Replace calls to the non-standard dns_gethotip() with calls to
standard gethostbyname().
- NetLib: Create netlib wrapper functions around dns_getserver() and
dns_setserver() to isolate application code from changes to those
interfaces.
* Applications: apps/examples:
- OS test: Extend the OS test to include a test of
pthread_mutex_trylock() for recursive mutexes. From Juha Niskanen.
- OS test: Add a test for the sporadic scheduler.
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:
- pthreads: Use -1 instead of 0 as PID for unclaimed mutexes. From
Juha Niskanen.
- pthreads: Implement pthread_mutex_trylock() for recursive mutexes.
From Juha Niskanen.
- pthread_create(): Group binding needs to be cleared before
sched_releasetcb(), as otherwise group_leave() will be called and
group->tg_nmembers decremented or group being released. group_leave()
should be called only after group_join() is called, not after
group_bind(). From Jussi Kivilinna.
- Protected Mode User Memory Allocator: Redesigned how the user space
heap is accessed from the kernel code in protected mode. It used to
call memory management functions in user space via function pointers
in the userspace interface. That is inefficient because the first
thing that those memory management functions do is to trap back into
the kernel to get the current PID. Worse, that operation can be
fatal is certain fragile situations such as when a task is exiting.
The solution is to remove all of the memory management function
calls from the interface. Instead, the interface exports the users
pace heap structure and then kernel size implementations of those
memory management functions will operate on the userspace heap
structure. This avoids the unnecessary system calls and, more
importantly, failures do to freeing memory when a test exits.
- pthread_create(): Fix an (unlikely) error in fallback value in the
event of a failure (which should never occur).
* Common Drivers:
- STMPE811 Driver: In stmpe811_instanciate() when
CONFIG_STMPE811_MULTIPLE is enabled, and the call to
stmpe811_checkid() fails, then the linked device list is not
restored to its previous state. From Sebastien Lorquet.
- CAN driver: Fix an issue in the CAN driver where the rx_sem count
can grow beyond bounds.
* File System/Block Drivers:
- NFS client: Fix prototype of unbind method. The function prototype
was not updated for NFS after a recent change to the file system
interface. From Manuel St??.
* Networking/Network Drivers:
- netconfig.h: Fix some backward compilation that was emitting #error
in the wrong condition when SLIP was enabled.
- SLIP Driver: Fix a missed name change when many of network
interface names changed sometime back but were apparently never
updated for SLIP.
- Networking: Allow receipt of empty UDP packets. From Max Neklyudov.
* ARMv6-M:
- ARMv6-M: Fix Cortex-M0 assembly error when the interrupt stack is
enabled. From Alan Carvalho de Assis.
* Atmel SAMD/L Drivers:
- SAMD20, D21, L21: In the SAML21, SERCOM5 uses a different SLOW clock
channel (and, hence, also a different SLOW GCLK generator). This
means that the channel selection cannot be a global definition but
must be a per SERCOM configuration setting.
- SAMD/L: Several fixes to register definitions and types. From
Janne Rosberg.
* Atmel SAM3/4 Drivers:
- SAM3/4 UART: Back out an error introduced with commit
02c33f66c5a8be774034cd40e4125e9323c7b4d8. Causes an infinite loop in
up_lowputc(). From Max Neklyudov.
- SAM4CM: Fix SUPC register definitions. From Max Neklyudov.
- SAM3/4 WDT: Correct some problems with SAM3/4 watchdog driver.
Includes some small improvements. From Max Neklyudov.
* Atmel SAMV7 Drivers:
- SAMV7 UART: Also back the bad cloned change o sam_lowputc.c for
SAMV7 platform.
* NXP LPC43xx Drivers:
- LPC4350: Correct some LPC4350 GPIO pin configurations. From
Alessandro Temil.
* SiLabs EMF32 Drivers:
- EFM32 SPI: Correct write to incorrect register in EFM32 SPI driver.
From Pierre-noel Bouteville.
* STMicro STM32 Drivers:
- STM32 F15x: STM322 F15x stm32_stdclockconfig() was calling
stm32_pw_setvos() which accessed PWR_CR via an inactive APB From
Juha Niskaneni.
- STM32 Ethernet: Extend STM32 Ethernet operating frequency to 180MHz.
From Sebastien Lorquet.
* STMicro STM32 Boards:
- SAMV7 Xplained: In clock configuration, divider was set to 25 to get
25*12MHz=300MHz CPU clock. The correct multiplier is 24 because the
calculation if (24+1)*12MHz. So the board was running at 312MHz.
From Efim Monjak.
* ARMv7-A:
- Cortex-A5 vfork(): Fix a Cortex-A compilation error when system
calls are enabled in modes other than CONFIG_BUILD_KERNEL.
* Atmel SAMA5 Drivers:
- SAMA5Dx EHCI: Fix some bad conditional compilation that left a
function undefined if CONFIG_USBHOST_ASYNCH is not selected.
* C Library/Header Files:
- getopt(): Uninitialized variable can cause hardfault from getopt()
if required argument is missing. From George McWilliams.
* Applications: apps/nshlib:
- NSH/THHPD: Change decoding to handle the increased size of the
scheduling policy field in the TCB.
* Applications: apps/netutils:
- THTTPD: Fix compilation problems when
CONFIG_THTTPD_GENERATE_INDICES is defined.
- THTTPD: Missing gci-src as a dependency path when building with
BINFS enabled.
* Applications: apps/examples:
- poll() example: Fix a few bit-rot compilation errors.
- Nx Lines example: If CONFIG_NX_ANTIALIASING=y, then the nxlines
example now erases a line that is 2 pixels longer and 2 pixels wider
than the line it drew. That eliminates edges effects due to
applying the anti-aliasing algorithm twice. A better solution
would be to make anti-aliasing an option for each graphics call so
you would rend the line with anti-aliasing ON and clear it with
anti-aliasing OFF. but I don't have the wherewithal for that change
today.
- OS test: Improve synchronization in round robin tests. On very fast
processors, there are race conditions that make the test fail.
Need better interlocking to assure that the threads actually do start
at the same time.