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.

[参考译文] CC2652R:sblAppEx设备CRC问题

Guru**** 2466550 points
Other Parts Discussed in Thread: CC2652R

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

https://e2e.ti.com/support/wireless-connectivity/zigbee-thread-group/zigbee-and-thread/f/zigbee-thread-forum/1101664/cc2652r-sblappex-device-crc-question

部件号:CC2652R

我使用 sblAppEx_1_03_00_00源文件sblAppEx.cpp进行了检查,发现cc2652芯片组的流程步骤如下所示:

(1)收集一些变量(baudrate,deviceType,filename,devFlashBase,bEnableXosc),

(2) 创建SblDevice并连接。

(3) 打开FW文件(文件名大小为36.0448万字节)并计算文件校验和以具有fileCrc值。

(4) 擦除闪存(36.0448万字节)和写入闪存(36.0448万字节)。

(5)计算闪存内容的CRC校验和以具有devCrc值。

(6)比较fileCrc和devCrc以确保FW闪存是否正常。

(7)重置设备。

如果在固件与闪存内容相同时,在(3)和(4)之间添加额外的步骤(与(5)相同)以不刷新固件,如下所示:

(1)收集一些变量(baudrate,deviceType,filename,devFlashBase,bEnableXosc),

(2) 创建SblDevice并连接。

(3) 打开FW文件(文件名大小为36.0448万字节)并计算文件校验和以具有fileCrc值。

(4)计算闪存内容的CRC校验和,以具有devCrc值[值A]。  如果固件与闪存内容相同,请将fileCrc和devCrc & NOT与闪存固件进行比较。

(5) 擦除闪存(36.0448万字节)和写入闪存(36.0448万字节)。

(6)计算闪存内容的CRC校验和,以具有devCrc值[值B]。

(7)比较fileCrc和devCrc以确保FW闪存是否正常。

(8)重置设备。

我的问题是:[值A]是否与[值B]相同? 为什么?

(注意:我们已将sblAppEx移植到ARM平台,但我验证并发现[值A]在 每次再次运行时似乎有不同的值。 我从CCS工具构建固件)

彼得。

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

    您好Peter,

    CC2652R闪存上可用的字节总数为36.0448万 字节(352 KB,其中1 KB等于1024 字节)。  是否对每个calculateCrc32实例使用相同的devFlashBase和byteCount参数来生成devCrc值?  如果闪存的内容没有改变,我希望最终结果是相同的。  您是否说CRC值存在差异,这意味着闪存发生了您没想到的变化?  是否可以对设备编程前后读取的整个闪存区域(0x00至0x5.8万)进行比较?  执行连续的CRC命令时,您是否获得相同的值?

    此致,
    Ryan

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

    您好,Ryan:

    我不执行步骤(8)就重新构建源代码,这样就可以正常运行。 设备重置时是否需要更新闪存?

    我的测试步骤是:当我使用选定的FW (a.bin)运行 时,如果先前刷新的内容是FW (b.bin),则将执行步骤1 ~步骤8 (刷新FW)。

    然后使用相同的FW (a.out) 再次运行,并希望 它可以在步骤(4)退出。 但它会经过步骤1 ~步骤8。 超出我的预期

    步骤(8)似乎将对 闪存内容进行一些更新,这些内容以前在下一轮具有devCrc值[值A]。

    我再次重新测试:当我使用选定的固件(a.bin)运行 时,当先前刷新的内容是FW (b.bin)时,它将执行步骤1 ~步骤7 (刷新FW)。

    然后使用相同的FW (a.out) 再次运行,并希望 它可以在步骤(4)退出。 是的。

    此致,

    彼得。

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

    如果您的固件使用NV驱动程序,则可能会在运行时修改闪存的这一部分,这会导致CRC发生变化。  例如,Zigbee项目使用NV闪存来保留重要的网络信息,并在每次重置设备时更新存储的帧计数器。  因此,您需要修改CRC功能以避开NV区域,以实现所需的应用。

    此致,
    Ryan

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

    您好,Ryan:

    我正在开发Zigbee FW。

     352 KB布局计划的参考信息? 例如,仅文本的页面范围,NV闪存,CCFG区域(最后一页,8 KB大小)等

    彼得。

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

    已更新:0x0万 ~ 0x5.2万-1是纯文本区域。

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

    闪存布局由项目的命令链接器(command linker,cmd)文件确定,生成更多信息并在生成项目后将其存储在映射文件的输出文件夹中。

    此致,
    Ryan