From c6f43ce3ad613cd00a488d501432208b0e493c1a Mon Sep 17 00:00:00 2001 From: David Crocker Date: Sat, 19 Dec 2020 16:22:58 +0000 Subject: Don't disable task scheduling when reading NVM Disabling task scheculting when reading NVM caused an assertion failure when NVM was read in the exceptoin handler --- src/Hardware/NonVolatileMemory.cpp | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) (limited to 'src/Hardware/NonVolatileMemory.cpp') diff --git a/src/Hardware/NonVolatileMemory.cpp b/src/Hardware/NonVolatileMemory.cpp index 1a5e8582..d36e6dae 100644 --- a/src/Hardware/NonVolatileMemory.cpp +++ b/src/Hardware/NonVolatileMemory.cpp @@ -26,14 +26,11 @@ void NonVolatileMemory::EnsureRead() noexcept #elif defined(__LPC17xx__) # error //TODO #elif SAM4E || SAM4S || SAME70 + const bool cacheEnabled = Cache::Disable(); + flash_read_user_signature(reinterpret_cast(&buffer), sizeof(buffer)/sizeof(uint32_t)); + if (cacheEnabled) { - TaskCriticalSectionLocker lock; // prevent scheduling while the cache is disabled - const bool cacheEnabled = Cache::Disable(); - flash_read_user_signature(reinterpret_cast(&buffer), sizeof(buffer)/sizeof(uint32_t)); - if (cacheEnabled) - { - Cache::Enable(); - } + Cache::Enable(); } #else # error Unsupported processor @@ -79,7 +76,6 @@ void NonVolatileMemory::EnsureWritten() noexcept if (state == NvmState::writeNeeded) { # if SAM4E || SAM4S || SAME70 - TaskCriticalSectionLocker lock; // prevent scheduling while the cache is disabled const bool cacheEnabled = Cache::Disable(); flash_write_user_signature(reinterpret_cast(&buffer)); if (cacheEnabled) -- cgit v1.2.3