CMSIS 通过集成各种包和模块,从软件角度增强了嵌入式项目。它带有一系列工具、API 和框架,可帮助嵌入式开发人员实现流畅的应用程序构建。此外,从开发的角度来看,实时操作系统和中间件组件提供了多种选择。
CMSIS-Pack 的组织结构使其适用于划分和克服应用程序的复杂要求。随着 5.8.0 版本的发布,CMSIS-NN 和 CMSIS-DSP 已从复合 CMSIS 核心中分离出来,后者是 CMSIS 包的主要组件之一。这种自由裁量权允许集中开发机器学习和信号处理功能,并且包的相应发布周期独立于主要的 CMSIS 核心版本。
CMSIS-DSP 包有一些小的变化,一些 GCC 问题已通过将 DSP 包离散更新到 1.9.0 版本而得到修复。更新后的软件包增强了对 f16 数据类型的支持,以便对接收到的数据进行有效的信号处理。此外,还从存储库中删除了一些预构建的库,以获得更清晰的包源。
TensorFlow Lite 框架将接口机器学习本质添加到硬件应用程序中。更新后的 CMSIS-NN 包在 TensorFlow Lite 微控制器框架支持的功能接口上发生了一些重大变化。另外,这个版本通过 M-Profile Vector Extension 的处理相对更好,这是由于最大池算子的实现。运算符在非重叠区域上工作以减小向量或矩阵的大小。这导致机器学习用例的优化处理。
ARM 嵌入式工具高级总监 Reinhard Keil 表示:“最新的 CMSIS 版本 5.8.0 对在 Cortex-M55 处理器中实现的 Helium 矢量扩展支持有额外的性能改进。这包括优化 CMSIS-DSP 算法集合和用于机器学习应用的高效神经网络内核 CMSIS 集合。”
CMSIS 核心的启动代码
C 启动代码最初是在 CMSIS 5.6.0 中引入的,它增加了代码的可移植性和复杂构建的开发简易性。CMSIS 核心中的设备启动代码现在可以直接用 C 语言编写,这使其独立于编译器工具链。此外,CMSIS 5.8.0 的发布使 C 启动成为设备的默认启动。
进一步讨论,GCC Linker Description 和 GCC Assembler startup 的更新很少。到目前为止,汇编代码使用字节计数来进行 BSS(由符号开始的块)和零部分的初始化的复制/零表。另一方面,C 启动代码使用字数而不是字节数。在 CMSIS 5.8.0 中,两个启动代码变体都使用相同的复制/零表布局。因此,它提供了从汇编代码到 C 启动代码来回切换的灵活性。
Armv8-M Assembler 启动已更新为使用 CMSIS 5.8.0 版本的 GAS 语法。最新的 ARM 编译器 6 支持传统的 Arm Assembler(armasm),使软件向后兼容所有设备。Arm Compiler 6 以 LLVM/Clang 为基础,因此较新处理器的汇编代码需要采用 GAS 语法。
CMSIS 是一个开源项目
CMSIS 是 GitHub 上的一个开源项目。由于先前版本的实现在某些小点上使接口失败,因此很少出现问题。这些问题中的大多数将在下一个版本中得到解决,但可以通过在本地技术堆栈中进行一些更改来解决它们。您可以通过访问CMSIS 5.8.0 版本的 GitHub 查看这些问题和修复。
该存储库是开源的,因此它有助于解决用户和合作伙伴报告的潜在安全漏洞问题。它允许每个用户访问详细的修订历史记录、提交细节和已知问题,这些问题可能会影响一些依赖先前实现的副作用的用户。
CMSIS 中属于软件打包和构建过程的其他组成部分正在转向 Open-CMSIS-Pack 项目,该项目可以增加开发和应用方面的更多可能性。因此,这是一个由 Arm 和 NXP、STMicroelectronics 和 Linaro 等行业合作伙伴推动的开放式治理项目。
审核编辑:郭婷
全部0条评论
快来发表一下你的评论吧 !