成功实现MDK自动生成hex文件的crc值并附加到hex文件末尾(bin也支持),然后跟STM32的硬件CRC计算值做比较
通过这种方式,可以实时检查程序的完整性,防止盗取程序时对程序的修改。
也可以用来验证程序的完整性,特别是IAP升级等场合。
【准备工作】
需要一个srec_cat.exe小软件,在下面的软件包里面。
srecord-1.64-win32.zip (1.88MB)
【理论基础】
http://www.keil.com/support/docs/3806.htm
3、程序里面添加如下硬件CRC校验:
配置好系统时钟后,就可以调用此函数验证当前程序的完整性。
代码语言:javascript复制/*
*********************************************************************************************************
* 函 数 名: BootHexCrcVeriy
* 功能说明: 程序完整性校验
* 形 参: 无
* 返 回 值: 无
*********************************************************************************************************
*/
#define BOOT_START 0x08000000 /* boot程序首地址 */
#define BOOT_LEN 0x0001FFFC /* 程序大小 */
#define BOOT_CRCADDR 0x0801FFFC /* bin文件的CRC计算值存储的位置 */
__IO uint32_t uwCRCValue = 0;
__IO uint32_t uwExpectedCRCValue;
void BootHexCrcVeriy(void)
{
CRC_HandleTypeDef CrcHandle;
/* 读取bin文件的CRC */
uwExpectedCRCValue = *(__IO uint32_t *)BOOT_CRCADDR;
/* 初始化硬件CRC */
__HAL_RCC_CRC_CLK_ENABLE();
CrcHandle.Instance = CRC;
CrcHandle.Init.DefaultPolynomialUse = DEFAULT_POLYNOMIAL_ENABLE;
CrcHandle.Init.DefaultInitValueUse = DEFAULT_INIT_VALUE_ENABLE;
CrcHandle.Init.InputDataInversionMode = CRC_INPUTDATA_INVERSION_NONE;
CrcHandle.Init.OutputDataInversionMode = CRC_OUTPUTDATA_INVERSION_DISABLE;
CrcHandle.InputDataFormat = CRC_INPUTDATA_FORMAT_WORDS;
if (HAL_CRC_Init(&CrcHandle) != HAL_OK)
{
Error_Handler(__FILE__, __LINE__);
}
/* 计算是否与硬件CRC一致 */
uwCRCValue = HAL_CRC_Calculate(&CrcHandle, (uint32_t *)BOOT_START, BOOT_LEN/4);
if (uwCRCValue != uwExpectedCRCValue)
{
Error_Handler(__FILE__, __LINE__);
}
} 4、添加MDK自动执行批处理文件:
5、下载程序,这步比较关键,我们要单独下载生成的output_crc.hex文件,我这里直接使用jlink lite下载的,简单易用:
6、完整的测试程序,可以在V7板子上面测试:
最新发布
-
DNF独立攻击宝珠大全:价格、属性及获取途径详解
2025-05-12 10:37:14 -
TVBOX电视TV安装与IPv6直播和本地点播资源设置仅限2024年测试可用
2025-11-17 22:38:17 -
从零开始学CAD要多长时间?真实经验分享给小白
2025-08-21 13:34:29 -
饥荒熔岩虫卵多久长大 饥荒熔岩虫卵长达方法
2025-11-10 22:42:25 -
微博中奖现金多久到账?
2025-11-18 04:22:56 -
财付通申诉要多久
2025-06-09 08:25:38 -
TVBOX电视TV安装与IPv6直播和本地点播资源设置仅限2024年测试可用
2025-11-17 22:38:17 -
【原创】葡萄牙:一个以雄鸡为吉祥物的美丽国度
2025-09-10 15:22:55 -
当用户被广告 “劝退”、技术被巨头 “碾压”,酷开电视如何突围?
2025-06-15 10:50:12 -
揭秘韩国直播行业:露点事件频发,如何守护网络清朗空间?
2025-08-09 18:27:01