CMSIS标准PPT课件_第1页
CMSIS标准PPT课件_第2页
CMSIS标准PPT课件_第3页
CMSIS标准PPT课件_第4页
CMSIS标准PPT课件_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、CMSIS标准简介标准简介武汉理工大学 UP研发中心 张国琛第1页/共16页CMSIS CMSIS简介 CMSIS架构 CMSIS文件结构 CMSIS支持的工具链 CMSIS中的中断定义 CMSIS中的编程约定 CMSIS实例 总结第2页/共16页CMSIS的简介的简介Cortex微控制器软件接口标准(Cortex Microcontroller Software Interface Standard)是)是ARM和一些编译器厂家以及半和一些编译器厂家以及半导体厂家共同遵循的一套标准,是由导体厂家共同遵循的一套标准,是由ARM提提出,专门针对出,专门针对CORTEX-M系列的标准。在该系列的标

2、准。在该标准的约定下,标准的约定下,ARM和芯片厂商会提供一些和芯片厂商会提供一些通用的通用的API接口来访问接口来访问CORTEX内核以及一些内核以及一些专用外设,以减少更换芯片以及开发工具等移专用外设,以减少更换芯片以及开发工具等移植工作所带来的金钱以及时间上的消耗。只要植工作所带来的金钱以及时间上的消耗。只要都是基于都是基于M3的芯片,代码均是可以复用的。的芯片,代码均是可以复用的。第3页/共16页CMSIS简介 根据近期的研究调查,发现在嵌入式开发领域,软件的花费在不断提高,相反硬件的花费却逐年降低,因此嵌入式领域的公司,越来越把精力放到了软件上,但软件在更换芯片或是开发工具的更新换代

3、中,代码的重用性不高,随着CORTEX-M3处理器大量投放市场,ARM意识到建立一套软件开发标准的重要性,因此CMSIS应运而生。第4页/共16页CMSIS的架构 CMSIS可以分为以下3个基本功能层 核内外设访问层 Core Peripheral Access Layer (CPAL) 中间件访问层 Middleware Access Layer (MWAL) 设备访问层 Device Peripheral Access Layer (DPAL)第5页/共16页CMSIS架构 CMSIS的架构如下图所示:第6页/共16页CMSIS架构 Core Peripheral Access Layer

4、 (CPAL) 该层用来定义一些CORTEX-M处理器内部的一些寄存器地址以及功能函数。如对内核寄存器,NVIC,调试子系统的访问。一些对特殊用途寄存器的访问被定义成内联函数或是内嵌汇编的形式。 该层的实现由ARM提供。 Middleware Access Layer (MWAL) 该层定义访问中间件的一些通用API,该层也由ARM负责实现,但芯片厂商需要根据自己的设备特性进行更新。目前该层仍在开发中,还没有更进一步的消息。 Device Peripheral Access Layer (DPAL) 该层和CPAL层类似,用来定义一些硬件寄存器的地址以及对外设的访问函数。另外芯片厂商还需要对异

5、常向量表进行扩展,以实现对自己设备的中断处理。该层可引用CPAL层定义的地址和函数,该层由具体的芯片厂商提供。 第7页/共16页CMSIS文件结构 CMSIS首先对文件名的定义给出了标准core_cm3.h Cortex-M3 global declarations and definitions, static function definitionscore_cm3.c Cortex-M3 global definitions.h Top-level header file (device specific). To be included by application code.Incl

6、udes core_cm3.h and system_.hsystem_.h Device specific declarationssystem_.c Device specific definitions, e.g. SystemInit() 应用程序只需包含.h 即可。第8页/共16页 以STM32为例,来看下相关的文件名定义,以及它们的相互关系。 第9页/共16页由于CORTEX-M3有一些可选硬件如MPU,在中包含和system_.h时需注意以下一点,以为例。/* Configuration of the Cortex-M3 Processor and Core Peripheral

7、s */#define _MPU_PRESENT 0 /*! STM32 does not provide a MPU present or not*/#define _NVIC_PRIO_BITS 4 /*! STM32 uses 4 Bits for the Priority Levels */#define _Vendor_SysTickConfig 0 /*! Set to 1 if different SysTick Config is used */#include core_cm3.h /* Cortex-M3 processor and core peripherals */#

8、include system_stm32.h /* STM32 System */即需定义以上三个宏之后,在包含相应的头文件,因为这些头文件中用到了这些宏。注意:如果_Vendor_SysTickConfig 被定义为1,则在中定义的SysTickConfig()将不被包含,因此厂商必须在中给以实现。第10页/共16页CMSIS支持的工具链 CMSIS目前支持三大主流的工具链,即ARM RealView (armcc), IAR EWARM (iccarm), and GNU Compiler Collection (gcc). 在中有如下定义: /* define compiler spec

9、ific symbols */ #if defined ( _CC_ARM ) #define _ASM _asm /*! asm keyword for armcc */ #define _INLINE _inline /*! inline keyword for armcc */ #elif defined ( _ICCARM_ ) #define _ASM _asm /*! asm keyword for iarcc */ #define _INLINE inline /*! inline keyword for iarcc. Only avaiable in High optimiza

10、tion mode! */ #define _nop _no_operation /*! no operation intrinsic in iarcc */ #elif defined ( _GNUC_ ) #define _ASM asm /*! asm keyword for gcc */ #define _INLINE inline /*! inline keyword for gcc #endif第11页/共16页MISRA-C CMSIS要求定义的API以及编码与MISRA- C 2004规范兼容。MISRA-C是由Motor Industry Software Reliabili

11、ty Association提出的,意在增加代码的安全性,该规范提出了一些标准。 如Rule 12. 不同名空间中的变量名不得相同。 Rule 13. 不得使用char, int, float, double, long等基本类型,应该用自己定义的类型显示表示类型的大小,如CHAR8, UCHAR8, INT16, INT32, FLOAT32, LONG64, ULONG64等。 Rule 37. 不得对有符号数施加位操作,例如 1 4 将被禁止,必须写 1UL 4; 第12页/共16页CMSIS中的中断定义中断号的定义,在中typedef enum IRQn/* Cortex-M3 Pro

12、cessor Exceptions Numbers *、NonMaskableInt_IRQn = -14, /*! 2 Non Maskable Interrupt */MemoryManagement_IRQn = -12, /*! 4 Cortex-M3 Memory Mgmt Interrupt */BusFault_IRQn = -11, /*! 5 Cortex-M3 Bus Fault Interrupt */UsageFault_IRQn = -10, /*! 6 Cortex-M3 Usage Fault Interrupt */SVCall_IRQn = -5, /*! 1

13、1 Cortex-M3 SV Call Interrupt */DebugMonitor_IRQn = -4, /*! 12 Cortex-M3 Debug Monitor Interrupt */PendSV_IRQn = -2, /*! 14 Cortex-M3 Pend SV Interrupt */SysTick_IRQn = -1, /*! 15 Cortex-M3 System Tick Interrupt */* Device specific Interrupt Numbers */UART_IRQn = 0, /*!AIRCR, GPIOB, LDMIAEQ外设访问函数以及中断和中断处理函数用大小写(“CamelCase)定义例如:SysTickConfig(),DebugMonitor_IRQn对一些外设的操作函数前面讲相应的前缀例如:ITM_SendChar(),NVIC_SystemReset()2.注释 /* * brief Enable Interrupt in NVIC Interrupt Controller *

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论