器件型号: TMS570LC4357
我在 FULL_CPU 模式下使用 CRC 模块、并尝试在软件中重现 PSA 签名寄存器算法。
来自 TRM:
多项式:
x^64 + x^4 + x^3 + x + 1
首先移动数据的 MSB。
我通过将单个 64 位值写入 PSA 签名寄存器并读回 PSA_SIGREGL1 和 PSA_SIGREGH1 来执行以下硬件测试。
观察到的签名:
输入= 0x0000000000000000
输出= 0x0000000000000000
输入= 0xFFFFFFFFFFFFFFFF
输出= 0x000000CA00000000
输入= 0x0102030405060708
输出= 0x1B362D6C775A41D8
输入= 0x80000000000000
输出= 0x800000000000AF
我使用以下公式实现了 TRM 中所述的 LFSR:
-
多项式 x^64 + x^4 + x^3 + x + 1
-
MSB 优先移位
-
64 位种子= 0
软件会重现一些结果、但并不完全匹配所有硬件签名。
TI 能否阐明:
-
PSA 签名寄存器是否使用 TRM 第 18.2.3 节中显示的确切多项式?
-
在压缩之前、是否在内部应用了任何字节交换或字交换?
-
将 64 位值写入 PSA 签名寄存器时、向 LFSR 显示的确切位顺序是多少?
-
PSA_SIGREGL1 和 PSA_SIGREGH1 的返回顺序是否与内部 64 位签名相同?
我的目标是在 PC 应用上生成确切的 PSA 签名、以实现与 TMS570LC43x 目标的互操作性。