ardupilot/libraries/AP_HAL_ChibiOS
Andrew Tridgell 5e76e7aa7b HAL_ChibiOS: disable interrupts during flash operations
we have now shown that interrupts being enabled during flash
operations can cause the infamous "68ms" bug, or watchdog when using a
32 bit timer on boards using flash for storage

The issue is quite repeatable with a load of a very large waypoint
file (over 500 waypoints) using "wp ftpload" in MAVProxy. This puts a
huge load on flash storage.

Our current working theory is that while doing flash writes for
storage on dual-bank we block access to only one bank, so if another
thread uses a timeout function with a short timeout while the flash
write is happening and chVTDoTickI calls code which crosses the flash
bank boundary then it can cause chVTDoTickI to violate the assumption
that no more than CH_CFG_ST_DELTA ticks pass while it is calculating
the value to set in the system timer. In that case we get a delay of a
full timer wrap, which is 68ms on boards with 16 bit timer and 70
minutes on boards with 32 bit timer
2022-04-09 17:12:27 +09:00
..
hwdef HAL_ChibiOS: disable interrupts during flash operations 2022-04-09 17:12:27 +09:00
AnalogIn.cpp HAL_ChibiOS: fixed min/max inversion in MCU voltage logging 2022-03-12 08:00:49 +09:00
AnalogIn.h AP_HAL_ChibiOS: AnalogSource: check for valid pin 2021-10-06 18:42:51 +11:00
AP_HAL_ChibiOS_Namespace.h AP_HAL_ChibiOS: support digital write via IOMCU 2021-09-28 09:40:25 +10:00
AP_HAL_ChibiOS_Private.h AP_HAL_ChibiOS: add QSPI Device Driver in HAL 2021-06-30 19:33:17 +10:00
AP_HAL_ChibiOS.h
bxcan.hpp AP_HAL_ChibiOS: create UAVCAN agnostic CANIface driver 2020-08-19 17:31:09 +10:00
CANFDIface.cpp HAL_ChibiOS: bring in hal.h where it is needed 2022-02-22 12:13:19 +11:00
CANFDIface.h HAL_ChibiOS: support mavcan message forwarding 2022-02-12 16:36:05 +11:00
CanIface.cpp HAL_ChibiOS: bring in hal.h where it is needed 2022-02-22 12:13:19 +11:00
CANIface.h HAL_ChibiOS: support mavcan message forwarding 2022-02-12 16:36:05 +11:00
Device.cpp HAL_ChibiOS: bring in hal.h where it is needed 2022-02-22 12:13:19 +11:00
Device.h AP_HAL_ChibiOS: remove dependency on Semaphores in QSPIDevice in BL 2021-09-01 17:10:53 +10:00
DSP.cpp HAL_ChibiOS: bring in hal.h where it is needed 2022-02-22 12:13:19 +11:00
DSP.h AP_HAL_ChibiOS: remove redundant harmonics from DSP 2021-12-22 18:13:38 +11:00
EventSource.cpp HAL_ChibiOS: constrain more timer timeouts 2022-04-09 17:12:27 +09:00
EventSource.h AP_HAL_ChibiOS: disable EventSource only when CH_CFG_USE_EVENTS is false 2021-06-09 18:36:18 +10:00
Flash.h HAL_ChibiOS: removed unusued AP_Common/Semaphore.h 2019-05-15 15:33:48 +10:00
GPIO.cpp HAL_ChibiOS: constrain more timer timeouts 2022-04-09 17:12:27 +09:00
GPIO.h HAL_ChibiOS: support GPIO get_mode and set_mode 2021-10-12 15:47:51 +11:00
HAL_ChibiOS_Class.cpp AP_HAL_ChibiOS: allow flash to be write-protected/unprotected on reboot 2022-02-24 10:19:07 +11:00
HAL_ChibiOS_Class.h HAL_ChibiOS: bring in hal.h where it is needed 2022-02-22 12:13:19 +11:00
I2CDevice.cpp HAL_ChibiOS: bring in hal.h where it is needed 2022-02-22 12:13:19 +11:00
I2CDevice.h AP_HAL_ChibiOS: add support for CAN/I2C switch 2022-02-16 13:25:58 +11:00
QSPIDevice.cpp AP_HAL_ChibiOS: spro H7 extreme updates. 2022-04-09 17:12:27 +09:00
QSPIDevice.h AP_HAL_ChibiOS: spro H7 extreme updates. 2022-04-09 17:12:27 +09:00
RCInput.cpp HAL_ChibiOS: display source of RC input 2022-03-30 19:12:45 +09:00
RCInput.h HAL_ChibiOS: display source of RC input 2022-03-30 19:12:45 +09:00
RCOutput_bdshot.cpp AP_HAL_ChibiOS: fix ESCs constantly arming on rover with dshot commands 2022-03-30 19:12:45 +09:00
RCOutput_serial.cpp AP_HAL_ChibiOS: fix ESCs constantly arming on rover with dshot commands 2022-03-30 19:12:45 +09:00
RCOutput.cpp HAL_ChibiOS: prevent long timeouts in DShot 2022-04-09 17:12:27 +09:00
RCOutput.h AP_HAL_ChibiOS: correct channel offsets for dshot commands 2022-03-30 19:12:45 +09:00
Scheduler.cpp HAL_ChibiOS: bring in hal.h where it is needed 2022-02-22 12:13:19 +11:00
Scheduler.h AP_HAL_ChibiOS: split out a calculate_thread_priority method 2021-03-30 10:49:06 +11:00
sdcard.cpp HAL_ChibiOS: bring in hal.h where it is needed 2022-02-22 12:13:19 +11:00
sdcard.h AP_HAL_ChibiOS: remove unnecessary tabs and whitespaces 2019-10-21 08:01:56 +11:00
Semaphores.cpp HAL_ChibiOS: bring in hal.h where it is needed 2022-02-22 12:13:19 +11:00
Semaphores.h AP_HAL_ChibiOS: make all semaphores recursive 2020-01-19 20:19:30 +11:00
shared_dma.cpp HAL_ChibiOS: bring in hal.h where it is needed 2022-02-22 12:13:19 +11:00
shared_dma.h HAL_ChibiOS: reduce the impact of UART DMA contention 2021-08-31 07:55:27 +10:00
SoftSigReader.cpp HAL_ChibiOS: bring in hal.h where it is needed 2022-02-22 12:13:19 +11:00
SoftSigReader.h HAL_ChibiOS: fixed warning on gcc9 2020-09-22 08:07:23 +10:00
SoftSigReaderInt.cpp HAL_ChibiOS: bring in hal.h where it is needed 2022-02-22 12:13:19 +11:00
SoftSigReaderInt.h HAL_ChibiOS: added disable() API for pulse input 2020-01-31 11:09:07 +11:00
SPIDevice.cpp HAL_ChibiOS: bring in hal.h where it is needed 2022-02-22 12:13:19 +11:00
SPIDevice.h AP_HAL_ChibiOS: add support for bank selection call outside SPI driver 2020-08-06 12:41:35 +10:00
stdio.cpp HAL_ChibiOS: modify hal can drivers for use by AP_Periph 2020-09-24 12:32:19 +10:00
Storage.cpp AP_HAL_ChibiOS: hwdef for SPRacingH7 2022-02-09 12:47:55 +00:00
Storage.h AP_HAL_ChibiOS: only change SD card on external flash boards 2022-02-09 12:47:55 +00:00
system.cpp AP_HAL_ChibiOS: hwdef for SPRacingH7 2022-02-09 12:47:55 +00:00
UARTDriver.cpp HAL_ChibiOS: bring in hal.h where it is needed 2022-02-22 12:13:19 +11:00
UARTDriver.h AP_HAL_ChibiOS: add HAL_UART_STATS_ENABLED to disable stats gathering 2022-01-12 18:30:49 +11:00
Util.cpp AP_HAL_ChibiOS: add support for alternate alarm PWM group 2022-02-23 18:35:43 +11:00
Util.h AP_HAL_ChibiOS: add support for alternate alarm PWM group 2022-02-23 18:35:43 +11:00