ZHCACL4A april 2020 – may 2023 TMS320F280021 , TMS320F280021-Q1 , TMS320F280023 , TMS320F280023-Q1 , TMS320F280023C , TMS320F280025 , TMS320F280025-Q1 , TMS320F280025C , TMS320F280025C-Q1 , TMS320F280040-Q1 , TMS320F280040C-Q1 , TMS320F280041 , TMS320F280041-Q1 , TMS320F280041C , TMS320F280041C-Q1 , TMS320F280045 , TMS320F280048-Q1 , TMS320F280048C-Q1 , TMS320F280049 , TMS320F280049-Q1 , TMS320F280049C , TMS320F280049C-Q1 , TMS320F28075 , TMS320F28075-Q1 , TMS320F28076 , TMS320F28374D , TMS320F28374S , TMS320F28375D , TMS320F28375S , TMS320F28375S-Q1 , TMS320F28376D , TMS320F28376S , TMS320F28377D , TMS320F28377D-EP , TMS320F28377D-Q1 , TMS320F28377S , TMS320F28377S-Q1 , TMS320F28378D , TMS320F28378S , TMS320F28379D , TMS320F28379D-Q1 , TMS320F28379S , TMS320F28384D , TMS320F28384D-Q1 , TMS320F28384S , TMS320F28384S-Q1 , TMS320F28386D , TMS320F28386D-Q1 , TMS320F28386S , TMS320F28386S-Q1 , TMS320F28388D , TMS320F28P650DH , TMS320F28P650DK , TMS320F28P650SH , TMS320F28P650SK , TMS320F28P659DH-Q1 , TMS320F28P659DK-Q1 , TMS320F28P659SH-Q1
本应用报告将介绍 C2000 器件系列中提供的各种 CRC 模块。文中提供了软件示例参考,并重点说明了 CRC 模块之间的差异。此外,节 9还讨论了为特定用例选择 CRC 模块的相关指导。
C2000is a TM ofTI corporate name.
Other TMs
首字母缩写词 | 全称 |
---|---|
BGCRC | 后台循环冗余校验 |
CAN | 控制器局域网 |
CLA | 控制律加速器(F28x 系列器件的协处理器) |
CLB | 可配置逻辑块 |
CM | 连接管理器 |
CRC | 循环冗余校验 |
ECC | 错误校正码 |
EMAC | 以太网介质访问控制器 |
ERAD | 嵌入式实时分析和诊断单元 |
FSI | 快速串行接口 |
PAB | 程序地址总线 |
GCRC | 通用循环冗余校验 |
PROMCRC | 程序 ROM CRC |
PSA | 并行签名分析 |
VCU | Viterbi、复杂数学和 CRC 单元 |
后台循环冗余校验 (BGCRC) 引擎可用于计算存储器区域的 CRC,而无需使用 CPU 或 CLA。然后可以使用 CRC 计算结果来检测存储器损坏。BGCRC 只需配置一次即可使用。BGCRC 在计算 CRC 后与配置的黄金值进行比较,然后可以在发现有任何错误时触发 NMI 或 CLA 任务。
BGCRC 模块能够作为后台进程从存储器中连续读取数据,并在应用程序运行时直接在后台工作。读取发生在空闲时间(此时 CPU、CLA、DMA 等其他主器件均未访问存储块),因此功能访问不受影响。该模块还在读取存储器时执行 ECC/奇偶校验。读取期间发生的任何 ECC 或奇偶校验错误都将通过设置相应的 NMI 标志并生成一个中断(如果已配置)来指示。
该模块还提供了一个用于在配置后锁定和提交寄存器值的选项。CRC 计算时间也可以使用内部看门狗进行监控。引擎需要一个周期来计算每个 32 位字的 CRC。但是,由于 BGCRC 只在空闲时间内工作,因此一个存储块所用的总时间可能因 CPU/DMA/CLA 存储器对配置的存储块的访问情况而异。
该器件在 CPU1 和 CPU2 子系统中都有用于 CPU 和 CLA 的独立 BGCRC 实例。
更多有关计算时间和该模块中其他特性的详细信息,请参阅 TMS320F2838x 微控制器技术参考手册。
如需获取软件支持,请参阅 C2000ware:
通用循环冗余校验 (GCRC) 仅适用于 F2838x 的连接管理器 (Cortex-M) 内核。此 CRC 引擎提供了用于计算 CRC 的自定义多项式选项。它能够计算字节、半字或字数据的 CRC。配置该模块后,CPU/DMA 应向引擎提供数据。
其他特性包括:
该模块还支持固定多项式路径,其中 CRC 配置按照以下值固定。此固定数据路径将在单个周期内计算给定数据集的 CRC。
对于 n 个数据字节,GCRC 需要 2n+2 个周期(针对 0x04c11db7 以外的多项式)。
更多有关该模块的详细信息,请参阅 TMS320F2838x 微控制器技术参考手册。
如需获取软件支持,请参阅 C2000ware:
除了 Viterbi 和复杂数学运算之外,C2000 器件上的 VCU 模块还执行 CRC 计算。该模块提供特殊指令来加速 CRC 计算,如果不使用该模块,在 C28x CPU 上可能需要几个周期进行此计算。C2000 器件上存在 3 种不同类型的 VCU 模块。要确定特定器件上可用的特定 VCU 模块(如果有),请参阅 C2000 实时控制外设参考指南。
该模块支持 8 位、16 位、24 位(VCU0 除外)或 32 位 CRC 的计算。VCRC 模块支持用户可配置的多项式,该多项式的值和大小(1 至 32 位)都很灵活。该模块还支持用户可配置的数据大小(1 至 8 位)。
8 位 CRC 多项式 |
16 位 CRC 多项式 | 24 位 CRC 多项式 | 32 位 CRC 多项式 | 可配置数据和多项式 | |
---|---|---|---|---|---|
VCU0 | 0x07 | 0x8005 0x1021 |
不可用 | 0x4C11DB7 | 不可用 |
VCU2 | 0x07 | 0x8005 0x1021 |
0x5D6DCB | 0x4C11DB7 0x1EDC6F41 |
不可用 |
VCRC | 0x07 | 0x8005 0x1021 |
0x5D6DCB | 0x4C11DB7 0x1EDC6F41 |
1-8 位数据 1-32 位多项式 |
VCU0/VCU2 支持固定多项式(如表 4-1 所示),这些多项式的错误检测功能如下:
更多信息,请参阅 TMS320C28x 扩展指令集技术参考手册。
上述功能为用户提供了多种选择来满足各种应用要求。可以对来自 ROM、RAM 或闪存的数据执行 CRC 计算。VCU 还支持位顺序,可以对“按原样”从存储器获取的数据或翻转的数据计算 CRC,后者称为“反射 CRC”。
C2000Ware 包含用于 VCU 并经过汇编优化的软件库,以及一些通过 C 语言调用的汇编函数演示软件库用法的示例。此外,为了进行比较,可以使用查找表方法(用 C 语言编写)计算 CRC,并获取链接器生成的 CRC(在链接时;这是 C2000 代码生成工具提供的功能)。
这些库支持偶校验或奇校验(字节序)。对于偶校验,CRC 输入计算从存储器中的低字节开始,而对于奇校验,则是从存储器中的高字节开始。
如需获取软件支持,请参阅 C2000ware:
ERAD 模块中的 CRC 单元会监控 CPU 总线,并在执行自检代码时计算 CRC。CRC 单元的主要目的是确保 CPU 在多次迭代中执行相同的软件测试库时保持功能不变。这些 CRC 单元会监控不同的 CPU 接口,不能用于程序或数据存储器的 CRC 计算。
更多详细信息,请参阅 TMS320F28004x 微控制器技术参考手册 和 TMS320F2838x 微控制器技术参考手册。
并行签名分析 (PSA) 可确保控制律加速器 (CLA) 上代码执行的完整性。CLA-PSA 逻辑可用于计算 CLA 的程序地址总线 (PAB) 和数据写入数据总线 (DWDB) 的签名。黄金签名可以离线计算得出,也可以在应用程序的初始化阶段计算得出。随后可以将该计算结果与执行期间计算的签名进行比较,以确保执行代码的正确性。
交叉检查适用于 PAB 的 PSA 将确保代码执行的正确顺序。使用适用于 PAB 的 PSA 可以检测由故障导致的意外代码分支。这是使用多项式 1 + x + x2 + x22 + x32 计算得出的。
适用于 DWDB 的 PSA 可用于确保写入数据的完整性。如果需要计算一组存储器位置的 PSA(用于定期检查配置寄存器、静态存储器内容等的完整性),则需要首先将其读取到 CLA,然后写入到虚拟位置。适用于 DWDB 的 PSA 允许使用 MPSACTL.MPSA2CFG 配置来配置多项式。