This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] UCD3138A64:UCD3138A64校验和计算。

Guru**** 2318830 points
Other Parts Discussed in Thread: UCD3138A64, UCD3138
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/power-management-group/power-management/f/power-management-forum/571708/ucd3138a64-ucd3138a64-checksum-calculation

部件号:UCD3138A64
主题中讨论的其他部件: UCD313.8064万UCD3138

您好,

我必须开发一个固件来比较UCD3138A64的闪存的校验和(一旦编程-使用0xEF命令)和我以前在目标内存中编程的源文件的校验和。 这是验证固件是否在MCU内正确编程所必需的。

对于UCD313.8064万,我使用用字节和计算的校验和进行了比较。

使用新的UCD3138A64,我无法进行正确的比较。 我尝试对所有字节数和32位字词进行求和,但结果总是失败。

我必须使用哪种方法来计算校验和?

谢谢你。

此致,

Giovanni

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    为了加快代码的速度,我们一次完成了一个32位字。 它将它们作为无符号32位进位数。 下面是代码:

    void calculate_checksum (注册UINT32 *开始地址,注册UINT32 *结束地址)

    register unsigned long lcs = long校验和;//使用本地寄存器变量获取速度。

    while (start_address < end_address)

    lcs = lcs +*开始地址;
    lcs = lcs +(UINT32)*(start_address +1);
    start_address = start_address + 2;
    }
    long校验和= lcs;
    }
    我们一次执行2次,以加快速度-将环路开销减少2倍。
    请注意,结果为长- 64位。 所以我们使用8个字节来存储校验和。

    它的速度提高了4倍。 UCD3138上的32K校验和大约需要10毫秒,而这里的64K校验和大约需要5毫秒。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Bower先生,您好!

    根据您的建议,我解决了问题。

    非常感谢!

    此致,

    Giovanni Salvador