From 627724749d6869f045b5711e75c8a6ece6e65f62 Mon Sep 17 00:00:00 2001 From: Gregory Nutt Date: Sat, 14 Sep 2019 08:56:25 -0600 Subject: [PATCH] Update ReleaseNotes in preparation for the NuttX-8.1 release. --- ChangeLog | 23 +- ReleaseNotes | 1160 ++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 1172 insertions(+), 11 deletions(-) diff --git a/ChangeLog b/ChangeLog index 3c9406ae16..e179167c81 100644 --- a/ChangeLog +++ b/ChangeLog @@ -15482,7 +15482,7 @@ pinmap with unsupported devices removed (2017-06-08). * configs/stm32f103-minumum SPI: SPIDEV_WIRELESS used when this has changed to SPIDEV_CONTACTLESS. From Nicolas Estibals (2017-06-08). - * stm32f103-minimum: dd GPIO device driver example for + * stm32f103-minimum: Add GPIO device driver example for STM32F103-Minimum. This chang eadds the initialization needed by stm32f103-minimum board to support the NuttX GPIO Subsystem. From Alan Carvalho de Assis (2017-06-08). @@ -25069,7 +25069,7 @@ NULL. Modify to use group_exitchild to get the pointer of recent exited child. From Yang ChungFan (2019-07-20). -8.1 2019-09-15 Gregory Nutt +8.1 2019-09-14 Gregory Nutt * arch/arm/src/sam34/Kconfig: Add missing DMA configuration setting. From Bernd Walter (2019-07-21). @@ -26305,7 +26305,7 @@ board. From Pavel Pisa (2019-08-30). * board/Kconfig and board/README.txt: Add configuration support for the LX_CPU board. From Gregory Nutt (2019-08-30). - * README.txt and Documentstion/README.html: Update README file + * README.txt and Documentation/README.html: Update README file references to include the LX_CPU board README file. From Gregory Nutt (2019-08-30). * boards/arm/lpc17xx_40xx/lx_cpu/src/lpc17_40_ulan.c: Provides for @@ -26319,7 +26319,7 @@ * tools/Makefile.win: Port changes of commit 3ed844640d25b854457b6cc08f89d907072c0054 to Makefile.win. Untested because I don't have a Windows native build platform setup. There - have been a log of changes to the build system lately do to directory + have been a lot of changes to the build system lately do to directory re-organization so likely the native build is broken. Certainly tools/configure.bat should be replaces with tools/configure.c. From Gregory Nutt (2019-08-30). @@ -26339,8 +26339,9 @@ called even when it was conditioned out, causing a link time failure. From Gregory Nutt (2019-08-31). * net/: Re-order the content of all address-family socket 'connection' - structures so that they begin with a comomon prologue. This permits - better use of logic for different address family types. From Gregory Nutt (2019-09-01). + structures so that they begin with a common prologue. This permits + better use of logic for different address family types. From Gregory + Nutt (2019-09-01). * net/local/local_conn.c: Removed unnecessary memset(). Connection structure is allocated with kmm_zalloc() which will clear all memory. From Gregory Nutt (2019-09-01). @@ -26367,7 +26368,7 @@ * arch/arm/src/arm/up_fullcontextrestore.S: When performing stability test, the application would cause kernel crash. When I trace the stack, I find that register R1 has been changed, and its value is the - same as register CPSR. In p_fullcontextrestore.S, the restoration of + same as register CPSR. In up_fullcontextrestore.S, the restoration of R0 and R1 is not atomic: 'msr cpsr r1 will enable interrupts and the recovery of r0 and r1 may be interrupted and the value or R1 may be changed. Fix is to use a single ldmia to restore R0, R1, and return @@ -26383,7 +26384,7 @@ * Fix some typos. Also minor update to stm32f7/nucleo-144/README.txt and stm32l4/nucleo-l496zg/README.txt board documentation. From Juha Niskanen (2019-09-05). - * drivers/rf/dat-31r5-sp.c: dd support to the DAT-31R5-SP+ digital + * drivers/rf/dat-31r5-sp.c: Add support to the DAT-31R5-SP+ digital attenuator. Creates a the new device driver directory drivers/rf/ to support drivers related to RF peripherals. It also adds support for the DAT-31R5-SP+ digital attenuator. From Augusto Fraga Giachero @@ -26411,10 +26412,10 @@ major and minor version number From Gregory Nutt (2019-09-07). * arch/arm/src/stm32/stm32_otg[fs|hs]host.c: STM32 host only initiates transfer if buflenl > 0. From Adam Porter (2019-09-08). - * STM32F7/H7/L4 OTG host: Adam porters fix for STM32 FS/HS probably + * STM32F7/H7/L4 OTG host: Adam Porter's fix for STM32 FS/HS probably should be applied to STM32 F7, H7, and L4 OTG host which are very similar. From Gregory Nutt (2019-09-08). - * EFM32 OTG host: Adam porters fix for STM32 FS/HS probably should be + * EFM32 OTG host: Adam Porter's fix for STM32 FS/HS probably should be applied to EFM32 host which which has very similar IP. From Gregory Nutt (2019-09-08). * arch/arm/src/armv7-a: Fix typo and missing quotation for armv7-a. @@ -26463,7 +26464,7 @@ re-organization. From Gregory Nutt (2019-09-11). * boards/arm/imx6/sabre-6quad/scripts/Make.defs: Yet another boards/ re-organization fix-up. From Gregory Nutt (2019-09-11). - * libs/libc/builtin/: builtint_isavail() should not set the errno + * libs/libc/builtin/: builtin_isavail() should not set the errno variable because this functions may be used by internal OS logic for which setting the errno variable would be inappropriate. From Gregory Nutt (2019-09-11). diff --git a/ReleaseNotes b/ReleaseNotes index 1293e6a345..f4cef7693c 100644 --- a/ReleaseNotes +++ b/ReleaseNotes @@ -24487,3 +24487,1163 @@ detailed bugfix information): - apps/graphics/twm4nx: Fix some errors found when enabling NX keyboard support. The most important being that the mouse and keyboard drivers need to be opened non-blocking. From Gregory Nutt. + +NuttX-8.1 Release Notes +------------------------ + +The 132nd release of NuttX, Version 8.1, was made on September 14, 2019, +and is available for download from the Bitbucket.org website. Note +that release consists of two tarballs: nuttx-8.1.tar.gz and +apps-8.1.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). + +The major release version number is only incremented when there is a major +change to the OS that makes it more-or-less incompatible with preceding +versions. This release bumps the major version number from 7 to 8 due +primarily to a major reorganization in the what was the configs/ directory +in nuttx-7.31. That directory has been renamed boards/ and now has a +directory structure that mirrors the organization of the arch/ directory +for the most part: + + board/ - Holds all board-related information + board/ - Holds board-related information for all boards that use + the same CPU architecture. For example, all ARM-based boards will be + found under board/arm + board// - Holds board-related information for all boards + that use the same MCU chip family. For example, all STM32-based + boards will be found under board/arm/stm32 + board/// - Holds board-related information for a + specific board. This is analogous to the configs/ directory in + nuttx-7.31. So, for example, the STM32F4-Discovery board support that + was at configs/stm32f4disovery can now be found under + boards/arm/stm32/stm32f4discovery. + boards//// - All configurations for a + specific board can now be found together in this configs/ + subdirectory. So, continuing the example, the STM32F4-Discovery NSH + configuration can now be found at + boards/arm/stm32/stm32f4discovery/configs/nsh. + +In additional, common MCU logic can be found at board///common +and MCU common drivers can be found at board///common. Related +changes include changes to tools/, comments, and documentation that depend +on the board directory structure. + +This re-organization is the work of Alin Jerpelea. Not only did Alin do +this major directory re-organization, but he ran the code standard +compliance tool and corrected every .c and .h file under boards/ so that +they all correctly follow the NuttX coding style. These changes were very +extensive and, hence, will not be addressed individually in the ReleaseNotes. + +You have to give Alin credit for his effort to take on really big jobs and +stick with it until it is finished. Kudos! + +A more constrained re-organization of the drivers/ directory was also +contributed by Augusto Fraga Giachero. Augusto reorganized some driver +directories to make better functional associations and also to make space +for a new set of RF-related drivers. + +Additional new features and extended functionality: +--------------------------------------------------- + + * Core OS: + + - POSIX Message Queues: Add a test to verify that message queue is + closed by the same task group that opened it. If not, then list + corruption would result. This test is only performed if + CONFIG_DEBUG_FEATURES is enabled since it should not normally be an + issue: It would be a strange programming practice to open a + message queue in open task group, then close it in another. From + ???. + - Signal Notifications: Add configuration option to select either the + high-priority or low-priority work queue for SIG_EVTHREA + notifications. From ligd. + - System Calls: In order to support built-in in function in protected + mode, a task_spawn() system call must be supported. task_spawn() + and posix_spawn() are NuttX OS interfaces. In PROTECTED and KERNEL + build modes, then can be reached from applications only via a system + call. Unfortunately this is overly complex because there is a (soft) + limit of 6 parameters in a system call; task_spawn has seven + parameters. This is a soft limit but still difficult to extend + because it involves assembly language changes to numerous + architectures. Better to get more creative. Rather than extend the + maximum number of parameters across all architectures, I opted + instead to marshal the seven parameters into a structure and pass + only a single parameter: A pointer to the structure containing the + seven marshaled parameters. From Gregory Nutt. + - /etc/passwd and /etc/group: Improve the format of the /etc/passwd + file as used in the sim:nsh configuration. It is now a little + more similar to other systems and includes user and group IDs. Add + also an /etc/group file to support future testing. From Gregory + Nutt. + - User/Group IDs: Implement 'real' setuid, getuid, setgid, and getgid + interfaces is so configured (otherwise fall back to stubs that + support only the 'root' user ID and group. Once set, these IDs will + be inherited by all child task groups. From Gregory Nutt. + - Debug Output: Add debug macros for contactless. The various + contactless device drivers currently define device specific debug + macros within their local header files. This patch adds generic + ctls[info|warn|err] macros for the overall contactless subsystem to + be used in future drivers. Ported the existing contactless device + drivers to use these generic logging macros and fixed some logging + bugs along the way. From Michael Jung. + - IOB instrumentation. Introduces producer/consumer id to every IOB + call. This is so that the calls can be instrumented to monitor the + IOB resources and to collect usage statistics. From Anthony + Merlino. + - IOB ProcFS: Adding ProcFS support at /proc/iobinfo to show the data + collected from the IOB instrumentation. From Anthony Merlino. + - Versioning: Report GIT information via ProcFS. GIT info reported: + branch, version, GIT hash, hostname, user, build date. Integrates + into existing .version and ProcFS. From David Alessio. + + * File System/Block and MTD Drivers: + + - BinFS: The BinFS file system uses the same built-in library and + built-in arrays as does NSH. The built-in arrays are simple name- + value pairs that map built-in function names with the user-space + entry point. In the FLAT build, the built-in arrays are available + everywhere via the backdoor left open by the FLAT address space. + In the PROTECTED build, however, the kernel must maintain its own + reference to the user-space built-in array. This commit adds those + kernel globals and a new boardctl(BOARDIOC_BUILTINS) that can be + used by applications to the provide the built-in list reference to + the kernel. From Gregory Nutt. + - MMC/SD: Added support for MMC (eMMC) bigger than 2 GB (Tested with + IMXRT1050EVKB and samsung eMMC 16GB). + - AT24CSxx: Register a character driver for UUID of AT24CSxx chips. + Allows the UUID to read as a file or displayed from an nsh prompt with: + nsh> hexdump /dev/eeprom.uuid From David Alessio. + - Macronix FLASH: Add support for 4-byte addressing on >128Mb + Macronix flash parts From jjlange. + - MX25Rxx: Add support for 512B sectors. From Simon Piriou. + - SST26: Accept the 16MBit Flash when reading the JEDEC-ID at + initialization time. From Ouss4. + + * Network/Network Drivers: + + - IPv4 Options: Now handles reception of IPv4 packets with larger + IPv4 headers containing options. From Gregory Nutt. + - Sockets: Re-order the content of all address-family socket + 'connection' structures so that they begin with a common prologue. + This permits better use of logic for different address family + types. From Gregory Nutt. + - TCP: Make RTO and WAIT_TIME configurable. This fix is not really + correct: TCP RTO really should be calculated dynamically for each + TCP connection: http://sgros.blogspot.com/2012/02/calculating-tcp-rto.html. + From zhangyuan7. + - IP Forwarding: Check if interface is up early on when forwarding to + avoid extra work. As noticed in a previous wireless commit, when + forwarding is enabled and a packet comes in, the packet is attempted + to be sent on each other netdev without regard for whether it is in + the UP state. Of course this is eventually caught, but it can be + caught earlier to avoid unnecessary work, especially in the 6LoWPAN + case where a useless packet conversion will occur. From Anthony + Merlino. + - RNDIS: Expose option to change the number of write requests that + can be in flight. From Anthony Merlino. + - GS2200M: Add UDP support. From Masayuki Ishakawa + - GS2200M: Implement GS2200M_IOC_IFREQ IOCTL command. From Masayuki + Ishikawa. + - GS2200M: Enable NuttX's DHCP client instead of GS2200M's DHCP + client. From Masayuki Ishikawa. + - GS2200M: GS2200M now supports SIOCGIFHWADDR From Masayuki + Ishikawa. + + * Wireless/Wireless Drivers: + + - IEEE802.15.4 Network Driver: Allow 64-bit prefix to be configurable + when auto-configuring the IPv6 address during bring-up. Previously, + only the link-local prefix fe80::/64 was used. Also, put the + network in the DOWN state at the end of initialization. From + Anthony Merlino. + - IEEE 802.15.4 MAC: Adds support for energy detect. Adds support + for energy detect by introducing a new radio call/callback, as the + PHY layer is required to perform the energy detect. From Anthony + Merlino. + - IEEE 802.15.4 MAC: Adds support for getting/setting + macMaxFrameRetries via IOCTL. Add get support for rxonidle + attribute From Anthony Merlino. + - IEEE 802.15.4 MAC: Move the global iobuffer into the macnet struct + so that more than one macnet device can exist. From Anthony + Merlino. + - IEEE 802.15.4 MAC: Defer handling of extracting association + response to LPWORK queue. From Anthony Merlino. + - IEEE 802.15.4 Radios: Support dynamic FCS length. Adds + IEEE802154_ATTR_PHY_FCSLEN. This change introduces + IEEE802154_ATTR_PHY_FCSLEN which the radio layer can support to + set/get the FCS length that's added to the end of the frame. One + use case, in promiscuous mode, is to add back in the FCS of the + received frame by increasing the iob->io_len by the FCS length. + From Anthony Merlino. + - Xbee: Support "WR" AT command for writing parameters to non- + volatile memory. From Anthony Merlino. + - Xbee: Add configuration option for setting the default prefix + to use when bringing up the network and setting the IP address. + From Anthony Merlino. + + * Other Common Device Drivers: + + - RTC: If the RTC time is successfully set, then update the current + system time to match. From ligd. + - ADT7320: Add support for the ADT7320 temperature sensor. From + Augusto Fraga Giachero. + - DAC7554: Add support to the DAC7554 digital-to-analog converter. + From Augusto Fraga Giachero. + - DAT-31R5-SP+: Add support to the DAT-31R5-SP+ digital attenuator. + Creates a the new device driver directory drivers/rf/ to support + drivers related to RF peripherals. It also adds support for the + DAT-31R5-SP+ digital attenuator. From Augusto Fraga Giachero. + - ISL29023: Add basic driver of ISL29023 ambient light sensor. The + basic driver can set operational mode, range, and resolution. It + can also read lux value in continuous mode. Interrupt and the alarm + is not implemented. From Matous Pokorny. + - SHT3x: Add Sensirion SHT3x driver. From Markus Bernet. + + * Simulator: + + - Simulator Build: Even though the simulation has no "chips", it + needs to have CONFIG_ARCH_CHIP and chip sub-directories. Otherwise, + we would have to treat it as a special case in the build system + after the changes to the boards/ directory. From Gregory Nutt. + + * Microchip PIC32MZ: + + - PIC32MZ. Make the PLL input clock configurable. From Ouss4. + + * ARMv7-M + + - Add ARMv7-M setjmp/longjump functions. From David S. Alessio. + + * NXP i.MXRT Drivers: + + - i.MXRT Clocking: Enable TRACE clocks if the divider has been + defined in the board's board.h file. From Dave Marples. + - i.MXRT QEncoder: Adds quadrature encoder driver for IMXRT. From + Nicholas Chin. + + * NXP i.MXRT Drivers: + + - i.MXRT USDHC: This change completes SDIO support for IMXRT, and + also adds support for WiFi using the AP6212A module based on Simon + Piriou's rather excellent work. The patch should also address + DavidS's concern about width setting for USDHC1 and 2. Testing of + the WiFi is minimal so far but functionality is proven. I'm + specifically not happy that the driver doesn't recover elegantly + from a DMA data checksum failure, but that is an issue that can be + dealt with in due course ... I'm trying to get the rest of the + interfaces fleshed out and the hardware proven so it can go for pre- + production build. I _think_ there's only Bluetooth and USB-device + left to implement now. From Dave Marples. + - i.MXRT uSDHC: IMXRT uSDHC driver cmd line reset logic modified. + From Ivan Ucherdzhiev. + + * NXP/Freescale Kinetis Drivers: + + - Kinetis Serial: Add possibility to specify pull-up instead of + open drain for serial single-wire mode. From Beat Küng. + + * NXP LPC17xx/40xx: + + - LPC17xx/40xx Build: Cortex-M system reset is applicable to + LPC17xx/40xx too. From Pavel Pisa. + + * NXP LPC17xx/40xx Drivers: + + - LPC17xx/40xx Ethernet: Follow the procedure listed in the + LPC176x/5x User Manual when reading from and writing to the PHY's + registers (section 10.11.14). I couldn't see any behavioral change + after this commit, but nonetheless is a good practice to follow the + manufacturer's recommended procedure. From Augusto Fraga Giachero. + + * NXP S31K1xx: + + - Added architecture support for the NXP S32K1xx family. Basic + support includes the boot up logic, clock configuration, LPUART + console, Systick timer, GPIO controls, and DMA (unverified). + + * NXP S31K1xx Drivers: + + - S32K1xx eDMA Leverage eDMA logic from i.MXRT to S32K1XX. Appears + to be the same IP but with fewer channels and features than the + i.MXRT implementation. From Gregory Nutt. + - S32K1xx LPUART: Bring in the LPUART from i.MXRT. It is the same + IP. From Gregory Nutt. + - S32K1xx SysTick: Bring in Cortex-M0+ SysTick and interrupt handling + from samd2l2; bring in Cortex-M4F Systick and interrupt handling + from LPC54xx. From Gregory Nutt. + - S32K1xx GPIO: Bring in GPIO logic from Kinetis. Looks like similar + IP. From Gregory Nutt. + - S32K1xx Ethernet: Unverified port of the i.MXRT Ethernet driver to + the S32K1xx. The i.MXRT uses the same IP. From Gregory Nutt. + - S32K1xx LPSPI and LPI2C: Brings in the LPSPI and LPI2C peripheral + drivers from the i.MXRT which used the identical IP. From Gregory + Nutt. + + * NXP S31K1xx Boards: + + - S32K118EVB. This commit adds initial board support for the NXP + S32K118EVB development board. Currently supports only a minimal + NSH configuration. From Gregory Nutt. + - S32K118EVB: Implement board support for on-board LEDs and buttons. + This is taken from the Freedom-K66f with has the same LED and + button configuration as the S32K116EVB and uses the same GPIO IP. + LEDs, but not buttons, have have been verified. From Gregory Nutt. + - S32K146EVB: Adds initial board support for the S32K146EVB + development board. Currently supports a NSH configuration with a + richer feature set than the minimal configuration of the S32K118EVB. + From Gregory Nutt. + - S32K146EVB: Add support for execution out of SRAM. This is helpful + for bring-up when you want to avoid putting a lethal image in FLASH. + From Gregory Nutt. + - S32K148EVB: Add support for the NXP S32K148EVB development board. + Very similar to the S32K146EVB but with more on-chip memory and + hardware features. + + * Sony CXD56xx + + - CXD56xx: Migrate CXD56xx common code to the common/ directory: + Boot code, FLASH code, I2C driver, UID. From Alin Jerpelea. + - CXD56xx: Add SPH. The SPH is used by the ASMP implementation from + the SDK. From Alin Jerpelea. + + * Sony CXD56xx Drivers: + + - CXD56xx: Add sensors connected to the SCU on Spresense board: + o Avago APDS9930 Proximity and Ambient light Sensor. + o Rohm BH1721FVC Ambient Light Sensor. + o Rohm BH1745NUC Color Sensor. + o Rohm BM1383GLV/BM1383AGLV Pressure Sensor. + o Rohm BM1422GMV/BM1422AGMV Magnetic Sensor. + o Bosch BMI160 Sensor support. + o Bosch BMP280 Barometic Pressure Sensor. + o Kionix KX022/KX122 Acceleration Sensor. + o Murata LT1PA01 Proximity and Ambient light Sensor. + o Rohm RPR0521RS Proximity and Ambient light Sensor. + o BMI160: add optional I2C address. + From Alin Jerpelea. + - CXD56xx: Add the sensor initialization for CXD56xx boards in the + common board folder: + o APDS9930: typo fix + o cxd56_ak09912 initialization. + o cxd56_bmi160 initialization. + o cxd56_apds9960 initialization. + o cxd56_bh1721fvc initialization. + o cxd56_bh1745nuc initialization. + o cxd56_bm1383glv initialization. + o cxd56_bm1422gmv initialization. + o cxd56_bmi160 initialization. + o cxd56_bmp280 initialization. + o cxd56_kx022 initialization. + o cxd56_lt1pa01 initialization. + o cxd56_rpr0521rs initialization. + o cxd56_sensors initialization. + o Backup Log driver. + o crashlog driver. + o Move gs2200m initialization. + o Move ili9340 initialization. + o Move lpm013m091a initialization. + From Alin Jerpelea. + + * Sony CXD56xx Spresense Board: + + - Spresense: Enable SmartFS and UDP support From Masayuki Ishikawa. + + * STMicro STM32: + + - STM32F4 PLLI2S: Add support to enable the I2S Phase Locked Loop on + STM32F427 and STM32F437 MCUs. From Michael Jung. + + * STMicro STM32 Drivers: + + - STM32 ADC: Add ADC calibration procedure for IP_ADC_V1. Tested on + STM32F100, and it magically increased result accuracy. STM32F103 + has the same calibration procedure. I am not sure about others. + From Matous Pokorny. + - STM32 SPI: TI Synchronous Serial Frame Format. The SPI macros on + STM32 MCUs now support the Texas Instruments Synchronous Serial + Frame Format protocol (TI protocol). Defined a new SPIDEV_MODETI + and add support for it in stm32_spi.c. From Michael Jung. + - STM32 UART: Serial add HW HS on UART 4 & 5. From David Sidrane. + - STM32 PWM: Configure multi-channel duty only if channel specified. + This allows you to update duty cycle for a single channel. From + Mateusz Szafoni. + - STM32F7 Ethernet: Add a timeout on MAC reset From David Sidrane. + - STM32F7 FLASH: Exposes stm32_flash_xxx functions. From Anthony + Merlino. + - STM32F7 PWM: Configure multi-channel duty only if channel specified. + This allows you to update duty cycle for a single channel. From + Mateusz Szafoni. + - STM32F7 UART: Serial add HW HS on UART 4 & 5. From David Sidrane. + - STM32H7 ADC: Fix internal channel numbers. From Markus Bernet. + - STM32H7 BBSRAM: Add BBSRAM support. From David Sidrane. + - STM32H7 DTCM: Port DTCM from F7 From David Sidrane. + - STM32H7 I2C: Select ARCH_HAVE_I2CRESET in configuration. From + David Sidrane. + - STM32H7 PWM: Configure multi-channel duty only if channel + specified. This allows you to update duty cycle for a single + channel. From Mateusz Szafoni. + - STM32H7 RCC: Fix RCC register definitions and typos for ADC/UART. + From Markus Bernet. + - STM32H7 RTC: Ported over F7 RTC. From David Sidrane. + - STM32H7 SPI: Allow more clock sources. From David Sidrane. + - STM32H7 UART: Serial add HW HS on UART 4 & 5. From David Sidrane. + - STM32H7 UART: Fix typo in UART8 configuration. From Markus Bernet. + - STM32H7 UID: Ported UID from F7 From David Sidrane. + - STM32L4 PWM: Configure multi-channel duty only if channel specified. + This allows you to update duty cycle for a single channel. From + Mateusz Szafoni. + - STM32L4 UART: Serial add HW HS on UART 4 & 5. From David Sidrane. + + * STMicro STM32 Boards: + + - B-L475E-IOT01A: Add mx25rxx memory chip and smartfs support in NSH + configuration. From Simon Piriou. + - LX_CPU: Add support for the PIKRON LX_CPU board. From Pavel Pisa. + - Nucleo-F303RE: Add basic NSH configuration. From Mateusz Szafoni. + - Nucleo-F303RE: Enable console on UART2 and set entry point to + nsh_main() in the PWM configuration. From Mateusz Szafoni. + - Nucleo-H743ZI: Add RTC support. From David Sidrane. + - Nucleo-L432KC: Added GPIO drivers for use with /apps/examples/gpio. + From Daniel P. Carvalho. + - Nucleo-L432KC: Added Zero Cross sensor to nucleo-l432kc. From + Daniel P. Carvalho. + + * TI Tiva: + + - Tiva: Add support for Tiva TM4C123AH6PM. From Nathan Hartman. + - Tiva Configuration: Modify preprocessor logic to support + configurations with no UART. Now similar to logic for other + architectures. From Nathan Hartman. + - Tiva Interrupts: Add handling for IRQs 128 thru 159. From Nathan + Hartman. + + * TI Tiva Drivers: + + - TM4C QEncoder: Reinstate TM4C qencoder driver and expand its + ioctls. Add TIVA_HAVE_QEI0, TIVA_HAVE_QEI1 as applicable to each + ARCH_CHIP_TM4C12*. Rewrite tiva_qe_setup(). Replace tiva_qe_ppr() + with tiva_qe_resetatppr(). Add tiva_qe_resetatmaxpos() and + tiva_qe_resetatindex(). Add missing definitions: + SIGMODE_QUADRATURE, SIGMODE_CLK_AND_DIR, SWAP_NO_SWAP, SWAP_PHA_PHB. + Rename TIVA QEI ioctl QEIOC_PPR to QEIOC_RESETATPPR; add TIVA QEI + ioctl identifiers QEIOC_RESETATMAXPOS, QEIOC_RESETATINDEX. From + Nathan Hartman. + + * TI Tiva Boards: + + - TM4C1294-Launchpad: Enables /dev/userleds in board bring-up for + tm4c1294-launchpad by calling userled_lower_initialize() in + tm4c_bringup(). From Nathan Hartman. + + * TI Tiva Drivers: + + - Tiva GPTM timers: Implement 16-bit PWM mode. Add + tiva_pwm16_sel_event() to choose GPTMCTL.TnEVENT value. Implement + tiva_pwm_mode16(). This also involved numerous corrections to the + 16-bit timer logic. Add tiva_timer16pwm_setperiodduty() to set + initial period, duty cycle, and enable interrupts if requested in + GPTM peripheral. Interrupts are not enabled in NVIC until + tiva_timer16_start() is called. Add tiva_timer16pwm_setduty() to + update duty cycle at any time. Add new TIMER_FLAG_* configuration + flags to enable configuring the 16-bit PWM feature. Extend type of + "flags" in tiva_timer32config_s and tiva_timer16config_s from 8- to + 32-bits to allow more flags. From Nathan Hartman. + + * Build System: + + - Export Build: Export all variables/files to support architecture + independent build against NSH. From Pavel Pisa. + - Application Export: This change too build tools allows to export + built-in applications registry into temporarily created directory + where export archive content is prepared. If the Makefile in apps/ + directory does not define export: target then error is print but + export continues without interruption. It would be more logical to + print warning but there is no way instruct apps make to not print + error. From Pavel Pisa. + - boards/Board.mk: Add support to pass dependency paths. From + Gregory Nutt. + + * Libraries/Header Files: + + - libs/libc/libc.csv: Add some missing C library functions. From + Pavel Pisa. + - libs/libc/libc.csv: Add ioctl() to fs_ioctl() wrapper for varidic + case. From Pavel Pisa. + - libs/libc/builtin/: Moves shared built-in information out of + binfmt/libbuiltin and into libs/libc/builtin where it can be shared + with applications. This should permit built-in application in the + PROTECTED build where binfmt/libbuiltin was not available in user + space. From Gregory Nutt. + - libs/libc/dirent/: Added alphasort() implemenation, scandir() + implementation and DT_* definitions to include/dirent.h. Apparently + those definitions are not required by POSIX, but are part of + 4.3BSD and available in glibc as well. From Michael Jung. + - libs/libc/grp/: Added stubbed implementations of getgrgid, + getgrgid_r, getgrnam, getgrnam_r, and initgroups. These functions + are essentially stubs pretending that NuttX supported groups and + that the only configured group in the system was 'root' with gid 0. + The intend is not to provide meaningful new features, but to ease + porting of foreign source code to NuttX. From Michael Jung. + - libs/libc/machine/arm/armv7-m/: Add Cortex M4F machine optimized + fabsf and sqrtf. From David S. Alessio. + - libs/libc/pwd/: Added stubbed implementations. Added stubbed + implementations of getpwuid, getpwuid_r, getpwnam, and getpwnam_r. + These functions are essentially stubs pretending that NuttX + supported users and that the only configured user in the system + was 'root' with uid 0. The intend is not to provide meaningful + new features, but to ease porting of foreign source code to NuttX. + From Michael Jung. + - libs/libc/pwd and libs/libc/grp/: Modify to get user/group data + from /etc/passwd and /etc/group if so configured. From Gregory + Nutt. + - libs/libc/stdio/: Add support for the size_t integer qualifier 'z' + to the printf family. This is kind of tricky due the variety of + sizeof(size_t) on different platforms. From David Sidrane. + - libs/libc/unistd.h: Added stubbed implementations of setuid() and + setgid(). These functions are essentially stubs pretending that + NuttX supported users and groups and that the only configured user + and group in the system were both 'root' with a uid and a gid of 0, + respectively. The intent is not to provide meaningful new features, + but to ease porting of foreign source code to NuttX. From Michael + Jung. + - libs/libc/unistd/: Add getuid() and getgid() stubs to match + MichaelJung's setuid() and setgid(). From Gregory Nutt. + - libc/libc/unistd/: Add stubs for geteuid(), getegid(), seteuid(), + setegid(), setreuid(), and setregid(). NuttX does not currently + support effective user/group IDs, but these stubs will support + linkage of applications that expect these POSIX standard interfaces. + From Gregory Nutt. + + * Symbol Tables: + + - NuttX provides lists of available syscalls and library functions and + tools to process them. The lists can be used to build symbol table + which allows runtime program loading which can reuse functions + already compiled into NuttX system image. List processing, + compilation and linking to the final system image has been possible + only under manual control until now. Provided changes add option + (CONFIG_EXECFUNCS_GENERATE_SYSTEM_SYMTAB) to build complete list of + available functions and syscalls automatically. The symbolic table + is generated in form libsymtab.a which can be reused by application + or directly pull in when "g_symtab" and "g_nsymbols" variables are + requested by EXECFUNCS configuration. I have tried to follow + mechanisms for library compilation in different kernel protection + modes but tested only flat no-MMU build. The basic assumption is + that this library and libraries providing syscall stubs and C- + library functions are available in user-space context and initial + application (usually NSH) registers the symbol table through IOCTL. + The table can be reused then by another applications in their + address space as kernel allows. Simple for flat or protected mode, + I am not sure if really support in MMU mode. It is highly probable + that I have made some mistake, overlooked something, but the + functionality is optional (should not cause troubles in any mode if + disabled) and main purpose is to lower memory overhead when more + applications are loaded on memory constrained system which usually + use direct kernel calling without protection or address space + separation. If the table should be provided by kernel to + applications then makefiles has to be adjusted. From Pavel Pisa. + + * Tools: + + - tools/: Change preferred argument of configurations tools to use + ':' as the delimiter between and . This + is to emphasize that this is not a path; it is configuration + specification. The legacy '/' delimiter is still supported but + not recommend and not advertised. Updated configurations + instructions in README.txt files to show ':' delimiter vs '/' + delimiter. Update all configuration-related tools to accept ':' + separator between board and configuration name. From Gregory Nutt. + + * apps/ General: + + - Makefile: Added support for application-specific export target. + Used by nuttx/tools/mkexport.sh. From Pavel Pisa. + - apps/builtins: Move apps/builtins/builtin_forindex.c to + nuttx/libs/libc/builtin since it is required by kernel logic as + well. Other changes account for movement of builtin.h from + nuttx/include/nuttx/binfmt/built.h to nuttx/include/lib/builtin.h. + From Gregory Nutt. + + * Examples/Tests: apps/examples: + + - apps/examples/uid: Demo used to verify PASSWD and GROUP interfaces. + From Gregory Nutt. + - apps/examples/webserver/: Initialilze network and run forever only + if not built-in app. Infer from CONFIG_NSH_BUILTIN_APPS if we are a + NSH built-in app or not. If built-in app (CONFIG_NSH_BUILTIN_APPS + defined) then we assume network is initialized prior to webserver + starting and we exit on webserver failure. If running standalone + (CONFIG_NSH_BUILTIN_APPS is undefined) then behavior is unchanged: + webserver initializes network and runs forever. From Nathan Hartman. + + * Network Utilities: apps/fsutils: + + - apps/fsutils/passwd: Handle the improved the format of the + /etc/passwd file. It is now a little more similar to other systems. + From Gregory Nutt. + + * Network Utilities: apps/netutils: + + - apps/netutils/dhcpc: Add host name support to DHCP client. From + Masayuki Ishikawa. + + * Network Utilities: apps/wireless + + - apps/wireless/ieee802154/i8sak: I8sak improvements: (1) Adds + support for getting/setting maxretries and promsicuous mode from + i8sak, (2) Fixes a build warning and handles a few cases where a + fault can occur due to not catching missing arguments. From + Anthony Merlino. + - apps/wireless/ieee802154/i8sak: Allow setting the endpoint PAN ID. + From Anthony Merlino. + - apps/wireless/ieee802154/i8sak: Adds support for energy scan result + printout. From Anthony Merlino. + - apps/wireless/ieee802154/i8shark: Adds support for intentionally + suppressing passing the FCS so that Wireshark doesn't try to + validate it. From Anthony Merlino. + - apps/wireless/ieee802154/libmac: Adds support for getting/setting + the FCS length From Anthony Merlino. + - apps/wireless/gs2200m: Add UDP support to the GS2200M driver. From + Masayuki Ishikawa. + - apps/wireless/gs2200m: Add DHCP client handling in ioctl_request(). + From Masayuki Ishikawa. + - apps/wireless/gs2200m: ioctl_request() supports SIOCGIFHWADDR. + From Masayuki Ishikawa. + +Bugfixes: +--------- +Only the most critical bugfixes are listed here (see the ChangeLog for a +more complete list of bugfixes and for additional, more detailed bugfix +information): + + * Core OS: + + - Priority Inheritance: Fix a race in telnet with PRIORITY_INHERITANCE + and SCHED_HPWORK. Sometimes causes an assertion to fire incorrectly. + From David S. Alessio. + - Task Groups: Correct some naming. The NuttX task groups have been + using the acronym 'gid' and also the type 'gid_t' for the the task + group ID. That is incorrect. Than naming is reserved for use with + group permissions. So these were all named to grpid and grpid_t so + that it is clearer that these refer to NuttX task group IDs, and not + to group permissions. From Gregory Nutt. + - Task Termination: nxtask_signalparent() in task_exithook.c may + invalidate the group's parent task ID (tg_ppid) too soon. The + tg_ppid field is use only to remember the parent tasks ID so that it + can send the SIGCHLD signal to it. So it must stay valid until + SIGCHLD has been sent. In nxtask_signalparent(), it calls + nxtask_sigchild() to send SIGCHLD to the parent, then invalidates + tg_ppid. That would be okay, except that the SIGCHLD is only sent + when the last member of the group terminates. That is incorrect; + tg_ppid can be invalidated too soon and, as a consequence, SIGCHLD + would never be sent. Noted by Jeongchan Kim in the Google group: + https://groups.google.com/forum/#!topic/nuttx/SXd8fVwVKBk From + Gregory Nutt. + - sched_get_rr_interval(): sched_get_rr_interval() should return + {0,0} if round-robin scheduling is not selected for the task. From + Gregory Nutt. + - SMP Type Collision: The non-standard, non-portable type cpu_set_t + was created specifically to support the NuttX internal, SMP + implementation. Any resemblance to any other cpu_set_t would be + purely coincidental. However it appears that that coincidence has + occurred. cpu_set_t has an equivalent, non-standard, non-portable + type in the GNU C library. Compilation of libgnat expects this + non-standard type to be defined. Who am I to stand in the way of + progress? This commit removes the conditioning on CONFIG_SMP so + that cpu_set_t is typed (as a uint8_t) even if CONFIG_SMP is not + defined. Reference: Bitbucket issue 164. From Gregory Nutt. + - Binary Loader: Change some debug macros from berr() to binfo() + when dumping module data. The report of problems is important + during development but when it enables complete informative output + about load binaries then the important information can be easily + overlooked. The huge output sent to serial terminal slows loading + significantly as well. From Pavel Pisa. + - Power Management: Fix g_pmcount 16-bits overflow when + CONFIG_PM_XXENTER_COUNT set big value. From ligd. + - Timekeeping: Fix cases in time conversion that must be >= + NSEC_PER_SEC, not > NSEC_PER_SEC. From Gregory Nutt. + + * File System/Block and MTD Drivers: + + - opendir(): opendir() set errno to a negative value in one error + case. From Michael Jung. + - SmartFS: Update smartfs smart_scan() function. From Simon Piriou. + - ProcFS: Add missing LF to cpuload procfs output From David Alessio. + - MMC/SD: Copy/paste error fix in the SDIO-based block driver for + MMC. From Ivan Ucherdzhiev. + - MMC/SD: Correct a misplaced #endif in the SDIO-based driver. From + Gregory Nutt. + + * Networking/Network Drivers: + + - Ethernet Configuration: Ethernet packet buffer size cannot be + permitted to go below 1294 if IPv6 is selected. From Gregory Nutt. + - TCP RST: Fix outgoing RST packet with wrong ack number. From + biantao. + - TCP Close: Fix TCP close flow; free the connection after all TCP + close process finished. From zhangyuan7. + - UDP Broadcast: Remove net stack dependency from CONFIG_NET_BROADCAST. + This change allows us to use CONFIG_NET_BROADCAST without network + stack (i.e. usrsock application can use broadcast) From Masayuki + Ishikawa. + - UDP: Fixes a UDP send copy-paste error in the new SO_LINGER code: + CONFIG_TCP_NOTIFIER to CONFIG_UDP_NOTIFIER. From Juha Niskanen. + - TCP and UDP: Fix errors in the new implementation of SO_LINGER. + The tcp_drain() and udp_drain() functions were casting the working + argument to the wrong type, resulting in hangs and abnormal + behavior. There is a complexity in the TCP drain logic when the + remote peer closes the socket before all Tx data has been flushed. + Sometimes we are not notified of this case and wait the entire + timeout unnecessarily. There is a workaround in place in + tcp_txdrain(), but this really should be revisited. From Gregory + Nutt. + - 6LoWPAN: Removes unnecessary conversions that were happening due to + a misunderstanding of byte ordering with EUI-64. From Anthony + Merlino. + - RNDIS: Fix issue with DEBUGASSERT when using composite device and + endpoint numbers not being the default. From Anthony Merlino. + + * Wireless/Wireless Drivers: + + - wireless network devices: Attach radio to d_buf before registering + device to handle forwarding case. When CONFIG_NET_IPFORWARD is + enabled, and CONFIG_NET_6LOWPAN is being used, a packet that + attempts to get forwarded on the 6LoWPAN interface will require + that the radio's buffer be attached to d_buf. Otherwise an assertion + will fire. The underlying "radio" in this case is the + mac802154_netdev. This behavior has probably not been observed + because the buffer is normally attached in the periodic txpoll + worker. However, in my case, the 6LoWPAN interface was not UP yet, + and therefore the worker hadn't run yet. From Anthony Merlino. + - IEEE 802.15.4 MAC: Fixes issues with extended address. 1) Extended + address should be read-only. 2) Extended address should be placed + in frame in "reverse-canonical" order. The extended address is a + read-only attribute and thus an attempt to write the extended + address should be denied. Instead, the extended address should + really be either set by the PHY/radio itself, or provided at board + bring-up time to the radio layer. The MAC layer now pulls in the + extended address from the radio any time the MAC is reset. The + extended address is also supposed to be sent in the frame in + reverse-canonical order. This is very confusing in the standard and + it wasn't until I realized it was backwards in Wireshark that I + researched this further. Searching online I find documents from the + committee for suggestions/feedback on the future standard. It isn't + in the 2015 standard but a newer version of the standard will + presumably clarify this. It says that the extended address should be + written in reverse-canonical form, meaning the OUI comes last, not + first inside the frame. From Anthony Merlino. + - IEEE 802.15.4 MAC: Frame Version should have been 1, but was being + set to 3 when payload exceeds version 0 capabilities. Adds warning + to build to indicate what is noted in the menu for + CONFIG_MAC802154_NTXDESC From Anthony Merlino. + - IEEE 802.15.4 MAC: Fixes issue where the txdesc's ackreq flag was + not being set, despite the frame containing a Frame Control field + with ACKREQ bit set. From Anthony Merlino. + - Xbee: Fix logic to prevent deadlock scenario when there are no + available IOBs From Anthony Merlino (2018-12-21). + - Xbee: Change assumption about destination address mode for incoming + frames. If a short address has been assigned to our radio, then + assume we were addressed using that. Otherwise we were addressed + using our extended address. From Anthony Merlino. + - Xbee: Initialize the short address to the unspecified address and + query for the extended address on initialization. From Anthony + Merlino. + - Xbee: Adds CONFIG_XBEE_LOCKUP_WORKAROUND option and corresponding + logic to workaround an issue where the XBee locks up and stops + responding. This typically happens when there is a lot of data + being received over the link. When the XBee stops responding, many + times, querying the XBee kicks it out of this state. However, + occasionally the XBee is completely locked up and the XBee has to + be reset. This change handles these conditions by periodically + (if not naturally occurring) querying the XBee. If during any + query, the XBee does not respond within a certain number of + attempts, the XBee is reset. From Anthony Merlino. + - Xbee: Cancel query timeout upon receiving the expected response. + Add protection for race condition that can cause association + timeout to continue firing repeatedly From Anthony Merlino. + - Xbee: Detect lockup and reset XBee in xbee_req_data From Anthony + Merlino. + - Xbee: Fixes one instance of the use of IOBUSER_WIRELESS_MAC802154 + which isn't available without the software MAC layer. Instead we + use IOBUSER_WIRELESS_RAD802154 throughout the whole driver since it + is always available when IEEE 802.15.4 support is enable. From + Anthony Merlino. + + * Common Drivers: + + - pipes: Use inode reference counter instead of device reference + counter to handle dup(). I found that if I dup() a pipe, the + reference counter d_refs is not increased. If I close any of the + fd, backed by the same pipe, the pipe will be freed. This causes + any further usage on the fd referencing a non existent pipe. This + change uses the inode reference counter, which is properly + maintained during dup(). From Yang ChungFan. + - SPI Bitbang: Fix build error when the SPI bitbang variable width + support is enabled. From Augusto Fraga Giachero. + - GPIO Lower Half: Remove limitation when pintype > + GPIO_INTERRUPT_PIN. From ligd. + + * ARMv4/ARMv5 + + - Classic ARM7/ARM9: When performing stability test, the application + would cause kernel crash. When I trace the stack, I find that + register R1 has been changed, and its value is the same as register + CPSR. In up_fullcontextrestore.S, the restoration of R0 and R1 is + not atomic: 'msr cpsr r1 will enable interrupts and the recovery of + r0 and r1 may be interrupted and the value or R1 may be changed. + Fix is to use a single ldmia to restore R0, R1, and return via R15. + From Loyen Wang. + + * ARMv7-A + + - ARMv7-A: Fix typo and missing quotation for ARMv7-A. From Oki + Minabe. + - ARMv7-A: Fix double increment in armv7-a's + arm_addrenv_destroy_region(). From Oki Minabe. + - ARMv7-A: Fix L2 page table mask for ARMv7-A page allocator. From + Oki Minabe. + + * ARMv7-M + + - Interrupts. Removes the architecture-common + CONFIG_ARCH_INT_DISABLEALL configuration option (but which was + supported only by ARMv7-M). In the normal course of things, + interrupts must occasionally be disabled using the up_irq_save() + inline function to prevent contention in use of resources that may + be shared between interrupt level and non-interrupt level logic. + Now the question arises, if we are using BASEPRI to disable + interrupts and have high priority interrupts enabled + (CONFIG_ARCH_HIPRI_INTERRUPT=y), do we disable all interrupts except + SVCall (we cannot disable SVCall interrupts). Or do we only disable + the "normal" interrupts? If we are using the BASEPRI register to + disable interrupts, then the answer is that we must disable ONLY the + "normal interrupts". That is because we cannot disable SVCALL + interrupts and we cannot permit SVCAll interrupts running at a + higher priority than the high priority interrupts (otherwise, they + will introduce jitter in the high priority interrupt response time.) + Hence, if you need to disable the high priority interrupt, you will + have to disable the interrupt either at the peripheral that + generates the interrupt or at the NVIC. Disabling global interrupts + via the BASEPRI register cannot effect high priority interrupts. + From Gregory Nutt. + - ARMv7-M Priorities: In the 'normal' case, the priority of the + SVCALL interrupt was the same as the priority of the high priority + interrupt. This means that SVCALL interrupt processing can defer + the high priority interrupt and result in the jitter in that + interrupt response. Fix is to raise the priority of the high + priority interrupt above the priority of the SVCALL interrupt. + Suggested by Nathan Hartman. From Gregory Nutt. + + * Microchip i.MXRT Drivers: + + - i.MXRT ENC: Fix some errors in register bit definitions. Noted by + Arie de Muijnck. From Gregory Nutt. + - i.MXRT LPI2C: Slave addresses are now correctly shifted when + sending START. TX/RX FIFOs now discarded on error to prevent FIFO + underflow errors. Fixes error checking to use priv structure and + removes checking of BBF flag as it is not an error. From Nicholas + Chin. + + * Microchip PIC32MZ Drivers: + + - PIC32MZ SPI: Fix SPI Mode selection. CKE is the inversion of the + CPHA. From Ouss4. + + * Microchip/Atmel SAMD2x/SAML2x Drivers: + + - SAMD2/L2 I2C: Correct time calculation. From Bernd Walter. + + * Microchip/Atmel SAM3/SAM4: + + - SAM3/4: Add missing DMA configuration Kconfig setting. From Bernd + Walter. + + * NXP LPC17xx/40xx Drivers: + + - LPC17xx/40xx ADC: Only use PCLKSEL0 for ADC on LPC176x family. + From jjlange. + - LPC17xx/40xx Ethernet: Set speed back to 10Mbps if 10Mmbps link + negotiated. From Augusto Fraga Giachero. + - LPC17xx/40xx I2C: Abort I2C transfers if a timeout has occurred. + If a timeout has occurred in the middle of a I2C transfer, the next + I2C interrupt should abort any transfers and send a stop condition + to the corresponding I2C bus. Failure to do so will result in + memory corruption / undefined behavior as priv->msgs points to a + region of memory it doesn't owns anymore after lpc17_40_i2c_start + returns. From Augusto Fraga Giachero. + - LPC17xx/40xx I2C: Calculate the appropriate timeout for I2C + transfers. Depending on the bus frequency and transfer size, I2C + transactions can take quite a bit, so a fixed timeout is not a + good solution. Calculating the timeout at run time poses some + overhead but still better than aborting long transactions. From + Augusto Fraga Giachero. + + * NXP/Freescale Kinetis Drivers: + + - Kinetis I2C: i2c transfer ensure correct result returned. + kinetis_i2c_transfer released the mutex then fetched the state, + this resulted in returning the correct results. From David + Sidrane. + + * NXP LPC17xx/40xx Drivers: + + - LPC17xx/40xx CAN: If BOARD_CCLKSEL_DIVIDER is not equal to 1 on + LPC178x or LPC40xx then base clock rate is calculated incorrectly + because CCLK frequency does not correspond to PLL0 clock which is + used for PCLK. This is partially workaround solution. It would + be probably better to define BOARD_PCLK_FREQUENCY even for LPC176x + targets and use that to replace divisor by base_clock in up_dev_s. + From Pavel Pisa. + + * NXP LPC17xx/40xx Boards: + + - LPC17xx/40xx Ethernet: Add missing LPC17_40_PHY_CEMENT_DISABLE + variable to the lpc17xx/40xx Kconfig file. For some reason this + setting was not referenced anywhere except in the Ethernet driver. + From Augusto Fraga Giachero. + - LPC17xx/40xx Ethernet: Fix the initialization for DP83848x PHYs. + The DP83848x requires the RMII mode to be manually enabled through + the MII_DP83848C_RBR register. Before querying the speed and mode + it should wait for the link to be established. From Augusto Fraga + Giachero. + + * NXP i.MXRT Drivers: + + - i.MXRT LPUART: Fix some errors in the LPUART register definition + files. Correct naming of a function: up_earlyserialinit() should + be imxrt_earlyserialinit(). Remove prototypes for non-existent + serial initialization functions. From Gregory Nutt. + - i.MXRT USDHC: uSDHC typo fixes and command transfer error handling + modified. From Ivan Ucherdzhiev. + + * SiLabs EFM32 Drivers: + + - EFM32 OTG host: Adam Porter's various fixex for STM32 FS/HS + probably should be applied to EFM32 host which which has very + similar IP. From Gregory Nutt. + + * STMicro STM32: + + - STM327F Configuration: Kconfig add depends on BBSRAM. From David + Sidrane. + - STM32F7 Interrupts: Fix overwritten IRQ enable. System boot order + calls clock_initialize() then up_initalize(). clock_initialize() + was setting up the alarm IRQ up_initalize is initializing the NVIC. + This most likely worked in the past due to a bug in the NVIC + initialization code that failed to clear the Interrupt enables. + - STM32H7: Rix BBSRAM name in memory map. From David Sidrane. + - STM32H7: Removed f7 in file path. From David Sidrane. + + * STMicro STM32 Drivers: + + - STM32H7 BBSRAM: Fix issues causing no writes and hardfaults. From + David Sidrane. + - STM32H7 BBSRAM: Convince compiler to perform 32 bit write. From + David Sidrane. + - STM32F7 OTGHS: Fixes bad preprocessor logic preventing USB OTG HS + to work when used without external ULPI. From Anthony Merlino. + - STM32 OTGH[FS|HS] Host STM32 host only initiates transfer if + buflenl > 0. From Adam Porter. + - STM32F7/H7/L4 OTG host: Adam Porter's fix for STM32 FS/HS probably + should be applied to STM32 F7, H7, and L4 OTG host which are very + similar. From Gregory Nutt. + - STM32/F7/H7/L4: This change was required to get my devices + (CDC-MBIM) to enumerate. Initially the system timed out retrieving + the USB configuration descriptor. Ctrl IN requests got nothing but + NAKs. I found that the initial SETUP packet and corresponding IN + transfer were fine; it was the Status OUT phase that was getting the + NAK. After receiving a NAK on the Status OUT, the code would loop + back and issue another ctrl IN, which will always fail because the + data was already transferred before. Thus the entire transfer would + 'timeout'. The fix I implemented moves the DATANAK timeout loop to + only apply to the Status OUT. Both the ctrl IN and the Status OUT + need their own retry loops. From Adam Porter. + - STM32F7 SDMMC: If there is only one SDMMC it is slot 0 From David + Sidrane. + - STM32F7 USART1: USART1_RXDMA is dependent on STM32F7_DMA2 not + STM32F7_DMA1 From Anthony Merlino. + - STM32H7 DBGMCU: Memory Map DBGMCU is @ 0x5c001000 From David + Sidrane. + - STM32F7 SDMMC: Fix warning when DMA is not enabled. From David + Sidrane. + - STM32H7 Ethernet: Fix some errors in Ethernet MAC configuration. + From Markus Bernet. + - STM32H7 Ethernet: Correct stm32h7 mac address filtering. Correct + the MAC address 0 register definition and remove the 'receive all' + flag. Now the Ethernet driver only receives packets addressed to + correct MAC. From Jukka Laitinen. + - STM32H7 Ethernet: Correct memory corruption error. The Ethernet + driver initialization incorrectly wrote to DMACRXCR instead of + DMACSR when trying to clear the stopped flags. This caused + invalid buffer length in the DMACRXCR, causing DMA to overflow the + RX buffers when large packets are sent to the device. From Jukka + Laitinen. + - STM32H7 PWR: Ensure data is flushed on backup domain access + changes. From David Sidrane. + - STM32H7 Serial: Serial fix undefined with TERMIOS From David + Sidrane. + - STM32H7 UARTs: Fix UART7/8 typos. Fix bug in ETH_MACQTXFCR + configuration. From Markus Bernet. + + * STMicro STM32 Boards: + + - Multiple STM32 Boards: If CONFIG_SCHED_CRITMONITOR is selected, + then make sure that ITM and DWT resources are enabled before + accessing ITM and DWT registers. By default, these registers are + disabled. Suggested by Juha Niskanen. From Gregory Nutt. + - Nucleo-H743ZI: Correct logic that determines if the RTC driver is + available. Find in build testing. From Gregory Nutt. + - Nucleo-G071RB: Fix linker script to avoid .ARM.exidx section + overlap with .data From Daniel Pereira Volpato. + - Modify all linker scripts (all boards, all architectures) to use + solution from Daniel P. Volpato. From Alan Carvalho de Assis. + - Nucleo-L432KC ADC: Change analog pins definitions and correct DMA + related issue. From Daniel P. Carvalho. + + * TI Tiva: + + - Tiva Configuration: Rename TM4C123GH6PMI identifiers to + TM4C123GH6PM. Rationale: In terms of firmware programming, there + is no functional difference between these parts: TM4C123GH6PMI7, + TM4C123GH6PMI7R, TM4C123GH6PMT7, and TM4C123GH6PMT7R. From a + programming standpoint, all of the above parts are TM4C123GH6PM, + which means it doesn't make sense to differentiate between PM and + PMI. (The PM means 64-LQFP. The I means temperature range -40C to + +85C. It could be T meaning -40C to +105C. The R means it ships in + Tape and Reel packaging as opposed to Tray.) From Nathan Hartman. + - Tiva Configuration: Rename TM4C1294NC identifiers to TM4C1294NCPDT. + Rationale: TM4C1294NC is ambiguous: TM4C1294NCPDT is a 128-TQFP, + TM4C1294NCZAD is a 212-NFBGA. The TM4C1294NC part currently + supported by NuttX is the TM4C1294NCPDT used on the TI EK-TM4C1294XL + "Connected LaunchPad" (see configs/tm4c1294-launchpad). To ensure + the correct part is fully specified, this commit updates all + TM4C1294NC identifiers to TM4C1294NCPDT. From Nathan Hartman. + - Tiva Configuration: Fix TM4C129XNCZAD part number in Kconfig and + identifiers. Rationale: Fully specify that this is the 212-pin BGA + package (ZAD ending) and for consistency with earlier changes to + other Tiva TM4C12x part numbers in Kconfig names and identifiers. + From Nathan Hartman. + + * TI Tiva Drivers: + + - Tiva TM4C 1-Wire: Fix wrong description on define TIVA_1WIRE_BASE: + Was "EEPROM and Key Locker" (same as the item above). Now "1-Wire + Master Module." Make DMACTL symbols visible for TM4C123: Remove + "#ifdef CONFIG_ARCH_CHIP_TM4C129" guard around UART DMA Control + (DMACTL) symbols. These bits are valid on TM4C123 devices, as well + as on TM4C129. Also, improve the comment on UART_DMACTL_DMAERR. + From Nathan Hartman. + - Tiva GPIO Interrupts: LM3S, LM4F, TM4C: Fix GPIO IRQ error, ports + R, S, T. Preprocessor logic for CONFIG_TIVA_GPIOx_IRQS was setting/ + clearing port Q defines when it should act on ports R, S, T. + gpioport2irq() was missing handling for port T. From Nathan + Hartman. + - Tiva Timers: Fix minor errors in tiva_timerlib.c. Fix incorrect + preprocessor conditionals related to Kconfig defines: + CONFIG_TIVA_TIMER32_EDGECOUNT -> CONFIG_TIVA_TIMER16_EDGECOUNT, + CONFIG_TIVA_TIMER32_TIMECAP -> CONFIG_TIVA_TIMER16_TIMECAP, + CONFIG_TIVA_TIMER32_PWM -> CONFIG_TIVA_TIMER16_PWM. From Nathan + Hartman. + - Tiva Timers: Fix errors in low-level timer support. + tiva_gptm_configure() and tiva_gptm_release() were calling + tiva_emac_periphrdy() instead of tiva_gptm_periphrdy(). Fix + error in "abcde" description of bit flag defines. From Nathan + Hartman. + - Tiva Timers: Fix one code error and some comment errors. + tiva_timer16_setinterval(): Was DEBUGASSERTing on mode != + TIMER16_MODE. Fixed to DEBUGASSERT on mode == TIMER16_MODE. + From Nathan Hartman. + + * ZiLOG Z80 Boards: + + - z80sim Serial: Fix uart_dev_t initializer: pollfds[] is a array of + pointers and, hence, the NULL initializer must be included in braces. + Noted by Paul Osmialowski in Issue #160. From Gregory Nutt. + - z80sim Interrupts: Missed a name change up_irqinitialize to + z80_irq_initialize. From Gregory Nutt. + + * C Library/Header Files: + + - include/netinet/in.h: Rename __pad member to sin_zero in struct + sockaddr_in. Libwebsockets initializes the 'sin_zero' member of + sockaddr_in objects to zeros. Apparently, judging from mailing list + entries, there are platforms on which not doing this causes + undefined behavior. On NuttX compiling respective code is broken, + as the corresponding member variable is called '__pad'. Neither in + the 'nuttx' nor in the 'apps' repository did I find any reference to + this identifier. Thus, I believe its a safe bet to just rename it. + UNIX Network Programming states in this regard: "The POSIX + specification requires only three members in the structure: + sin_family, sin_addr, and sin_port. It is acceptable for a POSIX- + compliant implementation to define additional structure members, and + this is normal for an Internet socket address structure. Almost all + implementations add the sin_zero member so that all socket address + structures are at least 16 bytes in size." From Michael Jung. + + - libs/libc/libc.csv: Correct dependency of setlocale on + CONFIG_LIBC_LOCALE. From Pavel Pisa. + - libs/libc/machine/arm/armv7-m: Fix build error for ELF. From + Masayuki Ishikawa. + - libs/libc/math.csv: Correct format of some function entries. From + Pavel Pisa. + + * Tools: + + - tools/: Change all occurrences of /bin/(ba)sh in shell scripts to + /usr/bin/env bash which appears more portable From Manuel Stühn. + + * NSH Library: apps/nshlib: + + - apps/nshlib/: As noted by David S. Alessio, 'cat' should not output + any additional newline at the end of the cat'ed file content. This + additional newline was added to assure that the NSH prompt was + presented on a new line. However, that is not the correct behavior + of 'cat' per the IEEE std: "The standard output shall contain the + sequence of bytes read from the input files. Nothing else shall be + written to the standard output." Reference: + https://pubs.opengroup.org/onlinepubs/009695399/utilities/cat.html. + This commit changes the function nsh_catfile() which underlies the + 'cat' command and well as other NSH commands. Although this is the + correct behavior for 'cat' it may not be the correct behavior for + other commands implemented via nsh_catfile(). That remains to be + determined. From Gregory Nutt. + + * System Utilities: apps/system: + + - apps/system/cle/: ASCII DEL should be treated by Delete-Left. From + Dave Marples. + - apps/system/i2ctool: (1) Friendlier I2C "knock-knock" uses only + read request. While many I2C slave devices have multiple indexed + registers, some have only one register and it's not indexed. For + example, the I2C bus switch TCA9548A has only a Control Register, + attempting to index to "Reg[0]" alters its contents to 0x00 + disabling all subordinate buses. This patch fixes that problem by + simply trying to read something/anything from the slave. This also + helps coax out slaves with register files that start from a higher + index, i.e. the AT24CS0x, FLASH chips with a UUID that appears as a + 2nd I2C slave at (address+8), report their serial number at + Reg[80]-Reg[8F] and will NAK a read of Reg[0]. (2) Modify get/set + to prevent write of reg index if not specifed From David Alessio. + + * Network Utilities: apps/netutils: + + - apps/netutils/dhcpd: Fixes bug where hwaddr was being used instead + of ipaddr in the ARP update. This bug seems to have been introduced + three years ago during a rewrite to remove a direct OS call to arp. + I'm not sure how others have not run into issues with this. The + behavior I was observing was that the DHCPD would go to offer an IP + address, but then send a ARP request for the IP instead because it + didn't know where to send the data. From Anthony Merlino. + - apps/netutils/netinit/: Remove warnings. Unhook PHY notification + signal handler when cleaning up, if an error occurs after the signal + handler is put into place. From Nathan Hartman. + + * Wireless Utilities: apps/wireless: + + - apps/wireless/ieee802154/i8sak: Fixes conversion from extended + address to IPv6 address. From Anthony Merlino.