• 已解决 73482 个问题
  • 已帮助 5993 位优秀工程师

这张CMSIS图从上到下怎么理解的?哪位大神给解释下

小白爱32 2019-05-02 浏览量:888

如下图,看书看到这个地方分层不容易理解,从上往下或者从下往上怎么讲?

QQ截图20190502214453.png

0 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
最佳答案
  • 比如用户自己程序代码可以直接调用 osDelay()来延时,这个 osDelay() 是 freeRTOS 提供的 api

    现在用户可以不直接调用 osDelay,而是调用 cmsis-的 api,其实这个 api 就是封装的 osDelay,同样是延时。


    cmsis api 的好处就是,只要是 cmsis 支持的 rtos,他的延时 api 函数都是同样的,对用户来说,不管用户程序在什么 RTOS 上一个代码都不用动就可以运行。

    底层不同 rtos 那是 cmsis 适配层的问题,


    相当于建立起一套标准,cmsis 标准,驱动要支持这个标准,rtos 也支持这个标准,用户只要会用 cmsis 一个标准,就可以使用所有支持 cmsis 的 RTOS


    在简单一点,你只要记住 cmsis 的延时函数,比如是 xxdelay,你只会用这一个函数,所有操作系统的延时函数你都会用了。因为底层运行 ucos ,xxdelay 就会封装 ucos 的 delay 函数,底层是 freertos ,xxdelay 就会封装 freertos 的 delay 函数,底层是 RT-thread ,xxdelay 就会封装 RTThread 延时函数。


    带来的便利就是程序可以跨底层系统,中间件,驱动,迁移。


    其实 cobemx 也是这样的整合工具,只是现有支持的还少,看不出来他的价值,现在只支持 freeRTOS ,比如以后支持 ucos  ,RTTherad, 的时候,你从 freeRTOS 切换到 RTThread ,只需要在 cobemx 里面把 freertos 勾去掉,rtthread 勾上,重新生成代码,keil 编译下载,搞定,应用层符合 cmsis 标准的话,就这么简单就切换了操作系统。

    实际上可能么有这么完美,可是他的目标就是要这么完美

    • 发布于 2019-05-09
    • 举报
    • 评论 0
    • 0
    • 0

其他答案 数量:2
  • 这个图其实就是说用户代码按CMSIS标准进行编码,可以控制DSP,也可以控制CMSIS实时系统API等等,

    然后CMSIS再调用具体微控制器的指令,这样CMSIS就成为一个统一的中间层(抽象)。


    要理解这个图,首先就是要明白CMSIS到底说要干什么?

    CMSIS其实就是为了减少开发复杂的,方便移植和互用的一种编程框架,如果应用CMSIS来编程,则从一种适配芯片到另外一款适配芯片到开发就会更简单,因为调用的CMSIS可以是一样的,只是CMSIS与具体MCU适配问题(这些视频一般都是标准化的,主要就是选取而已)。甚至一点用户代码都不变,就可以通过配置直接适配到其它具体的系统上。

    • 发布于2019-05-02
    • 举报
    • 评论 0
    • 0
    • 0

  • 这个图的意思就是,对于所有的CM系列的内核,它有一套统一的接口,这个接口就是CMSIS层和用户层之间的接口

    然后用户层就是用户的代码,可以直接调接口,这样同一套程序可以在不同的目标平台上面移植

    至于这个CMSIS层,可以视为Linux的内核,里面包含一些通用的系统调度算法,部分是用ARM汇编写的,还有不同公司提供的库,如HAL库

    再往下的MCU那层就是控制器驱动,也就是寄存器操作

    • 发布于2019-05-06
    • 举报
    • 评论 0
    • 0
    • 0

相关问题

问题达人换一批

这张CMSIS图从上到下怎么理解的?哪位大神给解释下