From 61036868c1cc7618607f8f368b0c9290a521e798 Mon Sep 17 00:00:00 2001 From: cfif Date: Mon, 17 Nov 2025 16:28:51 +0300 Subject: [PATCH] =?UTF-8?q?=D0=9E=D0=B1=D0=BD=D0=BE=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D0=B8=D0=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Inc/InternalFlashPage.h | 2 ++ Src/InternalFlashPage.c | 26 ++++++++++++++++++++++++-- 2 files changed, 26 insertions(+), 2 deletions(-) diff --git a/Inc/InternalFlashPage.h b/Inc/InternalFlashPage.h index bdba911..c538465 100644 --- a/Inc/InternalFlashPage.h +++ b/Inc/InternalFlashPage.h @@ -38,6 +38,8 @@ bool bInternalFlashPage_ClearRange( uint32_t totalSize ); +bool bInternalFlashPage_WriteFromRam(uint32_t beginPageAddr, void *sourceRamAddr, uint32_t size); + bool bInternalFlashPage_CopyRange( uint32_t targetPageAddr, uint32_t sourcePageAddr, diff --git a/Src/InternalFlashPage.c b/Src/InternalFlashPage.c index 8b61565..c29f40a 100644 --- a/Src/InternalFlashPage.c +++ b/Src/InternalFlashPage.c @@ -52,7 +52,10 @@ bool bInternalFlashPage_Clear( tFlashParam.u32Address = pageAddress; tFlashParam.u32Length = FLASH_PAGE_SIZE; - FLASHDRIVER_DFlashEraseSector(&tFlashParam); + if (FLASH_ERROR_OK != FLASHDRIVER_DFlashEraseSector(&tFlashParam)) { + return false; + } + /* flash_unlock(); @@ -145,6 +148,23 @@ bool bInternalFlashPage_CopyRange( */ } +bool bInternalFlashPage_WriteFromRam(uint32_t beginPageAddr, void *sourceRamAddr, uint32_t size) { + FLASHDRIVER_Init(); + + FLASH_DRIVER_ParamType tFlashParam = {.pData = (uint8_t *) sourceRamAddr, + .wdTriggerFct = (void *) 0 + }; + + tFlashParam.u32Address = beginPageAddr; + tFlashParam.u32Length = size; + + if (FLASH_ERROR_OK != FLASHDRIVER_DFlashWrite(&tFlashParam)) { + return false; + } + + return true; +} + size_t bInternalFlashPage_DumpFromRam( uint32_t beginPageAddr, void *sourceRamAddr, @@ -164,7 +184,9 @@ size_t bInternalFlashPage_DumpFromRam( tFlashParam.u32Address = beginPageAddr; tFlashParam.u32Length = size; - FLASHDRIVER_DFlashWrite(&tFlashParam); + if (FLASH_ERROR_OK != FLASHDRIVER_DFlashWrite(&tFlashParam)) { + return 0; + } return size; /*