| NuttX-7.20 |
| ---------- |
| |
| The 120th release of NuttX, Version 7.20, was made on March 8, 2017, |
| and is available for download from the Bitbucket.org website. Note |
| that release consists of two tarballs: nuttx-7.20.tar.gz and |
| apps-7.20.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: |
| |
| - Kernel Modules: Module initializer may now return a symbol table. |
| - Modules: Extend the module interface so that we can access symbols |
| exported by the module. |
| - Shared Libraries: In the FLAT build mode, kernel modules may be |
| used to provide minimal shared library functionality. |
| - Modules/Shared Libraries: Add support for dependencies between |
| modules. |
| - Module Library: Add build a configuration logic for a shared module |
| library. |
| - Shared Libraries: Implement module based shared libraries for the |
| PROTECTED mode build. |
| - Interrupt handling: irq_attach() now includes an argument of type |
| xcpt_t that retained with the handler address. That argument is |
| then provided to the interrupt handler when the interrupt occurs. |
| The common parameter passing replaces the ad hoc parameter passing |
| implemented in current drivers. From Mark Schulte. |
| - Adapt many drivers to utilize the IRQ argument feature. |
| - All functions that used to return an xcpt_t old handler value, now |
| return an int error code. The oldhandler value is no longer useful |
| with the recent changes to the interrupt argument passing. Some of |
| the functions effected include board_button_irq(), arch_phy_irq(), |
| STM32 EXTI functions (Alarm, COMP, PVD), GPIO interrupt logic like |
| kinetis_pinirq(), stm32_gpiosetevent(), and others. |
| - IRQ subsystem: Add support for smaller interrupt tables as |
| described at |
| https://cwiki.apache.org/confluence/display/NUTTX/Smaller+Vector+Tables. |
| This is partially the work of Mark Schulte. |
| |
| * File Systems/Block and MTD Drivers |
| |
| - Pseudo File System: Add support for soft links in the top-level |
| pseudo file system. |
| - Soft links: Add an implementation of readlink(). |
| - Add fstat() support. Implement fstat() method in binfs, romfs, |
| unionfs, tmpfs, nxffs, nfx, hostfs, procfs, and smartfs. |
| - fstat: Add fstat() support to FAT. From Alan Carvalho de Assis. |
| |
| * Graphics/Display Drivers: |
| |
| - Fonts: Add support for Tom Thumb small mono-space font. From Alan |
| Carvalho de Assis. |
| - Graphics: Separated of font cache from graphics/nxterm. Now in |
| libnx/nxfronts where it can be shared with other graphics |
| applications. |
| |
| * Networking/Network Drivers: |
| |
| - Ethernet drivers: Add framework for serialization in the case where |
| multiple low-priority work queues are used. |
| |
| * Other Common Device Drivers: |
| |
| - Add capabilities() method to SDIO interface. Remove |
| CONFIG_SDIO_WIDTH_D1_ONLY. That should not be a global property, |
| but rather a capability/limitation of single slot when there may be |
| multiple slots. |
| - Removed dmasupported() method from the SDIO interface. That is now |
| a bit in the capability set. |
| - drivers/sensors: Add driver for the ST L3GD20 3 axis gyro. From |
| raiden00. |
| |
| * Atmel SAM3/4: |
| |
| - SAM3/4: Add support for ATSAM4S4C. From Wolfgang Reißnegger. |
| |
| * NXP Freescale i.MX6 Boards: |
| |
| - Sabre 6quad: Enable examples/smp test in i.MX6 SMP/NSH |
| configurations. |
| |
| * NXP Freescale Kinetis: |
| |
| - Kinetis: Added support for CHIP_MK60FN1M0VLQ12 chip. From Maciej |
| Skrzypek. |
| - Kinetis: Add support for K64/K66 RTC lower half driver. From Neil |
| Hancock. |
| - Kinetis: Extensive modification of MCG support based feature |
| configuration. From David Sidrane. |
| - Kinetis: Add support for K66 family. From David Sidrane. |
| - Kinetis: Created a kinetis SIM versioning scheme pulled in by |
| Kinetis chip.h. From David Sidrane. |
| - Created a kinetis PMC versioning scheme pulled in by Kinetis |
| chip.h. From David Sidrane. |
| - Kinetis: Extend clock configuration logic. Refactor |
| implementation. From David Sidrane. |
| |
| * NXP Freescale Kinetis Drivers: |
| |
| - Kinetis Ethernet: Kinetis Support RMII clock source select. This |
| defined the RMII clock source select bits and allows the selection |
| to be made via Kconfig. From David Sidrane. Freedom-K66F uses |
| ENET_1588_CLKIN as RMII clock |
| - Kinetis Serial: Added configurable 1|2 stop bits. |
| HAVE_SERIAL_CONSOLE -> HAVE_UART_CONSOLE to be consistent with |
| HAVE_LPUART_CONSOLE naming. From David Sidrane. |
| - Kinetis LPserial: Add LPUART serial driver and Clock |
| configuartaion to freedom-k66f board. From David Sidrane. |
| - Kinetis USB device: Refactor clocking in kinetis_usbdev. From |
| David Sidrane. |
| |
| * NXP Freescale Kinetis Boards: |
| |
| - Add support for NXP Freedom-k66f development board. From David |
| Sidrane. |
| - Kinetis Freedom K66F: Add Ethernet support. From David Sidrane. |
| - Add twr-k64f120m config. From Marc Rechté. |
| |
| * NXP Freescale LPC43xx Boards: |
| |
| - Bamboo-200E: Add netnsh configuration. From Alan Carvalho de Assis. |
| - Add usbnsh config to Bambino 200E board. From Alan Carvalho de |
| Assis. |
| |
| * STMicro STM32: |
| |
| - STM32 F7: Allow board to configure HSE clock in bypass-mode. This |
| is needed to enable HSE with Nucleo-F746ZG board. From Jussi |
| Kivilinna. |
| - STM32 F7: stm32_allocateheap: allow use DTCM memory for heap. |
| STM32F7 has up to 128KiB of DTCM memory that is currently left |
| unused. This change adds DTCM to main heap if |
| CONFIG_STM32F7_DTCMEXCLUDE is not enabled. From Jussi Kivilinna. |
| - Add basic support for the STM32F334. From Mateusz Szafoni. |
| - STM32F33XX DAC, OPAMP, COMP, ADC, HRTIM headers. From Mateusz |
| Szafoni. |
| |
| * STMicro STM32 Drivers: |
| |
| - STM32 F7 SDMMC: Add support for single bit operation on SDMMC2. |
| - STM32 L4: Port STM32L4 SAI driver from MDK. |
| - STM32 L4: Bring power management logic from Motrola MDK into NuttX. |
| - STM32 L4: Bring LPTIM driver in from the Motorola MDK. |
| - STM32 L4 COMP: Port from Motorola MDK. |
| |
| * STMicro STM32 Boards: |
| |
| - STM32F429i Discovery: Add support for NxWM on STM32F429i-Disco |
| board. From Alan Carvalho de Assis. |
| - STM32F103 Minimum: Add support for nRF24 on STM32F103-Minimum |
| board. From Alan Carvalho de Assis. |
| - Olimex STM32 P407: Add a NSH protected build configuration; Enable |
| procfs/ in all configurations. |
| - Olimex STM32 P407: Add support for on-board microSD slot. |
| - STM32F429i Discovery: Add support for the L3GD20 driver. From |
| raiden00. |
| - STM32F103 Minimum: Add support to QEncoder on STM32F103 Minimum |
| board. From Alan Carvalho de Assis. |
| - Olimex STM32 P407: Add external SRAM support. |
| - Add basic support for the Nucleo F334R8 board. From Mateusz |
| Szafoni. |
| - STM32F103 Minimum: Add SDCard support over SPI on STM32F103-Minimum |
| board. From Alan Carvalho de Assis. |
| - STM32F103 Minimum: Add support to USB Device on STM32F103-Minimum |
| board. From Alan Carvalho de Assis. |
| |
| * C Library/Header Files: |
| |
| - compiler.h: packed_struct replaced by begin_packed_struct and |
| end_packed_struct. Now support IAR style packed structures. From |
| Aleksandr Vyhovanec. |
| - Math library: Leverage optimized ARMv8-M functions from BSD license |
| ARM file. |
| - Shared libraries: Add a non-standard dllfnc.h function to set the |
| symbol table. |
| - C Library: Add a support for setvbuf(). This is a collaborative |
| effort. Alan Carvalho de Assis did the initial prototype. |
| - C Library: Add setbuf() which is a trivial wrapper around setvbuf(). |
| - C library: Add swab(). |
| - C library: Add strtoimax and strtoumax. |
| - C library: Add ffs(), rindex(), an index(). Add strings.h. Move |
| strcasecmp, strncasecmp, bzero, bcmp, and bcopy to where they |
| belong in strings.h.h, not string.h. bzero, bcmp, and bcopy are |
| legacy functions; the contemporary counterparts should be used |
| instead. |
| - C library: Add fstatfs(). |
| - Update cwchar. Add cwctype. |
| |
| * Build/Configuration System: |
| |
| - Add configuration support for builds with Ubuntu under Windows 10. |
| |
| * Tools: |
| |
| - tools/noteinfo.c: A hack tool that I use to analyze some sched_note |
| output. Needs a home and may be useful to others. |
| - tools/mkconfig.c: Add logic to keep all of the buffering options in |
| sync. |
| |
| * NSH: apps/nshlib: |
| |
| - NSH: Add support for the 'ln' command. |
| - NSH ls command: if node is a symbolic link, use readlink() to get |
| and the display the target of the symbolic link. |
| - NSH: Add readlink command. |
| |
| * Applications: apps/examples: |
| |
| - apps/examples/nxtext: Make line spacing configurable. |
| - apps/system/zmodem/host/nuttx/compiler.h synchronized with |
| nuttx/nuttx/include/nuttx/compiler.h. From Aleksandr Vyhovanec. |
| - apps/examples/sotest: Add a test for shared libraries. |
| - apps/examples/ostest: Add a test of setvbuf(). |
| - apps/examples/stat: Add a simple test for stat(), fstat(), |
| statfs(), and fstatfs(). |
| |
| Works-In-Progress: |
| |
| * IEEE802.14.5/6LowPAN. Hooks and framework for this effort were |
| introduced in NuttX-7.15. Work has continued on this effort on |
| forks from the main repositories, albeit with many interruptions. |
| The completion of this wireless feature will postponed until at |
| least NuttX-7.21. |
| |
| 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: |
| |
| - SMP: There were certain conditions that we must avoid by preventing |
| the release of the pending tasks while withn a critical section. |
| But this logic was incomplete; there was no logic to prevent other |
| CPUs from adding new, running tasks while on CPU is in a critical |
| section. This commit corrects this. This is matching logic in |
| sched_addreadytorun to avoid starting new tasks within the critical |
| section (unless the CPU is the holder of the lock). The holder of |
| the IRQ lock must be permitted to do whatever it needs to do. |
| - SMP: Make checks for CPU lock set more robust. There are certain |
| conditions early in initialization on during interrupt handling |
| where things need to be done a little differently. |
| - sched_cpulocked: Avoid use of spinlock. That has been reported to |
| cause a deadlock (2016-12-28). |
| - SMP: Fix a gap where we may try to make modifications to the task |
| lists without being in a critical sections. That permits |
| concurrent access to the tasks lists and many subtle problems. |
| This fix just remains in the critical section throughout the |
| operation (and possible until the task is restore in the event of a |
| context switch). Makes a big difference in stability. |
| - SMP: Fix an error in critical section logic when performing a |
| context switch from an interrupt handler. The g_cpu_irqset bit was |
| not being set for the CPU so other CPUs did not know about the |
| critical section. |
| - SMP Signals: Fix some SMP signal delivery logic. Was not handling |
| some critical sections correctly and was missing logic to signal |
| tasks running on other CPUs. |
| - SMP: Fix timer related issues: Round robin and sporadic |
| scheduling were only being performed for tasks running on the CPU |
| that processes the system timer interrupt. Similarly, CPU load |
| measurements were only be processed for running on the CPU that |
| receives the sampling interrupt. |
| - sched_note: Fix spinlock instrumentation. From Masayuki Ishikawa. |
| - In all implementations of _exit(), use enter_critical_section() vs. |
| disabling local interrupts. |
| - sigtimedwait: When timer expires, up_unblock_task() is called. |
| This is okay in the single CPU case because interrupts are disable |
| in the timer interrupt handler. But it is insufficient in the SMP |
| case. enter_ and leave_critical_section() must be called in order |
| to manage spinlocks correctly. |
| - Fix a compile error: in sched_cpuload.c:Line136, the variables ts |
| and secs are not defined if CONFIG_CPULOAD_ONESHOT_ENTROPY = 0. |
| However, these variables are used regardless of |
| CONFIG_CPULOAD_ONESHOT_ENTROPY at lines~180:onwards. From Rajan Gill. |
| - CPU load: Correct computation of the nominal period to use when the |
| source is a oneshot timer. |
| - Cancellation points: Fix some backward logic in conditional |
| compilation. |
| - Remove an unused variable when calling sigwaitinfo() and |
| sigtimedwait(). From Masayuki Ishikawa. |
| |
| * File System/Block and MTD Drivers: |
| |
| - procfs: Correct to snprintf-related errors in fs_procfsproc.c. |
| Resolves issue #24. |
| - Add logic to VFS rename: If target of rename exists and is a |
| directory, then the source file should be moved 'under' the target |
| directory. POSIX also requires that if the target is a file, then |
| that old file must be deleted. |
| - Fix open() a block device with |
| CONFIG_DISABLE_PSEUDOFS_OPERATIONS=y. From Masayuki Ishikawa. |
| - File System: Don't build block driver proxy if PSEUDOFS_OPERATIONS |
| are disabled. |
| - sendfile(): Fix error introduced with commit |
| ff73be870e38959b0aaee5961dc47b4b58dc2d86. Noted by Maciej Wójcik. |
| |
| * Graphics/Graphic Drivers: |
| |
| - NxWM configurations. If using a 7-bit character set, then the |
| cursor character cannot be 137 (graphic block). Use 95 |
| (underscore) instead. |
| - NX server: Correct message queue names. Should not be at /dev, |
| but rather relative to /var/mqueue. |
| |
| * Common Drivers: |
| |
| - MMCSD_SDIO: Only wait for card ejected if card detection is |
| supported. From Alan Carvalho de Assis. |
| - Typos withim mtd/ with Macronix MX25L. In |
| NuttX/drivers/mtd/Make.defs letters X between M and 25 are |
| missing. Noted by Oleg Evseev. |
| - USBMSC: Always set LUN readonly flag. From Wolfgang Reißnegger. |
| - drivers/lcd: ssd1306_configspi() must have global scope. |
| - MMC/SD SDIO: Some drivers need to start DMA before sending CMD24 |
| and some AFTER. From Alan Carvalho de Assis. |
| - drivers/tone.c: Handle configuration with multiple PWM channels. |
| This resolves issue #30: Audio Tone Generator and PWM Multiple |
| Output Channel options. |
| - drivers/tone.c: 50% duty needs to be expressed a a fixed precision |
| number. |
| - drivers/spi/Kconfig: There is too much SPI in the configuration |
| menu; SPI Driver Support menu is empty. From Maciej Wójcik. |
| - option to enable Memory Card debug output was hidden with SD cards |
| connected through SPI. From Maciej Wójcik. |
| - usbhost_cdcacm: fix tx outbuffer overflow and remove now invalid |
| assert. From Janne Rosberg. |
| |
| * Networking/Network Drivers: |
| |
| - Networking: Fixed some issues that prevented IPv6 from working with |
| IPv4 enabled. From Pascal Speck. |
| - Networking: fixed a nullptr-dereference on iob_clone. From Pascal |
| Speck. |
| - Ethernet: Need two work structures (minimum) in all Ethernet |
| drivers so that pending poll work is not lost when an interrupt |
| occurs. |
| |
| * ARMv7-R: |
| |
| - I found an issue inside the cp15_coherent_dcache function: The |
| "mcr CP15_BPIALLIS(r0)" should only be used with SMP |
| configurationa. In non-SMP configuration this instruction could |
| become undefined. From Manohara HK. |
| |
| * Atmel SAM3/4 Drivers: |
| |
| - SAM3/4: GPIO bit numbering typo fixes. From Wolfgang Reißnegger. |
| |
| * Atmel SAM3/4 Boards: |
| |
| - Add missing sched_note_*() calls in sam4cm SMP functions. |
| |
| * NXP/Freescale Kinetis: |
| |
| - Kinetis: Fixed wrong MCG VDIV calculation on new NXP K60. From |
| Maciej Skrzypek. |
| - Kinetis: Need to set HAVE_UART_DEVICE when UART4 is selected. From |
| Maciej Skrzypek. |
| - Kinetis MCG: Wrong FRDIV set in MCG_C1. From Maciej Skrzypek. |
| |
| * NXP/Freescale Kinetis Drivers: |
| |
| - Kinetis Serial: Fixed compile error when UART5 is selected. From |
| Maciej Skrzypek. |
| - Kinetis SDHC - Enable clock after selected. From David Sidrane. |
| - Kinetis: Correct some SPI and I2C configuration issues. From |
| David Sidrane. |
| - Kinetis Ethernet: Add #define for number of loops for auto |
| negotiation to complete. From Marc Rechté. |
| - Kinetis Werial: Fixed up_rxint - did not disable the RX |
| interrupts. There was an OR where and AND NOT was needed. From |
| David Sidrane. |
| |
| * NXP/Freescale LPC43xx: |
| |
| - LPC43 pinset definitions: Add more 1 bit to pinset to reach |
| SFSCLK0-SFSCLK3. Remove PINCONFIG_DIGITAL. From Alan Carvalho de |
| Assis. |
| |
| * NXP/Freescale LPC43xx Drivers: |
| |
| - LPC43 serial: Correct conditional logic that selects /dev/ttySN. |
| Problem noted by Alan Carvalho de Assis. |
| |
| * NXP/Freescale i.MX6: |
| |
| - i.MX6: Fix clearing GPT status register. From Masayuki Ishikawa. |
| |
| * STMicro STM32: |
| |
| - STM32, STM32L4 Oneshot: Fix logic so that it can support multiple |
| oneshot timers. |
| - STM32 F7: Added missing ARCH_HAVE_RESET for F7. From David Sidrane. |
| - STM32: Add missing STM32_BKP_BASE. From David Sidrane. |
| - STM32 and STM32F7: Fixes the BKP reference counter issue. From |
| David Sidrane. |
| |
| * STMicro STM32 Drivers: |
| |
| - Fix for SAMv7 SPI: DLYBS value was calculated, but never written to |
| any registers. This led to incorrect timings on the bus. From |
| Michael Spahlinger. |
| - STM32 QEncoder: Fix QEncoder driver, based on STM32L4 driver. From |
| Alan Carvalho de Assis. |
| - STM32 QEncoder: Enable clocking to the timer on QE setup; disable |
| clock on QE teardown. |
| - STM32 Ethernet: Need two work structures so that pending poll work |
| is not lost when an interrupt occurs. This change has also been |
| ported to all all other effected Ethernet drivers. |
| - STM32 OTGHS host: stm32_in_transfer() fails and returns NAK if a |
| short transfer is received. This causes problems from class |
| drivers like CDC/ACM where short packets are expected. In those |
| protocols, any transfer may be terminated by sending short or NUL |
| packet. From Janne Rosberg. Adapted Janne Rosberg's patch to |
| STM32 OTGHS host to OTGFS host, and to similar USB host |
| implementations for STM32 L4 and F7. |
| |
| * STMicro STM32 Boards: |
| |
| - STM32F4 Discovery: Fix issues with QEncoder support. From Alan |
| Carvalho de Assis. |
| |
| * C Library/Header Files: |
| |
| - Add debug assertion in libdtoa to catch attempts to use floating |
| point output formats from within an interrupt handler. That will |
| cause assertions or crashes downstream because __dtoa will attempt |
| to allocate memory. From Pierre-noel Bouteville. |
| - libc: Fix ARMv7-A/R memcpy assembly. |
| - Fix return value if x is NaN. From Aleksandr Vyhovanec. |
| |
| * apps/nshlib: |
| |
| - NSH: Eliminate a warning when all memory inspection commands are disabled. |
| |
| * apps/graphics: |
| |
| - apps/graphics/traveler/tools: Fix linkage issue. The -lm should |
| come after -o binname. From Alan Carvalho de Assis. |
| |
| * apps/netutils: |
| |
| - The CONFIG_NETUTILS_HTTPD_PATH constant is used by httpd_mmap.c and |
| httpd_sendfile.c but It was not present in Kconfig menu. From |
| Maciej Wójcik. |
| |
| * apps/examples: |
| |
| - Configurations that enable OSTEST must not disable signals. |
| - apps/examples/ostest: Was ignoring |
| CONFIG_EXAMPLES_OSTEST_FPUTESTDISABLE. |
| - In apps/examples/mtdpart/mtdpart_main.c where |
| CONFIG_EXAMPLES_MTDPART_NPARTITIONS defining is checked should be |
| #ifndef instead of #ifdef. Noted by Oleg Evseev. |