博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
《ARM Cortex-M3权威指南》--语句摘要
阅读量:5329 次
发布时间:2019-06-14

本文共 1448 字,大约阅读时间需要 4 分钟。

 Cortex-M3是一个32位处理器内核,采用的是哈佛结构。
在CM3中小端模式和大端模式都是支持的。
Banked R13:两个堆栈寄存器。任意时刻只能使用其中的一个。
堆栈指针的最低两位永远是0,这就意味着堆栈总是4字节对齐的。
凡是打断程序执行的事件,都被称为异常(exception)。
除了外部中断外,因各种错误产生的fault,以及不可屏蔽中断发生时,都会打断程序的执行,这些情况都称为异常。
(在不严格的上下文中,异常和中断可以混用)
Cortex-M3支持两种处理器的操作模式,还支持两级特权操作
handler mode 和 thread mode
正两个模式是用于区别普通应用程序和异常应用程序(包括异常服务例程)的代码
特权级和用户级,提供一种存储器访问的保护机制,这是一个基本的安全模型
thread mode可以使用特权级,也可以使用用户级
handler mode只能使用特权级
复位后,处理器默认进入thread mode,特权级访问    p15
用户级到特权级的唯一途径就是异常
中断控制器--嵌套向量中断控制器NVIC(Nested Vectored Interrupt Controller)
R15程序计数器PC
因为CM3内部使用连指令流水线,读PC时返回的值是当前指令的地址+4K
优先级号越大,优先级越低
屏蔽效果:FAULTMASK>PRIMASK>BASEPRI    (在特权级下才允许被改)
控制寄存器(CONTROL)
有两个用途,一是用于定义特权级别,二是选择当前使用的堆栈指针K
Cortex-M3使用的是“向下生长的满栈”模型
P17 图2.6 存储器映射分成若干区域
P41 图3.15 初始MSP及PC初始化的一个范例
AHB内部私有外设总线,NVIC、FPB、DWT、ITM
APB外部私有外设总线,制造商添加的片上APB外设等等
NVIC所处的区域叫SCS(系统控制空间),它还包括SysTick、MPU以及代码调试用的寄存器
P83 图5.1 Cortex-M3预订义的存储器映射
P84 图5.2 系统控制空间(SCS)
P98 M3中的大端模式和ARM7相比在AHB上的数据处理有差别、
CM3是在复位的时候确定用哪种端模式,在运行中不能更改。
指令预取永远使用小端模式,在配置控制存储器空间的访问也永远使用小端模式(包括NVIC、FPB等)
外部私有总线地址区0xE0000000~0xE00FFFFF也永远使用小端模式。
P110
在Cortex-M3中编号1~15的是系统异常,大于等于16的都是外部中断,除连异常的优先级被定死了之外,其他异常的优先级都是可编程的。
NVIC的挂起状态寄存器可以保存中断请求信号,这样即使等到响应该中断的时候请求信号没有连,还是会执行这个中断的,这样就不会错失中断请求。
由于芯片厂商会在设计时对优先级进行裁减,生活衣优先级都是以MSB对齐的,即高位对齐。
P113 图7.2 使用4个位来表达优先级的情况(图有误,注意)
向量表是可以重定位的。但是,必须先求出系统中共有多少个向量,再把这个数字向上“圆整”到2的整数次幂,而且起始地址必须对齐到后者的边界上
例如:一共有32个中断,则共有32+16=48个向量,圆整后为64,因此向量表定位的地址必须被64*4=256整除。

 

转载于:https://www.cnblogs.com/shouchengcheng/p/3491598.html

你可能感兴趣的文章
Unix Family Tree
查看>>
linux 命令行更新sdk
查看>>
apache httpd.conf 参数详解
查看>>
Angular系列------AngularJS入门教程:导言和准备(转载)
查看>>
sql语句大全
查看>>
bat执行python脚本,执行多条命令
查看>>
JQuery事件
查看>>
hdu1254 推箱子(两种解法)
查看>>
201521123095 《Java程序设计》第8周学习总结
查看>>
使用 MySQL 查找附近的位置
查看>>
CURL状态码列表
查看>>
构建之法读后感二
查看>>
laravel 使用验证码
查看>>
Wannafly Union Goodbye 2016
查看>>
C++中的static关键字的总结 (转载)
查看>>
将联系人信息读取到列表中显示
查看>>
java 钱币的单位转换
查看>>
二路归并算法的java实现
查看>>
Cheatsheet: 2015 07.01 ~ 07.31
查看>>
XHTML嵌套规则
查看>>