可悲的是,我被迫使用和模糊基于 ARM Cortex-M1 内核的微控制器。我刚刚发现最新的 CMSIS (5.2) 不支持它,官方 CMSIS文档这样说:
CMSIS 支持全系列的 Cortex-M 处理器(Cortex-M1 除外)和 ARMv8-M 架构,包括安全扩展。
我猜 Cortex-M1 不是很受欢迎。但是没有 CMSIS 我该怎么办?我的供应商提供的支持包很奇怪,其中包含此核心的 CMSIS 文件,即 core_cm1.h;它充满了 ARM 版权,并且似乎不是由所述供应商直接编写的。文件注释列出了 2013 年 2 月 25 日的 CMSIS V3.20 版本。但我在其他任何地方都找不到它,无论是在更高版本的 CMSIS 中还是在更低版本中。
在 Joseph Yiu 的“ARM Cortex-M0 权威指南”中,我发现了这句话:
由于执行时间差异,软件需要进行微调的可能性也很小。在撰写本文时,没有可用于 Cortex-M1 的 CMSIS 软件包。但是,您可以在 Cortex-M1 编程中使用相同的 CMSIS 文件,因为它们基于相同版本的 ARMv6-M 架构。
我比较了 CMSIS 4.0 中的 core_cm0.h 和我的供应商的 core_cm1.h,发现只有非常小的差异(比如,1 << smthn 在几个地方变成了 1u << smthn)。比我从 CMSIS 5.0.2 中区分 core_cm0.h 和来自供应商的 core_cm1.h 发现了很多差异,结构不同,NVIC 的内联函数不同等等。
所以我的问题是:即使对于最新的 CMSIS,将 core_cm0 用于 Cortex-M1 真的安全吗?还是我应该安全行事并坚持我的供应商文件(即使我不知道它从哪里得到它们)?