嵌入式重点
第一章 绪论
基本概念与特点
填空题 概念、特点 - 嵌入式系统:是嵌入到对象体系中的、用于执行独立功能的专用计算机 - 嵌入式系统的三要素: 1. 嵌入性——满足环境要求 2. 专用性——满足配置要求 3. 计算机系统——满足控制要求 - 与桌面通用系统的区别(19~20简答题): - 专用 - 实时性强 - 可靠性 - 功耗低 - 资源较少 - 开发需要专用工具和特殊方法 - 开发:交叉编译 - 调试:仿真器、虚拟机 - 更新:在线升级 - 结构(19~20填空题): 1. 嵌入式处理器 2. 外围硬件设备 3. 嵌入式操作系统(可选) 4. 用户的应用软件
第二章 ARM微处理器与编程模型
体系结构
- 冯诺依曼结构:
- 将程序与数据存放在同一存储器的不同地址
- 顺序执行指令
- 执行过程:
- 取指(或数据)
- 译码
- 执行
- 哈佛结构:
- 将程序和数据存放在不同的存储器中
- 并行执行指令
- 执行过程:
- 取指(和数据)
- 译码
- 执行
指令系统
- RISC:精简指令集计算机
- Load-Store结构:CPU只处理寄存器中的数据,使用Load-Store指令完成数据在寄存器和外部存储器之间的传送
流水线
- Pipeline:几条指令可以并行执行
- 三级流水线
微处理器
- ARM内部芯片结构:
- ARM CPU(内核) + 外部设备(部件) = ARM芯片
运行模式
- 7种运行模式:
- USR用户模式:ARM处理器正常的程序执行状态
- FIQ快速中断模式:用于高速数据传输或通道处理
- IRQ外部中断模式:用户通用的中断处理
- SVC管理模式:操作系统使用的保护模式,处理软件中断
- ABT数据访问中止模式:当数据或指令预取中止时进入该模式
- 可用于虚拟存储器和存储器保护
- UND未定义指令模式:当未定义的指令执行时进入该模式
- 可用于支持硬件协处理器和软件仿真
- SYS系统模式:运行具有特权的操作系统任务
异常
[!note] ARM处理异常 步骤: 1. 保存断点 2. 保存状态 3. 设置异常模式 4. 跳转执行 返回的具体步骤: 1. 恢复断点 2. 恢复状态 3. 清除中断状态 4. - ARM处理异常的具体步骤: 1. 将下一条指令的地址存入相应链接寄存器LR,以便程序在处理异常返回时能从正确的位置重新开始执行。 2. 将CPSR复制到相应的SPSR中, 3. 根据异常类型,强制设置CPSR的运行模式位。 4. 强制PC从相关的异常向量地址取下一条指令执行,从而跳转到相应的异常处理程序处。同时设置中断禁止位。 - ARM处理异常返回的具体步骤: 1. 将链接寄存器L的值减去相应的偏移量后送到PC中。 2. 将SPSR复制回CPSR中。(※) 3. 若在进入异常处理时设置了中断禁止位,要在此清除。 4. 可以认为应用程序总是从复位异常处理程序开始执行的,因此复位异常处理程序不需要返回。 - 优先级: 1. 复位 2. 数据中止 3. FIQ 4. IRQ 5. 预取指令中止 6. 未定义指令 7. SWI - 异常向量地址:
第三章 ARM指令集与汇编程序设计
第四章 嵌入式存储器系统
系统的启动方式
- NAND FLASH作为引导ROM的启动流程:
存储芯片连接
- 数据总线:顺序连接即可
- 控制总线:将存储器芯片的控制引脚与微处理器芯片对应的控制引脚连接
- 地址总线:
- S3C2440的A0/A0A1用作存储器的片选
NAND/NOR FLASH的特点
- NAND FLASH:
- 速度相对慢,程序必须放入RAM才能执行
- CPU需通过专门的控制器才能访问
- 使用时需要复杂的I/O接口电路和存储管理操作
- 以页为最小单位进行读写
- 以块为最小单位进行擦除
- 擦写次数约为100万次
- 容量大,价格经济
- 需要借助内部RAM才能实现引导系统启动,支持自动启动引导
- NOR FLASH
- 访问速度快,程序可以在其内部直接运行、
- CPU可以直接访问
- 擦写次数约为10万次
- 写入速度慢,容量小,价格高
- 带有SRAM接口,与微处理器连接方便,便于数据存取
- 常作为内部或者外部ROM,存放BootLoader程序,引导系统启动
第五章 常用外围设备及接口
GPIO案例
中断
- 中断的作用:
- 并行处理
- 实时处理
- 故障处理
- 外部中断相关:
- 外部中断控制器(EXTINTn):用于设定外部中断请求信号的触发方式
- 外部中断滤波寄存器(EINTFLTn):设定滤波器的时钟信号来源和滤波宽度
- 外部中断屏蔽寄存器(EINTMASK):用于设定20个外部中断请求信号是否允许中断
- 外部中断挂挂起寄存器(EINTPEND):用于标记外部中断请求信号是否触发,供中断服务程序读取和判断
- 一级中断相关:
- 源挂起寄存器(SRCPND):用于标记一级中断源的中断请求信号是否触发,即是否有中断等待处理,供中断服务程序读取和判断
- 中断模式寄存器(INTMOD):用于设定32个一级中断源的中断模式
- 中断屏蔽寄存器(INTMASK):用于设定32个一级中断源是否被允许中断
- 中断优先级:通过中断优先级来确定中断请求的服务顺序
时钟与定时部件
-
定时器的特点:
- 实际执行减1操作的是TCNTn,为了防止对其读写影响计数,不允许程序对其直接访问
- 通过程序将计数初值写入TCNTBn。每次定时开始时,会被复制到TCNTn中
- 通过程序读取TCNTOn,间接获取TCNTn的动态计数值
- 通过程序读取TCNTBn,读出的是下次定时操作的重载值
- TCNTn减到0时,可以根据TCON的自动重载标志,决定是否复制TCNTBn到TCNTn中,以开启下一次定时操作。
- 内部设有双缓冲功能
- 因此,在当前定时操作VS,若设置心得定时器值,仅当当前定时操作执行完毕后才有效
- 实际执行减1操作的是TCNTn,为了防止对其读写影响计数,不允许程序对其直接访问
-
实时时钟:用于提供年月日时分秒星期等实时时间信息
- 看门狗定时器:用于当噪音或系统错误引起故障时,恢复控制器操作的定时器
- 本质是一个16位内部定时器,当计数器值为0(超时)时,通过触发中断服务,激活128个PCLK时钟周期内部的复位信号
- 系统处于嵌入式ICE调试模式时,WDT必须无操作
第六章 Linux编程基础
- Bootloader:操作系统内核运行之前运行的一段小程序
- 通过这段小程序,可以初始化硬件设备、建立内存空间的映射图,从而将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统内核准备好正确的环境。
- 五个主要子系统:
- 进程调度
- 进程间通信
- 内存管理
- 虚拟文件系统
- 网络接口