19.9 CMSIS编程标准
引 言
ARM公司于2008年11 月12 日发布了arm Cortex微控制器软件接口标准(CMSIS:Cortex Microcon-troller Software InteRFace Standard)。CMSIS 是独立于供应商的Cortex-M 微控制器系列硬件抽象层,为芯片厂商和中间件供应商提供了连续的、简单的微控制器软件接口,简化了软件复用,降低了Cortex-M0上操作系统的移植难度,并缩短了新入门的微控制器开发者的学习时间和新产品的上市时间。
根据近期的调查研究,软件开发已经被嵌入式行业公认为最主要的开发成本。图 19.9-1 为近年来软件开发与硬件开发成本对比图。因此,arm 与Atmel、IAR、Keil、hami-nary Micro、Micrium、NXP、SEGGER 和ST等诸多芯片和软件厂商合作,将所有 Cortex芯片厂商产品的软件接口标准化,制定了CMSIS 标准。此举意在降低软件开发成本,尤其针对新设备项目开发,或者将已有软件移植到其他芯片厂商提供的基于 Cortex微控制器的微控制器的情况。有了该标准,芯片厂商就能够将他们的资源专注于产品外设特性的差异化,并且消除对微控制器进行编程时需要维持的不同的、互相不兼容的标准的需求,从而达到降低开发成本的目的。
19.9.1 CMSIS标准的软件架构
如图19.9-2 所示,基于CMSIS 标准的软件架构主要分为以下 4层:用户应用层、操作系统及中间件接口层、CMSIS层、硬件寄存器层。其中 CMSIS层起着承上启下的作用:一方面该层对硬件寄存器层进行统一实现,屏蔽了不同厂商对 Cortex-M 系列微微控制器核内外设寄存器的不同定义;另一方面又向上层的操作系统及中间件接口层和应用层提供接口,简化了应用程序开发难度,使开发人员能够在完全透明的情况下进行应用程序开发。也正是如此,CMSIS层的实现相对复杂。
图19.9-2 CMSIS 标准的软件架构
CMSIS 层主要分为3部分:
① 核内外设访问层(CPAL):由ARM负责实现。包括对寄存器地址的定义,对核寄存
器、NVIC、调试子系统的访问接口定义以及对特殊用途寄存器的访问接口(如 CONTROL
和xPSR)定义。由于对特殊寄存器的访问以内联方式定义,所以 arm 针对不同的编译器统
一用_INLINE来屏蔽差异。该层定义的接口函数均是可重入的。
② 中间件访问层(MWAL):由arm 负责实现,但芯片厂商需要针对所生产的设备特性
对该层进行更新。 该层主要负责定义一些中间件访问的 API函数,例如为 TCP/IP协议栈、
SD/MMC、USB 协议以及实时操作系统的访问与调试提供标准软件接口。该层在1.1 标
准中尚未实现。
③ 设备外设访问层(DPAL):由芯片厂商负责实现。该层的实现与 CPAL类似,负责对
硬件寄存器地址以及外设访问接口进行定义。该层可调用 CPAL 层提供的接口函数,同时根
据设备特性对异常向量表进行扩展,以处理相应外设的中断请求。
…………………………
书籍下载地址(复制到下载工具进行下载):
https://files.cnblogs.com/wenziqi/ARMCortex-M0原理与应用实践.part1.rar
https://files.cnblogs.com/wenziqi/ARMCortex-M0原理与应用实践.part2.rar
注:书籍内容会不定期进行更新!