Cortex微控制器软件接口标准(CMSIS)

news2024/10/2 7:25:26

Cortex微控制器软件接口标准

目前,软件开发已经是嵌入式系统行业公认的主要开发成本,通过将所有Cortex-M芯片供应商产品的软件接口标准化,能有效降低这一成本,尤其是进行新产品开发或者将现有项目或软件移植到基于不同厂商MCU的产品时。为此,2008年Arm公司发布了Arm Cortex微控制器软件接口标准。 ST有限公司为开发者提供了标准外设库,通过使用该标准库无须深入掌握细节便可开发每一个外设,缩短了用户编程时间,从而降低开发成本。同时,标准库也是学习者深入学习STM32原理的重要参考工具。 CMSIS软件架构由4层构成:用户应用层、操作系统及中间件接口层、CMSIS层和硬件层,如图所示。

其中,CMSIS层起着承上启下的作用:一方面对硬件寄存器层进行统一实现,屏蔽不同厂商对Cortex-M系列微处理器内核外设寄存器的不同定义;另一方面又向上层的操作系统及中间件接口层和用户应用层提供接口,简化应用程序开发,使开发人员能够在完全透明的情况下进行应用程序开发。 CMSIS层主要由以下3部分组成。

(1)核内外设访问层(Core Peripheral Access Layer,CPAL):

由Arm公司实现,包括了命名定义、地址定义、存取内核寄存器和外围设备的协助函数,同时定义了一个与设备无关的RTOS内核接口函数。

(2)中间件访问层(Middleware Access Layer,MWAL):

由Arm公司实现,芯片厂商提供更新,主要负责定义中间件访问的应用程序编程接口(Application Programming Interface ,API)函数,如TCP/IP协议栈、SD/MMC、USB等协议。

(3)设备外设访问层(Device Peripheral Access Layer,DPAL):

由芯片厂商实现,负责对硬件寄存器地址及外设接口进行定义。另外,芯片厂商会对异常向量进行扩展,以处理相应异常。

STM32仿真器的选择

开发板可以采用ST-Link、J-Link或野火fireDAP下载器(符合CMSIS-DAP Debμgger规范)下载程序。ST-Link、J-Link仿真器需要安装驱动程序,CMSIS-DAP仿真器不需要安装驱动程序。

1.    CMSIS-DAP仿真器

CMSIS-DAP是支持访问CoreSight 调试访问端口(Debug Access Port,DAP)的固件规范和实现,以及各种Cortex处理器提供CoreSight调试和跟踪。 CoreSight两个主要功能就是调试和跟踪功能。 (1)调试功能。具体如下: ① 运行处理器的控制,允许启动和停止程序; ② 单步调试源码和汇编代码;③ 在处理器运行时设置断点; ④ 即时读取/写入存储器内容和外设寄存器; ⑤ 编程内部和外部Flash存储器。 (2)跟踪功能 ① 串行线查看器(SWV)提供程序计数器(PC)采样、数据跟踪、事件跟踪和仪器跟踪信息; ② 指令(ETM)跟踪直接流式传输到PC,从而实现历史序列调试、软件性能分析和代码覆盖率分析。 野火fireDAP高速仿真器如图4-21所示。

2.    J-Link

J-Link 是 SEGGER 公司为支持仿真Arm内核芯片推出的JTAG仿真器。 J-Link仿真器如图4-22所示。 J-Link仿真器具有如下特点: (1)JTAG最高时钟频率可达15MHz。 (2)目标板电压范围为1.2~3.3V,5V兼容。 (3)具有自动速度识别功能。 (4)支持编辑状态的断点设置,并在仿真状态下有效。可快速查看寄存器和方便配置外设。 (5)带J-Link TCP/IP 服务器,允许通过TCP/IP网络使用J-Link。

3.ST-Link

ST-Link是ST公司为STM8系列和STM32系列微控制器设计的仿真器。ST-LINK V2仿真器如图4-23所示。 ST-Link仿真器具有如下特点: (1)编程功能:可烧写Flash ROM、EEPROM等,需要安装驱动程序才能使用。 (2)仿真功能:支持全速运行、单步调试、断点调试等调试方法, (3)可查看I/O状态、变量数据等。 (4)仿真性能:采用USB2.0接口进行仿真调试、单步调试、断点调试,反应速度快。 (5)编程性能:采用USB2.0接口,进行 SWIM/JTAG/SWD下载,下载速度快。

4.微控制器调试接口

STM32F4系列微控制器调试接口引脚图如图4-24所示。为了减少PCB(印制电路板)的占用空间,JTAG调试接口可用双排10引脚接口,SWD调试接口只需要SWDIO、SWCLK、RESET和GND四条线。

嵌入式开发环境除Keil MDK外,还有IAR等开发环境,但均为国外公司的产品,我国目前还没有自主知识产权的Arm开发环境,再加上国内的一些高校被禁用MATLAB软件,该事件也警示我国的大学生:必须关心国家建设,立足自力更生,提升自身科技水平,发扬“航天精神”,为我国的科研建设出一份力,开发出如Keil MDK的开发环境,不受国外公司的制约。 大部分人认为工科专业属于自然科学,蕴含较少的意识形态属性,认同科学技术是无国界的。然而在实际生活中,任何一门科学技术的产生、发展和应用都与国家的倡导与需求息息相关,因此从这个角度来看,科学技术也是有国界的,其国界属性主要体现在科技的来源性、科技的权属性以及科技的服务性三个方面。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2184002.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Golang | Leetcode Golang题解之第450题删除二叉搜索树的节点

题目: 题解: func deleteNode(root *TreeNode, key int) *TreeNode {var cur, curParent *TreeNode root, nilfor cur ! nil && cur.Val ! key {curParent curif cur.Val > key {cur cur.Left} else {cur cur.Right}}if cur nil {retur…

回首往事,感受change

今早,我收到了CSDN发来的消息,当我看了内容才发现,我不知不觉已经在CSDN里面创作了730天(2年)也是个非常值得纪念的日子。 今天,我来回顾一下我的以往,感受一下我的成长与变化。 梦的开始 大家…

【Python报错已解决】 Failed building wheel for opencv-python-headless

🎬 鸽芷咕:个人主页 🔥 个人专栏: 《C干货基地》《粉丝福利》 ⛺️生活的理想,就是为了理想的生活! 专栏介绍 在软件开发和日常使用中,BUG是不可避免的。本专栏致力于为广大开发者和技术爱好者提供一个关于BUG解决的经…

2024多模态大模型发展调研

随着生成式大语言模型应用的日益广泛,其输入输出模态受限的问题日益凸显,成为制约技术进一步发展的瓶颈。为突破这一局限,本文聚焦于研究多模态信息的协同交互策略,旨在探索一种能够统一理解与生成的多模态模型构建方法。在此基础…

C# 无边框窗体,加阴影效果、多组件拖动、改变大小等功能完美实现优化版效果体验

一、预览效果 国庆节第一天,祝祖国繁荣昌盛! 1.1 效果图 (WinForm无边框窗体,F11可全屏) 拖动窗体时半透明效果(拖动时参考窗体后面释放位置) 说明:本功能的实现基于网友的原型完善而来,更多代码可以参考他的文章 h

智能平衡移动机器人-平台硬件电路

目录 硬件电路主要模块包括: 主控制器 TMS320F28069数字信号处理器 电池 电机驱动电路 直流电机的驱动 编码器 传感器与外设模块 APP 为了使智能平衡移动机器人达到更好的平衡控制效果,机器人的本体设计更为轻便、集中。机器人的硬件电路也进行集…

课设实验-数据结构-单链表-文教文化用品品牌

题目&#xff1a; 代码&#xff1a; 正解&#xff1a; #include<stdio.h> #include<stdlib.h> #include<string.h> #define MaxSize 10 //定义顺序表最大长度static int result; //字符串比较结果 static int i; //循环初始值 static bool flag; //记录结…

Typora使用与Markdown语法详细教程

Typora 基本介绍 Typora 是一款由 Abner Lee 开发的轻量级 Markdown 编辑器。Markdown 是一种 轻量级标记语言&#xff0c;它允许人们使用易读易写的纯文本格式编写文档&#xff0c;然后转换成有效的 XHTML&#xff08;或者 HTML&#xff09;文档。 安装 下载地址&#xff…

C语言 getchar 函数完全解析:掌握字符输入的关键

前言 在C语言中&#xff0c;getchar 是一个非常实用的函数&#xff0c;用于从标准输入流&#xff08;通常是键盘&#xff09;读取单个字符。这对于处理文本输入非常有用&#xff0c;尤其是在需要逐个字符处理的情况下。本文将深入探讨 getchar 函数的用法和特点&#xff0c;并…

开放式耳机是什么意思?哪个品牌好?开放式蓝牙耳机测评分享

开放式耳机是目前比较流行的一种蓝牙耳机类型&#xff0c;它凭借佩戴舒适、安全性高、透气性好以及健康卫生等等特点成为了很多人的耳机选择。但其实并没有太多人了解开放式耳机&#xff0c;不知道什么是开放式耳机、开放式耳机是否比封闭式耳机强、什么样的人适合开放式耳机以…

Optiver股票大赛Top2开源!

Optiver股票大赛Top2开源&#xff01; ↑↑↑关注后"星标"kaggle竞赛宝典 作者&#xff1a;杰少 Optiver第二名方案解读 简介 Optiver竞赛已经于今天结束了&#xff0c;竞赛也出现了极端情况&#xff0c;中间断崖式的情况&#xff0c;在Kaggle过往的竞赛中&#…

【电路基础 · 1】电路模型和电路定律(自用)

总览 1.电路和电路模型 2.电流和电压参考方向 3.电功率和能量 4.电路元件 5.电阻元件 6.电压源和电流源 7.受控电源 8.基尔霍夫定律 重点&#xff1a; 1.电压、电流的参考方向 2.电阻元件、电源元件的特性 3.基尔霍夫定律&#xff08;基尔霍夫电流定律KCL、基尔霍夫电压定律K…

【办公类-48-03】20240930每月电子屏台账汇总成docx-3(三园区合并EXCLE,批量生成3份word)

背景需求&#xff1a; 前期电子屏汇总是“总园”用“”问卷星”、“一分园”用“腾讯文档”&#xff0c;二分园“用“手写word”” 【办公类-48-02】20240407每月电子屏台账汇总成docx-2&#xff08;腾讯文档xlsx导入docx&#xff0c;每页20条&#xff09;【办公类-48-02】20…

C语言 | Leetcode C语言题解之题451题根据字符出现频率排序

题目&#xff1a; 题解&#xff1a; #define HASH_FIND_CHAR(head, findint, out) HASH_FIND(hh, head, findint, sizeof(char), out) #define HASH_ADD_CHAR(head, intfield, add) HASH_ADD(hh, head, intfield, sizeof(char), add)struct HashTable {char key;int val;UT_ha…

基于小程序+Vue + Spring Boot的进销存库存出库入库统计分析管理系统

目录 一、项目背景及需求分析 1. 项目背景 2. 需求分析 二、系统架构设计 1. 技术选型 2. 模块划分 三、数据库设计数据库表结构 四、前端实现 五、后端实现 1. RESTful API设计 2. 数据库操作 六、安全性和性能优化 1. 安全性 2. 性能优化 七、测试与部署 1. …

Unity之寻找子物体的8种方式

废话不多说&#xff0c;举个例子&#xff1a; 当前的transform是Cube1物体&#xff0c;所以。。。。 寻找子物体的方式有以下几个&#xff1a; 1.transform.Find("go2/go3") 好处&#xff1a;可以快速通过路径定位对应的子物体&#xff0c;甚至是子子子物体。 2.t…

UG NX二次开发(C++)-建模-采用NXOpen获取拉伸特征的信息

文章目录 1、前言2、创建一个特征3 采用NXOpen来实现拉伸特征信息的获取1、前言 UG NX二次开发过程中,大部分初学者喜欢用UFun函数来实现UG NX二次开发的功能,因为相较于NXOpen,UFun函数简单易懂;但是有时UFun函数如果初始值设置不好,出现的错误也比较难排查。比如对于拉…

L4 KNN 算法

&#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 KNN 算法用于约会数据集分类 在这周中&#xff0c;学习如何使用 K 近邻&#xff08;K-Nearest Neighbors, KNN&#xff09;算法对一个约会数据集进行分类。KN…

SpringGateway(网关)微服务

一.启动nacos 1.查看linux的nacos是否启动 docker ps2.查看是否安装了nacos 前面是你的版本&#xff0c;后面的names是你自己的&#xff0c;我们下面要启动的就是这里的名字。 docker ps -a3.启动nacos并查看是否启动成功 二.创建网关项目 1.创建idea的maven项目 2.向pom.x…

路由器WAN口和LAN口的区别

一.路由器WAN口和LAN口的区别简单来说&#xff1a;LAN口输出&#xff08;内网&#xff09;&#xff0c;WAN口输入&#xff08;互联网&#xff09;&#xff0c;接线方法"光猫网口"——>"路由器WAN口"&#xff0c;"路由器LAN口"——>"打…