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; /*