--bootcomplete

This commit is contained in:
Mysteo91
2023-07-03 15:43:57 +03:00
parent 5bb49884de
commit d9d833c586
30 changed files with 35709 additions and 13 deletions

View File

@@ -50,7 +50,7 @@
/** \brief Motorola or Intel style byte ordering. */
#define BOOT_CPU_BYTE_ORDER_MOTOROLA (0)
/** \brief Enable/disable hook function call right before user program start. */
#define BOOT_CPU_USER_PROGRAM_START_HOOK (1)
#define BOOT_CPU_USER_PROGRAM_START_HOOK (0)
/****************************************************************************************

View File

@@ -28,22 +28,17 @@ void MX_CRC_Init(void)
/* USER CODE END CRC_Init 2 */
}
err_crc_t calculateROM_CRC32(flash_area_enum_t flash_area, uint32_t *val)
{
if (flash_area == FLASH_AREA_FULLPROG)
{
uint32_t len = *(uint32_t*)(LEN_ADDRESS);
uint32_t crc32 = *(uint32_t*) (FLASH_USER_PROG_ADDRESS + len );
if (len >= FLASH_SIZE)
return CRC_ERROR;
return BLT_FALSE;
uint32_t crc_calc = ~HAL_CRC_Calculate(&hcrc, (uint32_t*)FLASH_USER_PROG_ADDRESS, len );
__HAL_CRC_DR_RESET(&hcrc);
*val = crc_calc;
if (crc32 == crc_calc)
return CRC_OK;
else
return CRC_ERROR;
return BLT_TRUE;
}
else if (flash_area == FLASH_AREA_MAINPROG)
{

View File

@@ -228,7 +228,18 @@ blt_bool NvmDoneHook(void)
****************************************************************************************/
blt_bool NvmVerifyChecksumHook(void)
{
return calculateROM_CRC32(FLASH_AREA_FULLPROG, NULL);
uint32_t crcCalculated;
uint32_t len = *(uint32_t*)(LEN_ADDRESS);
uint32_t crcInFlash = *(uint32_t*) (FLASH_USER_PROG_ADDRESS + len );
if (calculateROM_CRC32(FLASH_AREA_FULLPROG, &crcCalculated) == BLT_TRUE)
{
if (crcCalculated = crcInFlash )
{
return BLT_TRUE;
}
}
return BLT_FALSE;
} /*** end of NvmVerifyChecksum ***/
@@ -244,8 +255,11 @@ blt_bool NvmWriteChecksumHook(void)
{
blt_bool result = BLT_TRUE;
uint32_t crc = 0;
calculateROM_CRC32(FLASH_AREA_FULLPROG, &crc);
result = FlashWrite(FLASH_USER_PROG_ADDRESS + BOOT_FLASH_VECTOR_TABLE_CS_OFFSET + 1, sizeof (blt_addr), (blt_int8u*) &crc);
result = calculateROM_CRC32(FLASH_AREA_FULLPROG, &crc);
if (result == BLT_TRUE)
result = FlashWrite(FLASH_USER_PROG_ADDRESS + BOOT_FLASH_VECTOR_TABLE_CS_OFFSET + 1, sizeof (blt_addr), (blt_int8u*) &crc);
else
return result;
return result;
}
#endif /* BOOT_NVM_CHECKSUM_HOOKS_ENABLE > 0 */