打印
[牛人杂谈]

你知道库函数里的CMSIS文件夹下的东西吗?

[复制链接]
5774|23
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主

ARM Cortex™ 微控制器软件接口标准(CMSIS:Cortex Microcontroller Software Interface Standard) 是 Cortex-M 处理器系列的与供应商无关的硬件抽象层。 使用CMSIS,可以为处理器和外设实现一致且简单的软件接口,从而简化软件的重用、缩短微控制器新开发人员的学习过程,并缩短新设备的上市时间。软件的创建被嵌入式行业公认为主要成本系数。通过在所有Cortex-M 芯片供应商产品中标准化软件接口,这一成本会明显降低,尤其是在创建新项目或将现有软件迁移到新设备时。最新版本的CMSIS[2]为3.5。


2
结构编辑
CMSIS是ARM公司与多家不同的芯片和软件供应商一起紧密合作定义的,提供了内核与外设、实时操作系统和中间设备之间的通用接口。
CMSIS软件层次CMSIS可以分为多个软件层次,分别由ARM公司、芯片供应商提供。
其中ARM提供了下列部分,可用于多种编译器:
● 内核设备访问层:包含了用来访问内核的寄存器设备的名称定义,地址定义和助手函数。同时也为RTOS(实时操作系统)定义了独立于微控制器的接口,该接口包括调试通道定义。
● 中间设备访问层:为软件提供了访问外设的通用方法。芯片供应商应当修改中间设备访问层,以适应中间设备组件用到的微控制器上的外设。目前中间设备访问层仍处于开发过程中,本文不做详述。 芯片供应商扩展下列软件层:
● 微控制器外设访问层:提供片上所有外设的定义。
● 外设的访问函数(可选):为外设提供额外的助手函数。CMSIS为Cortex-Mx微控制器系统定义了:
● 访问外设寄存器的通用方法和定义异常向量的通用方法。
● 内核设备的寄存器名称和内核异常向量的名称。
● 独立于微控制器的RTOS接口,带调试通道。
● 中间设备组件接口(TCP/IP协议栈,闪存文件系统)。
CMSIS包含的组件1、外围寄存器和中断定义: 适用于设备寄存器和中断的一致接口
2、内核外设函数:特定处理器功能和内核外设的访问函数
3、DSP 库:优化的信号处理算法,并为 SIMD 指令提供Cortex-M4 支持
4、系统视图说明(SVD):描述设备外设和中断的XML 文件。
该标准完全可扩展,可确保其适合于所有 Cortex-M处理器系列微控制器,从最小的8 KB 设备到具有复杂通信外设(如以太网或USB)的设备。(内核外设函数的内存要求少于1 KB 代码,少于10 字节RAM)。
基于CMSIS应用程序的基本结构CMSIS-外设访问层的文件基于CMSIS应用程序的基本结构[3]

独立于编译器的文件:
● Cortex-M3内核及其设备文件(core_cm3.h + core_cm3.c)
─ 访问Cortex-M3内核及其设备:NVIC,SysTick等
─ 访问Cortex-M3的CPU寄存器和内核外设的函数
● 微控制器专用头文件(device.h)
─ 指定中断号码(与启动文件一致)
─ 外设寄存器定义(寄存器的基地址和布局)
─ 控制微控制器其他特有的功能的函数(可选)
● 微控制器专用系统文件(system_device.c)
─ 函数SystemInit,用来初始化微控制器
─ 函数Sysem_ExtMemCtl,用来配置外部存储器控制器。它位于文件
startup_stm32f10x_xx.s /.c,在跳转到main前调用
─SystemFrequncy,该值代表系统时钟频率
─ 微控制器的其他功能(可选)
编译器供应商+微控制器专用启动文件
● 编译器启动代码(汇编或者C)(startup_device.s)
─ 微控制器专用的中断处理程序列表(与头文件一致)
─ 弱定义(Weak)的中断处理程序默认函数(可以被用户代码覆盖)
CMSIS软件包详细目录
CMSIS(3张)



下载的CMSIS软件包含有Cortex M3核的支持文件以及基于Cortex M3核处理器的启动代码和库引导文件。


3
使用步骤编辑
以STM32F10XX序列处理为例,介绍CMSIS的使用步骤。
1、从ST官方网站下载3.0以上版本的标准外设库。
2、基于开发软件新建工程,建立相应的文件目录,注意询问是否加入启动文件时,选择“否”。
3、根据所选芯片,把Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\startup\arm中的启动代码加到工程中。
4、根据处理器FLASH容量的大小,选择启动代码。stm32f10x.h 的66-73 行表明了启动代码的类型。例如STM32F10X_HD 行表示大容量的,如果不需要直接注释掉即可。
5、选择是否启用标准外设库。stm32f10x.h的105行的USE_STDPERIPH_DRIVER用于确定是否启用,如果不启用直接注释掉。
6、确定处理器的频率。system_stm32f10x.c的110-115行用于确定处理器的频率,注释掉不需要的即可。例如处理器的频率为是36MHz,注释SYSCLK_FREQ_72MHz,去掉SYSCLK_FREQ_36MHz注释。

沙发
gaoyang9992006|  楼主 | 2014-12-26 22:10 | 只看该作者

使用特权

评论回复
板凳
gaoyang9992006|  楼主 | 2014-12-26 22:12 | 只看该作者
一直以来不知道这个文件夹是干啥的,傻傻的用,百度了一下,顿时醒悟了。

使用特权

评论回复
地板
戈卫东| | 2014-12-26 22:47 | 只看该作者
还迷糊着。。。。。。

使用特权

评论回复
5
gaoyang9992006|  楼主 | 2014-12-27 08:56 | 只看该作者
戈卫东 发表于 2014-12-26 22:47
还迷糊着。。。。。。

我也是昨天好奇,专门研究了一下这个文件夹下的内容。库函数很强大,要研究透彻。

使用特权

评论回复
6
gaoyang9992006|  楼主 | 2014-12-27 11:05 | 只看该作者

这个是新唐M051的库函数下的。

使用特权

评论回复
7
jheng| | 2015-4-8 16:52 | 只看该作者

其他文件是什么文件啊

使用特权

评论回复
8
www425531304| | 2015-4-10 10:38 | 只看该作者
还是不理解啊  

使用特权

评论回复
9
gaoyang9992006|  楼主 | 2015-4-10 12:34 | 只看该作者
标准完全可扩展,可确保其适合于所有 Cortex-M处理器系列微控制器,从最小的8 KB 设备到具有复杂通信外设(如以太网或USB)的设备。(内核外设函数的内存要求少于1 KB 代码,少于10 字节RAM)。

使用特权

评论回复
10
mintspring| | 2015-5-8 12:56 | 只看该作者
以前真的不知道,CMSIS软件层次CMSIS可以分为多个软件层次,分别由ARM公司、芯片供应商提供。

使用特权

评论回复
11
lijiankun| | 2015-5-8 13:39 | 只看该作者
看了一遍,好像挺深奥的样子。

使用特权

评论回复
12
gaoyang9992006|  楼主 | 2015-5-8 14:14 | 只看该作者
lijiankun 发表于 2015-5-8 13:39
看了一遍,好像挺深奥的样子。

是啊,原来包含了多家的不同层次的文件结构。

使用特权

评论回复
13
稳稳の幸福| | 2015-5-8 15:30 | 只看该作者
其实太底层的我们不用管的,只要把外设层次搞懂就行了。

使用特权

评论回复
14
CrownZeng| | 2015-8-13 10:44 | 只看该作者
不用CMSIS开发程序是不是很不好?我的代码跑在固定的硬件平台上的,不需要移植的。

使用特权

评论回复
15
gaoyang9992006|  楼主 | 2015-8-13 10:50 | 只看该作者
CrownZeng 发表于 2015-8-13 10:44
不用CMSIS开发程序是不是很不好?我的代码跑在固定的硬件平台上的,不需要移植的。
...

固定的硬件平台,那就不用考虑这些移植性了,但是有的东西不会一直在一个固件平台。

使用特权

评论回复
16
quray1985| | 2015-8-13 11:02 | 只看该作者
这个核是用来帮助用户的启动操作的吧

使用特权

评论回复
17
CrownZeng| | 2015-8-19 11:29 | 只看该作者
楼主写的很好!比较全面。

使用特权

评论回复
18
稳稳の幸福| | 2015-8-19 16:29 | 只看该作者
从ST官方网站下载3.0以上版本的标准外设库。

使用特权

评论回复
19
LearningASM| | 2015-8-19 16:47 | 只看该作者
IAR下开了Multi-file Compilation ,编译core_cm3.c会出错,蛋疼啊,直接做成Lib后解决

使用特权

评论回复
20
gaoyang9992006|  楼主 | 2015-8-19 20:18 | 只看该作者
LearningASM 发表于 2015-8-19 16:47
IAR下开了Multi-file Compilation ,编译core_cm3.c会出错,蛋疼啊,直接做成Lib后解决 ...

这也太蛋疼了,估计是IAR不给力造成的,你用Keil试试,我一直是用Keil搞这个。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

认证:西安公路研究院南京院
简介:主要工作从事监控网络与通信网络设计,以及从事基于嵌入式的通信与控制设备研发。擅长单片机嵌入式系统物联网设备开发,音频功放电路开发。

1961

主题

15933

帖子

208

粉丝