--bootcomplete
This commit is contained in:
@@ -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)
|
||||
|
||||
|
||||
/****************************************************************************************
|
||||
|
||||
@@ -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)
|
||||
{
|
||||
|
||||
@@ -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 */
|
||||
|
||||
Reference in New Issue
Block a user