| NuttX-7.23 |
| ---------- |
| |
| The 123rd release of NuttX, Version 7.23, was made on December 4, 2017, |
| and is available for download from the Bitbucket.org website. Note |
| that release consists of two tarballs: nuttx-7.23.tar.gz and |
| apps-7.23.tar.gz. These are available from: |
| |
| https://bitbucket.org/nuttx/nuttx/downloads |
| https://bitbucket.org/nuttx/apps/downloads |
| |
| Both may be needed (see the top-level nuttx/README.txt file for build |
| information). |
| |
| Additional new features and extended functionality: |
| |
| * Core OS: |
| |
| - sem_open() should return SEM_FAILED on any failures. This is change |
| in the POSIX specification since the original sem_open() was written |
| so many years ago. |
| - exec(): The non-standard interface exec() is now enshrined as a |
| official NuttX API. I really dislike doing this but I think that |
| this is probably the only want to load programs in the protected |
| mode. It is currently used by some example code under apps/ that |
| generate their own symbol tables for linking. Other file execution |
| APIs relay on a symbol table provided by the OS. In the protected |
| mode, the OS cannot provide any meaning symbol table for execution |
| of code in the user-space blob so that is they exec() is really |
| needed in that build case. And, finally, the interface is |
| completely useless and will not be supported in the KERNEL build |
| mode where the contrary is true: An application process cannot |
| provide any meaning symbolic information for use in linking a |
| different process. |
| - OS Internal Functions: Rename many OS internal functions so it is |
| clear that they are not part of the application interface. All |
| internal functions with the sem_* prefix became nxsem_*, sig* become |
| nxsig_*, mq_* become nxmq_*, etc. |
| - Cancellation Points: Add new cancellation point interface, |
| check_cancellation_point(). |
| - Signals: Add logic to wake up a thread that is waiting on a signal |
| if it is canceled. |
| - sigtimedwait(): Add logic to suppress the wait if there is a |
| pending cancellation. |
| - clock_nanosleep(): Implement clock_nanosleep(). nanosleep() is now |
| reduced to a libc wrapper around clock_nanosleep(). |
| - task_delete(): Do not permit user applications to delete kernel |
| threads. |
| - kthread_create(): Rename kernel_thread() to kthread_create() for |
| better naming consistency with task_create() and kthread_delete(). |
| - boardctl(): Remove the BOARDIOC_GRAPHICS_SETUP command. |
| - TCB: Move POSIX thread specific data from pthread TCB to common TCB |
| structure. This change allows using pthread_getspecific and |
| pthread_setspecific from main thread. Patch also enables using |
| pthread data with config option CONFIG_DISABLE_PTHREAD=y. From Jussi |
| Kivilinna. |
| - mm: Remove the CONFIG_GRAN_SINGLE configuration option. It adds no |
| technical benefit (other than some minor reduction in the number of |
| interface arguments) but adds a lot of code complexity. Better |
| without it. |
| - mm: Add a function to get information about the state of the |
| granule allocator. This is the moral equivalent of mallinfo(). |
| |
| * File Systems/Block and MTD Drivers |
| |
| - MT25Q Serial FLASH: Add support for Micron MT25Q series MT25Q128. |
| From Sebastien Lorquet. |
| - MX35LFxGE4AB: Add an MTD driver for Macronix MX35LFxGE4AB serial |
| NAND flash. From Ekaterina Kovylova. |
| - FileMTD: Add block device MTD interface. Block MTD interface |
| allows using block device directly as MTD instead of having to use |
| file-system in between. NOTE that this provides the opposite |
| capability of FTL which will let you use an MTD interface directly |
| as a block device. From Jussi Kivilinna. |
| - BCH: The character driver to block device access now supports an |
| IOCTL to get the geometry of the underlying block device. |
| - mkfatfs: Remove mkfatfs from the OS. This is a user-space |
| application and belongs in apps, not in the OS. |
| - procfs: Implements procfs /proc/fs/blocks and /proc/fs/usage files, |
| replacing the NSH df command. Also implements procfs /proc/fs/mount |
| file, replacing the NSH mount command when there are no arguments. |
| - procfs: Add /proc/meminfo. This is an alternative way to get the |
| information that was previoulsy available in apps/system/free. |
| apps/system/free was removed because it made illegal calls into the |
| OS violating the portable interface. This new procfs entry provides |
| the same information with no such violation. it also provides |
| information about the kernel heap (formerly /proc/kmm), about the |
| use of program memory(formerly /proc/progmem). And also information |
| for the page table usage in the KERNEL build. |
| - UserFS: Adds the UserFS client and of the UserFS feature in |
| general. Initially used Unix domain local sockets instead of |
| message queues. Easier to transfer big data in local sockets than |
| message queues. However, that lead to certain inescapable deadlock |
| conditions So the IPC was converted to UDP LocalHost loopback |
| sockets. The problem with the local sockets is that they do require |
| operations on the top level pseudo-file system inode tree. That |
| tree must be locked during certain traversals such as enumerate |
| mountpoints or enumerating directory entries. This conversion is |
| unfortunate in the sense that Unix local domain sockets are |
| relatively lightweight. LocalHost UDP sockets are much heavier |
| weight since they rely on the full UDP stack. |
| |
| * Graphics/Display Drivers: |
| |
| - Framebuffer character driver: Add framebuffer character device driver. |
| - LCD Framebuffer: Add support for a generic front-end that will |
| convert any LCD driver into a framebuffer driver. |
| - Framebuffer character driver: Include support for LCD drivers that |
| use a simulated framebuffer and must receive explicit notification |
| when there is an update to a region in the framebuffer. |
| - LCD: Make LCD driver configuration independently selected from NX |
| graphics configuration. This makes things awkward and loses some |
| error checking but is a necessary step in order to make LCD drivers |
| usable when the NX graphics system is disabled. |
| |
| * Networking/Network Drivers: |
| |
| - Networking: Add implementation of logic for SIOCGIFCONF and |
| SIOCGLIFCOF IOCTL commands. |
| - Network IOCTLs: Add support for the SIOCGIFBRDADDR ioctl() command. |
| - Routing Tables: Permit IPv4 and IPv6 routing tables to be of |
| different sizes. |
| - Routing Tables: Adds support for read-only routing tables. Prior |
| to this change, routing tables were only support in RAM and had to |
| be initialized with explicit logic to add the necessary routes to |
| the routing table. With this change, routes may be defined in the |
| pre-initialized, read-only routing table provided by the |
| board-specific logic. |
| This would be particularly useful, for example, in the case where |
| there is only a single network adaptor and you want all output |
| packets to go to the single adaptor in all cases. So for that |
| behavior you could add a read-only routing table to the |
| board-specific long that contains a single entry, the default route: |
| 0.0.0.0/0. |
| - Routing Tables. Added support for routing tables in files in a file |
| system. This might be useful for customized, per-unit routing |
| tables. There are two issues with it however: |
| 1. Reading from file system on a per packet basis could be slow. I |
| think it probably should have a small, in-memory cache of most |
| frequently used routes for good problem. |
| 2. Currently the delroute logic is disabled due to a problem with |
| the design. NuttX does not currently support truncate(). |
| Therefore, it is not possible to delete entries from the routing |
| table file. In this current implementation, that leaves the last |
| entry intact at the end of the file. An alternative design |
| might include a tag on each record to indicate if the record is |
| valid or not. That would work but would add complexity to the |
| other routing table functions. |
| - Routing Tables: Add support for an in-memory routing table cache in |
| order to improve performance when the routing table is retained in a |
| file. The cache holds the most recently used routing table entries |
| and so can eliminate some file access. Flush the in-memory cache |
| when any entry is deleted from the routing table. When a router |
| matching an IP address is found, add the routing table entry to the |
| cache. |
| - Routing Tables: Add logic to mark a route as most-recently-used in |
| the route cache. |
| - ICMP: This change adds support for semi-standard IPPROTO_ICMP |
| AF_INET datagram sockets. This replaces the old ad hoc, nonstandard |
| way of implementing ping with a more standard, socket interface. |
| - ICMPV6: This commit adds support for semi-standard IPPROTO_ICMP6 |
| sockets. This is a replacement for the non-standard ICMPv6 ping |
| support that violated the portable POSIX OS interface. |
| - ICMPv6: Add option to manually specify router prefix in router |
| advertisement message. From Sakari Kapanen. |
| - Local Sockets: This commit modifies the Unix domain local socket |
| design. Local sockets are built on top of pipes. The Local socket |
| implementation maintained file descriptors to interrupt with the |
| pipes. File descriptors have the bad property that they are valid |
| only while running on the thread within the task that created the |
| local socket. |
| As a policy, all internal OS implementations must use "detached" |
| files which are valid in any context and do not depend on the |
| validity of a file descriptor at any point in time. This commit |
| converts the usage of file descriptors to detached files throughout |
| the local socket implementation. |
| |
| * Wireless Networking/Wireless Drivers: |
| |
| - IEEE-802154: Adds support for receiving MAC events via IOCTL through |
| socket interface. From Anthony Merlino. |
| - IEEE-802154: Simplifies notify() and rxframe() calls to a single |
| notify() call. dataind's and all other "notifs" are now "primitives" |
| which aligns with standard terminology From Anthony Merlino. |
| - MAC802154: Add support for getting promiscuous mode state From |
| Anthony Merlino. |
| - MAC802154 Character Driver: When in promiscuous mode, the char |
| driver sends the entire frame, including the MAC header. This |
| change adds an offset field indicating the header-payload boundary. |
| It is set to 0 when not in promiscuous mode as the header is not |
| passed to the application |
| - 6LoWPAN: Remove CONFIG_NET_6LOWPAN_FRAMELEN. In this case where |
| multiple radios are supported, this may not be a constant. 6LoWPAN |
| now always queries the driver to get the maximum frame length. |
| - 6LoWPAN: Support sending to a router that is on-link and may be |
| able to forward the packet for us if the destination is not |
| reachable directly. From Anthony Merlino. |
| - XBee: Adds XBee S2C (802.15.4 firmware) support. XBee driver |
| emulates mac802154 interface. From Anthony Merlino. |
| |
| * Other Common Device Drivers: |
| |
| - PowerLED: Add upper-half driver for high power LED driver (powerled) |
| From Mateusz Szafoni. |
| - RTC Driver: Add periodic alarms to upper and lower halves. From |
| Juha Niskanen. |
| - Pipes: Fix writing large buffers not triggering POLLIN for reader |
| poll. From Jussi Kivilinna. |
| - USB CDC/ACM Device: Add support for RX flow control to the CDC/ACM |
| driver. |
| - USB CDC/ACM Device: Add support for flow control TERMIOs in CDC/ACM |
| driver. |
| - USB RNDIS Device: Add RNDIS-over-USB driver. From Sakari Kapanen |
| with added Hi-Speed support from Masayuki Ishikawa. |
| - Loop Driver: Don't use file descriptors... Use the internal file |
| system interfaces so that the loop device can be shared across |
| threads. |
| - APA102 LED controller: Add driver for APA102 LED controller. These |
| LEDs are used on LED Strips and are controlled over SPI. |
| - INA219. Add INA219 Driver. The INA219 is a combined voltage and |
| current sensor that can measure up to 26 volts and a current that |
| depends on an external shunt resistor. Connection happens via |
| i2c/smbus and the chip features a power supply rail that is |
| independent from the measured voltage, so it can measure low |
| voltages. Right now it measures bus voltage and current, and does |
| not use the internal calibrated current reading, nor the available |
| power measurement. From Sebastien Lorquet. |
| - PCA9555: The IRQ subsystem now supports passing a void * parameter |
| to IRQ handlers. Use that method to support multiple PCA9555 |
| devices, by passing a pointer to the device to the board defined IRQ |
| handler. Now the CONFIG_ for multiple PCA devices just allocates |
| device structures dynamically instead of statically when not enabled. |
| The same interrupt handler is entered with the device structure |
| parameter in all situations, multiple or single PCA. One should |
| still be careful if multiple PCA devices share the same IRQ. From |
| Sebastien Lorquet. |
| - APDS-9960: Add driver for the APDS-9960 gesture sensor. From Alan |
| Carvalho de Assis. |
| - MAX7219: Add support to MAX7219 LED Matrix as LCD interface. From |
| Alan Carvalho de Assis. |
| - WM8774: Add WM8774 audio DAC support. From Masayuki Ishikawa. |
| - Nunchuck: Add Nintendo Wii Nunchuck driver. From Alan Carvalho de |
| Assis. |
| |
| * Simulation |
| |
| - Simulation: Add a configuration for non-graphical testing of the |
| framebuffer character driver using apps/example/fb. |
| - Simulation: Add a configuration for testing the UserFS using |
| apps/examples/userfs. |
| |
| * Broadcom BCM2708: |
| |
| - BCM2708: Add enough infrastructrue (more stubs) to get a clean |
| compilation of the Pi Zero configuration (with many undefined things |
| at link time). This includes several register definition header |
| files (some from Alan Carvalho de Assis), basic interrupt handling |
| logic, boot-up files, GPIO support, tickless timer, build and |
| configuration logic |
| |
| * Broadcom BCM2708 Boards: |
| |
| - Raspberry Pi Zero. Basic board support at configs/pizero. Untested |
| in this release and still some remaining issues. |
| |
| * Infineon XMC4xxx Boards: |
| |
| - XMC4500-Relax: Add config for UART3 on RXD P0.0 and TXD P0.1 pins. |
| From Alan Carvalho de Assis. |
| |
| * NXP Freescale LPC17xx Boards: |
| |
| - Open1788: Add initialization of Framebuffer driver. Add |
| configuration for testing the framebuffer driver. |
| |
| * NXP Freescale LPC43xx Drivers: |
| |
| - LPC43xx: Add LPC43xx CAN driver. From Alexander Vasiljev. |
| |
| * NXP Freescale LPC43xx Boards: |
| |
| - MCB1700: Add support for Keil MCB1700 board. From Alan Carvalho de |
| Assis. |
| - Open1788: Add support for the discrete joystick driver. |
| - Open1788: Add a configuration for testing pdcurses with discrete |
| joystick. |
| |
| * On Semiconductor LC823450 |
| |
| - LC823450: Add ADC driver and watchdog drivers. From Masayuki |
| Ishikawa. |
| - LC823450: Add IPL2 support. From Masayuki Ishikawa. |
| - LC823450: Add I2S support. From Masayuki Ishikawa. |
| - LC823450: Add auto LED for CPU activity. From Masayuki Ishikawa. |
| |
| * On Semiconductor LC823450 Boards |
| |
| - LC823450-XGEVK: Enable ADC and watchdog driver. From Masayuki |
| Ishikawa. |
| - LC823450-XGEVK: Add IPL2 support. From Masayuki Ishikawa. |
| - LC823450-XGEVK: Add WM8774 support. From Masayuki Ishikawa. |
| - LC823450-XGEVK: Add auto LED support. From Masayuki Ishikawa. |
| - LC823450-XGEVK: Enable CONFIG_SMP for audio. From Masayuki Ishikawa. |
| - LC823450-XGEVK: Add rndis configuration. From Masayuki Ishikawa. |
| |
| * STMicro STM32: |
| |
| - ARM Kconfig: Add support for classic ARM11 architecture selections. |
| - STM32 Tickless: Removes the restriction to 16-bit counts when a |
| 32-bit timer is used for tickless operation on the stm32. As it |
| was, the restriction is very limiting, especially if one wants high |
| granularity and large achievable intervals and has the hardware |
| (namely the 32bit timers) available. From Rajan Gill. |
| - STM32 L4 Kconfig: Add some L486 and L496 chips. From Juha Niskanen |
| - STM32 F7: Adds architecture support for the STM32 F72x and F73x |
| families. From Bob Feretich. |
| - STM32 F7: Allow changing voltage output scaling setting and |
| prevents enabling over-drive mode for low frequencies (STM32 F74xx, |
| 75xx, 76xx, 77xx). From Jussi Kivilinna. Changes replicated for |
| the 72xx and 73xx families. |
| |
| * STMicro STM32 Drivers: |
| |
| - STM32 ADC: Added support for ADC's IO_ENABLE_TEMPER_VOLT_CH ioctl |
| on STM32F10XX and STM32F20XX. From Dmitriy Linikov. |
| - STM32 Wakeup: Add logic for enabling wakeup pins. From Oleg Evseev. |
| - STM32 PWR: Adds stm32_pwr_getsbf and stm32_pwr_getwuf functions |
| that return the standby flag and the wakeup flag PWR power |
| control/status register. From Oleg Evseev. |
| - STM32 HRTIM: Sdd support for capture, chopper, deadtime and dump |
| registers. From Mateusz Szafoni. |
| - STM32 RTC: Canceling an alarm marks it as inactive. From Juha |
| Niskanen |
| - STM32 Serial: Add interface to get uart_dev_t by USART number, |
| stm32_serial_get_uart(). From Juha Niskanen. |
| - STM32 F33xx ADC: Initial ADC support for the STM32F33XX. From |
| Mateusz Szafoni. |
| - STM32 F33xx ADC: Add ADC DMA support to STM32F33 configuration. From |
| Mateusz Szafoni. |
| - STM32 L4 ADC: Port analog watchdog ioctl commands from the Motorola |
| MDK. From Juha Niskanen |
| - STM32 L4 ADC: Add option for routing ADC data to DFSDM, fix DFSDM |
| DMA. From Juha Niskanen |
| - STM32 L4 ADC: Add PM hooks from Motorola MDK |
| - STM32 L4 FLASH: Add function for modifying device option bytes, |
| From Juha Niskanen. |
| - STM32 L4 DFSDM: Add peripheral support for digital filters for |
| sigma-delta ADCs. Initial version. Timer trigger support is not |
| completed and there is some issue with DMA. From Juha Niskanen. |
| - STM32 L4 I2C: Port then STM32 F7 I2C driver to STM32 L4. STM32L4 I2C |
| driver is in work-in-progress state (plentiful of TODOs and |
| #warnings) and lags many features found in more up-to-date STM32 I2C |
| drivers. The peripheral on STM32F7 and STM32L4 are identical except |
| for L4's 'wakeup from stop mode' flag and STM32F7's I2C driver is in |
| more 'ready to use' state. The I2C clock configuration is kept the |
| same as before (I2CCLK = PCLK1 80 MHz) instead of switching to |
| STM32F7 arch default that is I2CCLK=HSI. Further work would be to |
| add configuration option for choosing I2C clock source instead of |
| current hard-coded default. From Jussi Kivilinna. |
| - STM32 L4 RTC: Add up_rtc_getdatetime_with_subseconds |
| - STM32 L4 RTC: Change maximum alarm time from 24h to one month. From |
| Juha Niskanen. |
| - STM32 L4 RTC: Add support for periodic interrupts with |
| (experimental) CONFIG_RTC_PERIODIC. From Juha Niskanen. |
| - STM32 L4 SDMMC: Add support for an SDMMC driver. From Miha Vrhovnik. |
| - STM32 L4 Serial: Suspend serial for Stop mode. From Juha Niskanen. |
| - STM32 L4 Serial/PM: STM32L4 serial PM interface improvements: |
| Check rx/tx buffers for pending data in pmprepare. Remove adhoc PM |
| interfaces and move serial suspend functionality behind CONFIG_PM. |
| From Jussi Kivilinna. |
| |
| * STMicro STM32 Boards: |
| |
| - STM32F103-Minimum: Add board support for APA102 driver. From Alan |
| Carvalho de Assis. |
| - STM32F103-Minimum: Add ADC support on stm32f103-minimum board. |
| From Alan Carvalho de Assis. |
| - STM32F103-Minimum: Add support for LM75 in the stm32f103-minimum |
| board. From Alan Carvalho de Assis. |
| - STM32F103-Minimum: Add an ADPS-9960 example configuration. From |
| Alan Carvalho de Assis. |
| - STM32F103-Minimum: Add board support for MAX7219 LED Matrix |
| controller. From Alan Carvalho de Assis. |
| - STM32F103-Minimum: Add USB MSC device initialization to |
| stm32f103-minimum. From Alan Carvalho de Assis. |
| - STM32F103-Minimum: Add framebuffer driver initialization for |
| stm32f103-minimum board. From Alan Carvalho de Assis. |
| - STM32F103-Minimum: Add Nunchuck board support for |
| stm32f103-minimum board. From Alan Carvalho de Assis. |
| - STM32F4 Discovery: Add support for JLX12864G display on STM32F4 |
| Discovery board. From Alan Carvalho de Assis. |
| - Viewtool-STM32F107: Add support to auto-mount the procfs file system. |
| - Photon: Support SPI1 and SPI3. From Anthony Merlino. |
| - STM32F334-DISCO: Add lower half driver for high power LED |
| (powerled). From Mateusz Szafoni. |
| - STM32F334-DISCO: Add flash mode support for powerled driver. From |
| Mateusz Szafoni. |
| - STM32F334-DISCO: Add powerled example configuration. From Mateusz |
| Szafoni. |
| - STM32F334-DISCO: Add lower-half driver for SMPS (buck-boost onboard |
| converter). From Mateusz Szafoni |
| - Nucleo-F334R8: Add logic for zero latency high priority interrupts |
| example. From Mateusz Szafoni. |
| - Nucleo-F334R8: Add highpri example configuration. From Mateusz |
| Szafoni. |
| - STM32 F4 Discovery: Added support for the LIS3DSH accelerometer on |
| the STM32F4 Discovery rev. C boards. From Florian Olbrich. |
| - STM32 F4 Discovery: ROMFS for STM32F4 Discovery board. From Tomasz |
| Wozniak. |
| - STM32 F4 Discovery: Add a USB MSC configuration. From Alan Carvalho |
| de Assis. |
| - STM32 F4 Discovery: RNDIS support on STM32F4Discovery + DM-STF4BB. |
| NOTE: MAC address for the host side starts 0xaa. This assignment |
| scheme should be fixed later. From Masayuki Ishikawa. |
| - STM32 F4 Discovery: Add STM32F4 Discovery board support for |
| Nunchuck joystick. From Alan Carvalho de Assis. |
| - STM3240G-EVAL: Add a configuration for testing the Framebuffer |
| character driver using the LCD framebuffer front. |
| - STM3240G-EVAL: Mount procfs if enabled. |
| - STM3240G-EVAL: Add support for pdcurses and the pdcurses demo |
| programs in the 'fb' configuration. |
| - Clicker2-STM32: Adds SD card, automount, and syslog file |
| support and fixes a few minor issues. From Anthony Merlino. |
| - Clicker2-STM32: Adds support for USB RNDIS device. From Anthony |
| Merlino. |
| - Olimex STM32-H407: Add serial support on the on-board UEXT |
| connector. Add USART6 for UEXT connector. Add nsh_uext |
| configuration and README update. From Jan PobÅ™Ãslo. |
| - Nucleo-F410RB: Add support for the nucleo-F410RB board. From |
| Gwenhael Goavec-Merou. |
| - STM32F429i-DISCO: Add framebuffer driver initialization. Add a |
| framebuffer (fb) configuration. |
| - STM32F429i-DISCO: Add logic to auto-mount procfs. Enable procfs in |
| all configurations that use NSH. |
| - STM32F429i-DISCO: Enable support for the STMPE811 touchscreen |
| controller. Enable touchscreen and also the touchscreen testa at |
| apps/examples/touchscreen in the fb configuration. |
| - STM32F429i-DISCO: Convert NxWM configuration to use LTDC |
| framebuffer driver instead of SPI serial. Also reduce number of |
| layers from 4 to 1 in fb configuration. Only one layer is used. |
| - STM32L476-MDK: Add support for the on-board LEDs. |
| - Nucleo-L496ZG: Add DFSDM initialization. From Juha Niskanen |
| - Nucleo-L496ZG: Add support for SDMMC driver. From Miha Vrhovnik. |
| - Nucleo-L496ZG: Enable I2C4 bus with i2ctool in NSH configuration. |
| From Jussi Kivilinna. |
| - Nucleo-L496ZG: Make HSE on Nucleo-L496ZG default to enable USB. |
| From Miha Vrhovnik. |
| - Nucleo-F746ZG: Use the serial console over /dev/ttyACM0 by default. |
| The Nucleo-F746ZG doesn't come with Arduio RS-232 shield, then it is |
| better to use the serial over the /dev/ttyACM0 that is created |
| automatically when the board is plugged in the computer. From Alan |
| Carvalho de Assis. |
| - Nucleo-144: Adds support for the Nucleo-144 boards with |
| STM32F722ZE. From Bob Feretich. |
| |
| * ZiLOG Z80 |
| |
| - z80/include: compiler.h, limits.h, types.h: Update SDCC/z80 files |
| to include support for long long, inline, __FILE__, and __func__. |
| |
| * C Library/Header Files: |
| |
| - include/: Add stdnoreturn.h. Holds definitions for the C11 |
| noreturn keyword. Applies to C too. |
| - include/netinet/tcp.h: Add trivial standard tcp.h header file. |
| - libc: Add support for readv() and writev(). |
| - libc: Adds tcflow(). |
| - libc: Add support for sigwait(). |
| - libnx: Changes to allow the font subsystem to be built without |
| enabling the entire graphics system (CONFIG_NX). Adds |
| CONFIG_NXFONTS and CONFIG_NXGLIB. Needed to duplicate some Kconfig |
| setting for NXFONTs if it can be configured and built independently |
| of NX. |
| |
| * Tools: |
| |
| - tools/configure.sh: Add special support so that you can start with a |
| windows native configuration and install on a different host (and |
| vice versa). |
| - tools/configure.c: Duplicate new functionaity added to configure.sh. |
| - tools/configure.sh: This commit adds a -m option for macOS. For |
| anyone not aware, Apple renamed OSX to macOS recently; thus the 'm' |
| instead of 'o'. This does not change the other uses of *_OSX to |
| macOS. From jeditekunum. |
| - tools/configure.c: Update functionality to match last change to |
| tools/configure.sh. |
| |
| * NSH: apps/nshlib: |
| |
| - apps/nshlib: mount command no long uses the non-standard OS |
| interface foreach_mountpoint(). Now simply cats /proc/fs/mount |
| when there are no arguments to the mount command. |
| - apps/nshlib: df command no long uses the non-standard OS interface |
| foreach_mountpoint(). Now simply cats /proc/fs/blocks or |
| /proc/fs/usage. |
| - apps/nshlib: The free commands no longer used mallinfo() to get |
| the state of the use heap. Two reasons: That is not useful |
| information in the kernel build. And (2) there are other memory |
| resources of interest in other configurations such as the Kernel |
| heap in PROTECTED and KERNEL builds, and the prog mem uses when |
| FLASH is used to hold modifiable data. The free command has been |
| extended to just dump the content of procfs entries and to include |
| all of these other memory resources of the procfs entries are |
| available. |
| |
| * Examples/Tests: apps/examples: |
| |
| - apps/examples/fb: Add a simple test for the framebuffer character |
| driver.. |
| - apps/examples/ostest: sem_open() now returns SEM_FAILED in the |
| event of a failure. |
| - examples/ostest: Extend cancellation test to make sure that |
| cancelable threads waiting on a message queue or on a signal can be |
| canceled. |
| - Added a simple reader example for the LIS3DSH acceleration sensor |
| on STM32F4Discovery. From Florian Olbrich. |
| - apps/examples/apa102: Add a Rainbow example for APA102 LED Strip. |
| From Alan Carvalho de Assis. |
| - apps/examples/flowc: Add a simple test of serial hardware flow |
| control. |
| - Add powerled driver example. From Mateusz Szafoni. |
| - apps/examples/ina219: A simple infinite loop that polls the INA219 |
| sensor and displays the measurements. From Sebastien Lorquet. |
| - apps/examples/alarm: Add options for reading alarm value and |
| canceling it. From Juha Niskanen. |
| - Add -n samples to lm75 app and replace Centigrade with Celsius. |
| From Alan Carvalho de Assis. |
| - apps/examples/adps9960: Add ADPS-9960 example. From Alan Carvalho |
| de Assis. |
| - apps/examples/obd2: Add OBD2 example application. From Alan |
| Carvalho de Assis. |
| - apps/examples/userfs: Add a test case for verifying UserFS. |
| - apps/examples/smps: Add SMPS driver example. From Mateusz Szafoni. |
| - apps/examples/pdcurses: Bring in pdcurses demos and make them |
| conform to the NuttX coding style. |
| - apps/examples/pdcurses: Add a very simple example that just shows |
| the entire character set (7-bit only). It adapts to the size of |
| the framebuffer and, hence, can be used with very tiny displays. |
| In fact it looks really dumb on big displays. |
| - apps/examples/nunchuck: Add Nunchuck example application. From |
| Alan Carvalho de Assis. |
| |
| * File System Utilities: apps/fsutils: |
| |
| - apps/fsutils/mkfatfs: Move mkfatfs from the OS to here. |
| |
| * Network Utilities: apps/netutils: |
| |
| - apps/netutils/netlib: Add netlib_ipv6adaptor() and |
| netlib_ipv4adaptor(). |
| - apps/netutils/netlib: Add helpers for reading the routing table: |
| netlib_read_ipv4route() and netlib_read_ipv6route(). |
| - apps/netutils/netlib: Add new utilities netlib_ipv[4|6]router() |
| that can be used to determine the IP address of a router that would |
| be used some some destination IP address that is not locally |
| accessible. |
| - apps/netutils/ftpc: Adds support for IPv6 and fixes various |
| transfer issues. From Anthony Merlino. |
| |
| * CANUtilities: apps/canutils: |
| |
| - apps/canutils/libobd2: Add libobd2 for NuttX. From Alan Carvalho |
| de Assis. |
| |
| * Graphics: apps/graphics: |
| |
| - graphics/traveler: Convert to use the framebuffer driver. |
| - apps/graphics/pdcurs34: This commit brings the public domain |
| pdcurses library into NuttX. NuttX graphics support based on the |
| framebuffer character drivers has been integrated. Input is |
| currently limited to a discrete joystick driver. |
| |
| * Wireless Utilities: apps/wireless: |
| |
| - apps/wireless/ieee802154/i8sak: Adds socket interface support. You |
| can now use both socket or char driver to control the MAC layer. |
| From Anthony Merlino. |
| - apps/wireless/ieee802154/i8sak: Adds sniffer port option and a few |
| other get/set parameters. From Anthony Merlino. |
| - apps/wireless/ieee802154/i8sak: Changes 'notif' to 'primitive' |
| corresponding to the changes in the Kernel. From Anthony Merlino. |
| - apps/wireless/ieee802154/i8sak: Channel setting is now saved |
| locally, so when performing a startpan or assoc, the channel |
| previously set is still used, even though the MAC layer gets reset. |
| From Anthony Merlino. |
| - apps/wireless/ieee802154/i8sak: Adds ability to get/set rxonidle |
| setting for MAC layer. From Anthony Merlino. |
| - apps/wireless/ieee802154/i8shark: Adds i8shark, a sniffer "adapter" |
| that captures all 802.15.4 traffic, packages it into a Wireshark ZEP |
| packet, and sends it to a host running Wireshark From Anthony |
| Merlino. |
| |
| * System Utilities (apps/system) |
| |
| - apps/system/ping and ping6: This commit removes the ping and ping6 |
| commands from NSH and replaces then with the apps/system/ping and |
| apps/system/ping6 built-in commands. The NSH ping[6] commands had |
| to be removed because they violated the portable POSIX OS interface. |
| The apps/system/png and ping6 command uses the sem-standard |
| IPPROTO_ICMP and IPPROTO_ICMP6 socket interfaces. |
| |
| * Platform-Specific Support (apps/platform) |
| |
| 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: |
| |
| - Task Environment Creation: Fix an error in the duplication of the |
| child tasks environment in the special case where the parent's |
| environment was created, but then all of the variables were unset. |
| In that case, there is still an allocation in place but the size of |
| the allocation is zero. This case was not being handled correctly |
| when a child task attempts to create its environment and inherit the |
| zero-size partent environment. Noted by Anthony Merlino. |
| - timer_create(): Fix watchdog resource leak if cannot allocate a new |
| timer. From Bruno Herrera. |
| - OS Internal Functions: Internal OS functions should not return error |
| information via the user errno variable: This includes functions |
| like file_seek(), file_read(), file_write(), etc. The complete list |
| is too long to duplicate here (please refer to the ChangeLog for |
| details). |
| - OS Internal Functions: Not only should internal OS functions not |
| modify the errno variable, they should never introduce cancellation |
| points: psock_connect(), psock_listen(), psock_getsockopt(), etc. |
| The list is too long to duplicate here (please refer to the |
| ChangeLog for details). |
| - OS Internal Functions: Create OS internal versions of many |
| applications functions that were used by the OS. The new versions |
| differ from the application interfaces in that (1) they do not |
| return error information via the errno variable, and (2) they never |
| create cancellation points. This includes new internal interfaces |
| like nxsem_init() that is like sem_init(), etc. There are too many |
| to list here (see the ChangeLog for details). |
| - Task Exit: task_exithook.c fails to link if signals are disabled |
| because was unconditionally trying to send the SIGCHLD signal to the |
| parent in certain configurations. Noted by Jeongchan Kim. |
| - memalign(): Fix heap corruption caused by using unaligned chunk |
| size. Unaligned nodes generated by memalign later cause heap |
| corruptions when nodes are shrink further (for example, 24 bytes -> |
| 8 bytes, when alignment is 16 bytes). From Jussi Kivilinna. |
| - SMP: In sched/sched/sched_cpuselect.c, in order to find the cpu |
| with the lowest priority thread, we have to remember the already |
| found lowest priority. Noted by Anonymous in Issue #75. |
| - spinlocks: Disable local interrupts in spin_setbit() and |
| spin_clrbit() in order to avoid a deadlock condition. From Masayuki |
| Ishikawa. |
| - atexit()/on_exit(): Clear atexit()/on_exit() function pointer |
| before calling it. On most archs, up_assert() calls exit() so |
| without this change, if atexit() function triggers an assertion we |
| are in endless loop. From Juha Niskanen. |
| |
| * File System/Block and MTD Drivers: |
| |
| - tmpfs: Fixed directory unlocking in tmpfs_opendir. From Dmitriy |
| Linikov. |
| - fcntl(): fcntl() did not return success fail for F_SETFL. Reported |
| by Jussi Kivilinna. |
| - tcdrain(): tcdrain() was recently added to the NuttX C library. |
| But there is a problem. The specification of tcdrain() requires |
| that it be a cancellation point. In order to do this, tcdrain was |
| moved from the C library into the OS and the addition cancellation |
| point hooks were added. In non-FLAT builds, access via system calls |
| is also now supported. |
| - FS FAT: Fix hard-fault when listing contents of FAT root. From |
| Jussi Kivilinna. |
| - procfs: Correct a problem that was causing an apparent directory to |
| be reported as a file instead of a directory by opendir. This |
| happened after adding these three new procfs entries: fs/block, |
| fs/mount, and fs/usage. Of course, there is no directory fs in this |
| case, only three files that have fs/ in their relative pathnames. |
| The logic was detecting that fs was the name of the enty to report, |
| but it was then declaring that fs was a file (because fs/block is of |
| type file). This was fixed by adding a check for matching lengths. |
| i.e., if strlen(fs) != strlen(fs/block), then report fs as a |
| directory instead of a file. |
| - procfs: Fix uptime being clse to maximum 32-bit value in certain |
| config. From Juha Niskanen. |
| |
| * Binary Loader: |
| |
| - binfmt/: Don't schedule starthook if there are no constructors. |
| |
| * Graphics/Display Drivers: |
| |
| - LCD: ILI9341 initialize method not permitted to set errno. |
| |
| * Networking/Network Drivers: |
| |
| - Networking: net/netdev/netdev_ifconfig.c: Was not returning all of |
| the address info. |
| - Networking: In some cases, packets are still not sent behind the |
| router. I found that NuttX sends the ARP requests not to the router |
| but to the target. Mistake in file net/route/netdev_router.c. From |
| Aleksandr Kazantsev. |
| - SIOCGIFCONF and SIOCGLIFCONF IOCTL commands should only report on |
| network adatpors in the UP state. |
| - recvfrom(): Fix double leave_cancellation_point on error path. |
| From Jussi Kivilinna. |
| - send(): Verify that sock descriptor is valid. Fixes assertion when |
| using send on closed socket. From Jussi Kivilinna. |
| - sendto(): Remove assert check for null psock and buf input |
| pointers. Removes check as 'psock == NULL' altogether because that |
| checked for later in psock_send and psock_sendto. Change null check |
| for 'buf' so that it is handled same as in recvfrom.c (return |
| -EINVAL instead of assert). From Jussi Kivilinna. |
| - sockgetname() files need to include udp/udp.h and tcp/tcp.h or |
| otherwise NET_UDP_HAVE_STACK and NET_TCP_HAVE_STACK are undefined |
| and the logic is never compiled. Noted by Anthony Merlino. |
| - dup()/dup2(): There was a reference counting problem in the TCP |
| logic of net_clone(). net_clone() which is the common logic |
| underlying dup() and dup2() for sockets. When net_clone() calls |
| net_start_monitor() and net_start_monitor() returns a failure |
| (because the underlying TCP connection) then net_clone() must back |
| out the reference count on the structure. Problem noted by Pascal |
| Speck and this implementation of the solution is based on his |
| suggestion. |
| - close(): There was a possible recursion that could eventually |
| overflow the stack. The error occurred when closing the socket with |
| inet_close() while a socket callback was still queued. When the |
| socket callback was executed by devif_conn_event(), this resulted in |
| a call to psock_send_eventhandler() with TCP_CLOSE flag set which |
| then called tcp_lost_connection(). tcp_shutdown_monitor() then |
| called tcp_callback() again, which again called |
| psock_send_eventhandler(), and so on.... Noted by Pascal Speck. |
| Solution is also similar to a solution proposed by Pascal Speck. |
| - inet: Add check for protocol before handing out TCP and UDP sockets. |
| - IP Forwarding: Fixes typo that caused build error when IP |
| forwarding was enabled with CONFIG_NET_ICMPv6_NEIGHBOR enabled as |
| well. From Anthony Merlino. |
| - IP Forwarding: Do not add link layer header size to d_len inside |
| devif_forward(). From Anthony Merlino. |
| - TCP Networking: When CONFIG_NET_TCP_WRITE_BUFF=y there is a |
| situation where a NULL pointer may be dereferenced. In this |
| configuration, the TCP connection's 'semi-permanent' callback, |
| s_sndcb was nullified in tcp_close_disconnect. However, other logic |
| in tcp_lost_connection() attempt to use that callback reference |
| after it was nullifed. Fixed in tcp_lost_connectino() by adding a |
| NULL pointer change before the access. This was reported by Dmitriy |
| Linikov in Bitbucket Issue 72. |
| - UDP Broadcast: Fix some issues with regard to UDP broadcast |
| handling. This is Bitbucket Issue #77. |
| - ICMP: Fix an error in the poll logic. It was assumed that the |
| input parameter pvconn was valid. It was not. Instead, the poll |
| logic must work like the sendto() and recvfrom() logic: It must |
| keep a copy of the conn structure in the private data. |
| - ICMPv6: Fixes several errors preventing icmpv6_radvertise.c from |
| being compiled. Fixes conversions to network byte order (namely |
| vlifetime, plifetime, mtu). IPv6 source address is set to |
| link-local IP address instead of the address in the netdev |
| structure. This is in compliance to RFC 4861. RA didn't work on |
| Linux before this change. Finally, router prefix and prefix length |
| are derived from the IPv6 address and netmask in the netdev |
| structure. This seems to make more sense than using a predefined, |
| separate prefix from the config. From Sakari Kapanen. |
| - ICMPV6: icmpv6_input() needs to set d_len to 0 after consuming echo |
| reply, otherwise, garbage will get sent out. From Anthony Merlino. |
| - ICMPV6: Fix an error in the poll logic. It was assumed that the |
| input parameter pvconn was valid. It was not. Instead, the poll |
| logic must work like the sendto() and recvfrom() logic: It must |
| keep a copy of the conn structure in the private data. |
| - IGMPv2 Send: Fix incoming IGMP checksum calculation. From Louis |
| Mayencourt. |
| - ARP: Fix IGMP Ethernet address computation. From Louis Mayencourt. |
| |
| * Wireless/Wireless Drivers: |
| |
| - CC1101: CC1101 driver not permitted to set errno. |
| - 6LoWPAN: Correct an error in uncompressing multicast address. |
| - 6LoWPAN: Correct a bug in handling uncompressed frames (IPv6 |
| dispatch). Adds a separate local variable, protosize, to keep track |
| of the size of thep protocol header. |
| - 6LoWPAN: Fix an endian-ness problem in 6LoWPAN address |
| decompression. From Anthony Merlino. |
| - 6LoWPAN: The logic that extracts interface identifier from the IP |
| address needs to be generalized to handle cases where the address is |
| not a link local address. From Anthony Merlino. |
| |
| * Common Drivers: |
| |
| - Serial: 16550 UART driver IOCTL method must not set errno; it must |
| return a negated errno value. |
| - LIS3DSH: Added the argument parameter (FAR void *arg) to the |
| interrupt handler provided by the LIS3DSH driver to fit the |
| definition for ISRs in xcpt_t. Changed the check for working queue |
| availability in lis3dsh interrupt handler to use work_available() |
| and not crash in case of an overrun. From Florian Olbrich. |
| - LIS2DH: Fixes for self-test. From Jussi Kivilinna. |
| - LIS2DH: Fix use of obsolete dbg macro. From Jussi Kivilinna. |
| - LIS331DL: LIS331DL driver not permitted to set errno. |
| - HTS221: Power-on sensor for loading calibration data. From Jussi |
| Kivilinna. |
| - MCP2515: Fix the MCP2515 Bit Rate Prescale calculation. Fix BRP |
| for SET_BITTIMING ioctl as well. From Alan Carvalho de Assis. |
| - STMPE811: Fix GPIO operation of STMPE811 driver. |
| 1. STMPE811_GPIO_DIR was defined for register name and later was |
| redefined to be the pin direction mask for `stmpe811_gpioconfig`. |
| I decided to change register name to be STMPE811_GPIO_DIR_REG, and |
| keep pin direction mask STMPE811_GPIO_DIR, so that any external |
| code that already use this driver will be unchanged. |
| 2. The STMPE811 register GPIO_DIR uses bit value 1 for output and 0 |
| for input, but `stmpe811_gpioconfig` set the opposite. |
| 3. The call to `stmpe811_gpiowrite` from inside of |
| `stmpe811_gpioconfig` leaded to deadlock. |
| From Dmitriy Linikov. |
| - BQ2429X: Add BATIO_OPRTN_SYSON for enabling BATFET after SYSOFF. |
| From Jussi Kivilinna. |
| |
| * Simulation: |
| |
| - Simulation: Serial and console drivers are not permitted to set |
| the errno. |
| |
| * ARMv7-M: |
| |
| - ARM Stack Check: Fix assert panic when both TLS and interrupt stack |
| are enable. From Jussi Kivilinna. |
| |
| * Infineon XMC4xxx Drivers: |
| |
| - XMC4 USIC: Kconfig was not selecting XMC4_USIC for USIC1. From Alan |
| Carvalho de Assis. |
| - XMC4 UART: Fix XMC4xxx USIC UART sginal to be high level when in idle. |
| From Alan Carvalho de Assis. |
| - XMC4 UART:xmc4_uart_configure() expects the channel# not uartbase as |
| an input parameter. From Alan Carvalho de Assis. |
| - XMC4 UART: Enable RX/TX status. From Alan Carvalho de Assis. |
| - XMC4 UART: The Alternative Receive Interrupt was not being |
| configured. |
| |
| * Infineon XMC4xxx Boards: |
| |
| - XMC4500-Relax: Setup max. freq. 120MHz and setup pull-up to UART |
| RXD pin. From Alan Carvalho de Assis. |
| |
| * Microchip/Atmel SAMv7 Drivers: |
| |
| - SAMv7: DAC and ADC drivers are not permitted to set the errno. |
| - SAMv7: Correct an error in RX DMA setup. From Manish Kumar Sharma. |
| - SAMv7 USB: It is necessary to disable pre-emption and interrupts |
| around a loop that copies TX data into the hardware in order to |
| avoid a TX data underrun condition. From Anthony Merlino. |
| |
| * NXP/Freescale LPC31xx Drivers: |
| |
| - LPC31xx: Serial and console drivers are not permitted to set |
| the errno. |
| |
| * NXP/Freescale LPC43xx: |
| |
| - lpc43xx: lpc43_adc.c was being selected by the build system when |
| DAC was selected. |
| |
| * NXP/Freescale LPC43xx Drivers: |
| |
| - LPC43xx Ethernet: Fix some backward logic setting full-duplex and |
| 100mbps when autoconfiguration is disabled. Noted by Anonymous in |
| Issue #76. |
| - lpc43xx: UART_RX pins should be configured with input buffers |
| enabled. Otherwise it cannot be read. From Alexander Vasiljev. |
| |
| * STMicro STM32: |
| |
| - STM32 F2: Fixed build for STM32F20XX platforms when |
| CONFIG_STM32_DMACAPABLE is enabled. From Dmitriy Linikov. |
| - STM32 F4: Remove ltdc.h and dma2d.h. Those header files in that |
| location permitted inclusion into application space logic and, |
| hence, facilitated and encouraged calling into the OS and violating |
| the portable POSIX OS interface. The definitions in those header |
| files were move the appropriate location in the counterpart, |
| architecture specific files at arch/arm/src/stm32/dma2d.h and ltdc.h. |
| - STM32 L4: Build stm32l4_idle.c only if CONFIG_ARCH_IDLE_CUSTOM is |
| not enabled. From Jussi Kivilinna. |
| - STM32 F7: Remove ltdc.h and dma2d.h. Those header files in that |
| location permitted inclusion into application space logic and, |
| hence, facilitated and encouraged calling into the OS and violating |
| the portable POSIX OS interface. The definitions in those header |
| files were move the appropriate location in the counterpart, |
| architecture specific files at arch/arm/src/stm32f7/dma2d.h and |
| ltdc.h. |
| |
| * STMicro STM32 Drivers: |
| |
| - STM32: DAC and ADC drivers are not permitted to set the errno. |
| - STM32 ADC: Clear pending interrupts. From Mateusz Szafoni. |
| - STM32 CAN: Lower part of STM32 CAN driver |
| arch/arm/src/stm32/stm32_can.c uses all three hw tx mailboxes and |
| clears TXFP bit in the CAN_MCR register (it means transmission order |
| is defined by identifier and mailbox number). |
| This creates situation when order frames are put in upper part of |
| CAN driver (via can_write) and order frames are sent on bus can be |
| different (and I experience this in wild). Since CAN driver API |
| pretends to be "file like" I expect data to be read from fd the same |
| order it is written. So I consider described behaviour to be a bug. |
| Fixed by settin the TXFP bit in the CAN_MCR register (FIFO |
| transmit order). From comments by Alexey T, in Bitbucket Issue 73. |
| - STM32 HRTIM: Fix pclk calculation. From Mateusz Szafoni. |
| - STM32 HRTIM: Fix burst mode prescaler update. From Mateusz Szafoni. |
| - STM32 (alt) I2C: Ensure proper error handling. Injecting data |
| errors would cause the driver to continually reenter the isr with |
| BERR an RxNE. This fix allows the error to be cleared and |
| propagated to the waiting task. From David Sidrane. |
| - STM32: LTDC and DMA2D drivers are not permitted to set the errno. |
| - STM32 RTC: Workaround for potential subseconds race condition. In |
| all recent STM32 chips reading either RTC_SSR or RTC_TR is supposed |
| to lock the values in the higher-order calendar shadow registers |
| until RTC_DR is read. However many old chips have in their errata |
| this silicon bug (at least F401xB/C, F42xx, F43xx, L15xxE, L15xVD |
| and likely others): "When reading the calendar registers with |
| BYPSHAD=0, the RTC_TR and RTC_DR registers may not be locked after |
| reading the RTC_SSR register. This happens if the read operation is |
| initiated one APB clock period before the shadow registers are |
| updated. This can result in a non-consistency of the three |
| registers. Similarly, RTC_DR register can be updated after reading |
| the RTC_TR register instead of being locked." |
| - STM32 Serial: Do not stop processing input in SW flow-control |
| mode. From Juha Niskanen. |
| - STM32F33xxx ADC: Add some publicly visible interfaces and some |
| code to support injected channels. From Mateusz Szafoni. |
| - STM32F33xxx DMA: Add public interface to handle with DMA |
| interrupts. From Mateusz Szafoni. |
| - STM32F33xxx RCC: Fix CAN clock enable. From Mateusz Szafoni. |
| - stm32 F4 I2C: Ensure proper interrupt handling. Injecting data |
| errors that causes a STOP to be perceived by the driver, will |
| continually re-enter the isr with SB not set and BTF and RxNE set. |
| This changes allows the interrupts to be cleared and propagates a |
| I2C_SR1_TIMEOUT to the waiting task. From David Sidrane. |
| - STM32 L4 Serial: Do not stop processing input in SW flow-control |
| mode. From Juha Niskanen. |
| - STM32 F7: LTDC and DMA2D drivers are not permitted to set the errno. |
| - STM32 L4: DAC and ADC drivers are not permitted to set the errno. |
| - STM32 L4 DAC: Do not configure output pin if it is not used. From |
| Juha Niskanen. |
| - STM32 L4 RTC, PM: Small fixes to subseconds handling, ADC |
| power-management hooks |
| - STM32 F4 RTC: Fix reading alarm value that is more than 24h in |
| future. From Juha Niskanen |
| - STM32 L4 RTC: Fix reading alarm value that is more than 24h in |
| future. From Juha Niskanen |
| - STM32 L4 TIM: Fix compilation of timers with complementary outputs |
| when not PWM_MULTICHAN. From Juha Niskanen. |
| - STM32 L4 RCC: Restore backup-registers after backup-domain reset. |
| From Jussi Kivilinna. |
| - STM32 L4 RTC: Correct RTC_SSR and RTC_TR read ordering. In all |
| recent STM32 chips reading either RTC_SSR or RTC_TR is supposed to |
| lock the values in the higher-order calendar shadow registers until |
| RTC_DR is read. Change the register read ordering to match this and |
| don't keep a workaround for a hypothetical race condition (not in |
| any L4 errata, lets for once assume ST's silicon works as it is |
| documented...) |
| - STM32 L4 RTC: Init mode was never exited because nested locking in |
| rtc_synchwait() disabled backup domain access. From Juha Niskanen. |
| - STM32 L4 RTC: Use backup register magic value instead of INITS |
| bit. The INITS (bit 4) of RTC_ISR register cannot be used to |
| reliably detect backup domain reset. This is because we can operate |
| our device without ever initializing the year field in the RTC |
| calendar if our application does not care about correct date being |
| set. Hardware also clears the bit when RTC date is set back to year |
| 2000. From Juha Niskanen. |
| - STM32 L4 RTC: Put back the SSR race condition workaround. ST has |
| confirmed that the issue has not been fixed, and that it applies to |
| STM32 L4 too (was not in errata sheets due to documentation bug) See |
| discussion: https://community.st.com/thread/43710-issue-with-rtc-maximum-time-resolution . |
| From Juha Niskanen. |
| - STM32 F7 BBSRAM: Avoid assert in stm32_bbsram_savepanic. If panic |
| happens before stm32_bbsram is initialized, stm32_bbsram_savepanic |
| caused additional assert panic. Function has null pointer check, so |
| drop DEBUGASSERT. From Jussi Kivilinna. |
| - STM32 F7 I2C: fix I2C_M_NORESTART handling. From Jussi Kivilinna. |
| - STM32 F7 I2C: Restore bus frequency after I2C reset. Copy |
| frequency restoration fix from STM32L4 I2C driver to STM32F7 I2C |
| driver. From Jussi Kivilinna. |
| - STM32 F7 RTC: Fix reading alarm value that is more than 24h in |
| future. From Juha Niskanen |
| |
| * STMicro STM32 Boards: |
| |
| - STM32F334-DISCO: Add missing ram_vectors configuration in linker |
| script. From Mateusz Szafoni. |
| - Nucleo-F334R8: Add missing ram_vectors configuration in linker |
| script. From Mateusz Szafoni. |
| - Nucleo-F334R8: Add Missing ADC trigger configuration to the highpri |
| configuration. From Mateusz Szafoni. |
| - STM3240G-EVAL: The timer frequencies (BOARD_TIMx_FREQUENCY) are |
| incorrectly defined in board.h. Since the APB prescalers are set to |
| divide by 4 and 2 respectively, the frequencies should be "2xAPBx" |
| as said in the comment. The correct frequencies are already defined |
| but as STM32_APBx_TIMx_CLKIN. From Mattias Edlund. |
| - STM32F429i-DISCO: The ltdc configuration has been deleted because |
| it violated the portable POSIX OS interface. It used |
| apps/examples/ltdc and include ltdc.h and dma2d.h which were also |
| removed for the same reason. |
| |
| * ZiLOG Z80 |
| |
| - configs/z80sim and xtrs: Serial driver lower halves ioctl methods |
| should return a negated errno value, not set the errno variable. |
| - z80 Make.defs: Fixes dependency generation with newest SDCC |
| compiler. |
| - configs/z80sim: Fix a naming problem. Also, don't try to build the |
| serial driver if CONFIG_NFILE_DESCRIPTOR=0. |
| - Z80: Makefile fix for use with current SDCC. |
| |
| * Build System |
| |
| - configs/: All defconfig files that include |
| CONFIG_NET_ICMPv6_SOCKET=y need to select CONFIG_SYSTEM_PING6=y and |
| deselect CONFIG_DISABLE_POLL. |
| - configs/: All NX configuration... Because of recent changes to |
| libnx/nxfonts, Supported bit per pixel must be separated specified |
| for NXFONTs too and need to match the select BPP for NX. |
| - Build system: Fix CONFIG_BUILD_KERNEL logic directories that have |
| ubin and kbin subdirectories. Conditional logic was fine for |
| CONFIG_BUILD_FLAT and CONFIG_BUILD_PROTECTED but generated useless |
| dependencies if CONFIG_BUILD_KERNEL. |
| |
| * C Library/Header Files: |
| |
| - libc/stdio: Build the lib_noflush() and lib_snoflush() stubs even |
| if CONFIG_FILE_DESCRIPTORS=0. They may still be needed. |
| - libc and libnx: When the libraries are built into two libraries, a |
| user space library and a OS space library (as in the PROTECTED and |
| KERNEL build). Then the user space library must not use the OS |
| internal interfaces; similarly, the OS must avoid using the |
| userspace interfaces so that it does not muck the errno value or |
| create spurious cancellation points. |
| - libc/match: Use of exp() vs expf() in logf() caused function to be |
| slow. From Alan Carvalho de Assis. |
| - libnx: Fixes a memory leak that is caused because the client message |
| queue is not unlinked after the client disconnects from the NX |
| server. From Masayuki Ishikawa. |
| - sscanf(): Fix sscanf() character conversion (%c): do not add '\0' at |
| the end as for strings, cause, for example, parsing one character |
| will fill two bytes: character itself and zero one '\0' after it, so |
| will overflow one byte variable argument and corrupt memory for |
| variables allocated after it. From Oleg Evseev. |
| |
| * Tools |
| |
| - tools/: configure.sh and configure.c should redirect stdout to |
| /dev/null but should not suppress stderr output. |
| |
| * NSH: apps/nshlib: |
| |
| - apps/nshlib/: Avoid truncating the strcmp result in the parser |
| into a unsigned char variable. nshlib/nsh_netcmds.c: Check for |
| valid hostip before using it. From Bruno Herrera. |
| - apps/nshlib/: Fix resource leak in 'dd' commenad when 'if=' or |
| 'of=' params are repeated in the command line. For example: |
| dd if=/dev/null if=/dev/zero of=/dev/null or |
| dd if=/dev/zero of=/dev/zero of=/dev/null. From Bruno Herrera. |
| - apps/nshlib: This commit eliminates the ping and ping6 commands |
| from NSH and replaces them with 'built-in' commands at |
| apps/system/ping and ping6. The original NSH version of ping[6] |
| commands violated the portable POSIX interface and, hence, had to |
| be removed. The new system/ping and ping6 built-in commands uses |
| the new IPPROTO_ICMP AF_INET and IPPROTO_ICMP6 AF_INET6 datagram |
| sockets to implement ping. |
| - apps/nshlib: Fix parsing of empty strings when CONFIG_NSH_CMDPARMS |
| is not defined. Problem noted by Juha Niskanen. |
| |
| * Examples/Tests: apps/examples: |
| |
| - All configurations that use NXIMAGE or NXHELLO must select |
| NX_MULTIUSER. All configurations that use examples/nxterm must |
| enable CONFIG_BOARDCTL. |
| - All configurations that use NXLINES must select NX_MULTIUSER. All |
| configurations that use the NX server need to have larger POSIX |
| messages. |
| - apps/examples/adc: Fix g_adcstate.count initialization. From |
| Masayuki Ishikawa. |
| - apps/examples/elf: Remove low-level interfaces and replace with |
| call to exec(). |
| - apps/examples/nxflat: Remove low-level interfaces and replace with |
| call to exec(). |
| - examples/ostest: Works around a bug in printf() when cancellation |
| points are enabled. printf() is a cancellation point because it |
| calls write(). This is correct according to OpenGroup.org. |
| However, printf holds the stdio library semaphore when it is |
| canceled and this leaves the semaphore in a bad state. No fix for |
| the printf bug yet. |
| - apps/examples/nx: The NX example no longer supports single user |
| mode. |
| - apps/examples/nxtext: The nxtext example no longer supports single |
| user mode. |
| - apps/examples/nxhello now supports only multiuser mode. |
| - apps/examples/nximage now supports only multiuser mode. |
| - examples/nxlines: Now supports only multiuser mode. |
| |
| * Network Utilities: apps/netutils: |
| |
| - apps/netutils/ftpc: Fix some crazy comparisons to determine is a |
| file is an absolute path. Noted by Anthony Merlino. |
| |
| * System Utilities (apps/system) |
| |
| - apps/system/i2ctool: Fixed i2ctool write operation in `no restart` |
| mode (flag `-n`). It seems that I2C driver has changed a bit since |
| i2ctool was written, so now i2ctool sends repeated start even if |
| `no restart` flag (-n) was passed to it. From Dmitriy Linikov. |