zoukankan      html  css  js  c++  java
  • cortex 微控制器软件接口标准( CMSIS )

     简而言之: CMSIS 定义了一套 API,应用层代码调用这套API。微控制器厂商完成 API 的实现。

    CMSIS 项目仍在不断更新,它开始是为了 cortex-M 微控制器的设备驱动库建立一致性,现在已经成为了 CMSIS-Core,其他的 CMSISI 项目也已经启动:

    • CMSIS-Core(cortex-M 处理器支持)。应用程序或者中间件开发者用的一组 API,可以访问 cortex-M 处理器的特性,无需考虑使用的是何种微控制器或者工具链。CMSIS 目前支持 cortex-M0、cortex-M0+、cortex-M3 和 cortex-M4 处理器以及 SC00 和 SC300 等 SecureCore 产品。由于架构相同,cortex-M1 可以使用 cortex-M0 版本的 CMSIS
    • CMSIS-DSP库。
    • CMSIS-SVD。
    • CMSIS-RTOS。定义了一套 OS 相关的 API,比如信号量、创建线程等。因为 freeRTOS 和 ucos 都有自己的一套 API,如果用 freeRTOS 或者 ucos 的 API 实现 CMSIS-RTOS 的 API,然后应用层代码都是调用 CMSIS-RTOS 的 API,这样就增强应用层代码的可移植性。
    • CMSIS-DAP。

    CMSISI-Core 所做的标准化:

    1、处理器外设的标准化。比如嵌套向量中断控制器(NVIC)中的寄存器、系统控制块(SCB)中的多个可编程寄存器等

    2、访问处理器特性的标准化函数。包括使用 NVIC 进行中断控制的多个函数以及访问处理器中特殊寄存器的函数。

    3、操作特殊指令的标准化函数。cortex-M 处理器支持几个用于特殊目的的指令(例如等待中断WFI、用于进入休眠模式)。CMSIS 实现了一组函数,C 程序代码可以利用这些函数实现特殊指令。

    4、系统异常处理的标准化命名。

    5、系统初始化的标准函数。在应用程序开始前需要配置时钟电路和电源管理寄存器,在符合 CMSIS 的设备驱动库中,这些配置过程由 SystemInit() 实现。

    6、描述时钟频率的标准化变量。

    CMSIS-Core 的组织结构:

    如何使用 CMSIS-Core 

    1、将源文件添加到工程中,包括:

    • 设备相关、工具链相关的启动代码
    • 设备相关的设备初始化代码(如 system_<device>.c)
    • 对于 CMSIS-Core 库的 CMSIS 2.00 或者之前版本,为了访问内核寄存器,还需要将处理器相关的 C 程序文件(如 core_cm3.c)添加到工程中,从 CMSIS-Core 版本 2.10 开始就不再需要了

    2、将头文件添加到搜索路径中

    • 用于外设寄存器定义和中断分配定义的设备相关的头文件(如 <device>.h)
    • 用于设备初始化代码的设备相关的头文件(如 system_<device>.h)
    • 多个处理器相关的头文件(如 core_cm3.h、core_cm4.h,它们对于所有的微控制器供应商都是相同的)

  • 相关阅读:
    String、StringBuffer与StringBuilder的区别
    案例2:用一条SQL查询出数学语文成绩都大于80分的学生姓名?
    案例1:写一个压缩字符串的方法,例如aaaabbcxxx,则输出a4b2c1x3。
    jsp的九大内置对象及作用
    SQL语句总结2018-11-7
    kafka-spark streaming (一)
    python while嵌套循环
    docker-compose.yml样例(mysql主从+mycat读写分离)
    docker-compose管理daocker
    docker搭建私有registry
  • 原文地址:https://www.cnblogs.com/god-of-death/p/14944579.html
Copyright © 2011-2022 走看看