嵌入式之家

 找回密码
 现在注册

QQ登录

只需一步,快速开始

搜索
热搜: ARM cortex
查看: 2423|回复: 2

Cortex-M3内核架构

[复制链接]

该用户从未签到

45

主题

115

帖子

1543

积分

金牌会员

Rank: 6Rank: 6

积分
1543
发表于 2016-3-30 10:00:18 | 显示全部楼层 |阅读模式
1)寄存器组
Cortex-M3内核共有19组32位寄存器:
R0——R12(通用寄存器);
低寄存器组R0——R7
32位Thumb-2指令与16位Thumb指令均可访问
高寄存器组R8——R12
32位Thumb-2指令与极少数16位Thumb指令可访问
R13(堆栈指针寄存器);
     主堆栈寄存器MSP(main-SP)/进程堆栈寄存器PSP(Process-SP)同一时间只能使用其中一个。MSP供操作系统内核及中断(异常)处理子程序使用,PSP只供用户的应用程序代码使用(详细使用详见3、嵌套向量中断控制器(NVIC)的总结)。
     堆栈指针是4字节对齐的,故最低两位永远是00;
R14(连接寄存器)
     用于存储程序返回的地址及PC的返回地址;
R15(程序寄存器)指向当前程序执行的地址;
2)特殊功能寄存器组
xPSR(程序状态字寄存器组),32位,可分为三个寄存器分别进行访问,也可以PSR或xPSR的名字直接组合访问。
     应用程序PSR(APSR)
     中断号PSR(IPSR)
     执行PSR(EPSR)
中断屏蔽寄存器
PRIMASK    单一比特位,置位后,除NMI与硬fault外,其他中断都不响应;
FAULTMASK  单一比特位,置位后,除NMI外,其他中断都不响应;
BASEPRI     共有9位,中断号小于等于该寄存器设置值的中断都不响应;
控制寄存器control
Control[0] 0决定特权级线程模式;1用户级线程模式;
Control[1] 0主堆栈;1进程堆栈;
控制寄存器只能在特权级模式下改写,handler模式永远是特权级,且只允许使用主堆栈MSP
复位后,处理器进入特权级+线程模式下;
2、地址功能划分映射
Cortex-m3是一个32位处理器,其地址总线、数据总线都是32位的,故可在4G的地址范围上资源寻址。Cortex-m3内核把4G空间划定了基本的框架,定义不同的使用用途。
0x0000 0000 ----0x1FFF FFFF(512MB) 该区域为code区(flash区),供指令总线与数据总线取指取数使用;可以执行指令;
0x2000 0000 ----0x3FFF FFFF(512MB) 该区域为片上SRAM区,芯片制造商可在此布设RAM,可以将代码复制到此处运行,该区域也是可以执行指令code的;低1MB空间可位寻址,通过位带别名可扩展为32Mb的位寻址。
0x4000 0000 ----0x5FFF FFFF(512MB)该区域为“片上外设”区,主要为片上外设的相关寄存器,即特殊功能寄存器区,同理低1MB也可位寻址;该区域不可执行代码;
0x6000 0000 ----0x9FFFFFFF(1G)该区域为片外RAM区,该区域可执行代码;
0xA000 0000 ----0xDFFFFFFF(1G)该区域为片外外设区,该区域不可执行代码;
0xE000 0000 ----0xFFFFFFFF(1G)该区域为系统区,该区域不可执行代码;
所以不同地址片段的起始地址可简记为:0,2,4,6,10,E,
该系统区又分为两部分:
内部私有外设区0xE000 0000 ----0xE003FFFF(256KB)主要有NVIC,FPB,DWT,ITM等
外部私有外设区0xE004 0000 ----0xE00FFFFF(512+256=768KB)有ROM表,ETM,TPIU等
数据的大小端模式:CM-3既支持大端模式也支持小端模式,其中对于大端模式,ARM7中使用的是字不变大端模式,CM3中则为字节不变大端模式。虽说大小端模式都支持,但依然建议在绝大多数情况下使用小端模式,如果一些外设是大端模式,可以通过REV/REVH指令便可轻松完成端模式的转换。
3、中断机制(NVIC)
既然称之为MCU而非MPU,那么就是以控制为主,控制的一个关键指标就是实时性,能够及时对变化的情况作出反应,而这主要是通过中断机制来完成的,可以说除却运算性能,cortex-M3内核的主要修为都体现在控制的实时性上——也即中断的即时响应机制。
中断从发生到结束主要需要经过以下这么几个步骤:1捕获并响应中断,2现场保护,3中断程序入口,4返回。下面就根据这个脉络来总结cortexM3在提高中断响应速度方面所涉及的重要知识点(这个讲解顺序针对已具备一定的基础人员):
说到中断必涉及到优先级、涉及到嵌套,在CM3中用8位来编程中断的优先级数,可实现256级优先级,其中这8位又分为两段,一段决定抢占优先级的级数,一个决定亚优先级的级数,其中规定抢占优先级不得少于3位(8级优先级),亚优先级最少不得少于1位,所以抢占优先级在M3中最多128级,在哪一位开始分组由NVIC中的寄存器中(应用程序中断及复位控制寄存器)的PRIGROUP来决定;但实际中,芯片制造商一般只使用最高几位,比如5位,高三位(7,6,5)编程抢占优先级,剩下的两个次高位(4,3)用来决定亚优先级,从第4位处作为亚优先级的分组,这里通过一个分组寄存器来决定从哪一位做亚优先级分组。
回复

使用道具 举报

该用户从未签到

32

主题

81

帖子

771

积分

高级会员

Rank: 4

积分
771
发表于 2016-3-31 08:11:27 | 显示全部楼层
回复

使用道具 举报

  • TA的每日心情
    开心
    2020-6-18 22:00
  • 签到天数: 1 天

    [LV.1]初来乍到

    101

    主题

    192

    帖子

    1645

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    1645
    发表于 2016-4-8 15:32:52 | 显示全部楼层
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 现在注册

    本版积分规则

    QQ|Archiver|手机版|小黑屋|嵌入式之家 ( 京ICP备14038168号-1 )

    GMT+8, 2025-5-2 15:45 , Processed in 0.020061 second(s), 26 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2020, Tencent Cloud.

    快速回复 返回顶部 返回列表