为啥这么多程序员大佬学习Cortex-M3


Cortex-M3是一个32位处理器内核。内部的数据路径是32位的,寄存器是32位的,存储器接口也是32位的。CM3采用了哈佛结构,拥有独立的指令总线和数据总线,可以让取指与数据访问并行不悖。这样一来数据访问不再占用指令总线,从而提升了性能。为实现这个特性,CM3内部含有好几条总线接口,每条都为自己的应用场合优化过,并且它们可以并行工作。但是另一方面,指令总线和数据总线共享同一个存储器空间(一个统一的存储器系统)。换句话说,不是因为有两条总线,可寻址空间就变成8GB了。

比较复杂的应用可能需要更多的存储系统功能,为此CM3提供一个可选的MPU,而且在需要的情况下也可以使用外部的cache。另外在CM3中,Both小端模式和大端模式都是支持的。

CM3内部还附赠了好多调试组件,用于在硬件水平上支持调试操作,如指令断点,数据观察点等。另外,为支持更高级的调试,还有其它可选组件,包括指令跟踪和多种类型的调试接口。



ARMCortex-M3采用哈佛结构,并选择了适合于微控制器应用的三级流水线,但增加了分支预测功能。

现代处理器大多采用指令预取和流水线技术,以提高处理器的指令执行速度。流水线处理器在正常执行指令时,如果碰到分支(跳转)指令,由于指令执行的顺序可能会发生变化,指令预取队列和流水线中的部分指令就可能作废,而需要从新的地址重新取指、执行,这样就会使流水线“断流”,处理器性能因此而受到影响。特别是现代C语言程序,经编译器优化生成的目标代码中,分支指令所占的比例可达10-20%,对流水线处理器的影响会的更大。为此,现代高性能流水线处理器中一般都加入了分支预测部件,就是在处理器从存储器预取指令时,当遇到分支(跳转)指令时,能自动预测跳转是否会发生,再从预测的方向进行取指,从而提供给流水线连续的指令流,流水线就可以不断地执行有效指令,保证了其性能的发挥。


ARMCortex-M3内核的预取部件具有分支预测功能,可以预取分支目标地址的指令,使分支延迟减少到一个时钟周期。

针对业界对ARM处理器中断响应的问题,Cortex-M3首次在内核上集成了嵌套向量中断控制器(NVIC)。Cortex-M3的中断延迟只有12个时钟周期(ARM7需要24-42个周期);Cortex-M3还使用尾链技术,使得背靠背(back-to-back)中断的响应只需要6个时钟周期(ARM7需要大于30个周期)。Cortex-M3采用了基于栈的异常模式,使得芯片初始化的封装更为简单。

Cortex-M3加入了类似于8位处理器的内核低功耗模式,支持3种功耗管理模式:通过一条指令立即睡眠;异常/中断退出时睡眠;深度睡眠。使整个芯片的功耗控制更为有效。



高性能

  • 许多指令都是单周期的——包括乘法相关指令。并且从整体性能上,Cortex-M3比得过绝大多数其它的架构。

  • 指令总线和数据总线被分开,取值和访内可以并行不悖

  • Thumb-2的到来告别了状态切换的旧世代,再也不需要花时间来切换于32位ARM状态和16位Thumb状态之间了。这简化了软件开发和代码维护,使产品面市更快。

  • Thumb-2指令集为编程带来了更多的灵活性。许多数据操作现在能用更短的代码搞定,这意味着Cortex-M3的代码密度更高,也就对存储器的需求更少。

  • 取指都按32位处理。同一周期最多可以取出两条指令,留下了更多的带宽给数据传输。

  • Cortex-M3的设计允许单片机高频运行(现代半导体制造技术能保证100MHz以上的速度)。即使在相同的速度下运行,CM3的每指令周期数(CPI)也更低,于是同样的MHz下可以做更多的工作;另一方面,也使同一个应用在CM3上需要更低的主频。

先进的中断处理功能

  • 内建的嵌套向量中断控制器支持多达240条外部中断输入。向量化的中断功能剧烈地缩短了中断延迟,因为不再需要软件去判断中断源。中断的嵌套也是在硬件水平上实现的,不需要软件代码来实现。

  • Cortex-M3在进入异常服务例程时,自动压栈了R0-R3, R12, LR, PSR和PC,并且在返回时自动弹出它们,这多清爽!既加速了中断的响应,也再不需要汇编语言代码了(第8章有详述)。

  • NVIC支持对每一路中断设置不同的优先级,使得中断管理极富弹性。最粗线条的实现也至少要支持8级优先级,而且还能动态地被修改。

  •  优化中断响应还有两招,它们分别是“咬尾中断机制”和“晚到中断机制”。

  • 有些需要较多周期才能执行完的指令,是可以被中断-继续的——就好比它们是一串指令一样。这些指令包括加载多个寄存器(LDM),存储多个寄存器(STM),多个寄存器参与的PUSH,以及多个寄存器参与的POP。

  • 除非系统被彻底地锁定,NMI(不可屏蔽中断)会在收到请求的第一时间予以响应。对于很多安全-关键(safety-critical)的应用,NMI都是必不不可少的(如化学反应即将失控时的紧急停机)。

低功耗

  • Cortex-M3需要的逻辑门数少,所以先天就适合低功耗要求的应用(功率低于0.19mW/MHz)在内核水平上支持节能模式(SLEEPING和SLEEPDEEP位)。通过使用“等待中断指令(WFI)”和“等待事件指令(WFE)”,内核可以进入睡眠模式,并且以不同的方式唤醒。另外,模块的时钟是尽可能地分开供应的,所以在睡眠时可以把CM3的大多数“官能团”给停掉。

  • CM3的设计是全静态的、同步的、可综合的。任何低功耗的或是标准的半导体工艺均可放心饮用。

系统特性

  • 系统支持“位寻址带”操作(8051位寻址机制的“威力大幅加强版”),字节不变的大端模式,并且支持非对齐的数据访问。

  • 拥有先进的fault处理机制,支持多种类型的异常和faults,使故障诊断更容易。

  • 通过引入banked堆栈指针机制,把系统程序使用的堆栈和用户程序使用的堆栈划清界线。如果再配上可选的MPU,处理器就能彻底满足对软件健壮性和可靠性有严格要求的应用。

调试支持

  •  在支持传统的JTAG基础上,还支持更新更好的串行线调试接口。

  • 基于CoreSight调试解决方案,使得处理器哪怕是在运行时,也能访问处理器状态和存储器内容。

  • 内建了对多达6个断点和4个数据观察点的支持。

  • 可以选配一个ETM,用于指令跟踪。数据的跟踪可以使用DWT

  • 在调试方面还加入了以下的新特性,包括fault状态寄存器,新的fault异常,以及闪存修补 (patch)操作,使得调试大幅简化。

  • 可选ITM模块,测试代码可以通过它输出调试信息,而且“拎包即可入住”般地方便使用。

Cortex-M3处理器采用ARMv7-M架构,它包括所有的16位Thumb指令集和基本的32位Thumb-2指令集架构,Cortex-M3处理器不能执行ARM指令集。

Thumb-2在Thumb指令集架构(ISA)上进行了大量的改进,它与Thumb相比,具有更高的代码密度并提供16/32位指令的更高性能。



关于工作模式

Cortex-M3处理器支持2种工作模式:线程模式和处理模式。在复位时处理器进入“线程模式”,异常返回时也会进入该模式,特权和用户(非特权)模式代码能够在“线程模式”下运行。

出现异常模式时处理器进入“处理模式”,在处理模式下,所有代码都是特权访问的。


关于工作状态

Cortex-M3处理器有2种工作状态。

Thumb状态:这是16位和32位“半字对齐”的Thumb和Thumb-2指令的执行状态。

调试状态:处理器停止并进行调试,进入该状态。、



开发工具

Keil ULINK仿真器

IAR JLink仿真器

对客户来说用什么技术、芯片不是主要的。主要的是能否满足要求。高性价比、开发门槛底、易于使用才是硬道理。Cortex M3从理论上来说是高性价比。但目前已有的芯片的功能太少。Cortex M系列在处理能力基本与ARM7同,主要是成本低,功耗小。



产品构造

synchronous serial 总线

完全可编程的16C550-型 UART

两个独立的模拟比较器

可配置为输出来驱动一个输出引脚,或产生一个中断

可在外部输入引脚或外部输入引脚和内部参考电压之间比较

2到18个GPIO 这取决于用户的配置

在所有的引脚上具有可编程的GPIO中断,可以边沿触发或电平触发

可编程的GPIO 衬垫配置:

弱上拉或下拉电阻

2 mA, 4 mA, and 8 mA 衬垫驱动

8 mA驱动斜率控制

开漏使能

数字输入使能

片内LDO电压调整器

处理器低功率选项:睡眠模式和深度睡眠模式

外设低功率选项:软件控制关闭个别外设

用户使能的LDO 未调整电压检测和自动复位

通过中断或复位方式检测并报告3.3 V 电源电压下降

IEEE 1149.1-1990 兼容的TAP控制器

经过 JTAG 或串行线调试

28脚SOIC

商业或工业级工作温度

LM3S316 比 LM3S101 的增强如下:

25 MHz下工作

8级优先级的24个中断通道

16 kB 的单周期flash存储器,在2 kB块的基础上提供2种形式的flash保护。

4 kB 的单周期SRAM存储器

4 通道 10-bit ADC 250K采样/秒

片内温度传感器

4个专用的电机控制PWM 输出

I2C 主从收发 传输速度100 kbps标准模式 400 kbps高速模式

3到32个GPIO 这取决于用户的配置

48脚SOIC

关注公众号“电商程序员”,回复关键词“cortex-m3PDF”免费获取电子书一份

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

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

相关文章

Ffuf使用教程

kali安装教程链接:https://www.iculture.cc/cybersecurity/pig210 该工具用途广泛,可用于多种用途。一些用途: • 目录发现,可选择在 URL 中的任何位置进行模糊测试。 • 子域名发现 • 使用各种 HTTP 方法进行模糊测试。 安装 …

Burp Collaborator 使用总结

0x00:使用原因 我们在做渗透测试的时候,经常会遇到这种情况,测试跨站可能有些功能插入恶意脚本后无法立即触发,例如提交反馈表单,需要等管理员打开查看提交信息时才会触发,或者是盲注跨站,盲打 …

jrockit_1.6下载_Oracle JRockit Mission Control 4.1发布

jrockit_1.6下载Oracle发布了以前的仅JRockit专用工具Mission Control Suite(JRMC)的新版本。 4.1版本是次要版本升级,直接遵循4.0.1(该版本发布于2010年中期)。 但是,即使版本号表明是次要的升级&#xff…

dnslog盲注原理

Dnslog盲注原理 布尔盲注和时间盲注相当于猜单词的游戏,我们需要对每一位逐步的猜测,效率很低,需要发送很多的请求进行判断,很可能会触发安全设备的防护 我们需要一种方式能够减少请求,直接回显数据——Dnslog注入 Dn…

[学习笔记]批次需求计划系统-简要

一、该系统的目的二、系统特色(1)来源根据 如上图(2)仅仅补充需求来源的最大值,避免料件多买而造成浪费(3)可透过[发放LRP工单]将生产计划发放成正式工单(4)可透过[发放LRP採购单]将採购计划发放成正式的请购单或者採购单(5)系统会记录计划的来源单据,方…

在浏览器控制台执行以下代码,输入的结果是()

在浏览器控制台执行以下代码,输入的结果是(A) A.4400 4401 4399 4400 B.4400 4401 4401 4402 C.4400 4400 4399 4400 D.4400 4401 4399 4402 E.4400 4401 4401 4400 解析 js在执行之前

iOS-心跳

转载于:https://www.cnblogs.com/zhuyaguang/p/4800703.html

google国内镜像网址收集

搞IT的遇到问题,光靠baidu有时真的解决不了问题,所以时不时的就需要求助google😂, 里面有好多国外网友的博客、stackoverflow、github issues、官方文档等等的大量一手英文资料, 但是因为种种原因国家一直不放开Google…

mongo-express 远程代码执行漏洞(CVE-2019-10758)

前言 mongo-express是一款mongodb的第三方Web界面,使用node和express开发。如果攻击者可以成功登录,或者目标服务器没有修改默认的账号密码(admin:pass),则可以执行任意node.js代码。 影响版本 mongo-express&#xff…

【转】深入浅出PageRank算法

原文链接 http://segmentfault.com/a/1190000000711128 PageRank算法 PageRank算法是谷歌曾经独步天下的“倚天剑”,该算法由Larry Page和Sergey Brin在斯坦福大学读研时发明的, 论文点击下载: The PageRank Citation Ranking: Bringing Order to the We…

https://blog.csdn.net/weixin_40412037/article/details/112235003

一、工具简介 说明: 这是一款基于主机的漏洞扫描工具,采用多线程确保可以快速的请求数据,采用线程锁可以在向sqlite数据库中写入数据避免database is locked的错误,采用md5哈希算法确保数据不重复插入。 本工具查找是否有公开e…

前端工程师能力评估测试题(2020最新版附答案及解析)

1.下列哪个样式定义后,内联(非块状)元素可以定义宽度和高度 (C) A.display:inline B.display:none C.display:block D.display:inherit 解析 2.css属性overflow属性定义溢出元素内容区的内容会如何处理。如果值为 scroll,不论是否需要,用户代理都会提供一种滚动机…

Cobalt strike加载插件出现乱码

问题描述 插件 加载成功出现乱码 解决方法 在Cobalt strike目录下执行命令指定编码打开客户端解决。 java -Dfile.encodingutf-8 -XX:ParallelGCThreads4 -XX:AggressiveHeap -XX:UseParallelGC -Xms512M -Xmx1024M -jar cobaltstrike.jar1 成功解决

MariaDb数据库管理系统的学习(一)安装示意图

MariaDB数据库管理系统是MySQL的一个分支。主要由开源社区在维护,採用GPL授权许可。开发这个分支的原因之中的一个是:甲骨文公司收购了MySQL后,有将MySQL闭源的潜在风险,因此社区採用分支的方式来避开这个风险。 MariaDB的目的是全…

Ubuntu 安装msfconsole

Ubuntu 安装msfconsole 1.进入到opt目录下 cd /opt/1 2.下载安装文件 msfupdate.erb sudo wget https://raw.githubusercontent.com/rapid7/metasploit-omnibus/master/config/templates/metasploit-framework-wrappers/msfupdate.erb1 3.将文件msfupdate.erb重命名为msfinstal…

为什么需要多线程

对于这个问题可能很多朋友会说是为了高性能,个人觉得这是误解,多线程不等于高性能,从cpu(单核)的角度上看单线程才能带来最高性能。 对于单纯的运算任务来说一条线程依次执行到底肯定是最快速的(因为线程间…

PhpMyAdmin后台getshell

PhpMyAdmin简介 PhpMyAdmin 是一个以PHP为基础,以Web-Base方式架构在网站主机上的MySQL的数据库管理工具,让管理者可用Web接口管理MySQL数据库。借由此Web接口可以成为一个简易方式输入繁杂SQL语法的较佳途径,尤其要处理大量资料的汇入及汇出…

谷歌浏览器如何将繁体字设置成中文?

今天刚拿到公司发给我的电脑,这个电脑是戴尔的,不知道用了多少年啦,处理器是i3的,CPU8+50O还行,总体感觉一般,不卡顿,办公的地方网速跟蜗牛一样,整个电脑应该是重置过的或者重装了系统,作为开发下载常用的浏览器(谷歌、火狐、IE)、编译器、IM工具等还是很有必要的,…

红队技巧-域渗透的协议利用

1.pth(hash传递) 1.1 PTH简介 哈希传递(pth)攻击是指攻击者可以通过捕获密码的hash值(对应着密码的值),然后简单地将其传递来进行身份验证,以此来横向访问其他网络系统,攻击者无须通过解密hash值来获取明文密码,因为对于每个Session hash值都…

你这么喜欢敲代码,那么技术的乐趣在哪里?

在中国的技术圈子里,流行着这样一种说法:过了三十五岁,就一定得改行。在技术飞速发展的今天,只要稍不留神,就会掉下队来。因此,诸多技术工作者在仔细权衡利弊之后,终于还是决定跳离技术这个是非之地,将工作机会让给那些更青春更朝气的年轻一辈们。 当然,还是有相当一部…