你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

如何在 IAR 和 KEIL 中计算 CRC 值

[复制链接]
STMCU小助手 发布时间:2022-8-9 22:57
前言
( [  u1 N9 @1 n$ v1 Q& v市面上越来越多的产品对其使用提出了安全要求,如何避免使用过程中对操作者带来危险,或者降低这种危险发生的概率,这都是产品安全性需要考虑的。鉴于此,相关产品需要通过相关行业的安全认证才能生产上市。针对 CLASSB 以及 SIL 认 证,ST 分别提供了对应的软件库以及应用手册来帮助客户开发有安全认证需求的产品。
( ^+ n' X1 h( U/ P; v" F4 c1 @. I我们在支持客户的过程中,发现客户经常在 Flash 校验这一块碰到问题。这里整理了遇到的常见问题,并基于 IAR,KEIL 这两种 IDE 介绍如何配置 FLASH 的 CRC 计算的方法。# J1 a8 Z; Y5 `/ t3 D

( S+ ~7 v/ S. s+ n

6 |. ]1 K/ L. oFlash 自检的流程
- t. e/ _0 b1 FFlash 的自检一般分为启动时自检和程序运行时自检两个阶段。不管是哪种自检,其思路都是:
& _0 U2 c) w4 [在程序编译完成后,计算整个程序的 CRC 值,然后将这个 CRC 值添加到可执行文件末尾。再将带有 CRC 校验值的可执行文件烧录到 MCU 中。在程序启动后,由程序中的自检代码重新再根据当前 Flash 内容(不包括预存的 CRC 校验值)计算一次CRC 值,再与之前预先计算并烧录到 Flash 中的 CRC 校验值进行比较,如果一致就通过检测。6 z( F# q: q) p: W- {6 c
这两个自检阶段的区别就是:
. T1 R2 H, ?4 y: |( {3 O7 U5 m程序启动自检是一次性对整个实际 Flash 代码范围计算出最终的 CRC 值;而运行时的自检,为了不影响其他程序模块的运行,计算 CRC 的过程是分步进行的,每次计算一部分,分多次计算出最终的 CRC 值。5 Z/ Z: P5 P( O# Q  y4 y2 t# b
围绕 Flash 的自检所发生的问题可以归为两大类,一类是预先计算 CRC 值时和上电后计算 CRC 值的 Flash 范围设置是否一致;第二类就是预先计算 CRC 时和上电后计算 CRC 采用的 CRC 算法是否一致。
. J9 Y" r  _* y; y
如何添加 CRC 值 ) ^* k( X3 R: N7 F$ s
下面我们主要介绍如何添加 CRC 校验值到可执行文件。# [' D4 @' h" G
. W: q0 _+ m, k6 U
基于 IAR 环境 & M0 D- b, `  c. R0 ^5 m2 k& @
如果你使用 IAR IDE,那么添加 CRC 值的配置相对比较简单。通过配置 IAR 的 CRC 计算参数,自动对整个 FLASH 空间进 行 CRC 计算,并将计算结果放到 FLASH 的末尾。
7 l# u6 C4 E: Q2 f+ s" C& b1. 修改 Link 文件,指定 CRC 值的存放位置
0 _% F( _. J0 N8 s+ }) a' C. N在 Link 文件中增加下面语句,指定 checksum 在 FLASH 中的存储位置。
8 g# x7 y- R. X7 p' R1 C- m( n
  1. place at end of ROM_region { ro section .checksum };
复制代码
该语句指定将 CRC 的值放在 FLASH 的末尾位置。是整个 FLASH 空间的末尾,不是应用程序的代码末尾。这样,CRC 值的位置就是固定的。不会随代码大小而变化。/ E7 n' m# R" `8 r
在自检代码中,可以通过__checksum 读取 Flash 中保存的 CRC 校验值来与重新计算的 CRC 值进行比较。
% e" X! ~* Y9 U( X" K' l& e' }; M
2.配置 Checksum 页面的参数 . [$ v9 _1 a+ }, B
在 link 文件中指定了 checksum 的存储位置后,还要在工程配置菜单中,配置计算 CRC 值的范围和参数。见下图:( r" N& W3 B9 R6 O5 }. T8 x/ C/ L

) V1 D# w' I8 G4 u+ ?& E1 j
: }; O5 C6 }! H) C1 i9 B) V
N~Z1`O$SK_1LPH5DLT[6F.png / w# M# B3 i* v2 G" `& t
+ R5 M% }9 R, Y5 }: V* Q4 L

4 r) s8 D. Q$ j1 F, pIAR 的 checksum 页面分为两个部分。
( I# r3 r; T, Q. a; P- R
* q- L' }$ a3 \* t7 h

3 m, {. r: f* ?# P' Q/ \( T4 M$ U  n' Z1 a0 ~
完整版请查看:附件! ]9 u2 y) k  _

; ~& V4 j, P8 Q/ q  R( x/ Y5 E
8 @- V7 k; |6 K) C

, N9 }( n7 j  Y

How to calculate CRC value in IAR and KEIL.pdf

下载

834.48 KB, 下载次数: 1

赞 收藏 评论0 发布时间:2022-8-9 22:57

举报

0个回答

所属标签

相似技术帖

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版