1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556 |
- #include "Rom_check.h"
- #include "stm32f1xx_hal.h"
- #include "flash_if.h"
- #include "RefreshMenu.h"
- #include "crc.h"
- #include "bin_check.h"
- uint8_t RomCheck(void)
- {
- uint32_t index,crc_result;
- uint32_t romSize_byte,romSize_words;
-
- __HAL_CRC_DR_RESET(&hcrc);
- //romSize_byte = 0x35c0;
-
- romSize_byte = (downLoad.packageSize - 4 - 128);//文件头需要减掉
- romSize_words = romSize_byte / 4;
-
- for(index = 0; index < romSize_words; index++)
- {
- CRC->DR = (*((uint32_t *)APPLICATION_ADDRESS + index));
- }
- crc_result = CRC->DR;
-
- //固件校验结果与bin末尾crc32结果对比
- if(crc_result != *(uint32_t *)(APPLICATION_ADDRESS + romSize_byte))
- {
- return ERROR;
- }
-
- crc_result = (Crc32_Cal[0]) + (Crc32_Cal[1] << 8) + (Crc32_Cal[2] << 16) + (Crc32_Cal[3] << 24);
- //bin文件头解密后的crc32与bin末尾crc32对比
- if(crc_result != *(uint32_t *)(APPLICATION_ADDRESS + romSize_byte))
- {
- return ERROR;
- }
-
- return SUCCESS ;
- }
|