CMSIS 标准

野火STM32资料
因为基于 Cortex 系列芯片采用的内核都是相同的,区别主要为核外的片上外设的差异, 这些差异却导致软件在同内核,不同外设的芯片上移植困难。为了解决不同的芯片厂商生 产的 Cortex 微控制器软件 的兼容性问题, ARM 与芯片厂商建立了 CMSIS 标准 (Cortex MicroController Software Interface Standard)。 所谓 CMSIS 标准,实际是新建了一个软件抽象层。见图 10-1
 
CMSIS 标准中最主要的为 CMSIS 核心层,它包括了:
内核函数层:其中包含用于访问内核寄存器的名称、地址定义,主要由 ARM 公司提
供。
设备外设访问层:提供了片上的核外外设的地址和中断定义,主要由芯片生产商提供。
可见 CMSIS 层位于硬件层与操作系统或用户层之间,提供了与芯片生产商无关的硬件抽象层,可以为接口外设、实时操作系统提供简单的处理器软件接口,屏蔽了硬件差异,这对软件的移植是有极大的好处的。STM32 的库,就是按照 CMSIS 标准建立的。
 
 
正点原子STM32资料
STM32 固件库就是函数的集合,那么对这些函数有什么要求呢??这里就涉及到一个 CMSIS 标准的基础知识,这部分知识可以从《 Cortex-M3 权威指南》中了解到, 我们这里只是对权威指南的讲解做个概括性的介绍。经常有人问到 STM32 ARM 以及 ARM7 是什么关系这样的问题,其实 ARM 是一个做芯片标准的公司,它负责的是芯片内核的架构设 计,而 TI ST 这样的公司,他们并不做标准,他们是芯片公司,他们是根据 ARM 公司提供的 芯片内核标准设计自己的芯片。所以,任何一个Cortex-M3 芯片,他们的内核结构都是一样的,不同的是他们的存储器容量,片上外设,IO 以及其他模块的区别。所以你会发现,不同公司设计的 Cortex-M3 芯片他们的端口数量,串口数量,控制方法这些都是有区别的,这些资源他们可以根据自己的需求理念来设计。同一家公司设计的多种 Cortex-m3 内核芯片的片上外设也会有很大的区别,比如 STM32F103RBT STM32F103ZET ,他们的片上外设就有很大的区别。我们可以通过《Cortex-M3 权威指南》中的一个图来了解一下:
 
从上图可以看出,芯片虽然是芯片公司设计,但是内核却要服从 ARM 公司提出的 Cortex-M3内核标准了,理所当然,芯片公司每卖出一片芯片,需要向 ARM 公司交一定的专利费。既然大家都使用的是 Cortex-M3 核,也就是说,本质上大家都是一样的,这样 ARM 公司为了能让不同的芯片公司生产的 Cortex-M3 芯片能在软件上基本兼容,和芯片生产商共同提出了一套标准 CMSIS 标准(Cortex Microcontroller Software Interface Standard) ,翻译过来是“ARM Cortex™ 微控制器软件接口标准”。ST 官方库就是根据这套标准设计的。这里我们又要引用参考资料里面的图片来看看基于 CMSIS 应用程序基本结构:
 
CMSIS 分为 3 个基本功能层:
1) 核内外设访问层: ARM 公司提供的访问,定义处理器内部寄存器地址以及功能函数。
2) 中间件访问层 : 定义访问中间件的通用 API, 也是 ARM 公司提供。
3) 外设访问层:定义硬件寄存器的地址以及外设的访问函数。
从图中可以看出, CMSIS 层在整个系统中是处于中间层,向下负责与内核和各个外设直接打交道,向上提供实时操作系统用户程序调用的函数接口。如果没有 CMSIS 标准,那么各个芯片公司就会设计自己喜欢的风格的库函数,而 CMSIS 标准就是要强制规定,芯片生产公司设计的库函数必须按照 CMSIS 这套规范来设计。其实不用这么讲这么复杂的,一个简单的例子,我们在使用 STM32 芯片的时候首先要进行系统初始化,CMSIS 规范就规定,系统初始化函数名字必须为 SystemInit ,所以各个芯片公司写自己的库函数的时候就必须用 SystemInit 对系统进行初始化。 CMSIS 还对各个外设驱动文件的文件名字规范化,以及函数名字规范化等等一系列规定。上一节讲的函数GPIO_ResetBits 这个函数名字也是不能随便定义的,是要遵循 CMSIS 规范的。
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值