请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号:MSPM0G3507 工具与软件:
尊敬的 Supportteam:
我实际上是在尝试通过链接器文件的文本文件部分激活 CRC 校验和算法。
我明白了如何激活和配置链接器命令文件。
例如:
.text : palign (8){}> flash | FLASH2, crc_table(crc_table_for_text,algorithm= CRC32_PRIME)
我不确定的是如何使用硬件 CRC 组件在 MSPM0G3507上正确实现它。
据我所知、我必须首先初始化 CRC 组件:
空 BSL_CRC_Init (void)
{
/*重置并启用 CRC */的电源
DL_CRC_RESET (BSL_CRC);
DL_CRC_enablePower (BSL_CRC);
while (DL_CRC_isPowerEnabled (BSL_CRC)!= true){
}
/*初始化 CRC 模块*/
DL_CRC_INIT (BSL_CRC、DL_CRC_32_polynomial、DL_CRC_BIT_REVERRIDE、
DL_CRC_INPUT_ENDIANESS_LITT_ENDIAN、DL_CRC_OUTPUT_BYTESWAP_DISABLED);
}
但问题开始了。 1)是 CRC32_PRIME 与 DL_CRC_32_polynomial 相同
2) 2)如何调用计算正确、这是 BSL 示例中间接提供的正确方法吗?
uint32_t bsl_ci_calculateCRC (uint8_t *数据、uint32_t dataSize)
{
uint32_t bufferIndex =(uint32_t) 0;
/*设置种子值以重置计算*/
DL_CRC_setSeed32 (BSL_CRC、BSL_CRC_SEED);
/*将数据馈入 CRC 模块*/
for (bufferIndex =(uint32_t) 0;bufferIndex < dataSize;bufferIndex++){
DL_CRC_feedData8 (BSL_CRC、data[bufferIndex]);
}
/*返回32位结果*/
返回(DL_CRC_getResult32 (BSL_CRC));
}
或者 TI 是否提供这份工作的相关示例?
如何获取地址和长度,我发现在另一个帖子:
如何使用已知值来填充间隙和未使用的闪存? - Code Composer Studio 论坛- Code Composer Studio ︎- TI E2E 支持论坛
这解决了该问题、但无法解决如何正确实现硬件 CRC 的使用。
如何使用已知值来填充间隙和未使用的闪存? - Code Composer Studio 论坛- Code Composer Studio ︎- TI E2E 支持论坛
这解决了该问题、但无法解决如何正确实现硬件 CRC 的使用。