如何生成带有CRC的bin文件

本文介绍如何生成带有CRC的bin文件。

MCU在上电运行时,通常需要校验程序是否正确(有无篡改或烧录文件出错),一般的做法是在烧录文件(通常是bin文件)末尾追加CRC(CRC-8,CRC-16,CRC-32),程序运行时首先校验CRC是否正确,再进行下一步运行。本文以Windows环境下,生成带有CRC-32的bin文件为例,对此作简要介绍。

1.工具下载与安装

这里用到srecord工具,其官网地址:

https://srecord.sourceforge.net/

我的电脑为Windows 10,这里下载的是“srecord-1.65.0-win64.exe",可根据实际情况进行下载,安装过程比较简单,这里就不再详细介绍。安装完成后会自动设置环境变量,可通过下面的指令测试是否安装成功。在Windows命令行下,输入:

srec_cat -version

安装正常情况下会输出版本信息。

2.批处理文件编写

Windows环境下,编写如下批处理文件(post-build.bat)。

@echo OFFset START_ADDRESS=0x08000000
set CRC_ADDRESS=0x0807FFFC
set SRC_HEX_FILE=test.hex
set CRC_HEX_FILE=test-crc.hex
set CRC_BIN_FILE=test-crc.binecho ----------------------------------
echo Generating Checksum...@echo ONsrec_cat %SRC_HEX_FILE% -intel -crop %START_ADDRESS% %CRC_ADDRESS% -fill 0xFF %START_ADDRESS% %CRC_ADDRESS% -CRC32_Little_Endian %CRC_ADDRESS% -CCITT -o %CRC_HEX_FILE% -intel
srec_cat %CRC_HEX_FILE% -intel -offset -%START_ADDRESS% -o %CRC_BIN_FILE% -binarydel -s %CRC_HEX_FILE%@echo OFFecho Generate Checksum: OK

其中,

1)START_ADDRESS:程序运行的存储器起始地址,这里设置的是0x08000000
2)CRC_ADDRESS:添加CRC的存储器地址,通常在存储器地址的末尾,这里是512K的地址空间,采用CRC-32校验,因此,地址设置的是0x0807FFFC
3)SRC_HEX_FILE:想要转换的hex文件
4)CRC_HEX_FILE:添加CRC后的hex文件,此文件为临时文件
5)CRC_BIN_FILE:最终添加CRC后的bin文件

注意

1)以上值都需要根据实际情况进行设定

2)CRC校验选择的是CCITT的校验方式,可根据实际情况设定,具体请查阅srecord的reference

3.开发工具设置

以STM32CubeIDE为例,将上述“post-build.bat”拷贝到“Release”文件夹中,并设置好参数,主要是地址及文件名。打开工程属性,在“Post build steps”中添加“post-build.bat”,设置如下图。

重新编译即可生成所要的带CRC的bin文件。

4.程序校验

本例中程序中的CRC校验可参考如下代码。在程序启动时,可读取存储空间程序并对其进行校验。

uint32_t CalcCRC32(uint8_t *pData, uint32_t nCount)
{uint32_t index = 0;uint32_t crc = 0xffffffff;  //initial valueuint8_t i = 0;for (index = 0; index < nCount; index++){crc = (uint32_t)(crc ^ pData[index]);for (i = 8; i > 0; i--){if (crc & 0x01){crc = (uint32_t)((crc >> 1) ^ 0xEDB88320);  /* XOR with polynomic,inversion bit sequence of 0x04C11DB7 */}else{crc = (uint32_t)(crc >> 1);}}}crc = crc ^ 0xffffffff;return crc;
}

总结,本文介绍了如何生成带有CRC的bin文件。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/723310.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

GET 和 POST 请求:理解它们之间的区别和适用场景

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 &#x1f35a; 蓝桥云课签约作者、上架课程《Vue.js 和 E…

2023年12月CCF-GESP编程能力等级认证Python编程八级真题解析

本文收录于专栏《Python等级认证CCF-GESP真题解析》,专栏总目录・点这里 一、单选题(每题 2 分,共 30 分) 第1题 小杨要从 A 城到 B 城,又想顺路游览一番。他有两个选项:1、坐高铁路到 C 城游览,再坐高铁或飞机到 B 城;2、坐船到 D 城游览,再坐船、高铁或飞机到 B 城…

黑马程序员HarmonyOS4+NEXT星河版入门到企业级实战教程 整理笔记 这篇就够了

素材来源视频&#xff1a;00.课程介绍_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV1Sa4y1Z7B1/?p1&vd_sourced0ea58f1127eed138a4ba5421c577eb1 鸿蒙开发工具&#xff1a;DevEco Studio 官网地址&#xff1a;https://developer.harmonyos.com/ 目录 一、常用…

环信 Vue2 uniapp Demo重构焕新!经典再升级!

项目背景 当前官网 uni-app vue2 Demo 地址 当前版本功能实现方式较混乱&#xff0c;代码逻辑晦涩难懂&#xff0c;不利于开发者参考或复用。此实战项目主要优化现有代码结构&#xff0c;以确保未来项目的可维护性和扩展性。 重构目标 本次重构中原始 Demo 代码逻辑完全重写…

CMMI的具体流程

CMMI&#xff08;Capability Maturity Model Integration&#xff09;流程是指企业或组织按照CMMI模型进行过程改进的系列步骤。下面是对CMMI流程的一般性描述&#xff1a; 1.评估现状与设定目标&#xff1a;•企业首先需要了解自己现有的过程成熟度水平&#xff0c;通过内部审…

H12-821_131

131.如图所示&#xff0c;R1、R2、R3和R4运行OSPF&#xff0c;缺省情况下该网络中选举________个DR。&#xff08;请填写阿拉伯数字&#xff09; 答案&#xff1a;3 注释&#xff1a; DR是链路上的概念&#xff0c;使用路由器接口的IP地址表示。链路的网络类型是广播网络类型或…

C语言经典算法-1

C语言经典算法讲解练习 文章目录 C语言经典算法讲解练习1.汉若塔2.费式数列3. 巴斯卡三角形4.三色棋5.老鼠走迷官&#xff08;一&#xff09;6.老鼠走迷官&#xff08;二&#xff09;7.骑士走棋盘8.八皇后9.八枚银币10.生命游戏 1.汉若塔 说明&#xff1a;河内之塔(Towers of …

Fiddler入门:下载、安装、配置、抓包、customize rules

一、fiddler下载安装 安装包下载链接&#xff1a;https://www.telerik.com/download/fiddler 随便选个用途&#xff0c;填写邮箱&#xff0c;地区选择China&#xff0c;勾选“I accept the Fiddler End User License Agreement”&#xff0c;点击“DownLoad for windows”&…

Python onnxruntime推理yolov5和yolov8(最简易版)

支持yolov5和yolov8双模型 其中ChtDeploy中代码如下&#xff1a; import onnxruntime import numpy as np import cv2class ChtDeploy():def __init__(self, img_path, onnx_path, iou_threshold0.45, conf_threshold0.3, detect_w640, detect_h 640):self.img cv2.imread(im…

mysql5.7.27安装图解教程和问题

mysql 5.7.27安装教程记录如下&#xff0c;分享给大家 下载文件&#xff1a; 1.下载步骤访问官方网站&#xff1a;https://www.mysql.com/ 选择Downloads下的Community 下载对应的版本点击上图的MySQL Community Server,进入下载界面&#xff1a; 找到MySQL Community Serve…

聚观早报 | ChatGPT新增朗读功能;vivo X Fold3细节曝光

聚观早报每日整理最值得关注的行业重点事件&#xff0c;帮助大家及时了解最新行业动态&#xff0c;每日读报&#xff0c;就读聚观365资讯简报。 整理丨Cutie 3月6日消息 ChatGPT新增朗读功能 vivo X Fold3细节曝光 魅族21 PRO开启内测 Anthropic推出Claude 3系列 海底捞…

2024 CLion 激活,分享几个CLion 激活的方案

文章目录 CLion 公司简介我这边使用CLion 的理由CLion 最新变化主要更新AI Assistant 预览阶段结束 正式版CLion Nova 预览版更多 C 和 C 项目模型持续改进 C 代码深入了解您的代码嵌入式开发 项目模型Bazel for CLion 插件Meson 支持CMake 增强功能 _Assembly_&#xff08;程序…

HTML表单标签,文末领取面试资料

突破困境&#xff1a; 1. 提升学历 前端找工作&#xff0c;学历重要吗&#xff1f; 重要。谁要是告诉你不重要那一定是在骗你。现实情况是大专吃紧&#xff0c;本科够用&#xff0c;硕士占优&#xff0c;大专以下找到工作靠运气和真实力。 学历是硬伤&#xff0c;已经毕业的你…

SpringCloudGateway工作原理与链路图

SpringCloudGateway基本介绍 Spring Cloud Gateway 构建于Spring Boot 2.x、 Spring WebFlux和Project Reactor之上。因此,在使用 Spring Cloud Gateway 时,您可能不会应用许多熟悉的同步库(例如 Spring Data 和 Spring Security)和模式。 Spring Cloud Gateway 需要 Sprin…

高企复审需要的步骤

高企复审是指高新技术企业认定有效期满后&#xff0c;企业再次申请重新认定的过程。根据《高新技术企业认定管理办法》规定&#xff0c;高新技术企业认定有效期为三年。到期后&#xff0c;企业需在规定时间内进行复审&#xff0c;以延续其高新技术企业的资格。高企复审流程大致…

【Golang星辰图】构建健壮应用的秘籍:探索Go语言中最强大的测试工具库

精进单元测试&#xff1a;探秘Go语言中流行的测试框架和工具 前言 提高软件质量和稳定性是每个开发人员的目标之一。而单元测试是保证代码质量的重要手段之一&#xff0c;可以帮助我们检查代码是否按预期工作&#xff0c;并提早发现潜在的bug。Go语言提供了丰富的测试框架和工…

Polar 到底给不给flag呢

Polar 到底给不给flag呢 开局直接给了源码 $flag flag{f73da0c8e7c774d488a6df0fec2890d9};是假的 变量覆盖&#xff0c;没啥好说的。举两个例子吧。 <?php $a "hello"; echo "$a"; //输出hello $$a"world"; echo "$…

安装mysql this application requires visual studio 2019 x64报错

提示 this application requires visual studio 2019 x64 缺少依赖 安装依赖 选择对应版本 安装 依赖安装地址 成功进入安装界面

Java 中哪些库可以解决线宽问题?

在Java中&#xff0c;线程安全是一个重要的问题&#xff0c;特别是在多线程编程中。线程安全性是指当多个线程访问共享资源时&#xff0c;不会出现不确定的结果或数据损坏的情况。Java提供了多种机制来解决线程安全性问题&#xff0c;其中包括使用线程安全的类库、同步机制、并…

c++|模板初阶

c|模板 模板的引入模板的作用函数模板函数模板的格式swap函数原理函数模板的实例化1.隐式实例化2.显示实例化 函数模板的匹配规则 类模板类模板的实例化谢谢观看 模板的引入 我们在写交换两个整型的swap函数的时候&#xff0c;突然需求变成交换两个双浮点型&#xff0c;我们这…