mirror of https://github.com/ArduPilot/ardupilot
52169f25da
this replaces the two booleans used to mediate TX and RX buffer protection with mutexes. The booleans were a hangover from the very early HAL_ChibiOS code, and can lead to a deadlock. The sequence is as follows: - a very high CAN bus bandwidth usage, triggered by MissionPlanner requesting CAN_FORWARD on a CAN serial port. That causes a "infinite" number of CAN_FRAME messages which saturates the bus, and leads to the DroneCAN thread looping with no pause - a serial port configured as GPS type AUTO, auto-probing for a GPS that isn't there. This calls begin() periodically - the UART TX thread assocated with that UART not making progress as the TX thread priority is below the DroneCAN thread priority - this causes the begin() in main thread waiting for _in_tx_timer to loop forever, which triggers a watchdog |
||
---|---|---|
.. | ||
hwdef | ||
AP_HAL_ChibiOS.h | ||
AP_HAL_ChibiOS_Namespace.h | ||
AP_HAL_ChibiOS_Private.h | ||
AnalogIn.cpp | ||
AnalogIn.h | ||
CANFDIface.cpp | ||
CANFDIface.h | ||
CANIface.h | ||
CanIface.cpp | ||
DSP.cpp | ||
DSP.h | ||
Device.cpp | ||
Device.h | ||
Flash.h | ||
GPIO.cpp | ||
GPIO.h | ||
HAL_ChibiOS_Class.cpp | ||
HAL_ChibiOS_Class.h | ||
I2CDevice.cpp | ||
I2CDevice.h | ||
LogStructure.h | ||
RCInput.cpp | ||
RCInput.h | ||
RCOutput.cpp | ||
RCOutput.h | ||
RCOutput_bdshot.cpp | ||
RCOutput_iofirmware.cpp | ||
RCOutput_serial.cpp | ||
SPIDevice.cpp | ||
SPIDevice.h | ||
Scheduler.cpp | ||
Scheduler.h | ||
Semaphores.cpp | ||
Semaphores.h | ||
SoftSigReader.cpp | ||
SoftSigReader.h | ||
SoftSigReaderInt.cpp | ||
SoftSigReaderInt.h | ||
Storage.cpp | ||
Storage.h | ||
UARTDriver.cpp | ||
UARTDriver.h | ||
Util.cpp | ||
Util.h | ||
WSPIDevice.cpp | ||
WSPIDevice.h | ||
bxcan.hpp | ||
sdcard.cpp | ||
sdcard.h | ||
shared_dma.cpp | ||
shared_dma.h | ||
stdio.cpp | ||
system.cpp |