本文首发于稀土掘金。该平台的作者 逐光而行 也是本人。
(不知不觉又到了结课的时候,我整理了一些老师上课提到过的考试重点,希望有修同一门课的校友看到熟悉的表达都能逢考必过!不同学校对同一门课程的要求不一样哈,仅供参考)
嵌入式系统定义、特点
定义
- 从技术的角度定义:以应用为中心、以计算机技术为基础、软件硬件可裁剪、适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。
- 从系统的角度定义:嵌入式系统是设计完成复杂功能的硬件和软件,并使其紧密耦合在一起的计算机系统。术语嵌入式反映了这些系统通常是更大系统中的一个完整的部分,称为嵌入的系统。嵌入的系统中可以共存多个嵌入式系统。
特点
- 专用、软硬件可剪裁可配置
- 低功耗、高可靠性、高稳定性
- 软件代码短小精悍
- 代码可固化。
- 实时性
- 弱交互性
- 嵌入式系统软件开发通常需要专门的开发工具和开发环境
- 要求开发、设计人员有较高的技能
开发环境特点、组成部分
- 特点:在一个交叉开发平台,软件开发和运行分别在两个不同的平台上实现。
- 交叉开发平台组成部分:编译器、连接器、调试器等。
ARM全称?如何理解?
- 全称:Advanced RISC Machines
- 该公司旨在设计大量先进(advanced)、高性能的RISC处理器,但不生产。
Cortex-M3内核
全新处理器,不向后兼容,最新的ARMv7架构、Thumb-2指令集
Thumb-2指令集特点
(课件里没有很书面的说明,但是老师上课的时候曾口头表示:该指令集最大的特点就是很规整(定长指令集),所以可保证执行指令用时的一致性)
为什么RISC比CISC实时性好?
- 和指令集有关。交互由中断实现,RISC指令集短,指令规整,能保证中断 及时 进行;CISC不好说。
- 实时性是指什么? 不是指速度快,而是指在相应时间内能对外部作出响应。
总线种类
(“种类”这个定义很模糊,可以从材质上分类,也可以从用途上分,我更倾向于认为老师当时指的是:用途)
- 系统总线
基于AHB‐Lite总线协议的32位总线,默认映射到0x20000000-0xDFFFFFFF和0xE0100000-0xFFFFFFFF两个内存地址段,用于访问内存和外设,即SRAM,片上外设,片外RAM,片外扩展设备以及系统级存储区。
- 外设总线
基于APB总线协议的32位总线,用于访问私有外设,默认映射到0xE0040000-0xE00FFFFF内存地址段。由于TPIU、ETM以及ROM表占用部分空间,实际可用地址区间为0xE0042000-0xE00FF000。
中断
NVIC(Nested Vectored Interrupt Controller)
【待解决】清中断标志
寄存器作用
特别注意,R13-堆栈寄存器;R14-连接寄存器;R15-程序计数器
特权指令与非特权指令相关
Cortex-M3支持两种模式和两个特权等级
为何设置不同工作模式?
- 有利于架构的安全和健壮。
比如当用户代码出问题时,因其被禁止写特殊功能寄存器和NVIC中的寄存器,不会影响系统中其他代码的运行。从而不会影响整个系统的安全。
如何设置?
特权模式和堆栈指针均由CONTROL寄存器负责。
第0位控制是否特权,第1位控制堆栈。
只能在特权级进行CONTROL的设置
堆栈有哪几类?使用场景?
堆栈分为主堆栈和进程堆栈。
运行在线程模式的用户代码使用PSP,
而异常服务例程则使用MSP。
STM32各模块功能
这个问题有点大,打算放到下一篇文章针对具体的小模块讨论。
(关于分析题和应用题的部分,敬请期待后续的(二)和(三),今天就整理到这里了。)