nuttx/Documentation/ReleaseNotes/NuttX-7.25
Alin Jerpelea e09aa5b7f9 Documentation: split the ReleaseNotes
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>
2023-09-26 20:41:00 +08:00

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.