通過實際操作發現,完全相同的形式(同樣的flash起始地址和同樣的size),不同的API去計算CMAC(not Boot-MAC)的值,得到的結果顯然是不一樣的。
原因如下:
CSEC_DRV_GenerateMAC 這個API是按照每次1字節去讀取數據的。
CSEC_DRV_GenerateMACAddrMode 猜想這個API是按照每次4個字節去讀取數據的。
因為S32K系列的MCU是little-endian模式(默認情況下)。一個0x12345678的十六進制數被認為是[0x78, 0x56, 0x34, 0x12]。不同的角度去讀取數值,得到的結果是不一樣的。
也就是說,完全相同的形式(同樣的flash起始地址和同樣的size),得到的結果必定是不一樣的。但是用戶可以從不同的角度去“解讀”計算得到的結果,可以認為兩者都是對的。
所以結果不一致在這個芯片下是“正常”的。