384 lines
14 KiB
Plaintext
384 lines
14 KiB
Plaintext
|
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.
|