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.

[参考译文] 编译器/MSP430F5438A:将 CRC 附加到输出文件。

Guru**** 2540720 points


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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/898475/compiler-msp430f5438a-appending-crc-to-the-output-file

器件型号:MSP430F5438A

工具/软件:TI C/C++编译器

大家好、团队、

我需要在编译后计算应用程序的 CRC、并将 CRC 插入位于固定或计算位置的最终输出文件中、并使用该 CRC 与在运行时计算的 CRC 进行比较。

我想知道是否有一种将 CRC 附加到最终输出文件的方法。 我不想使用链接器生成的 CRC 表。

我使用的是 CCS V9.2和编译器18.12.3。

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

    嗨、Ashish、

    我不认为这对于像这样的整个应用是可能的...  在阅读有关该主题的其他一些 E2E 帖子后、CCS 似乎只能在链接不同段并将其存储为 CRC 表时自动计算这些段的 CRC。  以下是解释这一点的主题: https://e2e.ti.com/support/tools/ccs/f/81/t/825402 

    本文档8.9节链接器生成的 CRC 表中也提供了更多信息。   

    我还将把这个线程移到 Code Composer 论坛、以确认这一点。   

    谢谢、

    JD

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

    我确认 Crutchfield 先生的答复是正确的。

    谢谢、此致、

    乔治

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

    感谢 JD/George 的回答。

    我尝试使用由链接器生成的 CRC 表、但没有什么疑问。  

    我在链接器中定义了以下部分和存储器

    存储器

    SFR:origin = 0x0000、length = 0x0010

    外设_8位:origin = 0x0010、length = 0x00F0

    peripherals_16BIT:origin = 0x0100、length = 0x0100

    RAM:origin = 0x1C00,length = 0x4000

    INFOA:origin = 0x1980,length = 0x0080

    INFOB:origin = 0x1900,length = 0x0080

    INFOC:origin = 0x1880,length = 0x0080

    INFOD:origin = 0x1800,length = 0x0080

    CRCSEC:origin = 0x5C00,length = 0x0040

    闪存:origin = 0x5C40,length = 0xA340

    FLASH2:origin = 0x10000、length = 0x2B000

    部分

    .text:{}>> FLASH | FLASH2、CRC_TABLE (__ops_crc)/* Code */

    文本:_ISR:{}> FLASH、CRC_TABLE (__ops_CRC)/* ISR 代码空间*

    .const:{}>> FLASH | FLASH2、crc_table (__ops_crc)/*常量数据*/

    这样、我就能够为段生成 CRC、但它为 CRC 生成了3条具有3个不同值的记录。 那么、我的问题是

    1.如何为需要 CRC 的所有段生成单个 CRC。

    2.在上述情况下,这3个 CRC 之间的关系是什么。

    谢谢、

    Ashish

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

    您的表__ops_crc 有3个条目,每个条目都有(指针、长度、CRC)。 您应该浏览它们、并计算/比较每个 CRC。 [参考 MSP430工具(SLAU131V)第8.4.4节。] F5438A 具有一个 CRC 单元(CRC-CCITT)、该单元可以执行大部分重起。

    CRC 由段生成、以避免段之间的间隙(不确定的内容)问题。 整个图像不存在单个 CRC、因为它是一组片段、而不是一个单位。

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

     Bruce McKenney47378的答复是正确的。  有关更多详细信息、请在 MSP430汇编工具手册中搜索 标题 为链接器生成的 CRC 表的子章节。

    谢谢、此致、

    乔治