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

下载本文档

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

文档简介

CMSIS标准简介 武汉理工大学UP研发中心张国琛 CMSIS CMSIS简介CMSIS架构CMSIS文件结构CMSIS支持的工具链CMSIS中的中断定义CMSIS中的编程约定CMSIS实例总结 CMSIS的简介 Cortex微控制器软件接口标准 CortexMicrocontrollerSoftwareInterfaceStandard 是ARM和一些编译器厂家以及半导体厂家共同遵循的一套标准 是由ARM提出 专门针对CORTEX M系列的标准 在该标准的约定下 ARM和芯片厂商会提供一些通用的API接口来访问CORTEX内核以及一些专用外设 以减少更换芯片以及开发工具等移植工作所带来的金钱以及时间上的消耗 只要都是基于M3的芯片 代码均是可以复用的 CMSIS简介 根据近期的研究调查 发现在嵌入式开发领域 软件的花费在不断提高 相反硬件的花费却逐年降低 因此嵌入式领域的公司 越来越把精力放到了软件上 但软件在更换芯片或是开发工具的更新换代中 代码的重用性不高 随着CORTEX M3处理器大量投放市场 ARM意识到建立一套软件开发标准的重要性 因此CMSIS应运而生 CMSIS的架构 CMSIS可以分为以下3个基本功能层核内外设访问层CorePeripheralAccessLayer CPAL 中间件访问层MiddlewareAccessLayer MWAL 设备访问层DevicePeripheralAccessLayer DPAL CMSIS架构 CMSIS的架构如下图所示 CMSIS架构 CorePeripheralAccessLayer CPAL 该层用来定义一些CORTEX M处理器内部的一些寄存器地址以及功能函数 如对内核寄存器 NVIC 调试子系统的访问 一些对特殊用途寄存器的访问被定义成内联函数或是内嵌汇编的形式 该层的实现由ARM提供 MiddlewareAccessLayer MWAL 该层定义访问中间件的一些通用API 该层也由ARM负责实现 但芯片厂商需要根据自己的设备特性进行更新 目前该层仍在开发中 还没有更进一步的消息 DevicePeripheralAccessLayer DPAL 该层和CPAL层类似 用来定义一些硬件寄存器的地址以及对外设的访问函数 另外芯片厂商还需要对异常向量表进行扩展 以实现对自己设备的中断处理 该层可引用CPAL层定义的地址和函数 该层由具体的芯片厂商提供 CMSIS文件结构 CMSIS首先对文件名的定义给出了标准core cm3 hCortex M3globaldeclarationsanddefinitions staticfunctiondefinitionscore cm3 cCortex M3globaldefinitions hTop levelheaderfile devicespecific Tobeincludedbyapplicationcode Includescore cm3 handsystem hsystem hDevicespecificdeclarationssystem cDevicespecificdefinitions e g SystemInit 应用程序只需包含 h即可 以STM32为例 来看下相关的文件名定义 以及它们的相互关系 由于CORTEX M3有一些可选硬件如MPU 在中包含core cm3 h和system h时需注意以下一点 以STM32 h为例 ConfigurationoftheCortex M3ProcessorandCorePeripherals define MPU PRESENT0 中给以实现 CMSIS支持的工具链 CMSIS目前支持三大主流的工具链 即ARMRealView armcc IAREWARM iccarm andGNUCompilerCollection gcc 在core cm3 h中有如下定义 definecompilerspecificsymbols ifdefined CC ARM define ASM asm asmkeywordforarmcc define INLINE inline inlinekeywordforarmcc elifdefined ICCARM define ASM asm asmkeywordforiarcc define INLINEinline inlinekeywordforiarcc OnlyavaiableinHighoptimizationmode define nop no operation nooperationintrinsiciniarcc elifdefined GNUC define ASMasm asmkeywordforgcc define INLINEinline inlinekeywordforgcc endif MISRA C CMSIS要求定义的API以及编码与MISRA C2004规范兼容 MISRA C是由MotorIndustrySoftwareReliabilityAssociation提出的 意在增加代码的安全性 该规范提出了一些标准 如Rule12 不同名空间中的变量名不得相同 Rule13 不得使用char int float double long等基本类型 应该用自己定义的类型显示表示类型的大小 如CHAR8 UCHAR8 INT16 INT32 FLOAT32 LONG64 ULONG64等 Rule37 不得对有符号数施加位操作 例如1 4将被禁止 必须写1UL 4 CMSIS中的中断定义 中断号的定义 在中typedefenumIRQn Cortex M3ProcessorExceptionsNumbers NonMaskableInt IRQn 14 2NonMaskableInterrupt MemoryManagement IRQn 12 4Cortex M3MemoryMgmtInterrupt BusFault IRQn 11 5Cortex M3BusFaultInterrupt UsageFault IRQn 10 6Cortex M3UsageFaultInterrupt SVCall IRQn 5 11Cortex M3SVCallInterrupt DebugMonitor IRQn 4 12Cortex M3DebugMonitorInterrupt PendSV IRQn 2 14Cortex M3PendSVInterrupt SysTick IRQn 1 15Cortex M3SystemTickInterrupt DevicespecificInterruptNumbers UART IRQn 0 ExampleInterrupt IRQn Type 系统级的异常号已经确定 不能更改 且必须为负值 以和设备相关的中断区别 CMSIS的中断定义 中断处理函数的定义 一般在启动代码中声明 加入weak属性 因此可在其他文件中再一次实现 如下所示 AREARESET DATA READONLYEXPORT Vectors VectorsDCD initial sp TopofStackDCDReset Handler ResetHandlerDCDNMI Handler NMIHandlerDCDHardFault Handler HardFaultHandlerDCDMemManage Handler MPUFaultHandlerDCDBusFault Handler BusFaultHandlerDCDUsageFault Handler UsageFaultHandlerDCD0 ReservedDCD0 ReservedDCD0 ReservedDCD0 ReservedDCDSVC Handler SVCallHandlerDCDDebugMon Handler DebugMonitorHandlerDCD0 ReservedDCDPendSV Handler PendSVHandlerDCDSysTick Handler SysTickHandler ExternalInterruptsDCDWWDG IRQHandler WindowWatchdog CMSIS的编程约定 1 标识符CoreRegisters PeripheralRegisters CPUInstructions 用大写字母定义例如 NVIC AIRCR GPIOB LDMIAEQ外设访问函数以及中断和中断处理函数用大小写 CamelCase 定义例如 SysTickConfig DebugMonitor IRQn对一些外设的操作函数前面讲相应的前缀例如 ITM SendChar NVIC SystemReset 2 注释 briefEnableInterruptinNVICInterruptController paramIRQn TypeIRQnspecifiestheinterruptnumber returnnone EnableadevicespecificinteruptintheNVICinterruptcontroller Theinterruptnumbercannotbeanegativevalue CMSIS实例 include stm32 h include main h volatileunsignedintseconds

温馨提示

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

评论

0/150

提交评论