需要确认注册邮箱后才能开通博客,立即确认我的邮箱
文章 搜索 高级搜索 ?3? ?3?
  • 滤波器new!
  • LED驱动 new!
  • 新能源 new!
  • PLL
  • PCIE协议
  • 可穿戴
  • LSI
  • FCI
文章 论坛 博客 小组 研讨会
EDN China>EDN论坛>嵌入式系统与软件专区>STM32经典概述,有干货 首先,在学习Cortex-M3时,我们必须要知道必要的缩略语。 整理如下:AMBA:先进单片机总线架构 ADK:AMBA设计
?
大家在做什么...
楼主 问题:

STM32经典概述,有干货 首先,在学习Cortex-M3时,我们必须要知道必要的缩略语。 整理如下:AMBA:先进单片机总线架构 ADK:AMBA设计

发布时间:2016-3-31 上午10:07

作者: 搬砖青年

等级: 初学者

积分: 104分

发帖数: 1次

网站总积分: 104分

104分

发送消息

加为好友

查看用户的所有发言

查看用户的个人主页

需要确认注册邮箱后才能下载,立即确认我的邮箱
回复后可下载附件
STM32经典概述,有干货
首先,在学习Cortex-M3时,我们必须要知道必要的缩略语。?整理如下:AMBA:先进单片机总线架构???ADK:AMBA设计套件AHB:先进高性能总线????AHB-AP:AHB访问端口APB:先进外设总线????ARM?ARM:ARM架构参考手册ASIC:行业领域专用集成电路????ATB?:先进跟踪总线BE8:字节不变式大端模式????CPI:每条指令的周期数DAP:调试访问端口????DSP:数字信号处理(器)DWT:数据观察点及跟踪????ETM:嵌入式跟踪宏单元FPB:闪存地址重载及断点??FSR:fault状态寄存器HTM:Core?Sight?AHB跟踪宏单元ICE:在线仿真器????IDE:集成开发环境IRQ:中断请求(通常是外中断请求)ISA:指令系统架构???ISR:中断服务例程ITM:仪器化跟踪宏单元??????JTAG:连接点测试行动组(一个关于测试和调试接口的标准)LR:连接寄存器LSB:最低有效位MSB:最高有效位LSU:加载存储单元MCU:微控制器单元MPU:存储器保护单元MMU:存储器管理单元MSP:主堆栈指针NMI:不可屏蔽中断NVIC:嵌套向量中断控制器PC:程序计数器PPB:私有外设总线同时,还要如下规定:?数值:1.?4''hC?,?0x123??都表示16进制数?
2.?#3表示数字3?(e.g.,?IRQ?#3??就是指3号中断)?
3.?#immed_12表示一个12位的立即数?
4.??寄存器位。通常是表示一个位段的数值,例如?
bit[15:12]??表示位序号从15往下数到12,这一段的数值。
寄存器访问类型?
1.??R??表示只读?
2.??W表示只写?
3.??RW??表示可读可写(前3条好像地球人都知道)?
4.??R/Wc??表示可读,但是写访问将使之清?0Cortex-M3芯片简介
1、芯片的基本结构如下图:
2、关于ARMv7的知识--了解
在这个版本中,内核架构首次从单一款式变成3种款式:
?
款式A:设计用于高性能的“开放应用平台”——越来越接近电脑了?
?
款式R:用于高端的嵌入式系统,尤其是那些带有实时要求的——又要快又要实时。?
?
款式M:用于深度嵌入的,单片机风格的系统中
?
介绍A:用于高性能的“开放应用平台”,应用在那些需要运行复杂应用程序的处理器。支持大型嵌入式操作系统
?
R:用于高端的嵌入式系统,要求实时性的
?
M:用于深度嵌入的、单片机风格的系统中
3、Cortex-M3处理器的舞台
高性能+高代码密度+小硅片面积,使得CM3大面积地成为理想的处理平台,主要应用在以下领域:
?
(1)低成本单片机
(2)汽车电子
(3)数据通信
(4)工业控制
(5)消费类电子产品
4、Cortex-M3概览(1)简介???????Cortex-M3是一个?32位处理器内核。内部的数据路径是?32位的,寄存器是?32位的,存储器接口也是?32?位的。CM3?采用了哈佛结构,拥有独立的指令总线和数据总线,可以让取指与数据访问并行不悖。这样一来数据访问不再占用指令总线,从而提升了性能。为实现这个特性,?CM3内部含有好几条总线接口,每条都为自己的应用场合优化过,并且它们可以并行工作。但是另一方面,指令总线和数据总线共享同一个存储器空间(一个统一的存储器系统)。???????比较复杂的应用可能需要更多的存储系统功能,为此CM3提供一个可选的MPU,而且在需要的情况下也可以使用外部的?cache。另外在CM3中,Both小端模式和大端模式都是支持的。
?
(2)Cortex-M3的简化图
?
?
(3)寄存器组?
处理器拥有R0-R15的寄存器组,其中R13最为堆栈指针SP,SP有两个,但是同一时刻只能有一个可以看到,这就是所谓的“banked”寄存器。
a、R0-R12都是?32位通用寄存器,用于数据操作。但是注意:绝大多数?16位Thumb指令只能访问R0-R7,而?32位?Thumb-2指令可以访问所有寄存器。?????????b、Cortex-M3拥有两个堆栈指针,然而它们是?banked,因此任一时刻只能使用其中的一个。?
??主堆栈指针(MSP):复位后缺省使用的堆栈指针,用于操作系统内核以及异常处理例程(包括中断服务例程)?
??进程堆栈指针(PSP):由用户的应用程序代码使用。---堆栈指针的最低两位永远是0,这意味着堆栈总是4字节对齐的。---????????c、R14:连接寄存器--当呼叫一个子程序时,由R14存储返回地址??????????d、R15:程序计数寄存器--指向当前的程序地址,如果修改它的值,就能改变程序的执行流(这里有很多高级技巧)??????????e、Cortex-M3还在内核水平上搭载了若干特殊功能寄存器,包括程序状态字寄存器组(PSRs)中断屏蔽寄存器组(PRIMASK,?FAULTMASK,?BASEPRI)?
控制寄存器(CONTROL)
?Cortex-M3处理器支持两种处理器的操作模式,还支持两级特权操作。?
???????两种操作模式分别为:处理者模式和线程模式(thread?mode)。引入两个模式的本意,是用于区别普通应用程序的代码和异常服务例程的代码——包括中断服务例程的代码。
????????
Cortex-M3?的另一个侧面则是特权的分级——特权级和用户级。这可以提供一种存储器访问的保护机制,使得普通的用户程序代码不能意外地,甚至是恶意地执行涉及到要害的操作。处理器支持两种特权级,这也是一个基本的安全模型。
?
?
?在?CM3?运行主应用程序时(线程模式),既可以使用特权级,也可以使用用户级;但是异常服务例程必须在特权级下执行。复位后,处理器默认进入线程模式,特权极访问。在特权级下,程序可以访问所有范围的存储器(如果有?MPU,还要?在MPU规定的禁地之外),并且可以执行所有指令。
???????在特权级下的程序可以为所欲为,但也可能会把自己给玩进去——切换到用户级。一旦进入用户级,再想回来就得走“法律程序”了——用户级的程序不能简简单单地试图改写?CONTROL寄存器就回到特权级,它必须先“申诉”:执行一条系统调用指令(SVC)。这会触发SVC异常,然后由异常服务例程(通常是操作系统的一部分)接管,如果批准了进入,则异常服务例程修改?CONTROL寄存器,才能在用户级的线程模式下重新进入特权级。
????????
事实上,从用户级到特权级的唯一途径就是异常:如果在程序执行过程中触发了一个异常,处理器总是先切换入特权级,并且在异常服务例程执行完毕退出时,返回先前的状态
?
?
?通过引入特权级和用户级,就能够在硬件水平上限制某些不受信任的或者还没有调试好的程序,不让它们随便地配置涉及要害的寄存器,因而系统的可靠性得到了提高。进一步地,如果配了?MPU,它还可以作为特权机制的补充——保护关键的存储区域不被破坏,这些区域通常是操作系统的区域。?
(4)内建的嵌套向量中断控制器??Cortex-M3?在内核水平上搭载了一颗中断控制器——嵌套向量中断控制器?NVIC(Nested?Vectored?Interrupt?Controller)。它与内核有很深的“亲密接触”——与内核是紧耦合的。
NVIC提供如下的功能:?
??可嵌套中断支持?
??向量中断支持?
??动态优先级调整支持?
??中断延迟大大缩短?
??中断可屏蔽???????可嵌套中断支持:??可嵌套中断支持的作用范围很广,覆盖了所有的外部中断和绝大多数系统异常。外在表现是,这些异常都可以被赋予不同的优先级。当前优先级被存储在?xPSR?的专用字段中。当一个异常发生时,硬件会自动比较该异常的优先级是否比当前的异常优先级更高。如果发现来了更高优先级的异常,处理器就会中断当前的中断服务例程(或者是普通程序),而服务新来的异常——即立即抢占。?????????向量中断支持:??当开始响应一个中断后,CM3会自动定位一张向量表,并且根据中断号从表中找出?ISR的入口地址,然后跳转过去执行。不需要像以前的?ARM那样,由软件来分辨到底是哪个中断发生了,也无需半导体厂商提供私有的中断控制器来完成这种工作。这么一来,中断延迟时间大为缩短。
(5)存储器映射Cortex-M3支持4G存储空间,具体分配如下图:
?(6)总线接口Cortex-M3内部有若干个总线接口,以使?CM3能同时取址和访内(访问内存),它们是:?
???指令存储区总线(两条)?
???系统总线?
???私有外设总线?
??????有两条代码存储区总线负责对代码存储区的访问,分别是?I-Code?总线和?D-Code?总线。前者用于取指,后者用于查表等操作,它们按最佳执行速度进行优化。
???????系统总线用于访问内存和外设,覆盖的区域包括?SRAM,片上外设,片外?RAM,片外扩展设备,以及系统级存储区的部分空间。?
??????私有外设总线负责一部分私有外设的访问,主要就是访问调试组件。它们也在系统级存储区。?
(7)存储器保护单元(MPU)????Cortex-M3有一个可选的存储器保护单元。配上它之后,就可以对特权级访问和用户级访问分别施加不同的访问限制。当检测到犯规(violated)时,MPU?就会产生一个?fault?异常,可以由fault异常的服务例程来分析该错误,并且在可能时改正它。
???????MPU?有很多玩法。最常见的就是由操作系统使用?MPU,以使特权级代码的数据,包括操作系统本身的数据不被其它用户程序弄坏。MPU在保护内存时是按区管理的。它可以把某些内存?region设置成只读,从而避免了那里的内容意外被更改;还可以在多任务系统中把不同任务之间的数据区隔离。一句话,它会使嵌入式系统变得更加健壮,更加可靠(很多行业标准,尤其是航空的,就规定了必须使用?MPU来行使保护职能——译
注)?。
(8)Cortex-M3的简评1、高性能许多指令都是单周期的——包括乘法相关指令。并且从整体性能上,Cortex-M3比得过绝大多数其它的架构。?
??指令总线和数据总线被分开,取值和访内可以并行不悖?
Thumb-2的到来告别了状态切换的旧世代,再也不需要花时间来切换于?32位?ARM状态和16位Thumb状态之间了。这简化了软件开发和代码维护,使产品面市更快。?
Thumb-2指令集为编程带来了更多的灵活性。许多数据操作现在能用更短的代码搞定,这意味着?Cortex-M3的代码密度更高,也就对存储器的需求更少。?
取指都按?32位处理。同一周期最多可以取出两条指令,留下了更多的带宽给数据传输。?
Cortex-M3的设计允许单片机高频运行(现代半导体制造技术能保证?100MHz以上的速度)即使在相同的速度下运行,CM3的每指令周期数(CPI)也更低,于是同样的?MHz下可以做更多的工作;另一方面,也使同一个应用在?CM3上需要更低的主频。
2、先进的中断处理功能内建的嵌套向量中断控制器支持240条外部中断输入。向量化的中断功能大大减少了中断延迟,因为不在需要软件去判断中断源。中断的嵌套也是在硬件水平上实现的,不需要软件代码来实现。
Cortex-M3在进入异常服务例程时,自动压栈了?R0-R3,?R12,?LR,?PSR?和PC,并且在返回时自动弹出它们,这多清爽!既加速了中断的响应,也再不需要汇编语言代码了
NVIC支持对每一路中断设置不同的优先级,使得中断管理极富弹性。最粗线条的实现也至少要支持?8级优先级,而且还能动态地被修改。
?
优化中断响应还有两招,它们分别是“咬尾中断机制”和“晚到中断机制”。?
?
有些需要较多周期才能执行完的指令,是可以被中断-继续的——就好比它们是一串指令一样。这些指令包括加载多个寄存器(LDM),存储多个寄存器(STM),多个寄存器参与的PUSH,以及多个寄存器参与的?POP。
?
除非系统被彻底地锁定,NMI(不可屏蔽中断)会在收到请求的第一时间予以响应。对很多安全-关键(safety-critical)的应用,NMI都是必不可少的(如化学反应即将失控时的紧急停机)。
?

更多单片机,嵌入式,安卓学习咨询付工:1841388306,微信18126751233。


附件
分享到:? 新浪微博 ?? 微信 ??


打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮

1.扫描左侧二维码
2.点击右上角的分享按钮
3.选择分享给朋友
qq空间 ?? 腾讯微博 ?? 人人网 ?? 百度搜藏 ??
?
引用 回复 收藏 推荐到小组 ( 0) ( 0) 关注

快速回复 高级回复
用户名:?
美国的游客?????? (您将以游客身份发表,请登陆 | 注册) ?
标题: * 标题还可以输入80
评论: * 你还可以输入30000
验证码: ?*?
分享: 新浪微博?? qq空间?? qq微博?? 人人网?? 百度搜藏??
维护专业、整洁的论坛环境需要您的参与,请及时举报违规帖子,如果举报属实,我们将给予相应的积分奖励。
谢谢您的热心参与!
返回嵌入式系统与软件 | 返回专业技术交流区
本论坛仅陈述专家或个人观点,并不代表EDN China 电子技术设计互动社区网站立场。
积分排行榜
彩云 [殿堂级工程师]
mzlr [殿堂级工程师]
特权同学 [殿堂级工程师]
敬请关注EDNC官方微信“edn-china"

每月定期向您递送电子元器件规格书网中的最新元器件数据手册下载、库存信息及技术参数更新。请点击订阅:

2016我的工程师社区
EDN官方QQ群???更多QQ群
  • EDN-深圳 8366025
  • 菜农Cortex-M0技术交流 12047788
  • EDN-哈尔滨 75642591
  • EDN-上海 15156661
  • EDN-广州 57660943
  • EDN-桂林 48813559
  • EDN-武汉 25150805
  • EDN-模拟电路 2837145
  • EDN-通讯 30548292
  • EDN-综合 57490949

促进EDN网友交流合作,方便EDN网友学习沟通

有问题请反馈