e09aa5b7f9
Our releases contain links to github PR and lots of text so we are splitting the release notes to individual files This change should - improve readability - reduce the ReleaseNotes file for each release. Signed-off-by: Alin Jerpelea <alin.jerpelea@sony.com>
770 lines
32 KiB
Plaintext
770 lines
32 KiB
Plaintext
NuttX-7.25
|
|
----------
|
|
|
|
The 125th release of NuttX, Version 7.25, was made on June 3, 2018,
|
|
and is available for download from the Bitbucket.org website. Note
|
|
that release consists of two tarballs: nuttx-7.25.tar.gz and
|
|
apps-7.25.tar.gz. These are available from:
|
|
|
|
https://bitbucket.org/nuttx/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:
|
|
|
|
* File Systems/Block and MTD Drivers
|
|
|
|
- fs/cromfs: Added CROMFS file system. CROMFS is a compressed, in-
|
|
memory, read-only file system based on LZF.
|
|
- fs/vfs: Added support for checking if a descriptor is a socket in
|
|
fstat(). From Pelle Windestam.
|
|
|
|
* Graphics/Display Drivers:
|
|
|
|
- drivers/lcd: Remove support for the Nokia6100 LCD. That LCD uses a
|
|
9-bit SPI interface (the 9th bit being the command/data bit that is
|
|
normally a discrete). That communication was never successfully
|
|
integrated. I now believe that it would would require some special
|
|
support from the low-level, MCU SPI driver to manage that 9th bit.
|
|
The deleted code is still available in the Obsoleted repository.
|
|
|
|
* Networking/Network Drivers:
|
|
|
|
- net/tcp: Added support for TCP Keepalive, add SO_KEEPALIVE socket
|
|
option. Added socket options needed to manage TCP-keepalive and TCP
|
|
state machine logic to detect if that the remote peer is alive.
|
|
- net/tcp: In tcp_input(), add the logic to detect, decode, and
|
|
respond to TCP Keep-Alive packets.
|
|
- net/tcp: Extended support for sending to non-blocking tcp sockets.
|
|
From Pelle Windestam.
|
|
- net/bluetooth: Added support for AF_BLUETOOTH sockets.
|
|
- drivers/net: Added TAP (network bridge) mode to tun.c. In the
|
|
previous implementation, TAP mode did not handle a packet correctly.
|
|
Also, the driver did not set the link layer type and could not
|
|
assign the interface name. This change fixes such issues and supports
|
|
TAP mode correctly. From Masayuki Ishikawa.
|
|
|
|
* Wireless/Wireless Drivers:
|
|
|
|
- wireless/ieee802154: Added basic MAC support for RX-ENABLE.request
|
|
primitive From Anthony Merlino.
|
|
- wireless/ieee802154: Added MAC ackreq flag to TX descriptor for use by
|
|
radio driver. The radio layer is responsible for a full "transaction".
|
|
Because of differences in radio capabilities, the radio must be
|
|
responsible for the handling of acks and retransmissions. This commit
|
|
simply passes the ackreq meta-data flag along to the radio. Also
|
|
Fixes bug where primitive was freed when it shouldn't have been,
|
|
causing double free call. From Anthony Merlino.
|
|
- wireless/bluetooth: Bring in the Bluetooth stack from the Intel/
|
|
Zephyr arduino101_firmware_source-v1.tar package.
|
|
- drivers/bluetooth: Added re-architected version of the Bluetooth
|
|
UART driver from the Intel/Zephyr arduino101_firmware_source-v1.tar
|
|
package.
|
|
- include/nuttx/wireless: Added a setbaud() method to the HCI UART
|
|
lower half interface that can be used to change the default BAUD
|
|
selection.
|
|
- wireless/bluetooth and include/nutt/net: Added support for Bluetooth
|
|
IOCTL commands.
|
|
- drivers/wireless/bluetooth: Added a NULL device to support some very
|
|
low level testing on the Simulator.
|
|
- drivers/wireless/cc3000: Eliminate support for the CC3000 wireless
|
|
part because it doesn't use the USRSOCKET. From Alan Carvalho de
|
|
Assis.
|
|
- drivers/wireless/ieee80211: Added BCM43428 support. From hhuysqt.
|
|
|
|
* Other Common Device Drivers:
|
|
|
|
- drivers/1wire: Added 1-wire subsystem and ds28e17 driver From Juha
|
|
Niskanen.
|
|
- drivers/1wire: Added PM hooks and unlink support to sht21 sensor
|
|
(allowing hot-swappable I2C bus from 1-wire converter). Unlike most
|
|
other unlink implementations in NuttX drivers, this one does not
|
|
allow any I2C operations after unlink, making it possible to
|
|
deallocate the I2C bus. From Juha Niskanen.
|
|
- drivers/i2c: Added support for the pca9540bdp i2cmultiplexer. From
|
|
Giorgio Groß.
|
|
- drivers/power: Added pm_unregister From Juha Niskanen.
|
|
- drivers/power: Added generic upper-half motor driver From Mateusz
|
|
Szafoni.
|
|
- drivers/rgbled: Added support for multichannel PWM (multiple PWM
|
|
channels on a single timer) From Anthony Merlino.
|
|
- drivers/sensors: Added support for Sensirion SHT2x humidity sensor.
|
|
From Juha Niskanen.
|
|
- drivers/sensors: Added LSM330 SPI and ADXL372 drivers along with the
|
|
- drivers/sensors: Added support for INA3221 power sensor. This has a
|
|
3 channel bus/shunt voltage pairs. From Anthony Merlino.
|
|
cluster driver infrastructure. From Bob Feratich.
|
|
- drivers/sensors: Added multiple MAX31855 sensors feature support.
|
|
From Tiago Almeida.
|
|
- drivers/wireless/cc1101.c: Driver improvements from from lihaichen.
|
|
- progmem interface: Discern r/w and erase page sizes. Introduce new
|
|
up_progmem_erasesize architecture API to be able to communicate the
|
|
read/write page size independently from erase page size. Implement
|
|
up_progmem_erasesize for all architectures that already support
|
|
progmem, assuming that for those architectures the sizes of both
|
|
read/write and erase pages are identical. From Michael Jung.
|
|
|
|
* Simulation
|
|
|
|
- configs/sim: Added a configuration that will support some limited
|
|
testing of the Bluetooth stack.
|
|
|
|
* ARM:
|
|
|
|
- ARM: All ARM architectures now support CONFIG_ARCH_IDLE_CUSTOM.
|
|
|
|
* MIPS:
|
|
|
|
- MIPS: All MIPS architectures now support CONFIG_ARCH_IDLE_CUSTOM.
|
|
|
|
* Infineon XMC4xxx Drivers:
|
|
|
|
- XMC4: Added SPI support for Infineon XMC45xx microcontroller. From
|
|
Alan Carvalho de Assis.
|
|
|
|
* Infineon XMC4xxx Boards:
|
|
|
|
- XMC4500-Relax: Added board support for SPI. From Alan Carvalho de
|
|
Assis.
|
|
|
|
* Nordic NRF52:
|
|
|
|
- NRF52: Initial support for the NRF52 including UART, Timer, and
|
|
GPIO support. From Janne Rosberg.
|
|
|
|
* Nordic NRF52 Drivers:
|
|
|
|
- NRF52: Added watchdog timer drivers. Includes significant
|
|
updates from Levin Li.
|
|
- NRF52: Added nRF52 Flash PROGMEM support From Alan Carvalho de
|
|
Assis.
|
|
|
|
* Nordic NRF52 Boards:
|
|
|
|
- configs/nrf52-pca10040: Added support for the NRF52-PCA10040 board
|
|
including LEDs and buttons From Janne Rosberg.
|
|
- configs/nrf52-pca10040: Added support for starting the watchdog
|
|
timer on the nRF52. From Alan Carvalho de Assis.
|
|
- configs/nrf52-pca10040: Added a configuration for testing the
|
|
watchdog timer. From Alan Carvalho de Assis.
|
|
|
|
* NXP Freescale i.MX RT:
|
|
|
|
- i.MX RT: Brings in basic support for the i.MX RT 1050 'crossover'
|
|
SoC. Includes timer and UART support. This port was the joint
|
|
effort of Janne Rosberg, Ivan Ucherdzhiev, and myself. I give
|
|
credit to Ivan for the kill because he is the one to held on to
|
|
the end. From Ivan Ucherdzhiev.
|
|
|
|
* NXP Freescale i.MX RT Drivers:
|
|
|
|
- i.MX RT: Added power management hooks.
|
|
- i.MX RT: Added eDMA support (unverified).
|
|
- i.MX RT: Added Ethernet driver. From Jake Choy.
|
|
- i.MX RT: Added cache operations to permit the Ethernet driver to
|
|
work with the D-Cache enabled, at least in write-through mode.
|
|
Added support for PHY interrupts and PHY IOCTLs.
|
|
|
|
* NX FreescaleP i.MX RT Boards:
|
|
|
|
- IMXRT1050-EVK: Added support for booting from the on board HYPER
|
|
Flash. From Ivan Ucherdzhiev.
|
|
- IMXRT1050-EVK: Added logic to support the board's user LED. From
|
|
Jake Choy.
|
|
- IMXRT1050-EVK: Added procfs auto-mount support in imxrt_bringup.c.
|
|
From Ivan Ucherdzhiev.
|
|
- IMXRT1050-EVK: Added LIBCXX test configuration.
|
|
- IMXRT1050-EVK: Added support for the imxrt1050-evk button. From
|
|
Jake Choy.
|
|
- MXRT1050-EVK: Added support for on-board NOR FLASH boot. From
|
|
Ivan Ucherdzhiev.
|
|
- IMXRT1050-EVK: Disable LED support because pins conflict with PHY.
|
|
Enable device statistics. Enable NSH ifup and ifdown commands.
|
|
Added an NSH configuration for testing Ethernet.
|
|
|
|
* NXP Freescale Kinetis:
|
|
|
|
- K28F: Added architecture support for the Kinetis K28F.
|
|
|
|
* NXP Freescale Kinetis Drivers:
|
|
|
|
- SDHC: Make Kinetis SDHC pullups work the same as the STM32 SDIO
|
|
pullups.
|
|
|
|
* NXP Freescale Kinetis Boards:
|
|
|
|
- Freedom-K28F. Added support for the Kinetis Freedom-K28F board.
|
|
|
|
* NXP LPC17xx:
|
|
|
|
- LPC17xx: Added support for ARMv7-M run time stack checking on NXP
|
|
LPC17xx MCUs based on CONFIG_ARMV7M_STACKCHECK. Basically copied
|
|
from STM32. From Michael Jung.
|
|
|
|
* NXP LPC17xx Drivers:
|
|
|
|
- LPC17xx: Added a configurable option to allow using a part of
|
|
LPC17xx's internal flash memory as a Memory Technology Device via
|
|
NuttX' mtd_progmem infrastructure. Tested with LPC1769. From
|
|
Michael Jung.
|
|
|
|
* NXP LPC17xx Boards:
|
|
|
|
- Olimex-LPC1766STK: Remove support for the Nokia6100 LCD. That
|
|
LCD uses a 9-bit SPI interface (the 9th bit being the command/data
|
|
bit that is normally a discrete). That communication was never
|
|
successfully integrated.
|
|
|
|
* NXP LPC43xx Boards:
|
|
|
|
- configs/bambino-200e: Added support for multiple MAX31855 sensors
|
|
to the bambino-200e. From Tiago Almeida.
|
|
|
|
* OpenRISC
|
|
|
|
- arch/or1k/src. Added basic architectural support for the OpenRISK
|
|
mor1kx architecture. The initial commit was verified on a Qemu
|
|
simulation but is otherwise untested. From Matt Thompson.
|
|
|
|
* OpenRISC Board
|
|
|
|
- configs/or1k. OpenRISK mor1kx Qemu simulation. From Matt Thompson.
|
|
|
|
* STMicro STM32:
|
|
|
|
- STM32: Added support for the STM32F401xB and STM32F401xC families.
|
|
|
|
* STMicro STM32 Drivers:
|
|
|
|
- STM32 HRTIM: Added HRTIM software capture trigger, added software
|
|
reset trigger, added outputs polarization configuration From
|
|
raiden00pl.
|
|
- STM32 ADC: Added ADC injected channels configuration. From Mateusz
|
|
Szafoni.
|
|
- STM32 HCIUART: Added a Bluetooth HCI UART lower half driver for the
|
|
STM32.
|
|
- STM32 HCIUART: Implement the setbaud() method for the STM32 HCI
|
|
UART interface.
|
|
- STM32 SDIO: Added support for SDIO card to SDIO driver. From
|
|
hhuysqt.
|
|
- STM32 SDIO: Added internal pull-up option for SDIO pins. From Alan
|
|
Carvalho de Assis.
|
|
- STM32 F2/F4 ADC: Added Vbat measurement to ADC driver for
|
|
STM32F20xx and STM32F4xxx. As with the MCU temperature and VREFINT
|
|
measurement, this change requires user to enable the corresponding
|
|
channel first. For Vbat channel the ioctl cmd is
|
|
IO_ENABLE_DISABLE_VBAT_CH, and its arg should be a pointer to bool
|
|
which must be true to enable and false to disable the Vbat channel.
|
|
Moreover, since Vbat input contains a built-in voltage divider, it
|
|
is highly suggested to disable Vbat input channel after measurement
|
|
is done in order to prevent battery drain through the divider. From
|
|
Dmitriy Linikov.
|
|
- STM32, STM32L4 1WIRE: Added one bit read and write to 1-wire
|
|
interface. This is needed for devices that require single bit
|
|
timeslot generation and for 1-Wire search algorithm triplets. From
|
|
Juha Niskanen.
|
|
- STM32 F3 SPI: Enable DMA for SPI on stm32f30xxx MCUs. From Michal
|
|
Lyszczek.
|
|
- STM32 L4 1WIRE: Ported 1wire driver from STM32. From Juha
|
|
Niskanen.
|
|
- STM32 L4 I2C/SPI/1WIRE: Added PM hooks to I2C, SPI and 1-wire From
|
|
Juha Niskanen.
|
|
- STM32 F7 RTC: Added CONFIG_RTC_PERIODIC support. Also makes the RTC
|
|
lowerhalf more like in STM32L4. From Juha Niskanen.
|
|
- STM32 F7 ADC/I2C/SPI: Added PM hooks to ADC, I2C and SPI. From
|
|
Juha Niskanen.
|
|
|
|
* STMicro STM32 Boards:
|
|
|
|
- Indium-F7: Removed support for the Indium-F7 board. This was done
|
|
for two reasons: (1) The board support was just clone of the
|
|
Nucleo-144 board support with naming changes. There has been no
|
|
support and no further development for the board support. (2) There
|
|
does not seem to be any available Indium-F7 board available to the
|
|
public anywhere on the Internet. There is not even a reference to
|
|
the board on the rafresearch.com web stie.
|
|
- Nucleo-L452RE: Added buttons example From Juha Niskanen.
|
|
- Nucleo-L476RG: Added support to Nokia LCD PCD8544 on nucleo-l476rg.
|
|
From Alan Carvalho de Assis.
|
|
- Nucleo-L476RG: Added nxdemo configuration to nucleo-l476rg using
|
|
PCD8544. From Alan Carvalho de Assis.
|
|
- Olimex-STM32-P407: Added a zmodem test configuration.
|
|
- Olimex-STM32-P407: Added the module configuration.
|
|
- Photon: Added RGB led support From Anthony Merlino.
|
|
- STM32F103-Minimum: Added support for DFU bootloader From Simon
|
|
Piriou.
|
|
- Spark: Removes Spark board configuration. Still available in the
|
|
Obsoleted repository. If there is no CC3000 support, then there is
|
|
no purpose in supporting the Spark either.
|
|
- STM32F334-Disco: Added buck/boost converter example configuration.
|
|
From Mateusz Szafoni.
|
|
- STM32F4 Discovery: Added support for multiple MAX31855 sensors to the
|
|
STM32F4 Discovery From Tiago Almeida.
|
|
- STM32F4 Discovery: Added support in bring-up logic to initialize the
|
|
HCI UART and register the HCI UART network device.
|
|
- STM32F4 Discovery: Added MAX7219 support to STM32F4Discovery board.
|
|
From Alan Carvalho de Assis.
|
|
- STM32F4 Discovery: Added board configuration for CS43L22 audio
|
|
example. From Alan Carvalho de Assis.
|
|
- STM32F4 Discovery: Added a module configuration for testing the
|
|
kernel module example with the STM32F4Discovery board. From Alan
|
|
Carvalho de Assis.
|
|
- STM32F429I-DISCO: Added a LittlevGL configuration for stm32f429i-
|
|
disco. From seyyah.
|
|
- STM32F746G-DISCO. Added clang support to stm32f746g-disco board.
|
|
From Goran Mekic.
|
|
- STM32L1 Discovery: Added support for the STM32L152RCT6 version of
|
|
the board.
|
|
|
|
* TI TMS570:
|
|
|
|
- TMS570: Added support for the TMS570LS3137ZWT. From Ivan Ucherdzhiev.
|
|
|
|
* TI TMS570 Boards:
|
|
|
|
- configs/tms570ls31x-usb-kit: Added support for the TI Hercules
|
|
TMS570LS31x USB Kit From Ivan Ucherdzhiev.
|
|
|
|
* TI Tiva:
|
|
|
|
- CC3200: Remove all support for the CC3200. This was a port that was
|
|
started but never completed. What good is partial CC3200 support
|
|
with no wireless support?.
|
|
|
|
* TI Tiva Drivers:
|
|
|
|
- EEPROM: Implements an EEPROM driver in compliance with MTD driver
|
|
as provided by NUTTX for TM4C1294. The EEPROM driver currently
|
|
supports only two functionalities - read bytes(multiple of 4) and
|
|
write bytes (multiple of 4). From Shirshak Sengupta.
|
|
- FLASH: Implemented Flash CONFIG_MTD_BYTE_WRITE for TM4c1294.
|
|
Implemented the tiva_write function which will write an arbitrary
|
|
number of bytes to flash (in multiple of 4). From Shirshak Sengupta.
|
|
- Serial: Added TERMIOS IOCTL support to the Tiva serial driver.
|
|
From Dmitry Sharihin.
|
|
|
|
* TI Tiva Boards:
|
|
|
|
- CC3200-Launchpad: Remove all support for the CC3200-Launchpad.
|
|
This was a port that was started but never completed. What good is
|
|
partial CC3200-Launchpad board support with no wireless support?.
|
|
|
|
* Libraries/Header Files:
|
|
|
|
- libs/: Moved all of the libraries under a common directory called
|
|
libs/ (libc, libnx, and libxx). This almost certainly break libcxx
|
|
for now.
|
|
- libs/libc/time: Added an implementation of clock().
|
|
- libs/libc/lzf: Added a modified version of Marc Alexander Lehmann's
|
|
LIBLZF3.6 library From Boris Astardzhiev.
|
|
- libs/libc/unistd: Initial, minimal implementation of sysconf().
|
|
Only sufficient to support the functionality of less standard
|
|
getdtabilesize(). From Michael Jung.
|
|
- libs/libdsp: Added DSP support library. From Mateusz Szafoni.
|
|
- include/sys: Added resource.h.
|
|
- include/nuttx/video: Add overlay support to framebuffer interface
|
|
definition. From Marco Krahl.
|
|
|
|
* Tools:
|
|
|
|
- tools/gencromfs.c: Added tools/gencromfs.c, a tool that can be used
|
|
to generate CROMFS file system images.
|
|
- tools/mkromfsimg.sh: Include an option in mkromfsimg.sh to ignore
|
|
FAT/RAMDISK. This permits you to build tiny systems with ROMFS but
|
|
with the rather large FAT FS support. From Alan Carvalho de Assis.
|
|
- tools/nxstyle.c: Added check for blank lines before and after single
|
|
line comments. From Bob Feretich.
|
|
- tools/sethost.sh: Added support for macOS.
|
|
- tools/uncrustify.cfg: An initial cut at an uncrustify C formatting
|
|
script from Gregory Nutt. Updated, corrected, and verified. From
|
|
Bob Feretich.
|
|
|
|
* Build System:
|
|
|
|
- Makefile: Added support for nconfig frontend for 'make nconfig'.
|
|
From Michal Lyszczek.
|
|
- configs/: Added definition of strip to many Make.defs files.
|
|
- staging/: Remove fixed lib/ subdirectory and its content. Replace
|
|
with new directory called staging/ that is created dynamically when
|
|
building and removed when 'make clean' is done. This both improves
|
|
the naming and eliminates a garbage directory from the repository.
|
|
- tools/: Move all build-related files (except the top-level Makefile)
|
|
into the tools/ sub-directory. This really cleans up the top-level
|
|
directory.
|
|
|
|
* NSH: apps/nshlib:
|
|
|
|
- apps/nshlib: Added the mkfatfs -r option which can be used to
|
|
specify the number of entries in the FAT12/FAT16 root directory.
|
|
From Boris Astardzhiev.
|
|
|
|
* Examples/Tests: apps/examples:
|
|
|
|
- apps/examples/adxl372_test and lxm330spi_test: Added ADXL372 and
|
|
LSM330 tests. From Bob Feretich.
|
|
- apps/examples/cc3000: Removed the CC3000 example. From Alan
|
|
Carvalho de Assis.
|
|
- apps/examples/cromfs: Added an example of how to build a CROMFS
|
|
file system image.
|
|
- apps/examples/elf: Extend the ELF program module demo so that you
|
|
can use compressed ELF programs with CROMFS.
|
|
- apps/examples/elf: Use strip command to make ELF binaries MUCH
|
|
smaller. Added an option to strip debug symbols even if the debug
|
|
symbols are enabled in the base code.
|
|
- apps/examples/max31855: Added an example to read multiple max31855
|
|
sensors. From Tiago Almeida.
|
|
- apps/examples/netloop: Update network loopback example so that it
|
|
can be used to test TCP KeepAlive.
|
|
- apps/examples/nxdemo: Added nxdemo application From Alan Carvalho
|
|
de Assis.
|
|
- apps/examples/powerled: Added arch initialization.
|
|
- apps/examples/uavcan: Removed because apps/canutils/libuavcan is no
|
|
longer available.
|
|
|
|
* System Utilities: apps/system
|
|
|
|
- apps/system/lzf: Added the test case from Marc Alexander Lehmann's
|
|
LIBLZF3.6 librrary From Boris Astardzhiev.
|
|
- apps/system/embedlog: Support for embedlog data loggin package from
|
|
https://embedlog.kurwinet.pl/ From Michal Lyszczek.
|
|
- apps/system/zmodem: Added an option to enable hardware flow control
|
|
via termios. Allow stack size and priority to be configured.
|
|
- apps/system/zmodem: Call tcflush() before closing the serial port.
|
|
This is necessary because that close operation may hang if hardware
|
|
flow control is enabled. Consider this scenario: After the host
|
|
sz runs on the host, it exits and leaves CTS high. The target rz
|
|
completes, and tries to close the serial port. But if there is
|
|
buffered Tx data, then the close will hang when it tries to drain
|
|
the buffered Tx data since there is no where it can go. tcflush()
|
|
discards the buffered data and permits the close to continue.
|
|
There is additional logic in nuttx/drivers/serial needed to work
|
|
with this.
|
|
|
|
* CAN Utilities: apps/canutils:
|
|
|
|
- apps/canutils/libuavcan. Removed! libuavcan has not built for a
|
|
year or so. The basic problem is that as NuttX advances, the old
|
|
frozen version of libuavcan has become absolute because it violates
|
|
the portable POSIX OS interface. No one is maintaining the port so
|
|
there is no alternative but to remove it.
|
|
|
|
* Network Utilities: apps/netutils:
|
|
|
|
- apps/netutils/tftpc: Modified the TFTP client functions to use a
|
|
data read/write callback instead of a file. This allows TFTP to
|
|
write to arbitrary destination (in my case, a MTD device - for
|
|
firmware update). Two new functions are introduced for this, named
|
|
tftpget_cb and tftpput_cb. They are just made of most of the
|
|
existing code. The previously existing tftpget/tftpput functions
|
|
are now wrappers on the new ones, with callbacks that read/write
|
|
from files, so my modifications are backwards compatible with
|
|
existing applications, eg the associated nsh commands don't need to
|
|
be changed. From Sebastien Lorquet.
|
|
|
|
* Wireless Utilities: apps/wireless:
|
|
|
|
- apps/wireless/bluetooth/btsak: Added a Bluetooth debug tool.
|
|
|
|
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:
|
|
|
|
- sched/sched: Fix a deadlock in SMP mode. Two months ago, I
|
|
introduced sched_tasklist_lock() and sched_tasklist_unlock() to
|
|
protect tasklists in SMP mode. This change works well for HTTP
|
|
audio streaming aging test with lc823450-xgevk. However, I found a
|
|
deadlock in the scheduler when I tried similar aging tests with DVFS
|
|
autonomous mode where CPU clock speed changed based on cpu load. In
|
|
this case, call sequences were as follows. To avoid this deadlock,
|
|
I added sched_tasklist_unlock() when calling up_cpu_pause() and
|
|
sched_addreadytorun(). Also, added sched_tasklist_lock() after the
|
|
call. Also added critical sections to lib_filesem.c, mm_sem.c, and
|
|
net_lock.c for SMP for SMP. From Masayuki Ishikawa.
|
|
- sched/sched: Change ordering of round-robin time slice check
|
|
(sched_process_scheduler()) and processing of wdog timers
|
|
(wd_timer()). wd_timer()'s callback function can change current
|
|
running task and, hence, must be done after the time slice check.
|
|
The time slice check will decrement the currently running task's
|
|
time slice allotment. If such a context switch occurs, then the
|
|
newly started task will lost one could of that allotment before it
|
|
even has a chance to run. From EunBong Song.
|
|
|
|
* File System/Block and MTD Drivers:
|
|
|
|
- fs/fat: In fs_stat(), when stat'ing the root directory, avoid
|
|
calculating the address of the root directory entry. The
|
|
calculation is bogus (but not harmful) because the root directory
|
|
does not have a directory entry. Noted by Boris Astardzhiev.
|
|
- fs/fat: Avoid calculating the bogus directory entry address for
|
|
the FAT root directory (since it has no directory entry). This
|
|
change should have no effect, other than making the logic clearer.
|
|
From Boris Astardzhiev.
|
|
- fs/mount: Fix wrong size reported by df -h. Reason is that size
|
|
in bytes is calculated always on uint32_t types and cards bigger
|
|
than 4GB will overflow uint32_t type. Solution is to use uint64_t
|
|
where possible. From Michal Lyszczek.
|
|
- fs/smartfs: Fix a hardfault in SmartFS. Problem occurred when
|
|
opening a file with O_CREAT (only) when the file arelready exists
|
|
but has a size of zero. From Michal Lyszczek.
|
|
- fs/vfs: Fix negative errno set in fs_open.c From Michal Lyszczek.
|
|
- drivers/mtd: Fixed a W25 driver w25_cacheflush sector bug. From
|
|
lihaichen.
|
|
- drivers/mtd: mtdconfig_register() returned OK instead of -ENOMEM on
|
|
failed allocation. From Michal Lyszczek.
|
|
|
|
* Graphics/Display Drivers:
|
|
|
|
- drivers/lcd/ft80x: ACTIVE host command appears to be formatted
|
|
differently than other host commands; Fix ROM CHIPID. Appears to
|
|
be big-ending, BCD. Fix some compile issues when debug features
|
|
are enabled.
|
|
- drivers/lcd/ft80x: Fix a typo that caused the driver to fail to
|
|
recognize the ft801 chip version. From Gregory Nutt.
|
|
- Review all board implementations of board_lcd_initialize(). The
|
|
NuttX convention is that all internal functions that return errors
|
|
as an 'int' must return a negated errno value on failure and a non-
|
|
negative value on success. Most were right but eight of them had
|
|
cloned logic that returns 1 on success and zero on failure. both
|
|
of which are interpreted as success by the caller since they are
|
|
non-negative.
|
|
|
|
* Networking/Network Drivers:
|
|
|
|
- net/tcp: Fixed problem with send() return value when using
|
|
nonblocking I/O over buffered tcp socket From Dmitriy Linikov.
|
|
- net/sixlowpan: Fix a nasty, byte-ordering/endian-ness problem.
|
|
The root cause has been found and corrected. And a half dozen
|
|
or so bandaid fixes were reverted.
|
|
- net/sixlowpan: Preserve big-endian (network order) when
|
|
uncompressing address. From Anthony Merlino.
|
|
- net/sixlowpan: TCP send should have PSH and ACK flags set when
|
|
sending. This matches the standard network (Ethernet) TCP send
|
|
logic. From Anthony Merlino.
|
|
- net/udp: Fix several issues using connected UDP sockets: sendto()
|
|
should not accept an address. Normally send() should be used with
|
|
connect UDP sockets instead. recvfrom() is no longer necessary.
|
|
recvfrom() and poll() should not reset to accept any addresses but
|
|
should, instead, only accept inputs and events from the connected
|
|
remote peer. On of these issues was noted by ???
|
|
<liguiding@pinecone.net>. Changes were made as summarized here:
|
|
http://www.masterraghu.com/subjects/np/introduction/unix_network_programming_v1.3/ch08lev1sec11.html
|
|
From Gregory Nutt.
|
|
- net/udp: Resolve race condition in connection-less UDP sockets with
|
|
read-ahead buffering. In connection-mode UDP sockets, a remote
|
|
address is retained in the UDP connection structure. This
|
|
determines both there send() will send the packets and which packets
|
|
recv() will be accepted. This same mechanism is used for
|
|
connection-less UDP sendto: A temporary remote address is written
|
|
into the connection structure to support the sendto() operation.
|
|
That address persists until the next recvfrom() when it is reset to
|
|
accept any address. When UDP read-ahead buffering is enabled,
|
|
however, that means that the old, invalid remote address can be left
|
|
in the connection structure for some time. This can cause read-
|
|
ahead buffer to fail, dropping UDP packets. Shortening the time
|
|
between when he remote address is reset (i.e., immediately after the
|
|
sendto() completes) is not a solution, that does not eliminate the
|
|
race condition; in only makes it smaller. With this change, a flag
|
|
was added to the connection structure to indicate if the UDP socket
|
|
is in connection mode or if it is connection-less. This change
|
|
effects only UDP receive operations: The remote address in the UDP
|
|
connection is always ignored if the UDP socket is not in connection-
|
|
mode. No for connection-mode sockets, that remote address behaves as
|
|
before. But for connection-less sockets, it is only used by sendto().
|
|
|
|
* Wireless/Wireless Drivers:
|
|
|
|
- drivers/wiresless/ieee80211: Correct some initialization problems
|
|
with BCM43362 chip. From hhuysqt.
|
|
- drivers/ieee802154/xbee: Added a timeout to send logic to handle
|
|
case where XBee module fails to respond to a Transmit request with
|
|
a Transmit Status From Anthony Merlino.
|
|
|
|
* Common Drivers:
|
|
|
|
- Per OpenGroup.org, syslog -- and, hence, nonstandard vsyslog, and
|
|
debug wrappers -- does not return a value. Rename _vsyslog to
|
|
nx_vsyslog. Use internal nx_vsyslog in the few cases where a
|
|
return value is required.
|
|
- drivers/leds: Fixes RGB LED issues caused by uninitialized memory
|
|
with CONFIG_RGBLED_MULTICHAN. The uninitialized pwm_info_s struct
|
|
caused a rogue channel to be started causing errors in the pwm
|
|
driver From Anthony Merlino.
|
|
- drivers/sensors/lis2dh: Clear INT1 at SNIOC_WRITE_INT1THRESHOLD
|
|
ioctl. From Jussi Kivilinna.
|
|
- drivers/sensors/sht21: Changed I2C_TRANSFER return value so that
|
|
it return on zero on success, not the count of bytes transferred.
|
|
From Juha Niskanen.
|
|
- drivers/serial: Per Matias Edlund: I recently used the tcflush
|
|
function and found that it failed with ENOTTY. The reason is that
|
|
the TCFLSH case in the function uart_ioctl in the file
|
|
drivers/serial/serial.c does not update the ret value." On
|
|
success, the TCFLSH IOCTL logic needs to explicitly set the return
|
|
value (ret) to zero.
|
|
- drivers/serial: Added a timeout to uart_tcdrain(). Even if
|
|
tcflush() is used to discard buffered data, the close() can still
|
|
hang if (a) hardware flow control is enabled, (b) CTS == 1, and
|
|
(c) there is data stuck in the hardware Tx FIFO. tcflush() does
|
|
not currently clear the MCU serial drivers' hardware Tx FIFOs.
|
|
This is a workaround for that.
|
|
- drivers/sensors: Fix APDS9960 work queue BUG found by Kyle Lei.
|
|
From Alan Carvalho de Assis.
|
|
|
|
* Simulator:
|
|
|
|
- arch/sim: Various fixes necessary to build the simulator under
|
|
MSYS2.
|
|
|
|
* ARMv7-R:
|
|
|
|
- ARMv7-R: Corrected several ARMv7-R issues. From Ivan Ucherdzhiev.
|
|
|
|
* Infineon XMC4xxx Boards:
|
|
|
|
- XMC4500-Relax: Call xmc4_spidev_initialize() in xmc4_boot.c. From
|
|
Alan Carvalho de Assis.
|
|
|
|
* NXP/Freescale LPC17xx Drivers:
|
|
|
|
- LPC17xx USB: Fix USB device endpoint allocation bookkeeping. From
|
|
Michael Jung.
|
|
- LPC17xx USB: Freeing endpoints should be set the same allocations
|
|
as when endpoint was allocated.
|
|
- LPC17xx USB: Fix loss of RX initiatives. USB bulk endpoints are
|
|
double buffered on LPC17xx MCUs. This means that up to two packets
|
|
might be received on an OUT endpoint that can not be handled
|
|
immediately if the receive request queue is empty. Thus,
|
|
rxpending must be a counter not a boolean flag. From Michael Jung.
|
|
|
|
* NXP/Freescale Kinetis Drivers:
|
|
|
|
- Kinetis USG: USB device fixes: Use correct CONFIG OTG control,
|
|
Fix interrupt storm when cable is disconnected. The DM, DP state
|
|
were incorrect because the pulldowns were not enabled. Also the
|
|
pending asynchronous resume interrupt needed to be re-armed after
|
|
the suspend is in effect. This is now done in the isr. From David
|
|
Sidrane.
|
|
- Kinetis Serial: In kinetis_lowputc.c, fix esBRFA calculation
|
|
effecting baudrate. Previous BRFA was not cleared and or-ed into
|
|
new BRFA, hence, buadrate was wrong. Where Baud Rate Fractional
|
|
Divisor (BRFD) UART baud rate = clock / (16 * (SBR + BRFD)). From
|
|
David Sidrane.
|
|
- Kinetis Serial: In kinetis_lowputc.c, fixed parity settings.
|
|
Kinetis UART must be placed in 9 bit mode (M=1) with when 8 bit data
|
|
with parity is required. If left in 8 bit mode (M=0) with parity
|
|
then D7 of the TX/RX register becomes parity bit. Hence what is
|
|
called 9-bit or 8-bit Mode Select is a misnomer. 8 bit mode when
|
|
parity is enabled is really 7 bit with parity. From David Sidrane.
|
|
|
|
* NXP/Freescale Kinetis Boards:
|
|
|
|
- configs/teensy-3.x: Remove CONFIG_USBDEV_DUALSPEED from the usbnsh
|
|
configuration. Hardware supports only FS.
|
|
|
|
* NXP i.MX6 Drivers:
|
|
|
|
- i.MX6: Bring in a few i.MX6 fixes that were committed to similar
|
|
files for the i.MX RT.
|
|
|
|
* STMicro STM32:
|
|
|
|
- STM32 F3: Problem: stm32f30xx hangs waiting for LSE to initialize.
|
|
Reason for hang is that operation of setting LSE_ON does not take
|
|
effect because there is no clock on PWR peripheral. This is
|
|
initialized later in the code From Michal Lyszczek.
|
|
|
|
* STMicro STM32 Drivers:
|
|
|
|
- STM32 and STM32 L4 1WIRE: In 1wire driver, do not write useless
|
|
WRITEBIT zero return value to const buffer From Juha Niskanen.
|
|
- STM32 HRTIM: Fixed capture_get function,. From raiden00pl.
|
|
- STM32 F3 ADC: Fixed bug in RCC reset logic that resets ADC1
|
|
configuration when both ADC1 and ADC2 are in use From Mateusz
|
|
Szafoni.
|
|
- STM32 Ethernet: In case of PHY failure, usually because of the
|
|
lack of 25/50 MHz REFCLK input, the Ethernet block would lock up
|
|
in a while loop waiting for readiness, which will never happened.
|
|
This prevented the board from starting at all in the case of a PHY
|
|
failure. This commit adds a retry loop to avoid bricking the board
|
|
if the Ethernet block is unable to start. From Sebastien Lorquet.
|
|
- STM32 F7 SDMMC: Added support for the second SDMMC device. The
|
|
second SDMMC device was already supported but the clock was never
|
|
enabled. This fixes that. From William Douglas.
|
|
- STM32 Serial: Fix UART glitch when lowputc is enabled. From
|
|
Simon Piriou.
|
|
- STM32 USB: Skip recipient check for descriptor related
|
|
requests From Simon Piriou.
|
|
|
|
* TI Tiva Drivers:
|
|
|
|
- Tiva ADC: Fix compilation errors on Tiva ADC code when ADC is
|
|
enable. From Vinicius Maciel.
|
|
- Tiva Serial: Allow building of Tiva platform with no serial
|
|
console. From Dmitry Sharihin.
|
|
|
|
* C Library/Header Files:
|
|
|
|
- lib/libc/netdb: Fixed boundary conditions in dns_recv_response().
|
|
Fixed typos in include/nuttx/net/dns.h. From Masayuki Ishikawa.
|
|
- libs/libc/modlib: Fixed backward test for an error in
|
|
modlib_verify.c.
|
|
|
|
* Build System:
|
|
|
|
- Makefiles: Eliminate the spurious errors reported by 'make
|
|
savedefconfig'.
|
|
- Makefile(s): There is a sort command in the 'make savedefconfig'
|
|
file. I found that sort behaves differently on different platforms
|
|
based on the environment variable LC_ALL. Now, Makefile.unix will
|
|
force LC_ALL=C just for the sort command so that we can all generate
|
|
equivalent defconfig files.
|
|
- Makefile(s): The clean_context target needs to invoke a
|
|
corresponding clean_context target in the apps/Makefile in order to
|
|
remove linkages. From Gregory Nutt.
|
|
- LibTargets.mk, tools/Config.mk: Drop executable bit on installed
|
|
libraries. The rules to install libraries under lib/ were modified
|
|
to use mode 0644 instead of the default 0755. From Andrey Zabolotnyi.
|
|
|
|
* Examples/Tests: apps/examples:
|
|
|
|
- apps/examples/ft80x: Fix some size calculations. Added option to
|
|
disable primitive tests. just too boring to have to watch over and
|
|
over again. Fix a typo in backlight fade logic; Fix error in
|
|
formatted display light debug dump output.
|
|
- apps/examples/ft80x: Text is handled by the coprocessor and, hence,
|
|
must use RAM_CMD, not RAM_DL.
|
|
- apps/examples/ft80x: Fix some errors in co-processor demos. Correct
|
|
an error in the spinner demo.
|
|
- apps/examples/nsh and posix_spawn: Must not call exec_setsymtab()
|
|
directly. That is a non-POSIX internal OS interface.
|
|
- apps/examples/ostest: Do not call AIO test without
|
|
CONFIG_EXAMPLES_OSTEST_AIO From Juha Niskanen.
|
|
- apps/examples/smps: Fix typos in Kconfig. All power, voltage,
|
|
current values were strings with no default. I assume they should
|
|
be 'int' with what default?.
|
|
- apps/examples/smps: Fixes in some printf and in Kconfig From
|
|
Mateusz Szafoni.
|
|
- apps/system/zmodem: Fix Makefile.host. It was broken when zmodem.h
|
|
was moved to apps/include/system. Fix an incompatibility with the way
|
|
that CRCs are calculated.
|
|
|
|
* System Utilities: apps/system:
|
|
|
|
- apps/system: Applications should use the standard clock() interface,
|
|
not the internal NuttX clock_systimer() interface.
|
|
- apps/system/stackmonitor: Fix comparison between pointer and zero
|
|
character constant. From Juha Niskanen.
|
|
|
|
* Network Utilities: apps/netutils:
|
|
|
|
- apps/netutils/netlib: Various fixes needed to get a clean netlib
|
|
build with Bluetooth only.
|
|
|
|
* Wireless Utilities: apps/wireless:
|
|
|
|
- apps/wireless: Applications should use the standard clock()
|
|
interface, not the internal NuttX clock_systimer() interface.
|