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