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.

[参考译文] TMS320F2.8027万:启动ROM校验和

Guru**** 2587345 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/654610/tms320f28027-boot-rom-checksum

部件号:TMS320F2.8027万

您好,

我需要计算 TMS320F2.8027万的启动ROM校验和

根据TMS320x2802x Piccolo引导ROM参考指南,对ROM中的所有地址(校验和位置除外)进行64位求和,将生成此校验和。

为了计算校验和,我在一个计算相同块的类似处理器上按照下面的checksum.c示例进行了操作:

https://e2e.ti.com/support/microcontrollers/c2000/f/171/t/185956</s>18.5956万

这些块包括:

MEMORY_BLOCK MEMBLOCK [NUMBLOCKS]={
(ui16 *) 0x003FE000,(ui16 *) 0x003FFFBB,
(ui16 *) 0x003FFFC0,(ui16 *) 0x003FFFFFFF
};

在算法的块内,使用了以下计算:

lowHalfLSW +=*currentVal ^((unsigned long) currentVal & 0x0000FFFF);

lowHalfMSW +=*currentVal ^((unsigned long) currentVal & 0x0000FFFF);

但是,我得到了不正确的校验和。 2.8027万的校验和算法在数据块中是否可能不同? 正确的算法是什么?

谢谢你。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Sam

    链路上提供的算法是正确的,即用于计算校验和的算法。
    校验和已在引导ROM的v 3.0 中更新,请使用以下内容更新您的文件,并查看是否修复了该问题。

    #define NUMBLOCKS 3.

    MEMORY_BLOCK MEMBLOCK [NUMBLOCKS]={
    (ui16 *) 0x003FC000,(ui16 *) 0x003FDFFF,
    (ui16 *) 0x003FE000,(ui16 *) 0x003FFFBB,
    (ui16 *) 0x003FFFC0,(ui16 *) 0x003FFFFFFF
    };

    此致
    Chris
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好,Chris:

    感谢您的回复。

    我仍然无法使其正常工作。

    计算的校验和确实通过更新块(我得到的校验和现在是0x0.0163万F,C8CB,D21E)而发生了变化,它仍然不同于在checksum_ADDR 0x003FFFBC处读取的0x0000,10BE,F62A,0B1D。

    2.8027万硅修订版为B.
    引导ROM的v 3.0 是否包括部分保留内存?

    此致,
    Sam
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Sam

    是的,这就是它的样子。
    代码所有者目前不在办公室,因此我仍在调查此事。

    此致
    Chris
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Sam

    遗憾的是,对于RevB和boot ROM v,3.0 我们计算的校验和确实使用了作为计算一部分检查的保留内存(某些内部数据)。 从您的终端来看,您将无法对这些数据运行计算。 我将为此发布勘误表并更新文档。

    为什么需要验证校验和? 如果您正在检查以确定所使用的芯片,则可以使用启动ROM版本和日期来检查。 我将声明这是一个稳定的设备,因此芯片或启动代码更改的可能性很小。 另一个选项是,由于您拥有我们使用的精确校验和算法,因此根据此线程中初始POST的2个内存块计算校验和,并将该值存储在闪存中以进行检查。

    对此造成的不便,我再次表示歉意。

    此致
    Chris
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好,Chris:

    感谢您的回复。

    验证校验和旨在作为我们数据完整性测试的一部分。 我们将使用您建议的第二个选项来计算校验和。

    此致,
    Sam