工具/软件:TI C/C++编译器
大家好、团队、
我需要在编译后计算应用程序的 CRC、并将 CRC 插入位于固定或计算位置的最终输出文件中、并使用该 CRC 与在运行时计算的 CRC 进行比较。
我想知道是否有一种将 CRC 附加到最终输出文件的方法。 我不想使用链接器生成的 CRC 表。
我使用的是 CCS V9.2和编译器18.12.3。
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.
工具/软件: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
感谢 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 表的子章节。
谢谢、此致、
乔治