打印
[PIC32/SAM]

MPLAB X IDE中使用hexmate工具生成的16位checksum问题

[复制链接]
30200|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
JackTang1994|  楼主 | 2022-7-28 10:27 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
请问下,我在使用hexmate生成的16位checksum与hexmate手册中CheckSum算法代码所生成checksum不一样?以下为hexmate用户手册7.1.1 Addition Algorithms中的checksum生成代码
#include <stdint.h>
typedef uint8_t read_t; // size of data values read and summed
typedef uint16_t result_t; // size of checksum result
// add to offset, n additions of values starting at address data,
// truncating and returning the result
// data: the address of the first value to sum
// n: the number of sums to perform
// offset: the intial value to which the sum is added
result_t ck_add(const read_t *data, unsigned n, result_t offset)
{
result_t chksum;
chksum = offset;
while(n--) {
chksum += *data;
data++;
}
return chksum;
}



实际工程中的checkSum设置:
hexmate ${ImagePath} -FILL=0x3FFF@0x0000:0x7FFB -CK=0x0800-0x0802@0x7FFC+0x00w-2t34g1 -o${ImagePath}
在MPLAB X IDE的Program Memory窗口中查看到的0x400地址处内容为0x3184,如果按照上述checkSum计算方法得到的checksum值为B5,而使用hexmate生成的checksum值为C9

请问下,到底这个hexmate生成的16位checksum算法是怎样的?

使用特权

评论回复
沙发
lcczg| | 2022-7-29 15:55 | 只看该作者
-FILL=0x3FFF@0x0000:0x7FFB
将0x0000到0x7FFB之间未用的空间填充为0X3FF。
-CK=0x0800-0x0802@0x7FFC+0x00w-2t34g1 -o${ImagePath}
计算从0x0800到0x0802的校验和,结果放在0x7FFC,初始值是0x00。校验和结果为2字节宽,算法是加8位值,结果嵌入34。

把你的memory贴图上来看一下呀。

使用特权

评论回复
评论
JackTang1994 2022-10-8 16:08 回复TA
不好意思,我没认真看清楚。后面查看了手册是确实累加算法,我自己看错累加的数据个数了,0x0000-0x7FFB是从0开始的并且包含0x7FFB地址。代码中用的CheckSum是标准的16位CheckSum计算算法。 
板凳
Innercourage| | 2022-11-8 16:53 | 只看该作者

MPLAB X IDE中使用hexmate工具生成的16位checksum问题

不错

使用特权

评论回复
地板
uiint| | 2023-1-5 13:37 | 只看该作者
为什么要使用工具生成呢、              

使用特权

评论回复
5
houjiakai| | 2023-1-5 15:31 | 只看该作者
你直接使用软件读取,然后做校验不行的吗?

使用特权

评论回复
6
hilahope| | 2023-1-6 21:12 | 只看该作者
没有用过hexmate这个工具。

使用特权

评论回复
7
updownq| | 2023-1-7 11:53 | 只看该作者
校验和有什么作用呢?              

使用特权

评论回复
8
JackTang1994|  楼主 | 2023-4-21 17:34 | 只看该作者
houjiakai 发表于 2023-1-5 15:31
你直接使用软件读取,然后做校验不行的吗?

做Bootloader升级用的,IDE生成代码时产生一个checksum,然后MCU程序里再读取升级的bin文件再次计算一次checksum。比对两次checksum来确认checksum镜像文件是否合法。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

29

主题

62

帖子

0

粉丝