欢迎来到三一文库! | 帮助中心 三一文库31doc.com 一个上传文档投稿赚钱的网站
三一文库
全部分类
  • 研究报告>
  • 工作总结>
  • 合同范本>
  • 心得体会>
  • 工作报告>
  • 党团相关>
  • 幼儿/小学教育>
  • 高等教育>
  • 经济/贸易/财会>
  • 建筑/环境>
  • 金融/证券>
  • 医学/心理学>
  • ImageVerifierCode 换一换
    首页 三一文库 > 资源分类 > PPT文档下载  

    Cortex微控制器软件接口标准参考PPT.ppt

    • 资源ID:9257032       资源大小:414.50KB        全文页数:17页
    • 资源格式: PPT        下载积分:4
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录   微博登录  
    二维码
    微信扫一扫登录
    下载资源需要4
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    Cortex微控制器软件接口标准参考PPT.ppt

    1,Cortex微控制器软件接口标准,张国琛 武汉理工大学 UP研发中心,2,CMSIS,CMSIS简介 CMSIS架构 CMSIS文件结构 CMSIS支持的工具链 CMSIS中的中断定义 CMSIS中的编程约定 CMSIS实例 总结,3,CMSIS的简介,Cortex微控制器软件接口标准(Cortex Microcontroller Software Interface Standard)是ARM和一些编译器厂家以及半导体厂家共同遵循的一套标准,是由ARM提出,专门针对CORTEX-M系列的标准。在该标准的约定下,ARM和芯片厂商会提供一些通用的API接口来访问CORTEX内核以及一些专用外设,以减少更换芯片以及开发工具等移植工作所带来的金钱以及时间上的消耗。只要都是基于M3的芯片,代码均是可以复用的。,4,CMSIS简介,根据近期的研究调查,发现在嵌入式开发领域,软件的花费在不断提高,相反硬件的花费却逐年降低,因此嵌入式领域的公司,越来越把精力放到了软件上,但软件在更换芯片或是开发工具的更新换代中,代码的重用性不高,随着CORTEX-M3处理器大量投放市场,ARM意识到建立一套软件开发标准的重要性,因此CMSIS应运而生。,5,CMSIS的架构,CMSIS可以分为以下3个基本功能层 核内外设访问层 Core Peripheral Access Layer (CPAL) 中间件访问层 Middleware Access Layer (MWAL) 设备访问层 Device Peripheral Access Layer (DPAL),6,CMSIS架构,CMSIS的架构如下图所示:,7,CMSIS架构,Core Peripheral Access Layer (CPAL) 该层用来定义一些CORTEX-M处理器内部的一些寄存器地址以及功能函数。如对内核寄存器,NVIC,调试子系统的访问。一些对特殊用途寄存器的访问被定义成内联函数或是内嵌汇编的形式。 该层的实现由ARM提供。 Middleware Access Layer (MWAL) 该层定义访问中间件的一些通用API,该层也由ARM负责实现,但芯片厂商需要根据自己的设备特性进行更新。目前该层仍在开发中,还没有更进一步的消息。 Device Peripheral Access Layer (DPAL) 该层和CPAL层类似,用来定义一些硬件寄存器的地址以及对外设的访问函数。另外芯片厂商还需要对异常向量表进行扩展,以实现对自己设备的中断处理。该层可引用CPAL层定义的地址和函数,该层由具体的芯片厂商提供。,8,CMSIS文件结构,CMSIS首先对文件名的定义给出了标准 core_cm3.h Cortex-M3 global declarations and definitions, static function definitions core_cm3.c Cortex-M3 global definitions .h Top-level header file (device specific). To be included by application code.Includes core_cm3.h and system_.h system_.h Device specific declarations system_.c Device specific definitions, e.g. SystemInit() 应用程序只需包含.h 即可。,9,以STM32为例,来看下相关的文件名定义,以及它们的相互关系。,10,由于CORTEX-M3有一些可选硬件如MPU,在中包含core_cm3.h和system_.h时需注意以下一点,以STM32.h为例。 /* Configuration of the Cortex-M3 Processor and Core Peripherals */ #define _MPU_PRESENT 0 /*!中给以实现。,11,CMSIS支持的工具链,CMSIS目前支持三大主流的工具链,即ARM RealView (armcc), IAR EWARM (iccarm), and GNU Compiler Collection (gcc). 在core_cm3.h中有如下定义: /* define compiler specific 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 optimization 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,12,MISRA-C,CMSIS要求定义的API以及编码与MISRA- C 2004规范兼容。MISRA-C是由Motor Industry Software Reliability Association提出的,意在增加代码的安全性,该规范提出了一些标准。 如Rule 12. 不同名空间中的变量名不得相同。 Rule 13. 不得使用char, int, float, double, long等基本类型,应该用自己定义的类型显示表示类型的大小,如CHAR8, UCHAR8, INT16, INT32, FLOAT32, LONG64, ULONG64等。 Rule 37. 不得对有符号数施加位操作,例如 1 << 4 将被禁止,必须写 1UL << 4;,13,CMSIS中的中断定义,中断号的定义,在中 typedef enum IRQn /* Cortex-M3 Processor 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, /*!< 11 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, /*!< Example Interrupt */ IRQn_Type; 系统级的异常号已经确定,不能更改,且必须为负值,以和设备相关的中断区别。,14,CMSIS的中断定义,中断处理函数的定义,一般在启动代码中声明,加入weak属性,因此可在其他文件中再一次实现。如下所示: AREA RESET, DATA, READONLY EXPORT _Vectors _Vectors DCD _initial_sp ; Top of Stack DCD Reset_Handler ; Reset Handler DCD NMI_Handler ; NMI Handler DCD HardFault_Handler ; Hard Fault Handler DCD MemManage_Handler ; MPU Fault Handler DCD BusFault_Handler ; Bus Fault Handler DCD UsageFault_Handler ; Usage Fault Handler DCD 0 ; Reserved DCD 0 ; Reserved DCD 0 ; Reserved DCD 0 ; Reserved DCD SVC_Handler ; SVCall Handler DCD DebugMon_Handler ; Debug Monitor Handler DCD 0 ; Reserved DCD PendSV_Handler ; PendSV Handler DCD SysTick_Handler ; SysTick Handler ; External Interrupts DCD WWDG_IRQHandler ; Window Watchdog,15,CMSIS的编程约定,1.标识符 Core Registers, Peripheral Registers, CPU Instructions.用大写字母定义 例如:NVIC-AIRCR, GPIOB, LDMIAEQ 外设访问函数以及中断和中断处理函数用大小写(“CamelCase)定义 例如:SysTickConfig(),DebugMonitor_IRQn 对一些外设的操作函数前面讲相应的前缀 例如:ITM_SendChar(),NVIC_SystemReset() 2.注释 /* * brief Enable Interrupt in NVIC Interrupt Controller * param IRQn_Type IRQn specifies the interrupt number * return none * Enable a device specific interupt in the NVIC interrupt controller. * The interrupt number cannot be a negative value. */,16,CMSIS实例,#include stm32.h #include main.h volatile unsigned int seconds=0; int main(void) SystemInit(); if (SysTick_Config(SystemFrequency / 1000) /* Setup SysTick Timer for 1 msec interrupts */ while (1); /* Capture error */ while(1); void SysTick_Handler(void) static int count=0; count+; if(count = 1000) count=0; seconds+; ,17,谢 谢!,

    注意事项

    本文(Cortex微控制器软件接口标准参考PPT.ppt)为本站会员(rrsccc)主动上传,三一文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    经营许可证编号:宁ICP备18001539号-1

    三一文库
    收起
    展开