Newer
Older
13001
13002
13003
13004
13005
13006
13007
13008
13009
13010
13011
13012
13013
13014
13015
13016
13017
13018
13019
13020
13021
13022
13023
13024
13025
13026
13027
13028
13029
13030
13031
13032
13033
13034
13035
13036
13037
13038
13039
13040
13041
13042
13043
13044
13045
13046
13047
13048
13049
13050
13051
13052
13053
13054
13055
13056
13057
13058
13059
13060
13061
13062
13063
13064
13065
13066
13067
13068
13069
13070
13071
13072
13073
13074
13075
13076
13077
13078
13079
13080
13081
13082
13083
13084
13085
13086
13087
13088
13089
13090
13091
13092
13093
13094
13095
13096
13097
13098
13099
13100
13101
13102
13103
13104
13105
13106
13107
13108
13109
13110
13111
13112
13113
13114
13115
13116
13117
13118
13119
13120
13121
13122
13123
13124
13125
13126
13127
13128
13129
13130
13131
13132
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).