在前面的文章“使用IAR Embedded Workbench和MCU的CRC模块来检查代码的完整性”中介绍了如何在IAR Embedded Workbench中配置生成对应代码区域的CRC校验码。但是在IDE里面的Linker > Checksum选项里面只能配置一个地址区间并且只能生成一个Checksum。如果有多个地址空间,那么IDE里面的Linker > Checksum选项没有办法满足需求,需要使用命令行的方式。
本文主要介绍如何在IAR Embedded Workbench中计算多个地址区间的Checksum。
两个地址区间生成两个Checksum
假设对应的两个地址空间分别为0x08000000-0x0801FFFB(对应Checksum放到0x0801FFFC)和0x08030000-0x0803FFFB(对应Checksum放到0x0803FFFC)。
不使能Linker > Checksum选项中的配置:

在Linker > Extra Options中添加对应的命令:
--place_holder __checksum1,4,.checksum1,4 --place_holder __checksum2,4,.checksum2,4

在ICF文件中添加对应的命令:
define exported symbol __checksum_begin1 =0x08000000; define exported symbol __checksum_end1 =0x0801FFFB; define exported symbol __checksum_begin2 =0x08030000; define exported symbol __checksum_end2 =0x0803FFFB; place at address mem: 0x0801FFFC { section .checksum1 }; place at address mem: 0x0803FFFC { section .checksum2 };
在Build Actions里面添加对应生成Checksum的命令:
ielftool --fill 0xFF;0x08000000-0x0801FFFB --fill 0xFF;0x08030000-0x0803FFFB --checksum __checksum1:4,crc32:Li,0xffffffff;0x08000000-0x0801FFFB --checksum __checksum2:4,crc32:Li,0xffffffff;0x08030000-0x0803FFFB --verbose "$TARGET_PATH$" "$TARGET_PATH$"


Build并查看对应的Build Log和MAP文件检查Checksum相关的信息:


两个地址区间生成一个Checksum
假设对应的两个地址空间分别为0x08000000-0x0801FFFF和0x08030000-0x0803FFFB(对应Checksum放到0x0803FFFC)。
不使能Linker > Checksum选项中的配置:

在Linker > Extra options中添加对应的命令:
--place_holder __checksum,4,.checksum,4

在ICF文件中添加对应的命令:
define exported symbol __checksum_begin1 =0x08000000;
define exported symbol __checksum_end1 =0x0801FFFF;
define exported symbol __checksum_begin2 =0x08030000;
define exported symbol __checksum_end2 =0x0803FFFB;
place at address mem: 0x0803FFFC { section .checksum };
在Build Actions里面添加对应生成Checksum的命令:
ielftool--fill0xFF;0x08000000-0x0801FFFF--fill0xFF;0x08030000-0x0803FFFB--checksum __checksum:4,crc32:Li,0xffffffff;0x08000000-0x0801FFFF;0x08030000-0x0803FFFB --verbose "$TARGET_PATH$" "$TARGET_PATH$"


Build并查看对应的Build Log和MAP文件检查相关Checksum的信息:


总结
本文通过两个例子介绍了如何在IAR Embedded Workbench中计算多个地址区间的Checksum,包括多个地址区间生成多个Checksum和多个地址区间生成一个Checksum。
审核编辑:汤梓红
-
IAR
+关注
关注
5文章
400浏览量
38337 -
文件
+关注
关注
1文章
587浏览量
25914 -
代码
+关注
关注
30文章
4941浏览量
73137 -
命令行
+关注
关注
0文章
81浏览量
10697
原文标题:在IAR Embedded Workbench中计算多个地址区间的Checksum
文章出处:【微信号:IAR爱亚系统,微信公众号:IAR爱亚系统】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
如何在IAR Embedded Workbench中配置生成对应代码区域的CRC校验码
在IAR版本为Embedded Workbench 6.5 Kickstart 1.4 编绎报错怎么解决?
在 IAR Embedded Workbench中进行ARM+RISC-V多核调试
IAR Systems发布 IAR Embedded Wor
IAR_embedded_Workbench用户指南介绍
IAR Embedded Workbench®集成开发环境已全面支持航顺芯片HK32MCU系列
IAR Embedded Workbench创新工具促进智能医疗设备小型化
如何在IAR Embedded Workbench中填充提高系统的健壮性
YRDKRX62N 快速入门指南(IAR Embedded Workbench)
YRDKRL78G13 快速入门指南(IAR Embedded Workbench) Rev.1.01
YRDKRX62N 快速入门指南(IAR Embedded Workbench)
YRDKRL78G13 快速入门指南(IAR Embedded Workbench) Rev.1.01
适用于AVR单片机的IAR embedded Workbench入门指南

在IAR Embedded Workbench中计算多个地址区间的Checksum
评论