From ea37cede282d3b36a6b562f1c6242c548f7f68f1 Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Sat, 26 May 2018 19:00:49 +1000 Subject: [PATCH] HAL_ChibiOS: stop sdcard interface on reboot --- libraries/AP_HAL_ChibiOS/Scheduler.cpp | 4 ++++ libraries/AP_HAL_ChibiOS/sdcard.cpp | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/libraries/AP_HAL_ChibiOS/Scheduler.cpp b/libraries/AP_HAL_ChibiOS/Scheduler.cpp index 24a98419bf..a271d3495b 100644 --- a/libraries/AP_HAL_ChibiOS/Scheduler.cpp +++ b/libraries/AP_HAL_ChibiOS/Scheduler.cpp @@ -30,6 +30,7 @@ #include #include #include "shared_dma.h" +#include "sdcard.h" #if CH_CFG_USE_DYNAMIC == TRUE @@ -241,6 +242,9 @@ void Scheduler::reboot(bool hold_in_bootloader) hal.rcout->force_safety_on(); hal.rcout->force_safety_no_wait(); + // stop sdcard driver, if active + sdcard_stop(); + // lock all shared DMA channels. This has the effect of waiting // till the sensor buses are idle Shared_DMA::lock_all(); diff --git a/libraries/AP_HAL_ChibiOS/sdcard.cpp b/libraries/AP_HAL_ChibiOS/sdcard.cpp index 39acff0026..e5ea977c0a 100644 --- a/libraries/AP_HAL_ChibiOS/sdcard.cpp +++ b/libraries/AP_HAL_ChibiOS/sdcard.cpp @@ -94,6 +94,10 @@ void sdcard_init() */ void sdcard_stop(void) { +#ifdef USE_POSIX + // unmount + f_mount(nullptr, "/", 1); +#endif #if HAL_USE_MMC_SPI if (sdcard_running) { mmcDisconnect(&MMCD1);