| NuttX-7.19 |
| ---------- |
| |
| The 119th release of NuttX, Version 7.19, was made on December 26, 2016, |
| and is available for download from the Bitbucket.org website. Note |
| that release consists of two tarballs: nuttx-7.19.tar.gz and |
| apps-7.19.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: |
| |
| - sched/semaphore, sched/phread/, libc/semaphore, libc/pthread: Add |
| pthread_mutexattr_get/set_protocol and non-standard |
| sem_get/set_protocol. These may use to enable or disable priority |
| inheritance on a single semaphore. |
| - Spinlocks: Added capability to provide architecture-specific memory |
| barriers. |
| - SMP: Add spin_trylock(). Use this in conditions where other CPUs need |
| to stopped but we cannot call enter_critical_section(). |
| - sched note: Extend OS instrumentation to include some SMP events. |
| Also add spinlock instrumentation; In SMP configurations, add a |
| filter mask to log only notes from certain CPUs. |
| - sched note: Permit spinlock and critical section notes in in-memory |
| buffer iff sched_not_get() interfaces is disabled. |
| - sched note: Add additional note to see if/when CPU is started in SMP |
| mode. |
| - sched note: Record ID enumeration now results on constant values; ID |
| values do not change with configuration. This makes writing post-processing software much easier. |
| - boardctl: Add new boardctl() command, BOARDIOC_NX_START, to start the |
| NX server as a kernel thread. |
| - pthreads: Add pthread_cleanup_push() and pthread_cleanup_pop(). |
| - pthreads: Added pthread_setcanceltype() and pthread_testcancel(). |
| - pthreads: Add support for cancellation points. |
| - task_delete() now obeys all cancellation point semantics. |
| - Add task_setcancelstate(), task_setcanceltype(), and |
| task_testcancel(). These are non-standard interfaces analogous to the |
| corresponding pthread_ interfaces that provide cancellation controls |
| for tasks. |
| |
| * Graphics/Display Drivers: |
| |
| - boardctl: Add new boardctl() command, BOARDIOC_NX_START, to start the |
| NX server as a kernel thread. |
| |
| * Networking/Network Drivers: |
| |
| - Network drivers: Add option to use low-priority work queue to all |
| Ethernet and MAC level drivers. |
| - Network Drivers: Adapt all Ethernet (and other MAC) drivers to work |
| as though CONFIG_NET_MULTIBUFFER were set. Remove all references to |
| CONFIG_NET_MULTIBUFFER. |
| - Eliminate CONFIG_NO_NOINTS. There is no longer any support for |
| interrupt level processing of the network stack. Lots of files changed. |
| |
| * Other Common Device Drivers: |
| |
| - Vishay VEML6070: Add Vishay VEML6070 driver. From Alan Carvalho de |
| Assis. |
| |
| * ARMv7-A |
| |
| - ARMv7-A/i.MX6: Add SCU register definitions. Add some controls to |
| enable SMP cache coherency in SMP mode. Makes no difference, however |
| -- cache still incoherent on i.MX6. |
| - ARMv7 GIC: SGIs are non-maskable but go through the same path as |
| other, maskable interrupts. Added logic to serialize SGI processing |
| when necessary. |
| |
| * Atmel SAM3/4: |
| |
| - SAM3/4: Add SMP support for the dual-core SAM4CM. From Masayuki |
| Ishikawa. |
| |
| * Atmel SAM3/4 Drivers: |
| |
| - Add support for the SAM5CMP-DB board. From Masayuki Ishikawa. |
| |
| * Atmel SAM3/4 Boards: |
| |
| - SAM4CMP-DB: Add support for the Atmel SAM4CMP-DB board running in an |
| SMP configuration. From Masayuki Ishikawa. |
| - SAM4CMP-DB: Add hooks to auto-mount the procfs file system on startup |
| in board bring-up logic. |
| |
| * Atmel SAMV7 Drivers: |
| |
| - SAMv7: Register the watchdog device at the configured device path |
| CONFIG_WATCHDOG_DEVPATH vs. hard-coded /dev/wdt. From Frank Benkert. |
| |
| * Calypso |
| |
| - Calyps: Remove all Calypso board configurations. Remove Calypso |
| architecture support and support for Calypso SERCOMM driver. |
| |
| * Misoc LM32: |
| |
| - Misoc LM32: Adds basic support for the Misoc procoessors and the LM32 |
| in particular. From Ramtin Amin. |
| - Misoc LM32: Add signal handling logic. From Ramtin Amin. |
| - Misoc LM32: Add logic to flush/invalidate caches. From Ramtin Amin. |
| |
| * Misoc LM32 Drivers: |
| |
| - Misoc LM32 Serial: Add interrupting Misoc serial driver. From Ramtin |
| Amin. |
| - Misoc LM32 Timer: Add timer driver. From Ramtin Amin. |
| - Misoc LM32: Add Misoc Ethernet driver From Ramtin Amin. |
| |
| * Misoc LM32 Boards: |
| |
| - Misoc LM32 Qemu: Board support for testing Misoc LM32 with Qemu. From |
| Ramtin Amin. |
| - Misoc LM32 Qemu: Integrate network support into configs/misoc/hello. |
| From Ramtin Amin. |
| - Misoc LM32 Qemu: Remove configs/misoc/include/generated directory. I |
| suppose the intent now is that this is a symbolic link? DANGER! |
| This means that you cannot compile this code with first generating |
| these files a providing a symbolic link to this location! There is a |
| sample directory containing generated sources. This is really only |
| useful for performing test builds. You really must generate the Misoc |
| architecture for a real-life build. From Ramtin Amin. |
| |
| * NXP Freescale i.MX6 Drivers: |
| |
| - i.MX6: Add an untested SPI driver taken directly from the i.MX1 port. |
| |
| * NXP Freescale Kinetis: |
| |
| - Kinetis: Added missing headers. Kinetis broke out SPI to |
| kinetis/kinetis_spi.h. Broke out DMA to use the modern NuttX chip |
| inclusion - still STUBS. Add Kinetis support for ARMV7-M Common |
| Vector and FPU. Allow CONFIG_ARMV7M_CMNVECTOR, |
| CONFIG_STACK_COLORATION, CONFIG_ARCH_FPU. Fix i2c driver offset |
| swapped for value in kinetis_i2c_putreg. From David Sidrane. |
| |
| * NXP Freescale Kinetis Drivers: |
| |
| - Kinetis: Add UID Unique ID. From Neil Hancock. |
| |
| * NXP Freescale Kinetis Boards: |
| |
| - Freedom-K64F board: Add support for UID Unique ID. From Neil Hancock. |
| |
| * NXP Freescale LPC17xx Boards: |
| |
| - Olimex-LPC1766-STK: Enable procfs in NSH configuration. Automount |
| /proc on startup. |
| |
| * NXP Freescale LPC43xx Drivers: |
| |
| - LPC43xx: Add timer driver: From Alan Carvalho de Assis. |
| - LPC43xx GPDMA driver: The GPDMA block is basically the same as the |
| LPC17xx. Only the clock configuration is different and LPC43xx has |
| four different DMA request sources, where LPC17xx has only two. From |
| Alan Carvalho de Assis. |
| |
| * NXP Freescale LPC43xx Boards: |
| |
| - Bambino 200E: Add basic support to Micromint Bambino 200E board. |
| This includes contributions from Jim Wolfman. From Alan Carvalho de |
| Assis. |
| - Bambino 200E: Add support for timer driver. From Alan Carvalho de |
| Assis. |
| |
| * RGMP: |
| |
| - Remove RGMP and RGMP drivers. |
| |
| * RISC-V: |
| |
| - RISC-V: Add support for the RISC-V architecture and |
| configs/nr5m100-nexys4 board. The board support on this is pretty |
| thin, but it seems like maybe a good idea to get the base RISC-V stuff |
| in since there are people interested in it. From Ken Pettit. |
| |
| * STMicro STM32 Drivers: |
| |
| - STM32 F3: Implementation of the STM32 F37xx SDADC module. There are |
| also changes to ADC, DAC modules. SDADC has only been tested in DMA |
| mode and does not support external TIMER triggers. This is a work in |
| progress. From Marc Rechté. |
| - STM32 F3: Add PWM driver support for STMF37xx. The changes have been |
| tested successfully for TIM4 and TIM17 (different IPs). From Marc |
| Rechté. |
| - STM32 F4: Support oversampling by 8 for the STM32 F4. From David |
| Sidrane. |
| - STM32 F4: Added Timers 2-5 and control of SAI and I2S PLLs. Added |
| support for stmf469 SAI and I2S PLL configuration and STM446 fixes. |
| From David Sidrane. |
| - STM32 F4: Expanded OTGFS support to stm32F469 and stm32f446. Added |
| missing bit definitions, Used stm32F469 and stm32f446 bit |
| definitions, Removed unused header file. From David Sidrane. |
| - STM32 F4: Allow dma in 1 bit mode in STM32F4xxx. From David Sidrane. |
| - STM32 F7: Allow the config to override the clock edge setting. From |
| David Sidrane. |
| - STM32 L4: Support Complementary PWM outputs on STM32L4. From |
| Sebastien Lorquet. |
| - STM32 L4: Add implementation of dumpgpio for stm32l4, was required |
| for pwm debug. From Sebastien Lorquet. |
| |
| * STMicro STM32 Boards: |
| |
| - STM32F103 Minimum: Add button support. From Alan Carvalho de Assis. |
| - STM32F103 Minimum: Add support to PWM on STM32F103-Minimum board. |
| From Alan Carvalho de Assis. |
| - STM32F103 Minimum: Add RGB LED support on STM32F103 Minimum board. |
| From Alan Carvalho de Assis. |
| - STM32F103 Minimum: Add Vishay VEML6070 driver support to the |
| STM32F103-Minimum board. From Alan Carvalho de Assis. |
| - Nucleo-F303RE: Add STM32 F303RE hello configuration. From Marc |
| Rechté. |
| - Nucleo-L476: Support PWM testing on board Nucleo L476. From |
| Sebastien Lorquet. |
| - Nucleo L476: Add support for timers to Nucleo L476. From Sebastien |
| Lorquet. |
| - Hymini STM32v: Enable CONFIG_RTC in the hymini-stm32v/nsh2 |
| (kitchensink) config. From Maciej Wójcik. |
| - Olimex STM32-p407: Add support for the Olimex STM32 P407 board. |
| |
| * TI Tiva Drivers: |
| |
| - Tiva PWM: Support PWM_PULSECOUNT feature for TI tiva. From Young.Mu. |
| |
| * Xtensa/ESP32 |
| |
| - Xtensa ESP32: Basic architectural support for Xtensa processors and |
| the Espressif. ESP32 added. |
| - Xtensa ESP32: Add EXPERIMENTAL hooks to support lazy Xtensa |
| co-processor state restore in the future. |
| - Xtensa ESP32: Basic port is function in both single CPU and dual CPU |
| SMP configurations. There is an NSH configuration for each CPU |
| configuration. Outstanding issues include missing clock configuration |
| logic, missing partition tables to support correct configuration from |
| FLASH, and some serial driver pin configuration issues. |
| - Xtensa ESP32: Add stack checking logic. |
| |
| * Xtensa/ESP32 Boards: |
| |
| - ESP32 Core v2: Basic support for Espressif ESP32 Core v2 board |
| added. The initial release includes an NSH and an SMP test |
| configuration. |
| - ESP32 Core v2: Add configuration to support linking NuttX for |
| execution out of IRAM. |
| - ESP32 Core v2: Automatically mount /proc at start-up. |
| - ESP32 Core v2: Add an OS test to verify the port. |
| |
| * C Library/Header Files: |
| |
| - libc/locale: Add a dummy setlocale() function to avoid drawing the |
| function from newlib. Add clocale header file. |
| - include/locale.h: Modify locale.h to add localeconv() and lconv |
| structure. From Alan Carvalho de Assis. |
| - libc/locale: Allows c++ code to compile with or without |
| CONFIG_LIBC_LOCALE and will generate a link error if |
| CONFIG_LIBC_LOCALE is not defined and setlocale is referenced. With |
| CONFIG_LIBC_LOCALE defined setlocale will act as if MB string is not |
| supported and return "C" for POSIX. C and "". From David Sidrane. |
| - libc/wchar: Add wcslen, wmemchr, wmemcmp, wmemcpy wmemset, btowc, |
| mbrtowc, mbtowc, wcscmp, wcscoll, and wmemmove to NuttX. From Alan |
| Carvalho de Assis. |
| - libc/wctype: Add functions wcrtomb, wcslcpy, wcsxfrm, wctob, wctomb, |
| wctype, localeconv, strcoll, strxfrm, swctype, towlower, towupper and |
| wcsftime. Add wctype.h; Move lib_wctype.c to libc/wctype. From Alan |
| Carvalho de Assis. |
| - include/ctype.h : Add isblank() macro to ctype.h. From Alan Carvalho |
| de Assis. |
| - lic/stdlib: Add strtof() and strtold() as simply a copy of strtod |
| with types and limits changed. |
| - sscanf(): Use strtof() instead of strtod() if a short floating point |
| value was requested. The should help performance with MCUs with |
| 32-bit FPU support with some additional code size. |
| - sscanf(): Add scansets to the scanf function. Enabled |
| CONFIG_LIBC_SCANSET option. From Aleksandr Vyhovanec. |
| - include/inttypes.h: Add architecture-specific inttypes.h. From Paul |
| A. Patience. |
| - C Library: Allow option to enable IP address conversions even when |
| the IP address family is not supported. |
| |
| * Build/Configuration System: |
| |
| - The Smoothie project needs to compile C++ inside config/boardname/src/ |
| to use with High Priority Interruption, then I modified the board |
| configs Makefile to support it. It works fine for the first time |
| compilation, but if we execute "touch config/boardname/src/Pin.cxx" |
| and execute "make" it will not detect that Pin.cxx was modified. I |
| think there is some other place I should modify, but I didn't find |
| it. From Alan Carvalho de Assis. |
| |
| * Tools: |
| |
| - tools/: Add tools/showsize.sh. |
| |
| * NSH: apps/nshlib: |
| |
| - NSH: dd command will show statistics. From Masayuki Ishikawa. |
| |
| * Applications: apps/system: |
| |
| - apps/system/sched_note: Extend to include additions to instumentation |
| for SMP. |
| - apps/system/sched_note: Add support for spinlock notes. |
| - apps/system/sched_note: Add support for new scheduler instrumentation. |
| |
| * Platforms: apps/platform: |
| |
| - ESP32 Core v2: Add platform support for the ESP32 core v2 board. |
| - Olimex STM32-p407: Add platform support for the Olimex STM32 P407. |
| |
| * Graphics: apps/graphics |
| |
| - graphics/traveler/tcledit and libwld: Add an X11 Tcl/Tk tool that can |
| be used to edit Traveler world files. |
| - Graphics: Remove all NX server taks. Instead, call boardctl() to the |
| NX server kernel thread. |
| |
| * Applications: apps/examples: |
| |
| - examples/buttons: Add a new buttons example that uses the button |
| character driver instead of the architecture buttons directly. From |
| Alan Carvalho de Assis. |
| - examples/cctype: Add an example to verify cctype functions. |
| - Remove RGMP example. |
| - examples/ostest: Extend the pthread cancellation test to exercise |
| pthread_cleanup_push() (and pthread_cleanup_pop() indirectly via |
| pthread_cancel() and pthread_exit(). |
| - examples/ostest: enhance pthread cancellation test some. |
| |
| 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.20. |
| |
| 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/semaphore: Within the OS, when a thread obtains a semaphore |
| count it must call sem_addholder() if CONFIG_PRIORITY_INHERITANCE is |
| enabled. If a count is available, then sem_wait() calls |
| sem_addholder(), otherwise it waited for the semaphore and called |
| sem_addholder() when it eventually received the count. This caused a |
| problem when the thread calling sem_wait() was very low priority. |
| When it received the count, there may be higher priority threads |
| "hogging" the CPU that prevent the lower priority task from running |
| and, as a result, the sem_addholder() may be delayed indefinitely. |
| The fix was to have sem_post() call sem_addholder() just before |
| restarting the thread waiting for the semaphore count. This problem |
| was noted by Benix Vincent who also suggested the solution. |
| - Many files: Make sure that priority inheritance is not enabled for |
| semaphores whose primary use is signaling (vs locking of resources) by |
| calling sem_setprotocol(). |
| - sched/semaphore: sem_trywait() no longer modifies the errno value |
| UNLESS an error occurs. This allows these functions to be used |
| internally without clobbering the errno value. From Freddie Chopin. |
| - sched/clock: Correct clock initialization. The correct range for the |
| month is 0-11 but is entered as 1-12 in the .config file. Add ranges |
| to START_YEAR, MONTH, and DAY in sched/Kconfig. |
| - sched/clock: Correct calculation for the case of Tickless mode with a |
| 32-bit timer. In that case, the calculation was returning millisecond |
| accuracy. That is not good when the timer accuracy is < 1 msec. From |
| Rajan Gill. |
| - Work Queue: When queuing new LP work, don't signal any threads if |
| they are all busy. From Heesub Shin. |
| - Work Queue: Signal sent from work_signal() may interrupt the low |
| priority worker thread that is already running. For example, the |
| worker thread that is waiting for a semaphore could be woken up by the |
| signal and break any synchronization assumption as a result. It also |
| does not make any sense to send signal if it is already running and |
| busy. This change fixes it. From Heesub Shin. |
| - Fix DEBUGASSERT() in group_signal.c. From Masayuki Ishikawa. |
| - Eliminate bad boardctl() commands: Remove all references to |
| BOARDIOC_PWMSETUP and board_pwm_setup(). Remove all references to |
| BOARDIOC_ADCSETUP and board_adc_setup(). Remove |
| BOARDIOC_CAN_INITIALIZE. CAN initialization is now done in the board |
| initialization logic just like every other device driver. |
| - pthreads: Fix an error in pthread_mutex_destroy(). An error could |
| occur while destroying a mutex after a pthread has been canceled while |
| holding the mutex. |
| - task_restart: Make sure new task starts with pre-emption disabled and |
| not in a critical section. |
| - Enter/leave Critical Sections. Major redeign to |
| enter/leave_critical_section logic to deal with the case where |
| interrupts are disabled only on the local CPU. In this case, some |
| rather complex spinlocks must be used to maintain the critical section |
| across all CPUs. |
| - SMP Critical Sections: Fixes for the SMP case: (1) Change order for |
| SMP case in enter_critical_section: (1) Disable local interrupts |
| BEFORE taking spinlock and (2) If SMP is enabled, if any interrupt |
| handler calls enter_critical_section(), it should take the spinlock. |
| - SMP wdogs: Wdog timers use a tasking interface that to manipulate |
| wdogs, and a different interface in the timer interrupt handling logic |
| to manage wdog expirations. In the single CPU case, this is fine. |
| Since the tasking level code calls enter_critical_section, interrupts |
| are disabled and no conflicts can occur. But that may not be the case |
| in the SMP case. Most architectures do not permit disabling |
| interrupts on other CPUs so enter_critical_section must work |
| differently: Locks are required to protect code. this change adds |
| locking (via enter_critical section) to wdog expiration logic for the |
| the case if the SMP configuration. |
| - SMP vfork(): Fix a race condition in the SMP case. Existing logic |
| depended on the fact that the child would not run until waitpid was |
| called because the child had the same priority as the parent. BUT in |
| the SMP case that is not true... the child may run immediately on a |
| different CPU. |
| - SMP: This change adds a new internal interfaces and fixes a problem |
| with three APIs in the SMP configuration. The new internal interface |
| is sched_cpu_pause(tcb). This function will pause a CPU if the task |
| associated with 'tcb' is running on that CPU. This allows a different |
| CPU to modify that OS data structures associated with the CPU. When |
| the other CPU is resumed, those modifications can safely take place. |
| The three fixes are to handle cases in the SMP configuration where one |
| CPU does need to make modifications to TCB and data structures on a |
| task that could be running running on another CPU. Those three cases |
| are task_delete(), task_restart(), and execution of signal handlers. |
| In all three cases the solutions is basically the same: (1) Call |
| sched_cpu_pause(tcb) to pause the CPU on which the task is running, |
| (2) perform the necessary operations, then (3) call up_cpu_resume() to |
| restart the paused CPU. |
| - SMP: Add logic to avoid a deadlock condition when CPU1 is hung waiting |
| for g_cpu_irqlock with interrupts interrupts and CPU0 is waiting for |
| g_cpu_paused. |
| - SMP: Enforce this rule: Tasks which are normally restored when |
| sched_unlock() is called must remain pending (1) if we are in a |
| critical section, i.e., g_cpu_irqlock is locked , or (2) other CPUs |
| still have pre-emption disabled, i.e., g_cpu_schedlock is locked. In |
| those cases, the release of the pending tasks must be deferred until |
| those conditions are met. |
| |
| * File System/Block Drivers/MTD Drivers: |
| |
| - AT24XX EEPROM MTD driver: Added EEPROM timeout. Fromo Aleksandr |
| Vyhovanec. |
| - fs/procfs: Fix procfs status for SMP case. |
| |
| * Graphics/Graphic Drivers: |
| |
| - Fonts: Correct some default font IDs. From Pierre-Noel Bouteville. |
| |
| * Common Drivers: |
| |
| - usbhost/enumerate: Fix possible buffer overwrite. From Janne Rosberg. |
| - usbhost/composite: Fix compile; missing semicolons. From Jann Rosberg. |
| - syslog: Fixes required for file syslog output. From Max Kriegleder. |
| - SPI configuration: Fix Kconfig warning. This change moves the |
| ARCH_HAVE_SPI options outside the check for SPI. Those options don't |
| depend on SPI, and Kconfig files in arch/ enable them even if SPI |
| isn't enabled. Source the driver's Kconfig in drivers/Kconfig only |
| if support for the driver is enabled prevents us from defining these |
| ARCH_HAVE options in the driver's Kconfig. We should probably remove |
| the other checks in drivers/Kconfig and check if the drivers are |
| enabled only in their Kconfig. From Paul A. Patience. |
| - drivers/timer: Remove the timer driver TIOC_SETHANDLER IOCTL call. |
| This calls directly from the timer driver into application code. That |
| is non-standard, non-portable, and cannot be supported. Instead, add |
| timer driver hooks to support signal notification of timer |
| expiration. Signal notification logic added by Sebastien Lorquet. |
| - All timer lower half drivers. Port Sebastien's changes to all other |
| implementations of the timer lower half. |
| - USB MSC Device: Fix length of mode6 sense reply packet. From |
| Wolfgang Reißnegger. |
| - USB Composite Host: Fix end offset in usbhost_copyinterface(). From |
| Janne Rosberg. |
| - USB CDC/ACM Host: Add CDC_SUBCLASS_ACM and CDC_PROTO_ATM to |
| supported class and proto. From Janne Rosberg. |
| - SSD1306: Fix errors in SPI mode configuration. From Gong Darcy. |
| - CDC/ACM Device Class: uart_ops_s portion of cdcacm will not be |
| initialized with correct functions if CONFIG_SERIAL_DMA is selected. |
| |
| * Networking/Network Drivers: |
| |
| - drivers/net/tun.c: Fix bug in TUN interface driver. From Max Nekludov. |
| |
| * ARMv7-A: |
| |
| - ARMv7-A SMP: Add SMP logic to signal handling. |
| |
| * ARMv7-M: |
| |
| - ARMv7-M: Fix double allocation of MPU region in mmu.h. |
| |
| * ARMv7-R: |
| |
| - ARMv7-R: Fix compilation error. This change fixes compilation errors |
| on MPU support for ARMv7-R. From Heesub Shin. |
| - ARMv7-R: fix invalid drbar handling. In ARMv7-R, [31:5] bits of DRBAR |
| is physical base address and other bits are reserved and SBZ. Thus, |
| there is no point in passing other than the base address. From Heesub |
| Shin. |
| - ARMv7-R: Remove the redundant update on SCTLR. mpu_control() is |
| invoking cp15_wrsctlr() around SCTLR update redundantly. From Heesub |
| Shin. |
| - ARMv7-R: Add new Kconfig entries for D/I-cache. Unlike in ARMv7-A/M, |
| Kconfig entries for data and instruction caches are currently missing |
| in ARMv7-R. This change adds those missing Kconfig entries. Actual |
| implementation for those functions will be added in the subsequent |
| patches. From Heesub Shin. |
| - ARMv7-R: Add cache handling functions. This change adds functions for |
| enabling and disabling d/i-caches which were missing for ARMv7-R. |
| From Heesub Shin. |
| - ARMv7-R: Fix typo in mpu support. s/ARMV7M/ARMV7R/g. From Heesub Shin. |
| - ARMv7-R: Fix CPSR corruption after exception handling. A sporadic |
| hang with consequent crash was observed when booting. It seemed to be |
| caused by the corrupted or wrong CPSR restored on return from |
| exception. NuttX restores the context using code like this: msr spsr, |
| r1. GCC translates this to: msr spsr_fc, r1. As a result, not all |
| SPSR fields are updated on exception return. This should be: msr |
| spsr_fsxc, r1. On some evaluation boards, spsr_svc may have totally |
| invalid value at power-on-reset. As it is not initialized at boot, the |
| code above may result in the corruption of cpsr and thus unexpected |
| behavior. From Heesub Shin. |
| - ARMv7-R: Fix to restore the Thumb flag in CPSR. Thumb flag in CPSR is |
| not restored back when the context switch occurs while executing thumb |
| instruction. From Heesub Shin. |
| |
| * Atmel SAM3/4 Drivers: |
| |
| - SAM3/4 UDP: Add delay between setting and clearing the endpoint RESET |
| bit in sam_ep_resume(). We need to add a delay between setting and |
| clearing the endpoint reset bit in SAM_UDP_RSTEP. Without the delay |
| the USB controller will (may?) not reset the endpoint. If the |
| endpoint is not being reset, the Data Toggle (DTGLE) bit will not to |
| be cleared which will cause the next transaction to fail if DTGLE is |
| 1. If that happens the host will time-out and reset the bus. Adding |
| this delay may also fix the USBMSC_STALL_RACEWAR in usbmsc_scsi.c, |
| however this has not been verified yet. From Wolfgang Reißnegger. |
| - SAM3/4: Remove unused 'halted' flag from UDP driver. From Wolfgang |
| Reißnegger. |
| - SAM3/4: Remove 'stalled' flag from the UDP driver. This flag is not |
| necessary because the state of the endpoint can be determined using |
| 'epstate' instead. From Wolfgang Reißnegger. |
| |
| * Atmel SAM3/4 Boards: |
| |
| - SAM4S Xplained Pro: Configuration uses old, improper timer interface. |
| CONFIG_TIMER disabled in configuration. Remove obsolete timer |
| initialization logic. |
| |
| * Atmel SAMV7 Drivers: |
| |
| - SAMv7 USBDEVHS: A problem occurred with the SAMV7 USBDEVHS driver if |
| the USB cable is unplugged while a large amount of data is send over |
| an IN endpoint using DMA. If the USB cable is plugged in again after a |
| few seconds it is not possible to send data over this IN endpoint |
| again, all other endpoints work as expected. The problem occurs |
| because if the USB cable is unplugged while an DMA transfer is in |
| flight the transfer is canceled but the register SAM_USBHS_DEVDMACTRL |
| is left in an undefined state. The problem was fixed the problem by |
| resetting the register SAM_USBHS_DEVDMACTRL to a known state. |
| Additionally all pending interrupts are cleared. From Stefan Kolb. |
| - SAMV7 MCAN: Prevent Interrupt-Flooding of ACKE when not connected to |
| CAN-BUS. An Acknowledge-Error will occur every time no other CAN Node |
| acknowledges the message sent. This will also occur if the device is |
| not connected to the can-bus. The CAN-Standard declares, that the Chip |
| has to retry a given message as long as it is not sent successfully |
| (or it is not cancelled by the application). Every time the chip tries |
| to resend the message an Acknowledge-Error-Interrupt is generated. At |
| high baud rates this can lead in extremely high CPU load just for |
| handling the interrupts (and possibly the error handling in the |
| application). To prevent this Interrupt-Flooding we disable the ACKE |
| once it is seen as long we didn't transfer at least one message |
| successfully. From Frank Benkert. |
| - SAMV7 MCAN: Make delete_filter functions more robust. From Frank |
| Benkert. |
| |
| * Atmel SAMA5 Drivers: |
| |
| - SAMA5 PWM: Driver does not build when executing from SDRAM before |
| board frequencies are not constant. Rather, the bootloader configures |
| the clocking and we must derive the clocking from the MCK left by the |
| bootloader. This means lots more computations. This is untested on |
| initial change because I don't have a good PWM test setup right now. |
| |
| * Misoc LM32: |
| |
| - Misoc LM32: Corrects a bug that never occurred in qemu on simulation or |
| real fpga. The error was that the r1 register was being modified out |
| of context switching and not restoring it. From Ramtin Amin |
| |
| * NXP Freescale i.MX6: |
| |
| - i.MX6 interrupt handling: Additional logic needed to handle nested |
| interrupts when an interrupt stack is used. Nesting can occur because |
| SGI interrupts are non-maskable. |
| |
| * NXP Freescale LPC43xx Drivers: |
| |
| - LPC43xx serial: Fix a typo in ioctl TIOCSRS485 ioctl. From Vytautas |
| Lukenskas. |
| - LPC43xx serial: Restore RS485 mode on serial port open (if RS485 is |
| enabled via menuconfig). From Vytautas Lukenskas. |
| - LPC43xx SD/MMC: Correct some definitions on SMMC control register in |
| lpc43_sdmmc.h. From Alan Carvalho de Assis. |
| - LPC43xx SD card: Correct pin configuration options needed for SD card |
| pins. From Alan Carvalho de Assis. |
| |
| * SiLabs EFM32: |
| |
| - EFM32: Fix a compilation error. From Pierre-noel Bouteville. |
| |
| * STMicro STM32 Drivers: |
| |
| - STM32 CHxN channels are always outputs. From Sebastien Lorquet. |
| - STM32 DAC: Fix shift value whenever there are is a DAC2 and, hence, |
| up to three interfaces. From Marc Rechté. |
| - STM32 F1: Add TIM8 to STM32F103V pinmap. From Maciej Wójcik. |
| - STM32 F1: Fix for F1 RTC Clock, tested on F103. From Maciej Wójcik. |
| - STM32 F3: STM32F303xB and STM32F303xC chips have 4 ADCs. From Paul |
| A. Patience. |
| - STM32 F4: A new implementation of the STM32 F4 I2C bottom half. The |
| common I2C as this did not handled correctly in the current |
| implementation (see also https://github.com/PX4/NuttX/issues/54). The |
| changes almost exclusively affect the ISR. From Max Kriegleder. |
| - STM32 F4 OTGHS Host: If STM32F446 increase number of channels to |
| 16. From Janne Rosberg. |
| - STM32 F4: I think, that Size is (highest address+1 - Base address). |
| Base address has been removed and if address+count >= size we are |
| outside of the Flash. From David Sidrane. |
| - STM32 F4: Fix ADC compilation error when DMA isn't enabled. From Paul |
| A. Patience. |
| - STM32 F4: STM32F427 was rebooting. Over reached family. From David |
| Sidrane. |
| - STM32 F4: Added STM32F469 RAM size and deliberated STM32F446 size. |
| From David Sidrane. |
| - STM32 F4: Typo in stm32f76xxxx_pinmap.h edited online with |
| Bitbucket. From David Sidrane. |
| - STM32 F7: stm32_i2c.c Dejavu. Fixes a bug previously found in the |
| F4. From David Sidrane. |
| - STM32 F7: OTGDEV fixed typo. From David Sidrane. |
| - STM32 F7: Fix to SPI-Master driver. Without this the chip select |
| decoding feature will not work properly. From Michael Spahlinger. |
| - STM32 F7: STM32F7 SD/MMC driver depends on CONFIG_SDIO_DMA which is |
| only defined in stm32/Kconfig. Changed to CONFIG_STM32F7_SDMMC_DMA |
| and defined in stm32f7/Kconfig. |
| - STM32 F7: Fix some STM32F7 copy paste errors. From David Sidrane. |
| - STM32 L4: Complementary PWM outputs on STM32L4" (1) too many |
| parentheses when calculating max chan count and (2) channel 4 does not |
| have a complementary output. From Sebastien Lorquet. |
| - STM32 L4: Fix I2C devices RCC registers. From Sebastien Lorquet. |
| - STM32 L4: Enable and renaming for 32l4 UARTs 4 and 5. From Sebastien |
| Lorquet. |
| - STM32 L4: Change the way to configure quadrature encoder prescalers. |
| From Sebastien Lorquet. |
| - STM32 L4: Correct USART1/2 definitions. Use default mbed UART4 |
| settings. From Sebastien Lorquet. |
| |
| * STMicro STM32 Boards: |
| |
| - STM32F103 Minimum: Fix Timers 2 to 7 clock frequencies. From Alan |
| Carvalho de Assis. |
| - Nucleo-F303RE: Remove duplicate setting from board.h. From Marc |
| Rechté. |
| - Nucleo F303RE: Various fixes to get the ADC configuration building |
| again after PR. Refresh all configurations. |
| - Nucleo L476RG: Add better selection of timer. |
| |
| * TI Tiva Boards: |
| |
| - DK-TM4C129x: Typo fix. From Wolfgang Reißnegger. |
| |
| * Xtensa ESP32: |
| |
| - ESP32 core v2: Flush the UART TX buffer in the esp32 serial shutdown |
| routine. The ROM bootloader does not flush the FIFO before handing |
| over to user code, so some of this output is not currently seen when |
| the UART is reconfigured in early stages of startup. From Angus |
| Gratton. |
| - Xtensa ESP32: Corrects a problem with dispatching to signal |
| handlers: Cannot vector directly to the signal handling function as |
| in other ABIs under the Xtensa Window ABI. In that case, we need to |
| go through a tiny hook when performs the correct window call (call4) |
| otherwise registers will be scrambled in the signal handler. |
| |
| * Xtensa ESP32 Boards: |
| |
| - ESP32 core v2: Changes the openocd config file's default flash |
| voltage from 1.8V to 3.3V. This is not necessary right now, but may |
| save some hard-to-debug moments down the track (3.3V-only flash |
| running at 1.8V often half-works and does weird things...). From |
| Angus Gratton. |
| |
| * C Library/Header Files: |
| |
| - libc/stdio: Fixes sscanf() %sn where strlen(data) < n. From David |
| Sidrane. |
| - libc/stdio: Include wchar.h in lib_libvsprintf.c to fix compilation |
| error. From Alan Carvalho de Assis. |
| - include/sys/time.h: timersub macro modified per recommendations of |
| phreakuencies. |
| - include/ctype.h and cxx/cctype: Implement ctype.h functions as inline |
| if possible. cctype can then properly select namespace. |
| - include/: Fix a number of header files with mismatched 'extern C {' |
| and '}'. |
| - libc/unisted: Change brings strtol() and related functions more |
| conformant with POSIX. Corner cases like strtol(-2147483648, NULL, |
| 10) now pass clang -fsanitize=integer without warnings. From Juha |
| Niskanen. |
| - libc/unistd: sleep() was returning remaining nanoseconds (kind of), |
| instead the remaining seconds. From Eunbong Song. |
| - termios.h: Fix CRTSCTS define to include input and output flow. From |
| Lorenz Meier. |
| |
| * Build/Configuration System: |
| |
| - configs/*/defconfig: The buttons example was changed to archbuttons. |
| As a result all of the button configurations are broken and need some |
| renaming in the defconfig files. Noted by Frank Berkert. |
| - config/*/defconfgs: More fallout from name change of |
| apps/examples/buttons to archbuttons. |
| - configs: All QE encoder files. Last change made timer hard-coded to |
| 3. Make configurable. |
| - configs: Remove all traces of the no-longer existent ARCHBUTTONS |
| example. Remove all button configurations that depended on the |
| obsoleted ARCHBUTTON example. |
| - minnsh Configurations: Remove minnsh configurations and support |
| logic: up_getc() and lowinstream. This was an interesting exercise |
| to see just how small you could get NuttX, but otherwise it was not |
| useful: (1) the NSH code violated the OS interface layer by callup |
| up_getc() and up_putc() directly, and (2) while waiting for character |
| input, NSH would call up_getc() which would hog all of the CPU. Not a |
| reasonable solution other than as a proof of concept. |
| |
| * Application Build/Configuration System: |
| |
| - Make.defs: Using wrong link script if native window tool used with |
| Cygwin. |
| |
| * apps/platform: |
| |
| - ESP32 Core v2 Platform: Fix some naming that prevented building the |
| C++ support. |
| |
| * apps/nshlib: |
| |
| - NSH Library: nsh_getdirpath(), use snprint instead of sprintf to |
| avoid possibility of buffer overrun. Noted by Chung Hwan Kim. |
| |
| * apps/system: |
| |
| - Remove std_readline(). This called up_getc() and up_putc() directly, |
| violating the POSIX OS interface. |
| |
| * apps/netutils: |
| |
| - FTPD: Fixed bug that didn't free ftpd resources on exit. From Pascal |
| Speck. |
| - NTP client: Fix missing left parenthesis. From Pierre-Noel Bouteville. |
| - cJSON: Import patch to fix:cJSON_PrintUnformatted() behaves unexpected |
| if an empty array shall be printed to text. from Jerome Lang |
| 2012-04-19. From Pierre-Noel Bouteville. |
| - esp8266 update cosmetic and many bug fix. From Pierre-Noel Bouteville. |
| - FTPD: Fix bug un ftpd file or socket may be not closed. From |
| Pierre-Noel Bouteville. |
| |
| * apps/modbus: |
| |
| - Modbus Master is missing many files and doesn't compile at all. More |
| details in |
| https://groups.yahoo.com/neo/groups/nuttx/conversations/topics/13734. |
| From Vytautas Lukenskas. |
| |
| * apps/examples: |
| |
| - The examples/qencoder app was trying to init the encoder by a direct |
| call into the board, cheating in a local header to declare the |
| normally unavailable function prototype. From Sebastien Lorquet. |
| - apps/examples/timer: Should detach signal handler before exiting. |
| - examples/qencode: The examples/qencoder app was trying to init the |
| encoder by a direct call into the board, cheating in a local header to |
| declare the normally unavailable function prototype. From Sebastien |
| Lorquet. |
| - apps/examples/archbuttons: Removed because it violates OS interface |
| principles. |
| - examples/adc, pwm, can: Remove all usage of BOARDIOC_ADCTEST_SETUP, |
| BIOARDIOC_PWMSETUP. Remove BOARDIOC_CAN_INITIALIZE. CAN |
| initialization is now done in the board initialization logic just like |
| every other device driver. |
| - examples/ostest: Add some delays to the pthread cancellation test. |
| With deferred cancellation enabled, things happen more asynchronously. |