nuttx/Documentation/ReleaseNotes/NuttX-7.26
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

1456 lines
68 KiB
Plaintext

NuttX-7.26
----------
The 126th release of NuttX, Version 7.26, was made on September 8, 2018,
and is available for download from the Bitbucket.org website. Note
that release consists of two tarballs: nuttx-7.26.tar.gz and
apps-7.26.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:
* Core OS:
- General: Eliminate use of the non-standard type systime_t and
replace it the equivalent, standard type clock_t From Gregory Nutt.
- General: Replace non critical PANIC with DEBUGPANIC to save the
code space From Xiang Xiao.
- General: Replace all ASSERT with DEBUGASSERT to save the code
space From Xiang Xiao.
- Initialization: Add option to mount block device for
INIT_FILEPATH case. From anchao.
- clock(): clock_systimer() is no longer a system interface. It has
been replaced with the equivalent, standard interface clock().
Moved the implementation of clock() from the C library into the OS
core. This is necessary because it calls the (now) internal OS
function clock_systimer(). clock() is now accessed only via a
system call in certain configurations. From Gregory Nutt.
- clock Utilities: Move clock_timespec_[add|subtract] to
include/nuttx/clock.h From Xiang Xiao.
- Binary Loader: Add binfmt_initialize(). All binary formats are
now registered centrally vs. in board-specific logic. This
simplifies the usage of the binfmt subsystem. From Xiang Xiao.
- Binary Loader: Reference default symtab name to binfmt From anchao.
- mm: Add mm_heapmember function and reimplement kmm_heapmember base
on mm_heapmember since this function is very useful if multiple
heaps exist. From Xiang Xiao.
- mm: Add {kumm/kmm}_calloc API. Add calloc API for manage user
memory and kernel memory in Flat Build/Kernel Build without kernel
heap. From zhuyanlin.
- pthreads: Add support static pthread stack. Add standard
pthread_attr_setstack() and pthread_attr_getstack(). In all cases
where the stack is released, add check to see which allocator must
be used to free the stack: The user or the kernel allocator. From
xuanlin.
- Semaphores: Apply the semaphore wait function
nxsem_wait_uninterruptible(). This function is a wrapped version
of nxsem_wait() that is uninterruptible and convenient for use.
From liuhaiyang.
- Signals: Add default signal action to SIGKILL. From ligd.
- Signals: Update the signal default action logic to support
sigaction(). signaction() must be able to handle and input action
of SIG_DFL to setup the default signal action; it mast also return
SIG_DFL it is replacing the default action. From Gregory Nutt.
- Signals: Default Signal Actions. Change some types to
superficially simplify. Add configuration options to enabled
default signal behaviors on a per-signal basis. I don't think
users are prepared for SIGALRM to terminate the task (which is the
correct default behavior if you don't change it). Extend the
implementation of default signals so that it is totally table
driven and extensible by simply mondifying the content of const
tables. From Gregory Nutt.
- Signals: Add support for SIGINT in addition to SIGKILL.
- Signals: Add logic and an interface to determine if a signal can
be caught or ignored. sigaction now correctly returns EINVAL on
any attempt to catch or ignore such signals (only SIGKILL for now
and only if CONFIG_SIG_DEFAULT=y). From Gregory Nutt.
- Signals: Add support for default signal actions for SIGSTOP,
SIGSTP, and SIGCONT. Add procfs support to show stopped tasks.
From Gregory Nutt.
- Signals: Add nxsig_action() to solve a chicken and egg problem:
We needed to use sigaction to set default actions, but sigaction()
would refuse to set actions if the default actions could not be
caught or ignored. From Gregory Nutt.
- Signals: Add configuration option to selectively enabled/disable
default signal actions for SIGSTOP/SIGSTP/SIGCONT and SIGKILL/SIGINT.
- Signals: If a task/thread was already blocked when
SIGSTOP/SIGSTP was received, it will restart in the running state.
It will appear that to the task/thread that the blocked condition
was interrupt by a signal and returns the EINTR error. From
Gregory Nutt.
- Signals: Update signal default STOP action. If waitpid was
called with the WUNTRACED then wake up waitpid(). From Gregory
Nutt.
- IRQs: Monitor the IRQ execution time. This is very useful for
measuring the interrupt latency. From Xiang Xiao.
- IRQ Dispatch: Add support interrupt chains in NuttX. IRQ chain is
very useful in these cases: (1) Multiple hardware connect to the
same request line(e.g. PCI), (2) Need multiple driver to support
one hardware block (like Linux MFD) From zhuguangqing.
- Work Queue: Modify high priority work queue to support multiple
threads. From ligd.
- System Calls: Add support for getpeername() and get_sockname()
system calls. From Gregory Nutt.
- System Calls: svcall/sycall logic needs to get the ucontext
argument from R4 instead of stack since all syscall parameters pass
from registers in syscall.h From Xiang Xiao.
- CPU Load Measurement: Support the CPU load measurement using
timer_lowerhalf_s interface From Xiang Xiao.
- Assertions: Change CONFIG_BOARD_RESET_ON_CRASH to
CONFIG_BOARD_RESET_ON_ASSERT, arch/: Implement call to
board_reset() if in all implementations of up_assert() when
CONFIG_BOARD_RESET_ON_ASSERT=y. From Xiang Xiao.
- boardctl(): Add support for board_app_finalinitialize() From ligd.
- Architecture Interface: Add prototype for an architecture-specific
up_trigger_irq function. From dongjianli.
- Architecture Interface: Add the garbage collection hook so each
architecture can do custom memory cleanup if necessary. From Xiang
Xiao.
- Architecture Interface: Add architecture-specific prototypes for
conversions between physical and virtual address. From ligd.
* File Systems/Block and MTD Drivers
- ProcFS: Add support for a procfs entry that will permit examining
the environment of any task. From Gregory Nutt.
- ProcFS: Add support for proc/self/, a convenient way for getting
information about the currently running task. From Gregory Nutt.
- HostFS: Add support for open() append mode From anchao.
- HostFS: Add ftruncate support. From Xiang Xiao.
- HostFS: Remove ARCH_SIM dependence since other architectures
(e.g., arm semihosting) could support hostfs too From Xiang Xiao.
- HostFS: Support remote directory names without a trailing '/'
From ligd.
- HostFS: Add re-try when hostfs mount() fails From ligd.
- NFS: Update NFS client mount to VER3 From zhangyuan7.
- Partitions: Add PTABLE parser fs/partion: Add a partition parser
framework fs/driver/fs_blockpartition.c: Add
register_blockpartition for block partition From Xiang Xiao.
- MTD: Add gd25 driver From wangyanjiong.
- MTD: In MTD partitions, copy the partition name to internal
buffer so that the caller can free the name argument From Xiang
Xiao.
- MTD: Support initialization of an FTL block device with a custom
name From Xiang Xiao.
- MTD: FTL: Reduce size of stack buffer from 64 to a maximum size
as determined from NAME_MAX. From Gregory Nutt.
- VFS poll(): Send poll() notification when the Tx buffer is flushed
From ligd.
- VFS fstat(): Add file_fstat() function for internal OS use. From
ligd.
- VFS fcntl(): Add file_fcntl, psock_fcntl, and psock_dupsd for use
within the kernel. From Xiang Xiao.
- VFS dup2(): Addpsock_dupsd for use within the kernel. From Xiang
Xiao.
- VFS poll(): Add poll use in kernel space. From dongjianli.
- VFS select(): Make select be more consistent with Linux man page:
'The timeout ... Some code calls select() with all three sets
empty, nfds zero, and a non-NULL timeout as a fairly portable way
to sleep with subsecond precision.' From anchao.
* Networking/Network Drivers:
- Sockets: Add getpeername() support From ligd.
- sockopt(): Move psock check from [get|set]sockopt to
psock_[get|set]sockopt From Xiang Xiao.
- getsockname(): Add psock_getsockname function From Xiang Xiao.
- Netlink Sockets: This brings in a fragmentary, experimental
implementation of NETLINK sockets. There is not too much to that
socket support on this initial commit, just the netlink socket
framework. However, I decided to bring it into master because
there is a enough that I would not want to lose what is in place.
And since it is dependent on CONFIG_EXPERIMENTAL, its presence on
master should be innocuous. From Gregory Nutt.
- Interface Indexes: Add driver interface index support. Add
implementation of if_nametoindex() and if indextoname(). Raw
AF_PACKET sockets now depend on CONFIG_NETDEV_IFINDEX. Add syscall
support for if_nametoindex() and if_indextoname(). Includes an
algorithm to prevent an interface index from being reused until all
network interfaces have by assigned once. The prevents removable
devices from being removed, unregistered and re-installed,
re-registered and keeping the same interface index. From Gregory
Nutt.
- Driver Interface: Add devif_loopback() to check the loopback
case where a packet is being sent to itself. Modify the net driver
to call this function in this case. This function will simply
re-inject the packet back into the network and the network driver
will not put anything on the wire. From Xiang Xiao.
- Network Devices: Remove all references to CONFIG_NET_USER_DEVFMT.
That feature is now unconditionally enabled. This was done because
(1) the feature does not require very much additional memory, and
(2) it causes confusion in the configuration due to the additional
complexity. Any network drivers that fail to zero the device
structure interface name field (d_ifname) because calling
netdev_register() will, however, get a nasty surprise. From
Gregory Nutt.
- Network Devices: Add support for Microchip LAN91C111 driver From
Xiang Xiao.
- Network Devices: netdev_findby_ipv[4|6]addr return
netdev_default() as last resort but don't return loopback device
if another network device is in the UP state. From Xiang Xiao.
- Network Device IOCTLs: Add si_ioctl callback and net_ioctl_arglen
so usrsock could forward the ioctl to the remote end/ From
dongjianli.
- IPv6: Rename g_ipv6_allzeroaddress with the more meaning
g_ipv6_unspecaddr since the all-zero address is the IPv6
unspecified address (sometime IN6_ADDR_ANY). Replace more inline
tests for IPv6 multicast with common net_is_addr_mcast() macro.
From Gregory Nutt.
- ARP: arp_find() now checks if the target IP belongs to one of the
local network devices. From Xiang Xiao.
- ARP: Make the function arp_find() thread-safe. It now returns a
copy of the MAC address from the ARP table entry, rather than a
potentially unstable reference to the ARP table entry. From
Gregory Nutt.
- TCP: Re-work of TCP receive window size algorithm. The new logic
is based only on the ability to buffer TCP read-ahead data. From
Gregory Nutt.
- UDP: Add support for the UDP_BINDTODEVICE protocol socket option
From Sebastien Lorquet.
- Slip: Uncomment the prompt of NET_SLIP_PKTSIZE in Kconfig file.
From Xiang Xiao.
- USRSOCK: Combine some the duplicated logic. From Xiang Xiao.
- USRSOCK: Optimize option dependence From Xiang Xiao.
- USRSOCK: Add the listen/accept/getpeername/ioctl support From
dongjianli.
* Other Common Device Drivers:
- Analog DAC: Add driver for digital to analog converter DAC7571.
Nucleo-L422KC: Add support for a connect DAC7571 converter. From
Daniel Pereira Carvalho.
- Audio Interface: Change member samp of apb to pointer so driver
can customize sample buffer allocation From ZhongAn.
- Audio Interface: Add ioctl cmd 'AUDIOIOC_SETBUFFERINFO' so user
space could config the buffer From ZhongAn.
- Audio Interface: Add hardware format support From anchao.
- I2S Interface: Add i2s_rxchannels and i2s_txchannels methods to
the I2S lower half interface. From ZhongAn.
- Audio: Move the I2S character driver to a dedicated folder. From
Xiang Xiao.
- Audio: Add audio_i2s device driver. From ZhongAn.
- Audio: Add the composite audio driver From Xiang Xiao.
- Crypto: Move dev_urandom.c into new crypto folder. From Xiang
Xiao.
- GPIO driver: Add gpio_pin_unregister function to GPIO driver
driver/ioexpander: Add pinset struct to GPIO driver for interrupt
pins larger than 64. Initialize pintype/inttype when registering
ioexpander device. Add SETPINTYPE ioctl command to the GPIO
driver. From zhuyanlin.
- I2C Interface: Add a definition to distinguish a new START of
messages from a repeated start. No lower-half I2C drivers actually
implement this new flag bit, however. In I2C write/read logic use
new repeated START definition where appropriate. Rename
I2C_M_NORESTART to I2C_M_NOSTART since it may be used in other
contexts than a repeated start. Add comments to clarify setup for
repeated start. From Gregory Nutt.
- I2C: Add the standard speed macros. From dongjiuzhu.
- Leds: Add support to MAX7219 to control 7-segment displays. From
Alan Carvalho de Assis.
- Power: PM: Add pm_stay and pm_relax function so special apps(e.g.
mediaplayer) could disable suspend during playback much like linux
kernel counterpart From Xiang Xiao.
- Power: PM: Add pm_querystate function From zhuguangqing.
- Power: PM: Don't update the power state in work thread: (1)
Simplify the code logic and remove the work queue dependence, (2)
Power calculation is too simple to delay into the work queue From
Xiang Xiao.
- Power: PM: Decrease the power state in the reverse order. Since
the child driver need power off before parent driver. From
zhuguangqing.
- Power: PM: Make power manager service available as soon as
possible: (1) Initialize g_pmglobals at the definition, (2) skip
hold the lock if OS isn't ready From Xiang Xiao.
- Power: PM: Add PM_RESTORE to notify driver that device exit WFI
so the driver could restore state. For example, WDT may stop
counting before enter low power state and restore the counting
again in PM_RESTORE notification From zhuguangqing.
- Power: PM: Add timer to decrease PM level automatically. From
ligd.
- PTYs: Add support so that a PTY can poll for both IN/OUT event
simultaneously. From ligd.
- PWM: Move pwm.c into pwm folder From Xiang Xiao.
- RTC Interface: Extend struct rtc_time by adding. From Xiang
Xiao. tm_nsec if RTC supports hiresolution time. From Xiang Xiao.
- Sensors: Add support for Telair T6713 carbon dioxide sensor. From
Juha Niskanen.
- Sensors: Add support for LSM303AGR and LSM6DSL sensors From
DisruptiveNL.
- Sensors: Add driver for DHTxx sensor. From Ouss4.
- syslog: Enable a partial, crippled version of syslog_flush();
Call syslog_flush() from assertion handling logic of all
architectures. From Gregory Nutt.
- syslog: Channel configuration. Decouple SYSLOG_SERIAL_CONSOLE and
ARCH_LOWPUTC. Since some hardware can output log to the special
debug channel not serial. From anchao.
- syslog: Support pre-pending a prefix string to log output if
enabled. This very useful to identify which CPU send out the log
in AMP SoC. From anchao.
- Serial: Add Ctrl-C/Ctrl-X support. From ligd.
- Serial: Support UART direct write for non console device From
xuanlin.
- Serial: It is no longer necessary to restrict Ctrl-C handling to
the FLAT build sched/signal: Add a new configuration option to
select signal default actions, separate handling of signal default
actions from both task startup logic and from the serial TTY
Ctrl-C logic. Add a signal set in the group structure to keep
track of what signals have been set to the default action. In
dispatching signals in PROTECTED or KERNEL mode, use this signal
set to determine if the default signal handler is attached and
dispatch the signal in kernel mode for the default actions. From
Gregory Nutt.
- Serial: Integrate new Ctrl-C logic with the ISIG flag in the
termios c_lflag. From Gregory Nutt.
- Serial: Use SIGINT instead of SIGKILL when control-C is pressed.
From Gregory Nutt.
- Serial: Add support for Ctrl-Z. This works just like the
recently added Ctrl-C support except that SIGSTP is sent when the
Ctrl-Z characters is encountered vs. SIGINT. From Gregory Nutt.
- 16550 UART: Add a configuration, analogous to the STM32
configuration option, to suppress the NuttX standard re-ordering
for /dev/ttySN for special case of the 16550 UART.
- 16550 UART: Add CONFIG_SERIAL_UART_ARCH_MMIO option so the a
memory mapped device doesn't need to provide uart_getreg() and
uart_putreg() implementations.
- 16550 UART: Add stub implementations of DMA-related methods in the
16550 UART v-table. From ligd.
- 16550 UART: Add serial termios handling From anchao.
- 16550 UART: Support 16550 auto hardware flow control
drivers/serial/uart_16550.c: Add configuration option
CONFIG_16550_SUPRESS_INITIAL_CONFIG. This is identical to the
standard configuration in arch/Kconfig
CONFIG_SUPPRESS_UART_CONFIG, but with scope of only the 16550
driver. From Xiang Xiao.
- syslog: Make timestamp output same as linux kernel. It's very
useful if NuttX syslog retarget to Linux syslog. From Xiang Xiao.
- Timers: Add maxtimeout method to the struct timer_ops_s interface
From Xiang Xiao.
- Timers: Add a new method to the struct oneshot_operations_s
interface to get the current time from a oneshot timer driver (if
it is available from the lower half) From Xiang Xiao.
- Timers: Implement timer arch API on top of timer driver. From
Xiang Xiao.
- Timers: Implement alarm arch API on top of oneshot driver
interface. From Xiang Xiao.
- Timers: Implement RTC arch API on top of RTC driver interface.
From Xiang Xiao.
- CDC/ECM: Adds USB device support for CDC/ECM From Michael Jung.
- USB Host: Add support for the Maxim M3421E USB host driver. Not
yet fully tested. From Gregory Nutt.
* General Architecture-Specific:
- All architectures: Make sure the up_irq_enable() is available on
all architectures. From Gregory Nutt.
* Simulation
- Simulator Configurations: Add dsptest configuration. From Mateusz
Szafoni.
- Simulator: In network driver (1) Remove up_comparemac() check for
matching MAC address. Let's trust that the tap device just return
the packet which belong to us like other real network device
hardware. (2) Add network device statistics support. From Xiang Xiao.
* ARM:
- ARM (all): Add CONFIG_DEBUG_MEMFAULT to Kconfig. From Masayuki
Ishikawa.
- ARM: (1) Add semihost support for syslog, (2) Add semihost support
for HostFS From Gregory Nutt.
* ARMv6-M:
- ARMv6-M: Introduce CONFIG_DEBUG_HARDFAULT_INFO to up_hardfault.c
From Masayuki Ishikawa.
* ARMv7-M:
- ARMv7-M: Removes support for the dedicated vector handling from the
many older architectures. Only common vectors are now supported.
From Gregory Nutt.
- ARMv7-M: Introduce CONFIG_DEBUG_HARDFAULT_INFO to up_hardfault.c
From Masayuki Ishikawa.
- ARMv7-M: Implement SYSTICK timer driver From Xiang Xiao.
- Simulator: Add loadable demo for arch sim. From anchao.
- ARMv7-M: Add logic to trigger ARMv7-M interrupts and exceptions.
From Gregory Nutt (from sample logic by Xiang Xiao).
- ARMv7-M: Add NVIC definitions needed by up_trigger_irq(). From
Gregory Nutt.
* ARMv7-R:
- ARMv7-R: Add general interrupt controller. This is based on
ARMv7-A gic controller code. From EunBong Song.
- ARMv7-R: Add invalidate dcache in arm_head.S. From EunBong Song.
* Infineon XMC4xxx Drivers:
- XMC4 GPIO: Add a specific bit encoding to GPIO driver for
opendrain GPIO pin. From Alan Carvalho de Assis.
* Infineon XMC4xxx Boards:
- XMC4500-Relax: Add support to MAX6675 on XMC4500-Relax board.
From Alan Carvalho de Assis.
* Microchip PIC32MX Boards;
- PIC32MX: Update some PIC32MX configurations so that either the
MPLAB or Penguino toolchains may be used. From Gregory Nutt.
* Microchip/Atmel SAMD2x/L2x:
- SAMD2x/L2x: Rename all usage of samdl/SAMDL to samd2l2/SAMD2L2 to
make room in the name space for samd5e5/SAMD5E5 From Gregory Nutt.
* Microchip/Atmel SAMD5x/E5x:
- SAMD5x/E5: Add a port to the SAMD5x/E5x MCU family. From Gregory
Nutt.
* Microchip/Atmel SAMD5x/E5x Drivers:
- SAMD5x/E5x SPI/I2C: Bring in untested SPI and I2C drivers from
SAMD2L2. From Gregory Nutt.
- SAMD5x/E5x DMA: Leverage the SAMD2L2 DMA controller. From Gregory
Nutt.
- SAMD5x/E5x USB: Bring the SAMDL2 USB driver into the SAMD5E5
port. From Gregory Nutt.
* Microchip/Atmel SAMD5x/E5x Boards:
- Metro M4: Add support for the Adafruit Metro M4 board. From
Gregory Nutt.
- Metro M4: Add an option to build the Metro M4 image to run out of
SRAM. This ought to be a safer and quicker way to do the initial
bring-up (having bricked the first Metro M4 due to a bad FLASH
image). From Gregory Nutt.
- Metro M4: Add a configuration option to use OSCULP32K instead of
XOSC32K. From Gregory Nutt.
- Metro M4: After some final fixes related to the SERCOM console,
the basic NSH configuration appears fully functional. From
Gregory Nutt.
- Metro M4: Verify the CMCC and enable it by default in the NSH
configuration. From Gregory Nutt.
* Microchip/Atmel SAMv7 Drivers:
- SAMv7 CAN: Add ability for CAN BUS_OFF autorecovery according
ISO11898-1:2015. With this change we added an ioctl for triggering
the autorecovery sequence for BUS_OFF to the CAN-driver and the
SAMV7 low-level driver. According the datasheet: If the device
goes Bus_Off, it will set MCAN_CCCR.INIT of its own accord,
stopping all bus activities. Once MCAN_CCCR.INIT has been cleared
by the processor (application), the device will then wait for 129
occurrences of Bus Idle (129 * 11 consecutive recessive bits)
before resuming normal operation. At the end of the Bus_Off
recovery sequence, the Error Management Counters will be reset.
During the waiting time after the resetting of MCAN_CCCR.INIT, each
time a sequence of 11 recessive bits has been monitored, a Bit0
Error code is written to MCAN_PSR.LEC, enabling the processor to
readily check up whether the CAN bus is stuck at dominant or
continuously disturbed and to monitor the Bus_Off recovery
sequence. MCAN_ECR.REC is used to count these sequences. From
Frank Benkert.
* NXP Freescale i.MX RT Drivers:
- i.MXRT RTC: Add support for the i.MXRT RTC. This is code complete
(with limited features and options) but untested. The HPRTC is
functional. However, if the LPSRTC is enabled, then there is a
hang during LPSRTC initialization. It appears that there is some
problem in providing clocking and initializing the LPSRTC domain.
From Gregory Nutt.
- i.MXRT SNVS: Add trivial SNVS from Rev 1. of the Reference Manual.
From Gregory Nutt.
- i.MXRT LSPI: IMXRT1050 LPSPI register and bit definitions added.
From Ivan Ucherdzhiev.
- i.MXRT Serial: IMXRT1050 LPUART TERMIOS support added. From Ivan
Ucherdzhiev.
* NXP Freescale i.MX RT Boards:
- IMXRT1050-EVK: Add knsh configuration. PROTECTED mode NSH build.
From Gregory Nutt.
* NXP Freescale Kinetis:
- Kinetis: Add DMA support. From David Sidrane.
* NXP Freescale Kinetis Drivers:
- Kinetis: Use circular DMA as an option to augment the RX FIFOs in
the Serial driver. From David Sidrane.
* NXP LPC54xx:
- LPC54xx: The LPC54608 can only run at a maximum frequency of
180Mhz. This configuration requires uses the clk_in, external
crystal clock, to drive the PLL. When that input was selected, the
board bootup failed waiting for the PLL to lock. After referring
the driver from NXP, we should turn on power sources for the ext
clock if system pll input select clk_in. NOTE that the LPC54628
did not require this step... perhaps because the system oscillator
power was already enabled. From kxjiang.
- LC823450: Add support for mpu and userspace LC823450-XGEVK: Add
kostest PROTECTED build LC823450-XGEVK: Add knsh PROTECTED build
From Masayuki Ishikawa.
* NXP LPC54xx Boards:
- Lpcxpresso-LPC54628: Update lvgl board config to use the new
version From Alan Carvalho de Assis.
* On Semi LPC23450 Drivers:
- LC823450 Bluetooth: Add lc823450 Bluetooth support. From Masayuki
Ishikawa.
- LC823450 I2S: Add tx start threshold to lc823450_i2s.c In
addition, lc823450_i2s_send() now accepts byte-aligned stream.
From Masayuki Ishikawa.
- LC823450 SPI: Add SPI flash driver for lc823450. NOTE: Only bus
accelerator mode is supported. From Masayuki Ishikawa.
- LC823450: Change C-Buffer under-level control. The under-level
setting was changed from 1KB to 55KB. In previous implementation,
the setting can be changed by the tx threshold but it is fixed at
startup. Also, check write size and adjust alignment if needed.
From Masayuki Ishikawa.
* On Semi LPC23450 Boards:
- LC823450-XGEVK: Add loopback test for digital MIC on lc823450 via
i2schar driver. From Masayuki Ishikawa.
- LC823450-XGEVK: Add lc832450 elf test. From Masayuki Ishikawa.
- LC823450-XGEVK: Add posix_spawn configuration From Masayuki
Ishikawa.
* STMicro STM32:
- STM32 L4: Add initial support to STM32L4+ chips From Juha Niskanen.
- STM32 H7: A partial port to the STMicro STM32H7 by Simon Laube was
brought in from the PX4 repositories. Numerous changes were
make(by Mateusz Szafone). The basic STM32 H7 NSH configuration is
now functional, thanks to Mateusz Szafoni.
* STMicro STM32 Drivers:
- STM32 F0, F1-F4, F7, L4, H7: Added Single Wire Kconfig variable.
From David Sidrane.
- STM32 DAC: Set OUTEN bit for DAC1CH2 and DAC2CH1 power/motor.
Direction parameter is now int8 + add overload fault. From Mateusz
Szafoni.
- STM32 F1-F4 ADC: Allow multiple channels without DMA on
STM32L15XX. From Juha Niskanen.
- STM32 F1: Add FLASH register definitions for F1 parts that have
dual banked FLASH. From Dmitriy Linikov.
- STM32 F2: Added progmem interface support for STM32 F2 From
Dmitriy Linikov.
- STM32 F4: Ports STM32 LTDC and STM32 DMA2D to use the
framebuffer interface From Marco Krahl.
- STM32 F7: This change ports Marco Krahl's STM32F4 framebuffer
overlays for the LTDC and DMA2D into the STM32F7. That driver was
same as the STM32 F4 driver. From Gregory Nutt.
- STM32 F7: Port input capture from stm32. From Juha Niskanen.
- STM32 F7 FLASH: Ported the STM32 F2/F4 driver to the STM32 F7
platform. From Evgeniy Bobkov.
- STM32 F7 SDMMC: Add SDIO card support to SDMMC driver. From
Ramtin Amin.
- STM32 F7 Serial: Previous logic would invalidate the data cache as
each byte was read from the DMA buffer. This change adds logic to
invalidate the data cache less frequently by monitoring the state
of the Rx DMA buffer cache coherency and invalidating only regions
as necessary. From Evgeniy Bobkov.
- STM32 F7: Add up_stackcheck.c From Daniel Agar.
- STM32 F7: Port the low-level PM functions to STM32 F7. From Juha
Niskanen.
- STM32 L4: STM32L4 has fetchadd and testset From Juha Niskanen.
- STM32 L4: Added custom pin mapping for STM32L4X2XX processors.
From Daniel P. Carvalho.
- STM32 L4 FLASH: stm32l4xrxx: allow board to override flash wait
states From Juha Niskanen.
- STM32 L4: Some updates to analog peripherals ADC, COMP and DFSDM
for STM32L4XR From Juha Niskanen.
- STM32 L4: Add getstatus and getperiod() method to the timer
driver (includes coding standard changes made prior to commit)
From Goden Freemans.
- STM32 H7: Remove old references to RXDMA. Add configuration
- STM32 H7: Remove old references to RXDMA. Add configuration
option to select the Rx FIFO threshold level. From Gregory Nutt.
* STMicro STM32 Boards:
- STM32F103 Minimum: Add blackpill LED support From Russ Webber.
- Viewtool-STM32F107: Add a TCP performance test using
apps/examples/tcpblaster. From Gregory Nutt.
- Viewtool-STM32F107: Add support for the MAX3421E to the
Viewtool-STM32F107 board support From Gregory Nutt.
- STM32F334-DISCO: Use a PID controller from libdsp in the BuckBoost
driver. From Mateusz Szafoni.
- STM32F4-Discovery: Remove STM32F4BB dependence from RNDIS; add
RAMDISK support. From Alan Carvalho de Assis.
- STM32F4-Discovery Add board support for MAX7219 as numeric display
controller. From Alan Carvalho de Assis.
- Olimex-STM32-P407: Add kernel ELF (kelf) configuration. From
Gregory Nutt.
- Olimex-STM32-P407: Add a kmodule configuration that can be used
for testing installation of kernel modules in the protected build.
From Gregory Nutt.
- Olimex-STM32-P407: Add logic to support initialization of the
kernel module symbol table installed in the pass1/ directory during
the application phase of the build. The kmodule configuration
appears to be fully functional. From Gregory Nutt.
- Olimex-STM32-P407: Add board support for the DHTxx sensor. From
Ouss4.
- STM32F476G-DISCO: Add support for STM32F746G-disco board LCD.
From Marcin Wyrwas.
- STM32F476G-DISCO: Add a configuration to build working nxdemo
application From Fanda.
- STM32F476G-DISCO: Add support for STM32F746G-disco board SDRAM
Changed fb config to use SDRAM. From Marcin Wyrwas.
- STM32F476G-DISCO: Add touchscreen support and a LittlevGL demo for
STM32F746G-DISCO From Marcin Wyrwas.
- Nucleo-L476RG: Add support for an external SPI-driven SD card on
the Nucleo-L476RG. From Gregory Nutt.
- Nucleo-L476RG: Add support for LSM303AGR and LSM6DSL sensors From
DisruptiveNL.
- Nucleo-H743ZI: Use Nucleo Virtual console as default console in
the NSH configuration From Mateusz Szafoni.
- STM32L4R9-DISCO: Add stm32l4r9ai-disco support. From Juha Niskanen.
- B-L475E-IOT01A: Add timer driver support. From Goden Freemans.
* Libraries/Header Files:
- libc endian: Add support for endian.h. From Gregory Nutt.
- libc net: Add inet_aton() From Juha Niskanen.
- libc netdb: Add getaddrinfo() and friends. From Juha Niskanen.
- libc termios: Add lib_cfmakeraw.c From Masayuki Ishikawa.
- libc stdlib: Add implementation of random() and srandom(). From
Gregory Nutt.
- libc unistd: Add a crippled version of daemon(). From Gregory Nutt.
- libdsp: All floats with f-sufix libdsp: (1) add precision option
for library, (2) add debug option for library and assertions in
functions, (3) add current samples correction for SVM3, (4) add
some motor control specific functions, (5) add basic speed
observer, (6) fix phase shift in SMO observe, (7) add more logic to
FOC. From Mateusz Szafoni.
- include/nuttx/compiler.h, include/poll.h: Add logic to determine
if the compiler supports anonymous structures and unions. From
Gregory Nutt.
- include/nuttx/mutex.h: Add inline wrapper functions to more
clearly support semaphores when used as mutexs. From QianWenfa.
- include/nuttx/nuttx.h: Added nuttx.h header file which is
analogous to the linux.h header file. Currently, it contains on
the definition of the container_of() macro. From zhuyanlin.
- include/queue.h: Add dq_tail marco From zhuguangqing.
- include/stdio.h: Add prototypes for popen() and pclose(). Actual
implementation is in apps/system/popen() From Gregory Nutt.
- include/sys/param.h: Add a dummy sys/param.h header file. This is
not a standard file but is used by other systems and having the
dummy file may minimize some porting efforts. From Gregory Nutt.
* Tools:
- nuttx/tools/kconfig2html.c: Due to new usage, tool needs to be
able to handle configuration files with names other than Kconfig.
From Gregory Nutt.
- nuttx/tools/kconfig2html.c: Update tool to handle tristate types.
From Gregory Nutt.
- nuttx/tools/Config.mk: Add function CATFILE definition. Currently
only used in apps/builtin/Makefile. From Gregory Nutt.
- nuttx/tools/Config.mk: Add the recursive wildcard function,
RWILDCARD, to Config.mk. From Gregory Nutt.
- nuttx/tools/testbuild.sh: Add an option to specify the location of
nuttx directory. From Gregory Nutt.
- nuttx/tools/refresh.sh: Add a --prompt option that will let you
use --silent but will prompt before overwriting the original
defconfig. From Gregory Nutt.
- nuttx/tools/link.sh. Update link.sh per suggestions by Mark so
that it can be used with MSYS vs copydir.sh. From Gregory Nutt.
- nuttx/tools/mkexport.sh: Save the System.map file and User.map
file (if it exists) in the export package so that it can be used to
extract addresses. From Gregory Nutt.
- nuttx/tools/mkexport.sh: Save the name of the STRIP tool too. From
Gregory Nutt.
- nuttx/tools/nxstyle.c: Add capability to detect multiple blank
lines. Single spacing required by the coding standard. Also coding
standard fixes to server .c files for problems found during testing
nxstyle. From Gregory Nutt.
- apps/tools: Add +x to mksymtab.sh. From Masayuki Ishikawa.
- apps/tools/define.sh and define.bat: Move a copy of define.bat
and sh from nuttx/tools to apps/tools so that they will be
available for the import build. From Gregory Nutt.
* Build System:
- Apps/ Build System. The apps/ build system has undergone a major
renovation to better support building applications as ELF modules.
Module selections have changed from 'bool' to 'tristate' types.
This means that building an ELF now is as simple setting the value
to 'm'. This effort required many changes, too many to summarize
here. The solution was contributed by Masayuki Ishikawa, Anchao
An, and Xiang Xiao (and myself to a lesser extent).
- NuttX/ Build System: This change extends support for the two-pass
build. Its primary purpose is to incorporate source logic
generated by applications into the kernel phase of the build.
In the two pass build, the application logic is built during the
first phase, pass 1. In that phase, the application may generate
and install source files in the pass1/directory. The operating
system is built during phase 2 of the build. At that time, those
source files in the pass1/ directory will be built and incorporated
into the kernel address space.
The primary purpose of the pass1/ directory is to such
application-generated kernel symbol tables. For an example of the
use of this feature, look at
apps/examples/module/drivers/Makefile. Kernel symbol tables are
needed to support kernel modules. Of course, addition
board-specific logic in, say, configs/<board>/src would have to be
included to make use of the application-installed symbol tables.
From Gregory Nutt.
- Remove CONFIG_ARCH_CALIBRATION. It is awkward to use and no longer
necessary now that we have apps/examples/calib_udelay. From
Gregory Nutt.
- Build System: With recent changes to apps/ all configurations that
build applications as modules must now also select
CONFIG_APPS_LOADABLE. From anchao.
- Build System: Add dynamic application loadable support. From
anchao.
- Build System: Add configuration CONFIG_ARCH_GNU_NO_WEAKFUNCTIONS
to suppress use of weak functions. Some gnu derived toolchains do
not support weak symbols. From Xiang Xiao.
- Kconfig: Move 'option modules' from NSH_FILE_APPS to
BUILD_LOADABLE From anchao.
- apps/ Build System: Introduce a build system for loadable apps
for nsh. Add 'option modules' to NSH_FILE_APPS so that a user can
change an application configuration to tristate (y/n/m)
- apps/import: Add Makefile.symtab which can be used to compile the
dynamically created symbol table C file. Also adds
tools/mksymtab.sh. From Gregory Nutt.
* NSH: apps/nshlib:
- apps/nshlib: Add parsing support for back-slash quoted
characters. Currently only implemented properly if
CONFIG_NSH_ARGCAT is also selected. This commit is in response to
Bitbucket Issue 11 opened by Maciej Wójcik From Gregory Nutt.
- apps/nshlib: Add inverted logic support in the form of 'if !
<cmd>' From Beat Küng.
- apps/nshlib: Expand reboot and poweroff commands to include a
second, optional mode argument From ligd.
- apps/nshlib: Add a force flag (-f) to mksmartfs command. SmartFS
will be formatted only if (1) the FLASH does not already hold a
SmartFS, or (2) the force flag is set. From Xiang Xiao.
- apps/nshlib: NSH prompt string is now configurable. nsh> is
still the default. From Xiang Xiao.
- apps/nshlib: Add control-C support for terminating built-in and
exec'ed file tasks. From ligd.
- apps/nshlib: Call BOARDIOC_FINALINIT after start-up script (or
immediately after BOARIOC_INIT is there is no start-up script).
From ligd.
- apps/nshlib: When using waitpid() to wait for a built-in
application or a file application to exit. Add the WUNTRACED
options to so the the waitpid() call will also be awakened if the
waited-for task is stopped as well. From Gregory Nutt.
* NSH Builtins: apps/builtin:
- apps/builtin/Makefile. This commit changes apps/builtin to search
the registry recursively. By supporting directories, external
projects can install the hooks into the registry and easily clean
them up and reinstall if something needs to be updated. Based on
an idea from Anthony Merlino. From Gregory Nutt.
* Examples/Tests: apps/examples:
- apps/examples/calib_udelay: Add tool for calibrating
CONFIG_BOARD_LOOPSPERMSEC From Juha Niskanen.
- apps/examples/dhtxx: Example for the DHTxx sensor. From Ouss4.
- apps/examples/dsptest: Add unit test for NuttX DSP library From
Mateusz Szafoni.
- apps/examples/elf: CROMFS and ROMFS configuration currently only
usable in FLAT build. Add configuration to use ELF objects on
external media like SD card or USB drive instead. From Gregory
Nutt.
- apps/examples/elf: If the test ELF files are on media in
removable media such as SD or USB FLASH, the wait until the media
has been installed and initialized before starting the test. From
Gregory Nutt.
- apps/examples/fb: Adds example to test framebuffer overlay From
Marco Krahl.
- apps/examples/gps: Add GPS example using MINMEA lib From Alan
Carvalho de Assis.
- apps/examples/i2sloop: Add i2sloop application. This application
can be used to test I2S loopback like: ' nsh> i2sloop &'. From
Masayuki Ishikawa.
- apps/examples/lvgldemo: Update LVGL to version 5.1.1 From Alan
Carvalho de Assis.
- apps/examples/module: Add support for CROMFS and for stripping
symbols from ELF module binaries. From Gregory Nutt.
- apps/examples/module: Add support for automounting removable media.
This involves a wait for the block driver to become available
before performing the mount. From Gregory Nutt.
- apps/examples/module: When built in the PROTECTED or KERNEL
modes, the symbol table is not built by the application. That is
because the build will fail since the kernel module depends on
internal OS symbols thar are not available to the application
build. With this change the examples does not attempt to build
the kernel symbol table in these modes. Instead it just copies
the kernel module symbol table into the nuttx/pass1 directory
where it can be build directly into the OS during pass2 of the
build. From Gregory Nutt.
- apps/examples/ostest: Add a small test for SIGSTOP, SIGCONT, and
SIGKILL actions. From Gregory Nutt.
- apps/examples/popen: Add a test of popen/pclose. From Gregory
Nutt.
- apps/examples/powerled: Add arch initialization. From Mateusz
Szafoni.
- apps/examples/tcpblaster: Add TCP performance measurement test.
From Gregory Nutt.
* System Utilities: apps/system
- apps/system/cle: Usage improvements including command line
history (taken from readline) and support for addition control
characters. From mst.
- apps/system/i2c: Adapt to rename I2C_M_RESTART->i2C_M_START.
I2C_M_NOSTOP should be in flags of first message in every
write-read and write-write message sequence. From Gregory Nutt.
- apps/system/i2c: Allow registers besides 0x00 in the dev command.
From Jakob Haufe.
- apps/system/nsh: Add logic to automatically register an
application symbol table as part of NSH initialization. From
Masayuki Ishikawa.
- apps/system/nsh: The symbol table name and size variable names
can now be configured. From Gregory Nutt.
- apps/system/nsh: Move apps/examples/nsh to apps/system/nsh. It
has become so entrenched that it is hardly an example these days.
May as well formalized it as a system task. From Gregory Nutt.
- apps/system/nxplayer: Refactor nxplayer.c. Apply
netlib_parsehttpurl() and
remove unnecessary usleep(). From Masayuki Ishikawa.
- apps/system/nxplayer: Release buffer before session and release
semaphore in nxplayer_setvolume system/nxplayer/nxplayer.c:
Remove & for apb->samp reference. It is already a pointer. From Xiang Xiao.
- system/nxplayer/nxplayer.c: Add playraw command From ZhongAn.
- apps/system/nxrecorder: Add nxrecorder application From ZhongAn.
- apps/system/popen: Add an implementation of the standard popen()
and pclose() OS interfaces. These are implemented as applications
vs. part of the OS because they depend on NSH. Untested on
initial commit. From Gregory Nutt.
- apps/system/system and popen: Adapt so that these can be used in
the KERNEL build mode. In this case, simply replace task_spawn()
with posix_spawn(). This depends on the existence of some
environment where /bin/sh exists and can be used to execute one
NSH command. For the case of system(), this change was more
complete because it previously used task_create(). Now it uses
either task_spawn() or posix_spawn(), depending upon the
configuration. From Gregory Nutt.
- apps/system/taskset: Add taskset command for SMP systems. This
command can be used to retrieve or set a process's CPU affinity.
For example,
nsh> taskset -p 4
pid 4's current affinity mask: 2
nsh> taskset -p 3 4
pid 4's current affinity mask: 3
nsh> taskset -p 1 busyloop &
From Masayuki Ishikawa.
- apps/system/zmodem: Support -p <path> for rz to change the folder
for the received file. Switch debug output from printf to
syslog. Send the next packet for ZME_ACK in ZMS_SENDING to avoid
rz on the host side stuck make send work reliable even without
hardware flow control. From Xiang Xiao.
* Network Utilities: apps/netutils:
- apps/netutils/dhcpc: Activates BINDTODEVICE if available. From
Sebastien Lorquet.
* Wireless Utilities: apps/wireless:
- apps/wireless/i8sak: i8sak daemon now gets shutdown if not in use.
Previously, once the i8sak daemon was started, by running any
command, it would stay running. This means that if you want to use
i8sak to setup your network, but then want exclusive access to the
char device, or network device, you have to manually shutdown the
i8sak daemon. Now the daemon stays active as long as required to
finish any commands, or stays open if a new command keeps it on,
but when all work is finished, it shuts down. From Anthony Merlino.
* Filesystem Utilities: apps/fsutils:
- mkfatfs: Clean up some name BS_ and MBR_ refer to the same record
and should use the same naming (MBR_). From Gregory Nutt.
- mkfatfs: Add definitions for the FAT boot record (FBR). From
Gregory Nutt.
- mksmartfs: Add a check to see if the SmartFS is already
formatted. From Xiang Xiao.
* Graphic Utilities: apps/graphics:
- graphics/littlevg/: Update LVGL to version 5.1.1 From Alan
Carvalho de Assis.
* Test Utilities: apps/testing:
- testing/unity: Add Unity - unit testing library from
ThrowTheSwitch.org. From Mateusz Szafoni.
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: Signal handlers maybe run with interrupts enabled or
disabled, depending on how the task the received the signal was
blocked. (i.e.: If sem_wait() is called, then we disable
interrupts, then block the currently running task). This could be
dangerous, because user code would be running with interrupts
disabled.
This change forces interrupts to be enabled in up_sigdeliver()
before executing the signal handler calling up_irq_enable()
explicitly. This is safe because, when we return to normal
execution, interrupts will be restored to their previous state when
the signal handler returns. From Gregory Nutt (Based on a
recommendation by Mark Shulte).
- Signals: Lock the scheduler while while killing the children so
that we do not lose priority and let the task group continue to
run in an indeterminate state. From Gregory Nutt.
- Groups: Fix a deadlock when loading an ELF From Masayuki Ishikawa.
- Groups: In some circumstances, group_killchildren() could have
called pthread_cancel() to kill a task. Also, the behavior would
not be as expected if a pthread had cancellation disabled. From Gregory Nutt.
- Posix Message Queues: mq_notify() fix - only part of struct copied
to internal structure. As source address the address of the struct
member sigev_value was used, and it is not located the start of the
struct. This leads to invalid data being copied to internal
structure. Both source and destination should be of type struct
sigevent* . From Simon Liedl.
- vfork(): vfork operation needs to allocate and copy the task
argument too. Also correction of the address correction cannot
depend on the stack pointer since it is not available in all
architectures. Rather calculate the offset from the stack
allocation pointer From Xiang Xiao.
- IRQ Dispatch: Ensure vector never points to NULL since interrupt
may happen before irq_initialize() From Xiang Xiao.
- Work Queue: workqueues don't need set global data to zero since
.bss is cleared automatically. Removing this unnecessary
initialization also avoids the loss the work items queued before
initialization. From ligd.
- Work Queue: Remove work queue polling delay to simplify the code
logic and save the power. From xuanlin.
- syslog: Fix syslog crash on 64bit simulation. From anchao.
- Pipes: Write to a pipe when there are no readers from the pipe
should return -EPIPE. From ligd.
- System Calls: Fix 6th parameter type of posix_spawnp in
syscall.csv From Masayuki Ishikawa.
- System Calls: Remove unused SYS_nnetsocket from syscall.h. Because
SYS_nnetsocket is not implemented so far, it should be removed so
that SYS_prctl can work correctly. From Masayuki Ishikawa.
- Binary Loader: Refactor binfmt_exec.c. This change also fixes an
argv issue for CONFIG_SCHED_ONEXIT=n or CONFIG_SCHED_HAVE_PARENT=n
From Masayuki Ishikawa.
- Binary Loader: Re-architect the way that loadable ELF or NXFLAT
modules are unloaded. Memory resources must be recovered when the
task loaded into memory exits. The original implementation used
the death-of-child SIGCHLD signal to perform the unload. There are
several problems with this: It is overly complex, it requires that
the parent task stay resident while the loaded task runs, and it
has fatal logic flaws in the protected and kernel model builds
because the user signal handler attempts to run in the kernel
address space. This corrects the issue using a mindlessly simply
BINFMT callback when the task exits. From Gregory Nutt.
- ELF Binary Loader: Set priority level to default if parent has no
priority. From anchao.
* File System/Block and MTD Drivers:
- Auto-mounter: Ignore return values from work_cancel(). From
Gregory Nutt.
- SmartFS: Fixed filesystem corruption when writing to small file
after open(... O_APPEND). From Dmitriy Linikov.
- SmartFS stat(): A previous change added support for checking if a
descriptor is a socket in fstat().' but it changed sys/stat.h in
way that breaks smartfs file-type stat flags. CROMFS is similarly
broken, as tools/gencromfs.c was not updated to match the
sys/stat.h changes. This commit fixes both issues. It probably is
not a good idea to use NuttX sys/stat.h bit-field values directly
in stored structure of filesystem. From Jussi Kivilinna.
- HostFS: Update duplicated definitions in HOSTFS that must match
NuttX values. From ligd.
- HostFS: Ensure f_type is equal to HOSTFS_MAGIC. From Xiang Xiao.
- ROMFS: Make romfs_devread32 more portable From anchao.
- TmpFS: Correct logic in tmpfs_ioctl() that extracts the priv state
structure from the file system structures. It was not getting the
right value and causing mmap() to fail. Noted by Jesse. From
Gregory Nutt.
- ProcFS network statistics: Was not handling the output correct for
the case of an IEEE 802.11 device. From Gregory Nutt.
- ProcFS IRQs: Fix occasional computation error when fracpart >=
1000 From Xiang Xiao.
* Networking/Network Drivers:
- TAP/TUN: Fixed custom tun devname formatting. From Dmitriy Linikov.
- Network Drivers: This change attempts remove some long standard
confusion in naming and some actual problems that result from the
naming confusion. The basic problem is the standard MTU does not
include the size of the Ethernet header. For clarity, I changed
the naming of most things called MTU to PKTSIZE. For example,
CONFIG_NET_ETH_MTU is now CONFIG_NET_ETH_PKTSIZE. This makes the
user interface a little hostile. People think of an MTU of 1500
bytes, but the corresponding packet is really 1514 bytes (including
the 14 byte Ethernet header). A more friendly solution would
configure the MTU (as before), but then derive the packet buffer
size by adding the MAC header length. Instead, we define the
packet buffer size then derive the MTU.
The MTU is not common currency in networking. On the wire, the
only real issue is the MSS which is derived from MTU by subtracting
the IP header and TCP header sizes (for the case of TCP). Now it
is derived for the PKTSIZE by subtracting the IP header, the TCP
header, and the MAC header sizes. So we should be all good and
without the recurring 14 byte error in MTU's and MSS's. From
Gregory Nutt.
- netdev: Fix.. Too many calls to net_unlock() From Gregory Nutt.
- IPv6: There are many different checks for IPv6 multicast
addresses. Most of the checks are different. RFC 3513 clearly
specifies how to detect an IPv6 multicast address: they should
begin with 0xffxx. I did not change some of the checks in
ipv6_input.c, however. In that file, the comments indicate that
the code should only pick of certain multicast address that begin
with 0xff02. From Gregory Nutt.
- ARP: Fix some backward logic in an if condition. From Gregory
Nutt.
- TCP Re-assembly: Rename CONFIG_TCP_REASSEMBLY to
CONFIG_IPv4_REASSEMBLY. Add some fixes to get a clean compile with
CONFIG_IPv4_REASSEMBLY enabled. There are several problems with
the current implementation: It is untested (and depends on
CONFIG_EXPERMIMENTAL). It uses some Ethernet specific definitions
(and depends on CONFIG_NET_ETHERNET). There is only a single
reassembly buffer. The last two issues prevent use of this feature
in any context where IPv4 packets may be reassembled for multiple
network devices concurrently). From Gregory Nutt.
- TCP: Set the default TCP MSS to the value required by RFC 879 and
never change it under any circumstance unless the remote host
requests a larger MSS via an option the TCP header. From Gregory
Nutt.
- TCP: Fix a deadlock condition that can occur when (1) all network
logic runs on a single work queue, (1) TCP write buffering is
enabled, and (2) we run out of IOBs. In this case, the TCP write
buffering logic was blocking on iob_alloc() with the network
locked. Since the network was locked, the device driver polls that
would provide take the write buffer data and release the IOBs could
not execute. This fixes the problem by unlocking the network lock
while waiting for the IOBs. From Gregory Nutt.
- TCP: Remove g_netstats.tcp.syndrop++ from tcp_data_event() From
Masayuki Ishikawa.
- TCP Monitor: Fix net unlock issue when tcp close. This bug could
leave the net locked. From zhangyuan7.
- UDP: When sending a broadcast (or multicast) packet do not attempt
to look up the device by the destination IP address. Rather, use
the locally bound address for these cases to select the correct
network device. From Gregory Nutt.
- UDP: Restore some legacy behavior that was lost with the
implementation of CONFIG_NET_UDP_BINDTODEVICE: If no device has a
local address when the broadcast packet is sent and the UDP socket
is not bound to a device, there select some arbitrary device. This
is certainly lunacy in the case where there are multiple network
devices registered because the wrong device will probably be
returned. It works find, however, for the legacy case where only a
single network device is registered. From Gregory Nutt.
- UDP: Fix for network byte-order issue when checking if an address
is a multicast address. From Jake Choy.
- USRSOCK: Correct of semaphore usage issues. From Gregory Nutt.
- USRSOCK: Fix re-definitions of struct iovec. From ligd.
- ICMP/ICMPv6 Connection: Change the type of id in
icmpv[6]_findconn to uint16_t From Xiang Xiao.
- ICMP/ICMPv6: Fix failure to poll ICMP socket issue. From
dongjianli.
* Wireless/Wireless Drivers:
- XBee: Fixes issue with timeouts. Timeouts were in ticks but
should have been in ms. This caused false triggers of timeout
causing redundant packets, etc. From Anthony Merlino.
- BCM43xx: Add missing logic to the BCM43xx IEEE 802.11 driver to
poll for more Tx data after the last transfer completes. From
Gregory Nutt.
- BCM43xx: Bring in some fixes from the 'Haywire' branch. From
Ramtin Amin.
* Common Drivers:
- Audio: Fix compile error in i2schar.c (CONFIG_DEBUG_ASSERTIONS=y)
From Masayuki Ishikawa.
- Audio I2S: Fix bad NULL pointer check From Juha Niskanen.
- Input: Fixed FT5x06 driver to correctly close (previously it
unregistered interrupt handler during close). From Marcin Wyrwas.
- MMC/SD: Fix an error that was causing SDIO multiple block
transfers from achieving full performance. From Bob Feretich.
- Sensors: Increases SPI frequency in MAX6675 from 400Khz to 4MHz.
From Alan Carvalho de Assis.
- Sensors: Remove comment references to touchscreens from ADXL345
driver. From Russ Webber.
- Serial: Don't overwrite nwritten unconditionally on UART write
failure. From Xiang Xiao.
- Serial DMA: Move head/tail pointer reset to uart_recvchars_dma
since dma may be still transferring in the background. From Xiang
Xiao.
- Serial DMA: In DMA mode, the use of uart_disablexinit() is
insufficient to protect a critical section.
enter/leave_critical_section() must be used in those cases if
CONFIG_SERIAL_DMA=y From Xiang Xiao.
- Serial DMA: Fix typo error in uart_recvchars_dma() From Xiang Xiao.
- 16550 UART: u16550_txempty() should check UART_LSR_TEMT to avoid
some data left in the transmit FIFO From Xiang Xiao.
* ARMv7-A:
- ARMv7-A (and i.MX6): Add support for per-CPU IRQ and FIQ interrupt
stacks (bugfix). Add support so that up_assert will print the
correct interrupt stack on an assertion (FIQ stack is still not
printed). From Gregory Nutt.
* ARMv7-R:
- ARMv7-R: Fix some wrong configuration of program status
register. PSR_E_BIT bit should be set for big endian system.
PSR_A_BIT bis is set automatically as arm cortex-r4 reference
manual 3.7.4. So we don't need to set this bit. From EunBong Song.
- ARMv7-R: Fix some wrong MPU register definition. Change
MPU_RBAR_ADDR_MASK and MPU_RACR_TEX_SHIFT mask as arm cortex-r4
reference manual. Region Base Address Register 0-4 bits are
reserved. MPU Region Access control register type 3-5 bits. From
EunBong Song.
* ARMv7-M:
- ARMv7-M, Cortex F7: Add a configuration to enable workaround for
r0p1 Errata 837070: Increasing priority using write to BASEPRI does
not take effect immediately. This update is required to be
serialized to the instruction stream meaning that after this update
completes, it takes effect immediately and no exceptions of lower
priority than the new boosted priority can preempt execution.
Because of this erratum, the priority boosting does not take place
immediately, allowing the instruction after the MSR to be
interrupted by an exception of lower priority than the new boosted
priority. This effect is only limited to the next instruction.
Subsequent instructions are guaranteed to see the new boosted
priority. This was raised in Bitbucket issue 113 from Vadzim
Dambrouski. From Gregory Nutt.
- ARMv7-M: MPU: mpu_log2regionceil needs take into account the
offset too From Xiang Xiao.
- ARMv7-M MPU: The prototype of mpu_log2regionfloor() changed; an
additional parameter was added. However, none of the calls to
mpu_log2regionfloor() were updated to pass the new, additional
parameter. From Gregory Nutt.
* Infineon XMC4xxx Drivers:
- XMC4 SPI: XMC4 SPI was working only for the first transfer From
Alan Carvalho de Assis.
* Microchip/Atmel SAMv7 Drivers:
- SAMv7 MCAN: Correct an error in the BUS_OFF reporting. In case of
BUS_OFF the old implementation was leading to a package storm. Now
it reports the error condition BUS_OFF only once. From Frank
Benkert.
* NXP/Freescale LPC43xx Drivers:
- LPC43xx CAN: Fix lpc43 CAN configuration. Configuration settings
were used and documented in README.txt files, but never in any
Kconfig file. From Gregory Nutt.
- LPC43xx: Make WWDT usable again. LPC43xx WWDT driver was not
updated when irq_dispatch grew an argument parameter. Also fixes
two typos and a naming inconsistency (WWDT vs. WWDG). From Jakob
Haufe.
* NXP/Freescale Kinetis Drivers:
- kinetis: USB0 fix interrupt storm on error. The ERROR bit of
USBx_ISTAT needed to be cleared once an error occurs. From David
Sidrane.
- Kinetis: SDHC fix SDIO driver so that DMA works. There were 2
problems. The first was that the interrupt did test DINT and raise
a completion events. But since DINT is just an indication of DMA
completion, TC is a valid way to determine that the transfer is
complete. The second problem is that Software Reset For DAT Line
SDHC_SYSCTL[RSTD] clears the bits 24-0 in SDHC_PROTO this looses
the wide bus setting DTW From David Sidrane.
- Kinetis: (1) PIT add Lifetime and Chaining, (2) flexcan fix
duplicate line and ordering, (3) kinetis_lowput.c LPUART data
format with parity fix. The 9-bit data mode is typically used with
parity to allow eight bits of data plus the parity, (4) lowputc
LPUART_BAUD_INIT has to be defined. Build fails with test case
enable LPUART0 and make UART1 console. If HAVE_LPUART_DEVICE is
defined then LPUART_BAUD_INIT has to be defined even if the LPUART
is not the console From David Sidrane.
- Kinetis: I2C ensure timeout on bus error. The code had a dead
wait on I2C_S_BUSY. Noise on the bus would cause the driver to
hang. Add timeout on invalid states of I2C_S_BUSY to allow the
upper layers do deal with restart or abort. From David Sidrane.
* NXP i.MXRT Drivers:
- i.MXRT Ethernet: I finally got the Ethernet CRC32 to work properly
after the FAE pointed me in the right direction: (1) Added CRC32
functions for multicast address filtering, (2) Do not reset PHY
settings when doing an ifup, (2) Use chip's unique id as the device
MAC, and (4) Enable discard enet frames with errors at PHY layer.
From Jake Choy.
* On Semi LC823450 Boards:
- LC823450-XGEVK: Fix parallel build on lc823450-xgevk. This change
fixes an archive file (*.a) corruption by locking $(TOPDIR).
Please note that locking the current directory is insufficient
because some archive files such as libapps.a are specified with
absolute path. From Masayuki Ishikawa.
- LC823450-XGEVK: Change IOB related params for rndis. Since TCP
flow control scheme was changed, HTTP audio streaming has not been
working. These IOB params are not optimized but HTTP audio
streaming now works. From Masayuki Ishikawa.
* STMicro STM32:
- STM32 F7: Fix compile error caused by intentional use of fall
through From Daniel Agar.
* STMicro STM32 Drivers:
- STM32 F1-F4: Port Bob Feritich's change to STM32 F2 and F4 which
appear to have identical SD support and I/O compensation
requirements.
- STM32 F1-F4, STM32 F7, and STM32 L4: The STM32 RTC driver was
being selected by the global CONFIG_RTC option. That is in
correct. For example, if you want to disabled the STM32 RTC and
use an external RTC you cannot because the external RTC also
depends on the global CONFIG_RTC. The solution is to add a new
CONFIG_STM32xx_RTC configuration option the permits to you select
or deselect the STM32 RTC but still be able to select the external
RTC. From Gregory Nutt.
- STM32 F3 I2C: Fix compile error with I2C reset. From Juha
Niskanen.
- STM32 F7 Serial: Fix ioctl TIOCSSINGLEWIRE The TRM notes that UE
must be disabled in order to write HDSEL in USART_CR3. This was not
being done, so calls to TIOCSSINGLEWIRE were silently failing.
This change checks the state of UE in USART_CR1, clears the UE bit
before writing HDSEL, then re-enables it if necessary. From Kurt
Kiefer.
- STM32 F7 DMA: DMA macros did not account for the increase from 8
to 16 DMA channels. From Gregory Nutt.
- STM32 F7 I2C: I2C reset Configure I2C pins as GPIO output. Pins
were reset to inputs in the deinit(). This resets them to outputs.
From David Sidrane.
- STM32 F7: All of the SDMMC pins were set to 50 MHz, but not the
clock. This sets the clock to 50 MHz also. This combined with
turning on I/O compensation makes intermittent failures go away.
From Bob Feritich.
- STM32 F7: Port Bob Feritich's change to SDMMC2 and to all other
STM32 F7 architectures. Also add a configuration option to
automatically enable I/O compensation. From Gregory Nutt.
- STM32 F7 SDMMC: Fix data timeout errors with multi-block
transfers. From Bob Feretich.
- STM32 L4: Corrects some mistakes in pin definitions for the
STM32 L4 family. According to datasheet of STM32L496xx, STM32L475xx
and STM32L443XX the AF2 of PE14 is TIM1_BKIN2 not TIM2_BKIN. From
Daniel Pereira Carvalho.
- STM32 L4: Avoid using redundant CONFIG_STM32L4_STM32L4X2. This is
almost always same as CONFIG_STM32L4_STM32L4X3. Avoid duplication
to reduce macro clutter. This patch limits
CONFIG_STM32L4_STM32L4X2 usage to dependency tracking and pinmap.
Also enable ADC for CONFIG_STM32L4_STM32L4X5 (untested, but same
RM). From Juha Niskanen.
- STM32 H7 Serial: don't include stm32_dma.h From raiden00pl.
* STMicro STM32 Boards:
- STM32F4-Discovery: Fix pca9635pw LED driver compilation on
STM32F4-Discovery. From Alan Carvalho de Assis.
- STM32F4-Discovery: Krassimir Cheshmedzhiev claims that sys/types.h
needs to be included in the RGB LED file to avoid undeclared 'OK'
From Gregory Nutt.
- STM32F4-Discovery: Missing EXTERN(_vectors) in linker script.
From Gregory Nutt.
- Nucleo-L422KC: Fix RAM size; STM31L4x2xx has only 64Kb of RAM.
Remove references to I2C and SDIO: There is no I2C2 or SDIO on the
STM32F4x2xx. From Daniel P. Carvalho.
- Nucleo-L422KC: Fix stm32_userleds. After change LD2 to LD3 in
board.h stm32_userleds.c was broken. From Daniel P. Carvalho.
- Nucleo-L422KC: Fix TIMx clock configuration. Also removes
definitions related to timers not available in the STM32L432KC.
From Daniel Pereira Carvalho.
- Nucleo-L452RE: Fix TIMx clock configuration. This is cloned from
similar change to the Nucleo-L422KC. Also fixes DAC build
failure. From Juha Niskanen.
- B-L475E-IOT01A: Fix copy paste errors in names:
stm32_bringup->stm32l4_bringup. Noted by Freemans Goden. From
Gregory Nutt.
- STM32VL-Discovery: Changed the status LED to be the green one as
mentioned in the README file. Removed the global array for buttons
and replace it with the only button. Improve defconfig for the nsh
configuration. From Ouss4.
* C Library/Header Files:
- libc audio: Call nxsem_destroy in apb_free. From Xiang Xiao.
- libc netdb: The 'port' argument to the static alloc_ai() function
is always in network byte order. However, that static function was
still calling HTONS() on the port, incorrectly converting it back
to host byte order. From Gregory Nutt.
- libc netdb: Fix a link error in lib_gethostbynamer.c with protected
build. NOTE: g_lo_ipv4addr also exists in
net/loopback/lo_globals.c which can be linked with kernel build
only. From Masayuki Ishikawa.
- libc unistd : Fix backward conditional logic in Kconfig. From
Gregory Nutt.
- include/nuttx/compiler.h: Fix warning: __cplusplus is not defined.
Some gcc derived compiler do not define __cplusplus From Xiang
Xiao.
- include/nuttx/fs/binfs.h: Fix warning: Type defaults to 'int' in
declaration of 'mountpt_operations' From Xiang Xiao.
- include/nuttx/net/ethernet.h: Remove CONFIG_NET_ETHERNET guard
From Xiang Xiao.
- include/nuttx/semaphore.h: don't include nuttx/fs/fs.h. (1) Avoid
nested loops if CONFIG_SIG_EVTHREAD enabled, (2) semaphore.h
doesn't depends on fs.h. From Gregory Nutt.
- include/crc64.h: Fix warning: integer constant is too large for
its type From Xiang Xiao.
- include/limits.h and include/sys/types.h: Fix warning about
'SIZE_MAX' redefined. include/nuttx/usb/audio.h: Fix warnings due
to '-' used whete '_' intended. From Xiang Xiao.
- include/spawn.h: Fix posix_spawnattr_destroy warning: 'the
address of attr will always evaluate as true' From Xiang Xiao.
- include/sys/types: Move wint_t and wctype_t from wchar.h to
types.h. This change is compatible as before since wchar.h
include types.h indirectly. This fixes a compilation error with
newlib's math.h: 'unknown type name wint_t' From Xiang Xiao.
- apps/include/netutils/netlib.h: Eliminate a warning about
AF_UNSPEC and AF_INET not defined. From Gregory Nutt.
* Build System:
- Build System: Fix parallel build in making context. This change
avoids running $(MKSYSCALL) and .context in parallel and ensures
that tools/mksyscall is built before it is actually used. From
Masayuki Ishikawa.
- Kconfig files: Fix several errors noted by Alex Denisov in
Bitbucket issue 115. From Gregory Nutt.
- apps Build System: Fix an error when building apps/ without
nuttx/, using only the NuttX export package and assuming that the
nuttx/ directory in not even present. In this case, the problem
fixed where the apps/Make.defs file was selecting tools from the
/tools directory which does not exist because TOPDIR=apps/import.
Instead, for this build case, I have not thought of any option but
to duplicate scripts as necessary in the apps/tools directory.
Also added a top-level target to compile the symbol table. Misc
fixes: quoting in scripts, some errors in script syntax. From
Gregory Nutt.
- apps/Application.mk: If a loadable module is generated the we
need to add logic to remove the loadable module in the 'make
clean' logic. From Gregory Nutt.
* Tools:
- nuttx/tools/Makefile.unix: Was not cleaning up export directory
if it was left from a failed export. From Gregory Nutt.
- apps/tools: Fix an error in mksymtab.sh From Masayuki Ishikawa.
* NSH Library: apps/nshlib:
- apps/nshlib: Fix 'while' and 'until' loop condition The loop
condition logic was inverted: 'while true; do echo "test"; done'
would exit immediately, while using 'until' would stay in the
loop. This is the opposite of how it is supposed to work. The
reason is that 'state' was set wrong because 'whilematch' is a
bool. From Beat Küng.
- apps/nshlib: I was able to cause an assertion with some typos in
testing the 'fi' command. Not an important thing, but this will
protect against the assertion. From Gregory Nutt.
- apps/nshlib: Increase the default configuration for the maximum
number of command line arguments to 7 (CONFIG_NSH_MAXARGUMENTS).
This is needed for 'mount' with the -o option. From Xiang Xiao.
- apps/nshlib: Do not dereference NULL 'pstate' in nsh_console.c.
From Juha Niskanen.
* Examples/Tests: apps/examples:
- apps/examples: Remove illegal calls into OS to initialize BINFMT
support. This must be moved to the board initialization logic
within the OS. From anchao.
- apps/examples/nettest: Fix typo: NET_LOOPBACK ->
CONFIG_NET_LOOPBACK nettest: Fix compilation error. Should enable
NET_SETSOCKOPT for preventing compilation error. From EunBong Song.
- apps/examples/ostest: Signal handling tests should use the same
configurable stack size as used in other tests, not
PTHREAD_STACK_DEFAULT. From Gregory Nutt.
- apps/examples/ostest: Attempt to make the nested signal test
compatible with the suspend/resume test. Some signals cannot be
caught when the suspend/resume configuration is in place. From
Gregory Nutt.
- apps/examples/smps: Fixes in some printf and in Kconfig. From
Mateusz Szafoni.
* System Utilities: apps/system:
- apps/system/cu: (1) Protect from possible re-definition of signal
values, (2) Fix CU ctrl-C hand when remote core hang. From ligd.
- apps/system/i2c: Fix a backward comparison in i2c_main.c. Noted
by Jakob Haufe. From Gregory Nutt.
- apps/system/nsh: Fix compile errors with
CONFIG_EXAMPLES_NSH_SYMTAB=y. From Masayuki Ishikawa.
- apps/system/ping and ping6: Send ID and seqno in network byte
order. From Xiang Xiao.
- apps/system/ping and ping6: Change dependency in ping and ping6
Kconfig. These may be implemented in users sockets and, hence,
may need to be available even if ICMP and ICMPv6 sockets are not
support. From Xiang Xiao.
- apps/system/system: Add 'const' to make function prototype
compatible with OpenGroup.org requirement From Xiang Xiao.
- apps/system/zmodem: Fix error "sz_main.o: No such file or
directory" From Xiang Xiao.
* Network Utilities: apps/netutils:
- apps/netutils/ftpc: Fix handling of url-encoded strings From
Dmitriy Linikov.
- apps/netutils/ping: Remove unsupported ping. netutils/ping is not
supported anymore. It's better to remove this folder for
preventing confusing. ping is supported by system/ping. From
EunBong Song.
* Wireless Utilities: apps/wireless:
- apps/wireless/wapi: Remove dependency on CONFIG_EXPERIMENTAL from
Kconfig From Gregory Nutt.
* GPS Utilities: apps/gpsutils:
- apps/gpsutils/minmea: Include wchar.h in minmea.c file to fix
wint_t error From Alan Carvalho de Assis.
* Interpreters: apps/interpreters:
- Remove apps/interpreters/micropthon. There are several reasons
for this. (1) the current version 1.3.8 is very old and no one is
supporting it. (2) the port only includes the core micropython
logic and none of the Python libraries. As such it is useless in
any real application. (3) There have recently been compile
failures reported. It looks like this is due to changes in newlib
based toolchains that now bring in incompatible newlib header
files. See issue 104 at
https://bitbucket.org/nuttx/nuttx/issues/104/build-micropython-138-error.
With no one dedicated to the support of micropython, it can no
longer be carried in the NuttX apps/ repository. From Gregory Nutt.