| NuttX-8.1 |
| --------- |
| |
| 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/<arch> - 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/<arch>/<chip> - 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/<arch>/<chip>/<board> - Holds board-related information for a |
| specific board. This is analogous to the configs/<board> 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/<arch>/<chip>/<board>/<configs> - 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/<arch>/<chip>/common |
| and MCU common drivers can be found at board/<arch>/<chip>/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: |
| |
| - i.MXRT Clocking: Enable TRACE clocks if the divider has been |
| defined in the board's board.h file. From Dave Marples. |
| |
| * NXP i.MXRT Drivers: |
| |
| - i.MXRT QEncoder: Adds quadrature encoder driver for IMXRT. From |
| Nicholas Chin. |
| - 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 eDMA (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 through 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() implementation, 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 <board-name> and <config-name>. 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_initialize(). clock_initialize() |
| was setting up the alarm IRQ up_initialize 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 specified 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. |