基于linux5.15.5的IMX 参考手册 — 18
8.3智能卡接口- SIM (Subscriber Identification Module)
8.3.1介绍
用户识别模块(SIM)是为方便与SIM卡或欧洲芯片预付费电话卡通信而设计的,并与ISO/IEC 7816-3标准兼容。SIM卡模块有一个端口,可以用来连接各种卡片。与微控制器单元(MCU)的接口是32位连接,如参考文档IP总线规范中所述。
8.3.2操作模式
SIM模块I/O接口可以在下面总结的三种操作模式中的一种操作。
•两线制接口:IC引脚RX和TX都用于与智能卡的接口。
•外部单线接口:IC引脚RX和TX在IC外部捆绑,路由到智能卡。
•内部单线接口:IC引脚TX路由到智能卡。接收引脚RX连接到IC内部的TX引脚。
8.3.3外部信号说明
•SIM_CLK: SIM模块为智能卡提供的时钟。典型频率为1mhz至5mhz。这个时钟是引脚SIM_TRXD上数据速率的372倍。
•SIM_RST_B: SIM卡到智能卡的复位信号。
•SIM_SVEN:智能卡电源使能控制信号。
•SIM_TRXD:从SIM模块到智能卡的发送/接收日期。
•SIM_PD:智能卡插入检测。
8.3.4源代码结构
8.3.5菜单配置选项
通过menuconfig配置内核选项来启用模块:
Device Drivers > MXC support drivers > MXC SIM Support
8.3.6软件框架
下图显示了SIM TX和RX软件流程。
8.4安全非易失性存储(SNVS)
8.4.1介绍
有关安全非易失性存储(SNVS)的更多信息,请参见相关SoC的i.MX安全手册。
SNVS是一个与CAAM和SRTC接口的模块。
与CAAM相关的SNVS业务请参见驱动配置CAAM/SNVS章节。
srtc相关的SNVS业务请参见srtc简介
8.5 SNVS实时时钟(SRTC)
8.5.1介绍
Real Time Clock (RTC)模块用于记录时间和日期。它向用户提供可认证的时间,并在检测到篡改计数器时发出警报。
8.5.2硬件操作
RTC是系统控制器固件提供的伪定时器。只支持读/设时间、读/设报警等基本功能。
8.5.3软件操作
下面介绍RTC驱动程序的软件操作。
8.5.4驱动特性
RTC驱动程序具有以下特性:
•实现Linux操作系统所需的功能,提供实时时钟和告警中断
•警报将系统从低功率模式唤醒
8.5.5源代码结构
RTC模块在drivers/ RTC中实现
8.5.6菜单配置选项
在菜单配置中启用以下模块:
For i.MX 6 select Device Drivers > Real Time Clock > Freescale IMX DryIce Real Time Clock
For i.MX 8 with SC select Device Drivers > Real Time Clock > NXP SC RTC support
For RPMSG select Device Drivers > Real Time Clock > NXP RPMSG RTC support
第九章
NXP eIQ®机器学习
9.1 NXP eIQ机器学习概述
9.1.1简介(ML)
机器学习(ML)是一个计算机科学领域,它起源于20世纪60年代。ML提供了能够在数据中查找模式和规则的算法。ML是一种算法,它允许软件应用程序在预测结果时变得更准确,而无需显式编程。ML的基本前提是构建能够接收输入数据并使用统计分析预测输出的算法,同时在新数据可用时更新输出。2010年,一个名为深度学习的巨大热潮开始了——它是基于神经网络(NN)的ML的一个快速发展的子领域。受人脑的启发,深度学习已经在各种任务(如计算机视觉(CV),自然语言处理(NLP))中取得了最先进的结果。
神经网络能够从数百万个例子中学习复杂的模式。在嵌入式领域,恩智浦处于领先地位。为了继续为客户提供支持,NXP为i.MX创建了NXP eIQ,这是一套ML工具,允许在i.MX 8 QuadMax设备上开发和部署ML应用程序。本章概述了NXP eIQ机器学习技术的具体领域。关于机器学习命令的详细执行,请参阅i.MX机器学习用户指南(IMXMLUG)。
9.1.2 OpenCV
OpenCV是一个开源的计算机视觉库,它的一个模块ML提供传统的机器学习算法。OpenCV中的另一个重要模块是DNN;它为神经网络算法提供支持。
OpenCV为神经网络推理(DNN模块)和经典机器学习算法(ML模块)提供了统一的解决方案。通过包含许多计算机视觉函数,OpenCV使得在短时间内更容易构建复杂的机器学习应用程序,而不依赖于其他库。
OpenCV在计算机视觉领域得到了广泛的采用,并得到了一个强大且非常活跃的社区的支持。关键算法专门针对各种设备和指令集进行优化。对于i.MX, OpenCV使用Arm NEON加速。Arm Neon技术是Arm Cortex-A系列的高级SIMD(单指令多数据)架构扩展。
Neon技术旨在通过加速音频和视频编码/解码、用户界面、2D/3D图形或游戏来改善多媒体用户体验。Neon还可以加速信号处理算法和功能,以加速音频和视频处理、语音和面部识别、计算机视觉和深度学习等应用。
OpenCV DNN模块的核心是实现一个推理引擎,不提供神经网络训练的任何功能。有关支持的模型和支持层的更多细节,请查看官方OpenCV深度学习页面。
OpenCV ML模块包含用于解决机器学习问题的类和函数,如分类、回归或聚类。它涉及的算法包括支持向量机(SVM)、决策树、随机树、期望最大化、k近邻、经典贝叶斯分类器、逻辑回归和增强树。
9.1.3 Arm计算
Arm计算库是针对Arm CPU和GPU架构优化的底层函数集合,目标是图像处理、计算机视觉和机器学习。Arm计算机是一个方便的优化函数库,开发人员可以单独获取这些函数,也可以将其作为复杂管道的一部分来加速算法和应用程序。Arm计算库还支持NEON加速。ARM计算机可以用带有随机权值和输入的DNN模型和使用图形API的AlexNet实例进行演示。
9.1.4 TensorFlow Lite
TensorFlow Lite是一个轻量级版本,也是TensorFlow的下一步。TensorFlow Lite是一个开源软件库,专注于在移动和嵌入式设备上运行机器学习模型(可在www.tensorflow.org/lite获得)。它支持低延迟和小二进制大小的设备上机器学习推理。TensorFlow Lite还支持使用Android OS神经网络API的硬件加速。TensorFlow Lite支持一组针对移动平台调优的核心操作符(量化和浮点)。它们结合了预融合激活和偏差,以进一步提高性能和量化精度。此外,TensorFlow Lite还支持在模型中使用自定义操作。
TensorFlow Lite基于FlatBuffers定义了一种新的模型文件格式。FlatBuffers是一个开源、高效、跨平台的序列化库。它类似于协议缓冲区,但主要的区别是flatbuffer在访问数据之前不需要对辅助表示进行解析/解包步骤,通常与每个对象的内存分配相结合。此外,FlatBuffers的代码占用比协议缓冲区小一个数量级。
TensorFlow Lite有一个新的移动优化的解释器,它的关键目标是保持应用程序的精简和快速。解释器使用静态图排序和自定义(动态程度较低)内存分配器,以确保最小的负载、初始化和执行延迟。
9.1.5 Arm神经网络
Arm NN是由Arm开发的开源推理引擎框架,支持广泛的神经网络模型格式:
•TensorFlow Lite
•ONNX
对于i.MX 8, Arm NN运行在带有NEON的CPU上,并具有多核支持。有关Arm NN的更多细节,请查看Arm NN SDK官方网页。
请注意 Arm神经网络推理引擎已弃用,未来将被删除。
9.1.6 ONNX运行时
ONNX Runtime是微软开发的支持ONNX模型格式的开源推理引擎框架。ONNX Runtime运行在带有NEON的CPU上,它还使用执行提供程序支持GPU/NPU硬件加速器。有关ONNX Runtime的更多细节,请查看官方ONNX Runtime项目网页。
9.1.7 PyTorch
PyTorch是一个开源的机器学习库,用于计算机视觉和自然语言处理等应用程序。它是免费的开源软件。PyTorch为诸如张量计算这样的高级特性提供了一个Python包。关于PyTorch的更多信息,请访问官方网页www.pytorch.org。
9.1.8 DeepViewRTTM
DeepViewRT是一款专为NXP微处理器和微控制器优化的神经网络推理引擎,它不仅实现了自己的计算引擎,还能够利用流行的第三方计算引擎。
9.1.9 TVM
TVM是一个面向cpu、gpu和专用加速器的开放深度学习编译器堆栈。它旨在缩小以生产力为中心的深度学习框架与以性能或效率为中心的硬件后端之间的差距。