|
大家好,我是痞子衡,是正經(jīng)搞技術(shù)的痞子。今天痞子衡給大家介紹的是利用i.MXRT10xx系列內(nèi)部DCP引擎計(jì)算CRC32值時需注意數(shù)據(jù)長度對齊。
MCU 開發(fā)里常常需要 CRC 校驗(yàn)來檢查數(shù)據(jù)完整性,CRC 校驗(yàn)既可以純軟件實(shí)現(xiàn)也可以借助 MCU 片內(nèi)外設(shè)硬件實(shí)現(xiàn)。大部分 MCU 里通常都會包含一個單獨(dú)的硬件 CRC 外設(shè),但是在 i.MXRT 四位數(shù)系列里,翻看參考手冊,我們卻找不到名為 CRC 的外設(shè),難道這么一款高性能 MCU 不支持硬件 CRC?當(dāng)然不是!這個功能藏在一個更強(qiáng)大的數(shù)學(xué)計(jì)算引擎外設(shè)里。
Note:在 i.MXRT10xx 系列上這個引擎是 DCP,在 i.MXRT11xx 系列上這個引擎升級為 CAAM。關(guān)于 DCP 引擎使用,痞子衡寫過一篇文章 《DCP計(jì)算Hash值時需特別處理L1 D-Cache》。最近官方社區(qū)里有人提問,當(dāng)待校驗(yàn) CRC 數(shù)據(jù)長度是 4 字節(jié)整數(shù)倍時,DCP 計(jì)算結(jié)果和一些在線網(wǎng)站上的計(jì)算結(jié)果保持一致(多項(xiàng)式和配置設(shè)置一致),但是當(dāng)數(shù)據(jù)長度不是 4 字節(jié)對齊時,兩者結(jié)果就不一致了,這是怎么回事?今天咱們來聊一聊:
一、DCP對于CRC支持翻看任何一個 i.MXRT10xx 系列的參考手冊,僅在 System Security 章節(jié)有一小段關(guān)于 DCP 特性描述,里面講了能支持 CRC32,但是關(guān)于多項(xiàng)式配置信息沒有提及。 |
|