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

两个地址区间生成两个Checksum

假设对应的两个地址空间分别为0x08000000-0x0801FFFB(对应Checksum放到0x0801FFFC)和0x08030000-0x0803FFFB(对应Checksum放到0x0803FFFC)。

不使能Linker > Checksum选项中的配置:

Image

在Linker > Extra Options中添加对应的命令:

--place_holder __checksum1,4,.checksum1,4--place_holder __checksum2,4,.checksum2,4

Image

在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$"    

Image

Image

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

Image

Image

两个地址区间生成一个Checksum

假设对应的两个地址空间分别为0x08000000-0x0801FFFF和0x08030000-0x0803FFFB(对应Checksum放到0x0803FFFC)。

不使能Linker > Checksum选项中的配置:

Image

在Linker > Extra options中添加对应的命令:

--place_holder __checksum,4,.checksum,4

Image

在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 --fill 0xFF;0x08000000-0x0801FFFF --fill 0xFF;0x08030000-0x0803FFFB --checksum __checksum:4,crc32:Li,0xffffffff;0x08000000-0x0801FFFF;0x08030000-0x0803FFFB --verbose "$TARGET_PATH$" "$TARGET_PATH$"  

      

Image

Image

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

Image

Image

总结

本文通过两个例子介绍了如何在IAR Embedded Workbench中计算多个地址区间的Checksum,包括多个地址区间生成多个Checksum和多个地址区间生成一个Checksum。

参考资料:

  1. IAR C/C++ Development Guide (define symbol directive,--place_holder, The IAR ELF Tool—ielftool)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值