当前位置:首页 > 操作系统 > 正文内容

痞子衡嵌入式:使用i.MXRT10xx系列内部DCP引擎核算CRC32值时需注意数据长度对齐

邻居的猫1个月前 (12-09)操作系统2047

  咱们好,我是痞子衡,是正派搞技能的痞子。今日痞子衡给咱们介绍的是运用i.MXRT10xx系列内部DCP引擎核算CRC32值时需注意数据长度对齐

  MCU 开发里常常需求 CRC 校验来查看数据完整性,CRC 校验既能够纯软件完成也能够凭借 MCU 片内外设硬件完成。大部分 MCU 里一般都会包括一个独自的硬件 CRC 外设,可是在 i.MXRT 四位数系列里,翻看参阅手册,咱们却找不到名为 CRC 的外设,莫非这么一款高性能 MCU 不支撑硬件 CRC?当然不是!这个功用藏在一个更强壮的数学核算引擎外设里。

  • Note:在 i.MXRT10xx 系列上这个引擎是 DCP,在 i.MXRT11xx 系列上这个引擎晋级为 CAAM。

  关于 DCP 引擎运用,痞子衡写过一篇文章 《DCP核算Hash值时需特别处理L1 D-Cache》。最近官方社区里有人发问,当待校验 CRC 数据长度是 4 字节整数倍时,DCP 核算成果和一些在线网站上的核算成果保持共同(多项式和装备设置共同),可是当数据长度不是 4 字节对齐时,两者成果就不共同了,这是怎么回事?今日咱们来聊一聊:

一、DCP关于CRC支撑

  翻看任何一个 i.MXRT10xx 系列的参阅手册,仅在 System Security 章节有一小段关于 DCP 特性描绘,里边讲了能支撑 CRC32,可是关于多项式装备信息没有提及。

  已然手册没触及太多,那直接撸代码吧,能够参阅 SDK\boards\evkmimxrt10xx\driver_examples\dcp 例程,相关代码满足简略抄写如下。代码里仅 m_handle.swapConfig 设置会改动 CRC 核算成果(由于对源数据做了 swap 处理),除此以外并未供给其他 CRC 多项式参数装备,因而能够根本确定 DCP 支撑的是一个固定参数形式的 CRC32 算法分支,用户无法更改参数。

#include "fsl_dcp.h"

dcp_config_t dcpConfig;
DCP_GetDefaultConfig(&dcpConfig);
DCP_Init(DCP, &dcpConfig);

dcp_handle_t m_handle;
m_handle.channel    = kDCP_Channel0;
m_handle.keySlot    = kDCP_KeySlot0;
// 仅这儿换成 kDCP_InputByteSwap 会影响 CRC 核算成果(res - 4字节)
m_handle.swapConfig = kDCP_NoSwap;
status = DCP_HASH(DCP, &m_handle, kDCP_Crc32, srcBuf, srcLen, res, &resLen);

  这儿痞子衡就不持续卖关子了,DCP 固定支撑的便是经典的 CRC32-MPEG2,其参数如下:

二、DCP-CRC32关于数据对齐处理

  关于 CRC32-MPEG2 算法完成细节可在 IEEE 802 规范手册里找到,原则上其关于源数据长度是没有对齐要求的,但在详细硬件完成上,不同硬件可能会添加结尾数据对齐处理。

  痞子衡找了一块 RT1020-EVK 开发板跑了一下 SDK\boards\evkmimxrt1020\driver_examples\dcp 例程,只对例程做了简略修正如下,从测验成果来看,发现 DCP 对源数据做了结尾 4 字节对齐处理(用 0x00 填充)。

  DCP 这个数据对齐处理特性阐明能在哪里找到呢?咱们知道 DCP 是跟芯片安全特性相关的,i.MX RT 芯片除了有一般参阅手册(RM)之外,还有一个安全参阅手册(SRM),在 SRM 里边会进一步介绍芯片安全相关的外设。在恩智浦官网 i.MXRT 产品主页进入详细型号,切换到 Secure Files 选项(这儿需求账号登录,而且请求拜访权限,可联络 FAE 签 NDA),如果有拜访权限,便能够下载 SRM:

  在 SRM 里咱们看到了 DCP CRC32 关于数据对齐处理战略,与板级测验成果符合:

  文章最初说 i.MXRT11xx 系列里的 CAAM 模块是 i.MXRT10xx 里 DCP 的晋级,咱们仅从 CRC 支撑方面可见一斑,CAAM 关于 CRC 的支撑更丰厚,除了经典算法,还支撑用户自定义参数(这就比较像传统 MCU 里的独自 CRC 外设):

  至此,运用i.MXRT10xx系列内部DCP引擎核算CRC32值时需注意数据长度对齐痞子衡便介绍结束了,掌声在哪里~~~

欢迎订阅

文章会一起发布到我的 博客园主页、CSDN主页、知乎主页、微信大众号 平台上。

微信查找"痞子衡嵌入式"或许扫描下面二维码,就能够在手机上第一时间看了哦。

扫描二维码推送至手机访问。

版权声明:本文由51Blog发布,如需转载请注明出处。

本文链接:https://www.51blog.vip/?id=637

分享给朋友:

“痞子衡嵌入式:使用i.MXRT10xx系列内部DCP引擎核算CRC32值时需注意数据长度对齐” 的相关文章

tomcat中虚拟主机以及web应用程序的装备

tomcat中虚拟主机以及web应用程序的装备

一:新建虚拟主机 1. 在tomcat里新建文件夹myapps,在里面增加ROOT文件,放入网站的主页文件 新建文本文档,输入你想要的内容我这儿的内容是TOM.AI,把文本文档的姓名改成index.htm 2. server.xml下每个host节点就代表一个主机,相当于一个网站。 用记事本翻开to...

linux加固,掌握了linux加固

1. 更新系统和软件: 定期更新系统内核和软件包,以修复已知的安全漏洞。 使用自动化工具(如`aptget update...

linux配置hadoop环境变量,岖疆hadoop

linux配置hadoop环境变量,岖疆hadoop

在Linux系统上配置Hadoop环境变量通常包括以下几个步骤:1. 打开bashrc文件:这个文件通常位于`~/.bashrc`。2. 添加Hadoop环境变量:在文件中添加以下行,确保``是Hadoop安装目录的路径。 ```bash export HADOOP_HOME= expo...

全嵌入式洗碗机,打造现代厨房的智能生活新选择

全嵌入式洗碗机,打造现代厨房的智能生活新选择

全嵌入式洗碗机是一种将洗碗机完全嵌入橱柜中的洗碗机类型,具有以下几个主要特点:1. 美观度提升:全嵌入式洗碗机的操作面板通常位于门板的顶部,关上门后面板被隐藏,与橱柜完美融合,提升厨房的整体美观度。2. 操作便捷:由于操作面板位于顶部,用户在使用时无需弯腰,操作更加人性化。3. 功能全面:全嵌入式洗...

linux清屏,使用快捷键清屏

linux清屏,使用快捷键清屏

在Linux中,有多种方法可以用来清屏。以下是几种常见的方法:1. 使用`clear`命令: 输入`clear`并按回车键,这会清除屏幕上的所有内容。2. 使用`Ctrl L`快捷键: 按住`Ctrl`键的同时按`L`键,这也会清除屏幕上的所有内容。3. 使用`reset`命令: 输...

windows10镜像下载,windows10专业版官方下载

windows10镜像下载,windows10专业版官方下载

你可以通过以下几种方式下载Windows 10镜像:1. 微软官方下载页面: 访问微软官方网站的。 选择你需要的Windows 10版本(如家庭版、专业版等)和语言。 点击“立即下载”按钮,下载ISO文件。下载完成后,你可以使用USB闪存驱动器或DVD创建安装媒体。2. 使用Med...