打印
[应用相关]

STM32经典概述,有干货

[复制链接]
835|34
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
t60yz|  楼主 | 2021-1-26 23:24 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

2、关于ARMv7的知识--了解
在这个版本中,内核架构首次从单一款式变成3种款式:

款式A:设计用于高性能的“开放应用平台”——越来越接近电脑了

款式R:用于高端的嵌入式系统,尤其是那些带有实时要求的——又要快又要实时。

款式M:用于深度嵌入的,单片机风格的系统中


使用特权

评论回复
沙发
t60yz|  楼主 | 2021-1-26 23:28 | 只看该作者
介绍A:用于高性能的“开放应用平台”,应用在那些需要运行复杂应用程序的处理器。支持大型嵌入式操作系统



R:用于高端的嵌入式系统,要求实时性的



M:用于深度嵌入的、单片机风格的系统中

使用特权

评论回复
板凳
t60yz|  楼主 | 2021-1-26 23:29 | 只看该作者
3、Cortex-M3处理器的舞台
高性能+高代码密度+小硅片面积,使得CM3大面积地成为理想的处理平台,主要应用在以下领域:



(1)低成本单片机

(2)汽车电子

(3)数据通信

(4)工业控制

(5)消费类电子产品

使用特权

评论回复
地板
t60yz|  楼主 | 2021-1-26 23:33 | 只看该作者
4、Cortex-M3概览
(1)简介
      
Cortex-M3是一个 32位处理器内核。内部的数据路径是 32位的,寄存器是 32位的,存储器接口也是 32 位的。CM3 采用了哈佛结构,拥有独立的指令总线和数据总线,可以让取指与数据访问并行不悖。这样一来数据访问不再占用指令总线,从而提升了性能。为实现这个特性, CM3内部含有好几条总线接口,每条都为自己的应用场合优化过,并且它们可以并行工作。但是另一方面,指令总线和数据总线共享同一个存储器空间(一个统一的存储器系统)。
      
比较复杂的应用可能需要更多的存储系统功能,为此CM3提供一个可选的MPU,而且在需要的情况下也可以使用外部的 cache。另外在CM3中,Both小端模式和大端模式都是支持的。

使用特权

评论回复
5
t60yz|  楼主 | 2021-1-26 23:34 | 只看该作者

使用特权

评论回复
6
t60yz|  楼主 | 2021-1-26 23:35 | 只看该作者
(3)寄存器组

处理器拥有R0-R15的寄存器组,其中R13最为堆栈指针SP,SP有两个,但是同一时刻只能有一个可以看到,这就是所谓的“banked”寄存器。

使用特权

评论回复
7
t60yz|  楼主 | 2021-1-26 23:36 | 只看该作者
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)

使用特权

评论回复
8
t60yz|  楼主 | 2021-1-26 23:36 | 只看该作者

使用特权

评论回复
9
t60yz|  楼主 | 2021-1-26 23:37 | 只看该作者
Cortex-M3处理器支持两种处理器的操作模式,还支持两级特权操作。
      
两种操作模式分别为:处理者模式和线程模式(thread mode)。引入两个模式的本意,是用于区别普通应用程序的代码和异常服务例程的代码——包括中断服务例程的代码。

使用特权

评论回复
10
t60yz|  楼主 | 2021-1-26 23:37 | 只看该作者
Cortex-M3 的另一个侧面则是特权的分级——特权级和用户级。这可以提供一种存储器访问的保护机制,使得普通的用户程序代码不能意外地,甚至是恶意地执行涉及到要害的操作。处理器支持两种特权级,这也是一个基本的安全模型。

使用特权

评论回复
11
t60yz|  楼主 | 2021-1-26 23:38 | 只看该作者

使用特权

评论回复
12
t60yz|  楼主 | 2021-1-26 23:38 | 只看该作者
在 CM3 运行主应用程序时(线程模式),既可以使用特权级,也可以使用用户级;但是异常服务例程必须在特权级下执行。复位后,处理器默认进入线程模式,特权极访问。在特权级下,程序可以访问所有范围的存储器(如果有 MPU,还要 在MPU规定的禁地之外),并且可以执行所有指令。

使用特权

评论回复
13
t60yz|  楼主 | 2021-1-26 23:40 | 只看该作者
在特权级下的程序可以为所欲为,但也可能会把自己给玩进去——切换到用户级。一旦进入用户级,再想回来就得走“法律程序”了——用户级的程序不能简简单单地试图改写 CONTROL寄存器就回到特权级,它必须先“申诉”:执行一条系统调用指令(SVC)。这会触发SVC异常,然后由异常服务例程(通常是操作系统的一部分)接管,如果批准了进入,则异常服务例程修改 CONTROL寄存器,才能在用户级的线程模式下重新进入特权级。

使用特权

评论回复
14
t60yz|  楼主 | 2021-1-26 23:41 | 只看该作者
事实上,从用户级到特权级的唯一途径就是异常:如果在程序执行过程中触发了一个异常,处理器总是先切换入特权级,并且在异常服务例程执行完毕退出时,返回先前的状态

使用特权

评论回复
15
t60yz|  楼主 | 2021-1-26 23:41 | 只看该作者
通过引入特权级和用户级,就能够在硬件水平上限制某些不受信任的或者还没有调试好的程序,不让它们随便地配置涉及要害的寄存器,因而系统的可靠性得到了提高。进一步地,如果配了 MPU,它还可以作为特权机制的补充——保护关键的存储区域不被破坏,这些区域通常是操作系统的区域。

使用特权

评论回复
16
t60yz|  楼主 | 2021-1-26 23:42 | 只看该作者
4)内建的嵌套向量中断控制器
  
Cortex-M3 在内核水平上搭载了一颗中断控制器——嵌套向量中断控制器 NVIC(Nested Vectored Interrupt Controller)。它与内核有很深的“亲密接触”——与内核是紧耦合的。

使用特权

评论回复
17
t60yz|  楼主 | 2021-1-26 23:43 | 只看该作者
NVIC提供如下的功能:
  可嵌套中断支持
  向量中断支持
  动态优先级调整支持
  中断延迟大大缩短
  中断可屏蔽

使用特权

评论回复
18
t60yz|  楼主 | 2021-1-26 23:43 | 只看该作者
可嵌套中断支持:  可嵌套中断支持的作用范围很广,覆盖了所有的外部中断和绝大多数系统异常。外在表现是,这些异常都可以被赋予不同的优先级。当前优先级被存储在 xPSR 的专用字段中。当一个异常发生时,硬件会自动比较该异常的优先级是否比当前的异常优先级更高。如果发现来了更高优先级的异常,处理器就会中断当前的中断服务例程(或者是普通程序),而服务新来的异常——即立即抢占。

使用特权

评论回复
19
t60yz|  楼主 | 2021-1-26 23:44 | 只看该作者
向量中断支持:  当开始响应一个中断后,CM3会自动定位一张向量表,并且根据中断号从表中找出 ISR的入口地址,然后跳转过去执行。不需要像以前的 ARM那样,由软件来分辨到底是哪个中断发生了,也无需半导体厂商提供私有的中断控制器来完成这种工作。这么一来,中断延迟时间大为缩短。

使用特权

评论回复
20
t60yz|  楼主 | 2021-1-26 23:46 | 只看该作者
(5)存储器映射
Cortex-M3支持4G存储空间,具体分配如下图:

使用特权

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

本版积分规则

123

主题

951

帖子

0

粉丝