Skip to content
ChangeLog 754 KiB
Newer Older
Gregory Nutt's avatar
Gregory Nutt committed
	  Kconfig entries. Actual implmenetation for those functions will be
	  added in the subsequent patches.  From Heesub Shin (2016-11-06).
	* arch/arm/src/armv7-r: add cache handling functions.  This commit
	  adds functions for enabling and disabling d/i-caches which were
	  missing for ARMv7-R.  From Heesub Shin (2016-11-06).
	* arch/arm/src/armv7-r: fix typo in mpu support.  s/ARMV7M/ARMV7R/g.
	  From Heesub Shin (2016-11-06).
	* arch/arm/src/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 (2016-11-06).
	* arch/arm/src/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 (2016-11-06).
	* sched/wqueue:  When queuing new LP work, don't signal any threads
	  if they are all busy.  From Heesub Shin (2016-11-06).
	* sched/wqueue: 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
	  commit fixes it.  From Heesub Shin (2016-11-06).
	* arch/arm/src/stm32f7: 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 (2016-11-07).
	* arch/arm/src/stm32: Add PWM driver support for STMF37xx.  The
	  changes have been tested successfuly for TIM4 and TIM17 (different
	  IPs).  From  Marc Rechté (2016-11-07).
	* 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
	  (2016-11-09).
	* arch/arm/src/stm32l4: Change the way to configure quadrature encoder
	  prescalers.  From Sebastien Lorquet (2016-11-09).
	* libc/unisted: Patch 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
	  (2016-11-10).
	* drivers/sensors and configs/stm32f103-minimum: Add Vishay VEML6070
	  driver and support for STM32F103-Minimum board.  From   From Alan
	  Carvalho de Assis(2016-11-13).
	* Misoc LM32: Corrects a bug that never occured 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 (2016-11-14)
	* arch/arm/src/samv71: 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 (2016-11-14).
	* configs/esp32-core: ESP32 Core v2: Add configuration to supporting
	  linking NuttX for execution out of IRAM (2016-11-14).
	* libc/unistd: sleep() was returning remaining nanoseconds (kind of),
	  instead the remaining seconds.  From Eunbong Song (2016-11-15).
	* sched/irq:  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. (2016-11-15).
	* arch/xtensa: Add EXPERIMENTAL hooks to support lazy Xtensa co-
	  processor state restore in the future (2016-11-16).
	* Add some experimental changes to enter/leave_critical_section to
	  deal with the case where interrupts are disabled only on the local
	  CPU (2016-11-16).
	* sched/irq:  Add logic to handled nested calls to
	  enter_critical_section() from interrupts handlers (with SMP)
	  (2016-11-16).
	* 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 (2016-11-17).
	*drivers/timer:  Add timer driver hooks to support signal notification
	  of timer expiration.  Commented out because invasive interface changes
	  would also be required to complete the implementation (2016-11-17).
	* arch/arm/src/armv7-m: Fix double allocation of MPU region in mmu.h
	  (2016-11-17).
	* timer driver: Use signal to notify of timer expiration. Add generic
	  argument so that there can be additional usage.  From Sebastien Lorquet
	  (2016-11-17).
	* All timer lower half drivers.  Port Sebastien's changes to all all
	  other implementations of the timer lower half.  Very many just and
	  untested.  Expect some problems. (2016-11-17).
	* sched/irq: irq_csection() has a bad assumption in the SMP case.  It
	  assumed that the state of certain variables.  That was true on entry
	  into the interrupt handler, but might change to the execution of logic
	  within the interrupt handler (2016-11-18).
	* config/ nucleo-l476rg: Add support for timers to nucleo l476.  From
	  Sebastien Lorquet (2016-11-18).
	* drivers/net:  Add option to use low-priority work queue to all drivers
	  in drivers/net.  Not yet added to all architecture-specific network
	  drivers (2016-11-18).
	* sched/wdog: Most interrupt handling logic interacts with tasks via
	  standard mechanism such as sem_post, sigqueue, mq_send, etc.  These all
	  call enter_critical_section and are assumed to be safe in the SMP case.

	  But certain logic interacts with tasks in different ways.  The only one
	  that comes to mind are wdogs.  There is a tasking interface that to
	  manipulate wdogs, and a different interface in the timer interrupt
	  handling logic to manage wdog expirations.

	  In the normal case, this is fine.  Since the tasking level code calls
	  enter_critical_section, interrupts are disabled an 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.

	  So this change adds locking (via enter_critical section) to wdog
	  expiration logic for the the case if the SMP configuration
	  (2016-11-18).
Gregory Nutt's avatar
Gregory Nutt committed

7.19 2016-xx-xx Gregory Nutt <gnutt@nuttx.org>