269 lines
9.9 KiB
Plaintext
269 lines
9.9 KiB
Plaintext
|
NuttX-7.15
|
||
|
----------
|
||
|
|
||
|
The 115th release of NuttX, Version 7.15, was made on March 27, 2016,
|
||
|
and is available for download from the Bitbucket.org website. Note
|
||
|
that release consists of two tarballs: nuttx-7.15.tar.gz and
|
||
|
apps-7.15.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:
|
||
|
|
||
|
- Add a state variable that provides the current level of OS
|
||
|
initialization. This is needed by some logic that may attempt to
|
||
|
run early in the start-up sequence but cannot run if a sufficient
|
||
|
level of initialization has not yet occurred.
|
||
|
- Spinlocks: Add interface definitions for to support spinlocks as
|
||
|
needed for multi-CPU configurations.
|
||
|
- SMP support. Support for Symmetric Multi-Processing (SMP) added.
|
||
|
This affects many internal data structures, spinlock extensions
|
||
|
and renaming of interrupt enable/disable interfaces, new platform
|
||
|
interfaces to support CPU initialization and inter-actions, and
|
||
|
new application interfaces to manage CPU affinity. The changes
|
||
|
are too extensive to summarize here; see the SMP Wiki page at
|
||
|
https://cwiki.apache.org/confluence/display/NUTTX/SMP. The
|
||
|
new platform interfaces are also described in the NuttX porting
|
||
|
guide: https://nuttx.apache.org/docs/latest/quickstart/organization.html.
|
||
|
Only partially verified; awaiting hardware for the complete
|
||
|
verification.
|
||
|
- TLS: Basic definitions needed to support thread local storage
|
||
|
(TLS). TLS is not used anywhere yet (and may not be used in the
|
||
|
near future either).
|
||
|
- Performance Monitoring: Add a configuration option to buffer
|
||
|
RTOS instrumentation data in an in-memory buffer.
|
||
|
- boardctl(): Add boardctl() support that will permit applications
|
||
|
to control USB devices.
|
||
|
|
||
|
* File Systems/Block Drivers:
|
||
|
|
||
|
- procfs: Add /proc/kmm entry that shows that state of the kernel
|
||
|
heap. Only useful in PROTECTED and KERNEL build modes where there
|
||
|
is a kernel heap.
|
||
|
- procfs: Add support for showing CPU in the taste status if SMP is
|
||
|
enabled.
|
||
|
|
||
|
* Networking:
|
||
|
|
||
|
- ARP: Add support for IOCTL commands to manage the ARP table.
|
||
|
- IEEE 802.15.4 and 6LowPAN: There are some radio drivers and a
|
||
|
directory structure is in place. However, most of this
|
||
|
development is occurring on a fork and is not yet available in the
|
||
|
NuttX repositories. Hopefully in NuttX-7.16.
|
||
|
|
||
|
* Common Device Drivers:
|
||
|
|
||
|
- ADS1242: Driver for the 24-Bit Differential Input ADC ADS1242 that
|
||
|
communicates via SPI with a MCU. Reading the ADC conversion result
|
||
|
as well as configuring the ADC, setting the input channel, etc. is
|
||
|
implemented via ioctl calls. However, it does not yet implement
|
||
|
the standard ADC interface. From Alexander Entinger.
|
||
|
- U-Blox Modem: Add an upper half driver for the U-Blox Modem. From
|
||
|
Vladimir Komendantskiy.
|
||
|
- I2C: Add an I2C, "upper half", character drivers to support raw I2C
|
||
|
data transfers for test applications.
|
||
|
- RGB LED: Add a driver to manage a RGB LED via PWM. From Alan
|
||
|
Carvalho de Assis.
|
||
|
- Performance Monitoring: Add a character driver that will allow an
|
||
|
application to read buffered scheduler instrumentation data.
|
||
|
|
||
|
* Simulation Platform:
|
||
|
|
||
|
- SMP: Add multi-CPU support to the simulation to support SMP
|
||
|
investigation. There are issues with the simulation and it is less
|
||
|
than perfect but sufficient for some very preliminary testing of
|
||
|
the core SMP feature.
|
||
|
|
||
|
* ARMv7-A, ARMv7-R, and ARMv7-M:
|
||
|
|
||
|
- ARMv7-A, ARMv7-R, and ARMv7-M: Add test-and-set logic and
|
||
|
definitions needed to supports spinlocks.
|
||
|
- ARMv7-A: Added MPCOre Generic Interrupt Controller (GICv2) and
|
||
|
Global Timer support
|
||
|
- ARMv7-A: Now includes in MCU-specific hooks needed for SMP support.
|
||
|
|
||
|
* Atmel SAMV7 Drivers:
|
||
|
|
||
|
- HSMSI: HSMCI driver can now be configured to handle unaligned data
|
||
|
buffers.
|
||
|
|
||
|
* NXP Freescale LPC11xx/17xx/43xx and LPC2378 Drivers:
|
||
|
|
||
|
- I2C: Backported the LPC43XX I2C driver, replacing the LPC11XX,
|
||
|
LPC17XX, and LPC2378 I2C drivers. This gives us the I2C_TRANSFER
|
||
|
method in all I2C drivers.
|
||
|
|
||
|
* NXP Freescale LPC17xx Boards:
|
||
|
|
||
|
- Support for the u-blox GSM and GPS module evaluation board with
|
||
|
NXP LPCExpresso LPC1768. The GSM module is one of LISA-C200,
|
||
|
LISA-U200 or SARA-G350. The GPS module is one of MAX-M7 or
|
||
|
MAX-M8. From Vladimir Komendantskiy.
|
||
|
|
||
|
* NXP Freescale i.MX6:
|
||
|
|
||
|
- Basic support is in place for the i.MX6 Quad/Dual MCUs.
|
||
|
Verification is, however, waiting for the receipt of hardware.
|
||
|
|
||
|
* NXP Freescale i.MX6 Boards:
|
||
|
|
||
|
- Sabre-6Quad: Basic support for the NXP/Freescale Sabre 6Quad
|
||
|
board is in place but waiting for hardware for verification.
|
||
|
|
||
|
* STMicro STM32:
|
||
|
|
||
|
- STM32F46xx: Support for STM32F46xx from Paul Alexander Patience
|
||
|
- STM32L4: Add support for the STM32L4 family. From Sebastien
|
||
|
Lorquet.
|
||
|
|
||
|
* STMicro STM32 Boards:
|
||
|
|
||
|
- STM32F4 Discovery: Add PWM support for the onboard RGB LED. From
|
||
|
Alan Carvalho de Assis.
|
||
|
- Nucleo-L476: Add support for the Nucleo-L476 board. From Sebastien
|
||
|
Lorquet.
|
||
|
- STM32L476VG Discovery: Add support for the STM32L476VG Discovery
|
||
|
board. From Dave.
|
||
|
|
||
|
* Tools:
|
||
|
|
||
|
- tools/refresh.sh now has a --silent option so that it can be used in
|
||
|
batch modes without human input.
|
||
|
|
||
|
* Build System:
|
||
|
|
||
|
- Added a 'make olddefconfig' target that will refresh a .config file
|
||
|
without interaction.
|
||
|
|
||
|
* Applications: NSH
|
||
|
|
||
|
- 'arp': Add an 'arp' command that will support access to the OS ARP
|
||
|
table.
|
||
|
- 'ps': The 'ps' command will show CPU if SMP is enabled.
|
||
|
|
||
|
* Applications: apps/netutils:
|
||
|
|
||
|
- apps/netutils/chat: Chat logic contributed by Vladimir
|
||
|
Komendantskiy.
|
||
|
- apps/netutils/netlib: Add utility functions to support accesses to
|
||
|
the ARP table.
|
||
|
|
||
|
* Applications: apps/examples:
|
||
|
|
||
|
- apps/examples/chat: Chat example contributed by Vladimir
|
||
|
Komendantskiy.
|
||
|
- apps/system/ubloxmodem: Example to control the power
|
||
|
state of the modem in nsh. From Vladimir Komendantskiy.
|
||
|
- apps/examples/leds: An example to demonstrate use of LED driver.
|
||
|
- apps/examples/smp: Add a test to verify SMP configurations.
|
||
|
- apps/examples/rgbled: Example using the RGB LED driver to drive an
|
||
|
RGB LED via PWM. From Alan Carvalho de Assis.
|
||
|
- apps/examples/ostest: Add a test of TLS.
|
||
|
- apps/examples/sched_note: Add a simple example to exercise the
|
||
|
scheduler instrumentation logic.
|
||
|
|
||
|
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:
|
||
|
|
||
|
- Signals: Move the list of signal actions from the TCB to the group
|
||
|
structure. Signal handlers are not per thread but, rather, per task
|
||
|
group. I know, I preferred it the other way too, but this is more
|
||
|
compliant with POSIX.
|
||
|
- Semaphores: Add an internal, non-standard interface to reset a
|
||
|
semaphore count. This is sometimes needed by drivers in order to
|
||
|
recover from error conditions. Were previously using sem_init()
|
||
|
which is both inappropriate and incorrect if the semaphore count is
|
||
|
negative.
|
||
|
- Low-Priority Work Queue: Fix logic to find an IDLE worker thread;
|
||
|
the test for busy was backward. From Linfei Chen.
|
||
|
|
||
|
* File System/Block Drivers:
|
||
|
|
||
|
- FAT: Add an option to force all transfers to be performed
|
||
|
indirectly using the FAT file system's internal sector buffers.
|
||
|
This is a fix for the case where the user provided buffers are not
|
||
|
properly aligned for DMA (as with THTTPD).
|
||
|
- MTD: Increase block size in mtd_geometry_s to 32-bits.
|
||
|
|
||
|
* Common Drivers:
|
||
|
|
||
|
- I2C: Restructured the I2C interface as necessary to eliminate some
|
||
|
thread-safety issues inherent in the legacy I2C interface design.
|
||
|
This effects the interface definition, all I2C clients, and all low-
|
||
|
level I2C drivers. I have used caution, but I still expect a change
|
||
|
of this magnitude to introduce some errors. Any bug reports of bug
|
||
|
fixes will be much appreciated.
|
||
|
- I2C_RESET: Eliminate up_i2creset(). It should not be a global
|
||
|
function; Now it is an I2C interface method.
|
||
|
- PCA555: Add logic to make the PCA555 driver thread safe.
|
||
|
- syslog: If syslog timestamping is enabled, don't try to get the time
|
||
|
if the timer hardware has not yet been initialized.
|
||
|
- AT24xx driver: Correct missing address calculation logic. From Frank
|
||
|
Benkert.
|
||
|
|
||
|
* Networking:
|
||
|
|
||
|
- Networking drivers that support CONFIG_NET_NOINTS: Fix a race
|
||
|
condition that can cause the TX poll timer to stop running. From
|
||
|
Manuel Stuhn.
|
||
|
- Timer Poll: Fix some logic when there are multiple network
|
||
|
interfaces. In this case, TCP timeout events can really only being
|
||
|
processed when the poll from the correct device is received.
|
||
|
|
||
|
* Atmel SAMV7 Drivers:
|
||
|
|
||
|
- SAMV7 USB HS device: The USB driver has had some issue that would
|
||
|
occasionally cause loss of packets. Back last December, a fix was
|
||
|
put in for this but the fix apparently worsens the problem; now
|
||
|
causing hangs. The basic problem is that the number of busy banks
|
||
|
(NBUSYBKS) status is not real time but is delayed. This was fixed;
|
||
|
now when the DMA completes and NBUSYBKS > 0, the NBUSYBK is
|
||
|
interrupt is enabled and the operations are deferred until NBUSYBKS
|
||
|
is truly zero.
|
||
|
|
||
|
* Tools:
|
||
|
|
||
|
- tools/testbuild.sh: .config files were not being updated because
|
||
|
(a) kconfig-conf was being called in the wrong directory and (b)
|
||
|
apps/Kconfig had not yet been created. Now uses 'make
|
||
|
olddefconfig'.
|
||
|
|
||
|
* Applications: apps/system:
|
||
|
|
||
|
- apps/system/i2c: The I2C tool now obeys it OS interfacing: it now
|
||
|
uses an I2C character driver to access the I2C bus.
|
||
|
- apps/system/cdcacm, usbmsc, and composite: Use new boardctl()
|
||
|
instead of calling directly in the OS when possible.
|
||
|
|
||
|
* Applications: apps/netutils:
|
||
|
|
||
|
- apps/netutils/dhcpd: DHCPD no longer calls directly into the OS but
|
||
|
uses the new network IOCTL commands to modify the ARP table.
|
||
|
|
||
|
* Applications: apps/modbus:
|
||
|
|
||
|
- apps/modbus/nuttx/portserial.c: Was not returning an error on
|
||
|
failure to open the device driver. From Olololshka kokoko.
|
||
|
|
||
|
* Applications: apps/examples:
|
||
|
|
||
|
- apps/examples/usbserial, composite, usbterm: Use new boardctl()
|
||
|
instead of calling directly in the OS when possible. There are
|
||
|
still a few bad OS calls for USB device interfaces that do not yet
|
||
|
have boardctl() commands.
|
||
|
|
||
|
* Applications: apps/platform:
|
||
|
|
||
|
- Moved C++ initialization logic out of the RTOS and into the
|
||
|
application space, specifically to apps/platform/board, where it
|
||
|
belongs.
|