嵌入式期末复习

嵌入式复习

第一章

  1. 基本概念

    以应用为中心,以计算机技术为基础,软硬件可裁剪,适应应用系统对功能、可靠性、成本、体积、重量和功耗严格要求的专用计算机系统。

  2. 体系结构:四层。应用层、系统层、中间层和硬件层
    在这里插入图片描述

    • 处理器:嵌入式微处理器、微控制器、数字信号处理器,SoC——FPGA(快速成品、可以修正、便宜)、ASIC
    • 操作系统:IOS,Android,Linux,WinCE

第二章

设计方法

  1. 传统方法

    优点是简单易行,分工明确。缺点是排错困难,无法进行全系统的优化设计

  2. 软硬件结合

    优点是软硬件统一描述有利于优化设计,着重算法。缺点是不够成熟,缺少高效开发工具。

第三章

  1. ARM是低功耗成本的第一款RISC微处理器。

  2. ARM7 冯诺依曼结构,三级流水结构,极低的功耗。移动终端之类的,已经落后了。

    ARM9 哈佛结构,五级流水结构,执行效率更高。无线设备,机顶盒,高端打印机、数字照相机摄像机,车载车控。

  3. ARM版本

    v1-v3是开发和试验版本,功能单一。v4是第一个具有全部正式定义的体系结构,ARM从v4版本开始走向成熟。v5是对v4的扩展。v6强化了图形处理,支持多种版本内核。v7是ARM的极大成功,占据了70%的市场,领先地位。

  4. 体系结构

    冯诺依曼结构是常规的,指令存储器和数据存储器在一起的存储器结构,程序指令和数据的宽度相同

    哈佛结构是程序指令存储和数据存储分开的存储结构

  5. 流水线技术

    • 三级流水是指取指、译码、执行三级。
    • 五级流水是指取指、译码、执行、存储器访问、寄存器回写五级。
  6. 多核大小核

    多核要关注的两个问题,一是在多任务执行的时候要能够很好的提升产品性能,二是提高电池续航

    第一代大小核应该是A57+A53,第二代大小核A75+A55,DynamlQ big.LITTLE

  7. 处理器模式

    用户模式、系统模式、快速中断、外部中断、管理模式、数据访问终止、未定义指令中止。

    除开用户模式意外都是特权模式,除开用户和系统意外都是异常模式。

  8. 处理器工作模式有两种,ARM(字对齐,32位ARM指令)和Thumb(半字对齐,16位Thumb指令),开始执行代码时总是处于ARM状态。

    模式切换:

    • 执行BX命令,带状态切换的指令,操作数寄存器最低位[0]为1时进入Thumb。
    • 工作在Thumb状态,遇到异常进入异常状态,处理完返回时进入Thumb状态。

    进入ARM

    • 执行BX命令,最低位[0]为0,进入ARM。
    • 工作在Thumb状态,发生异常进入异常处理,进入ARM状态。
  9. 寄存器

    • 未分组寄存器:R0-R7,指向同一个物理寄存器。

    • 分组寄存器:R8-R14,根据不同处理器模式分组。对应物理寄存器由当前处理器模式决定。

    • R0–R13通用寄存器,不用做特殊用途。

    • R8–R12有两个分组的物理寄存器,一个用于FIQ模式,另一个用于其他模式。

    • R13-R14有六个分组。一个分组用于系统模式和用户模式,剩下五个分别为各自的异常模式。

    • R13也堆栈指针,SP。ARM无特殊指令。

    • R14 链接寄存器 LR

      • 模式自身的R14用于保存子程序返回地址
      • 异常时,对应的异常版本R14设置为异常返回地址。
    • R15 程序计数器PC

      ARM [1:0]为0 [31:2]保存PC

      Thumb [0]为0,[31:1]保存PC

    • R16

      • CPSR 程序状态寄存器 任何模式均可访问,包括条件标志位,中断禁止位等。
      • SPSR 程序状态保存寄存器

      进入异常时。SPSR保存CPSR寄存器的值,异常返回后写回。

  10. 异常(程序的正常执行流程遇到暂时的停止):

    • 复位:处理器复位电平有效时,产生复位异常
    • 未定义
    • 软件中断
    • 指令预取中止
    • 数据中止
    • IRQ(外部中断请求):外部中断请求引脚有效,且CPSR的I位为0,产生IRQ异常,优先级低于FIQ。
    • FIQ(快速中断请求)
  11. 异常流程

    • CPSR复制到对应异常的SPSR
    • 设置对应异常的CPSR
    • 下一条指令地址存入R14
    • 强制PC从相关的异常向量取指令执行,从而跳转到相应的异常处理
  12. 从异常返回

    • SPSR的值复制回CPSR
    • LR的值减去相应偏移量送回PC

    复位异常不用返回。

  13. ARM处理器的数据类型一般是三种,字、半字、字节,分别是32位、16位、8位。ARM要求自然对界,字需要四字节对齐,地址的低两位位0;半字则是二字节对齐,地址最低位0;字节可以任意地址对齐。

  14. 如果一个数据地址是从偶地址开始的连续存储,则是半字对齐,否则就是非半字;如果一个数据地址是从能被4整除的地址开始的连续存储,则是字对齐,否则就是非字对齐。

  15. 32位微处理器,支持最大寻址为4GB。从0开始的以字节为单位的线性组合,一个字四个位置。大端低地址存放高字节,高地址存放低字节,小段格式相反

  16. ARM内核属于RISC结构,指令长度固定,指令格式种类少,寻址简单。

  17. 寻址方式

    • 立即寻址:操作数指令中给出

    • 寄存器寻址:操作数是给出寄存器的内容

    • 寄存器间接寻址:寄存器的内容作为操作数的地址

    • 基址变址寻址:寄存器的内容+偏移量为操作数地址

    • 多寄存器寻址:一次传送多个寄存器的值

      多寄存器加载/存储指令有8种模式,针对数据传送操作的有IA IB DA DB。针对堆栈操作的有FD ED FA EA

      LDM 读出

      STM 读入

      LDR 读入

      STR 读出

    • 堆栈寻址:

    • 移位寻址:

  18. 指令

    • LDR 从存储器中将一个32位的数据放入目的寄存器
      • LDRB 传送八位的字节数据,并清空高24位
      • LDRH 传送16位的半字数据,并清空高16位
    • STR 从源寄存器中将32位的子数据传送到存储器中。
      • STRB 8位字节数据,源寄存器的低8位。
      • STRH 半字数据,源寄存器低16位

    分支

    • B 跳转
    • BL 跳转,跳转前保存当前PC内容到R14

    数据处理

    • MOV 数据加载 可以将另一个寄存器、被移位的寄存器、立即数加载到目的寄存器。
      • MVN 同上,但是按位取反
    • CMP 比较寄存器和寄存器或者寄存器和立即数的大小,更新CPSR某些标志位
    • TST 按位与运算 检测是否设置了特定位数 寄存器,寄存器/立即数
    • TEQ 按位异或运算, 检测两数是否相等
    • ADD 两数相加 目的寄存器在前面。
      • ADC c是CPSR的C条件标志位的值,三者相加
    • SUB 减法操作,操作数1-操作数2。操作数一是寄存器,操作数二什么都可以
      • SBC 同ADC
    • AND 两个操作数按位与运算 屏蔽操作数1的某些位
    • ORR 两个操作数逻辑或 (寄存器 寄存器/立即数 ),常用于设置操作数一的特定位置。
    • EOR 逻辑异或运算, 基本同上,反转某些位。

    乘法

    • MUL 目的寄存器 操作数1 操作数2

    状态寄存器访问指令

    • MRS 通用寄存器 程序状态寄存器:将程序状态寄存器内容送出
    • MSR 对程序状态寄存器进行写入操作。只有这个操作能修改程序状态寄存器、
  19. 命名规则

    ARM {X}{Y}{Z}{T}{D}{M}{I}{E}{J}{F}{S}

    x:系列号

    y:内部存储/保护单元,一般跟着序列号

    T: 支持16位Thumb指令

    D:支持JTAG片上调试

    M:支持长乘法的ARM指令

    I:支持断点和观察点的硬件调试

    J:JAVA加速器Jazelle

    F:向量浮点单元

    S:可综合版本

  20. 实验代码指令略

第四章

  1. 伪指令

    • .extern 标号在其他源文件定义,该文件可能引用
    • .global 声明外部标号,本文将定义,其他文件可能引用。.
    • .equ 定义常量的值
    • .section 定义段
    • _start是默认的入口点标号
  2. LDR 实现将一个32位常数或者地址值加载到寄存器

  3. ATPCS概述

    • 子程序调用过程中寄存器的使用规则

      • R0~R3:用于传参,R0用于返回值。
      • R4~R11:通用变量寄存器。
      • R12:用作过程调用中间临时过渡寄存器IP
      • R13:堆栈指针
      • R14:连接寄存器
      • R15:PC
      • R9: 静态基址寄存器SB
      • R10:数据栈限制指针SL
      • R11:帧指针FP
      1. 子程序通过寄存器R0~R3来传递参数
      2. R4~R11来保存局部变量,Thumb程序中只能使用4-7
      3. 寄存器R12用作子程序将临时过渡寄存器,记作IP
      4. 子程序R13不能用于其他作用,只能用于数据栈指针
      5. R14记作LR,用于保存子程序返回地址
      6. R15程序计数器PC,不能用于其他用途
      7. 各寄存器在编译器和汇编器中都是预定义的
    • 数据栈的使用规则

    • 参数的传递规则

      • 参数不超过四个,R0R3。超过四个,依次排列使用R0R3
      • 返回时32位使用R0,64位使用R0-R1。

第五章

  1. 金字塔结构。

    寄存器-高速缓存(L1-L3)-主存-本地二级存储-远程二级存储

  2. FLASH

    优点

    • 存储容量大
    • 读取速度快
    • 成本低
    • 保护机制

    缺点

    • 先擦除后写入
    • 擦写速度慢
    • 必须以BLOCK方式写入
  3. NOR Flash 英特尔所发展的架构

    • 随机读取,读取速度快,写入和擦除速度较低,
    • 应用程序可以直接在Flash内运行。
  4. NAND Flash 东芝所发展的架构

    • 读取比上面慢,写入擦除比上面快
    • 相同密度下 成本低
    • 适用与大容量存储装置
  5. IROM 64KB 0xD0000000到0xD000FFFF

    IRAM 96KB 0xD0020000到0xD0037FFF

  6. S5PV210启动流程

    • 通电以后从IROM处执行固化启动代码BL0
    • BL0初始化过程中对设备进行判断。过程中从启动设备拷贝BL1到IRAM处。校验BL1内容,通过后执行,然后拷贝BL2到IRAM,校验通过后执行
    • BL2完成复杂的初始化内容,完成后拷贝OS代码到DRAM并执行。
  7. BL0启动代码

    • 关闭看门狗
    • 初始化icache
    • 初始化栈和对
    • 初始化块设备拷贝功能
    • 设置时钟
    • 拷贝BL1
    • 校验BL1

第六章

  1. GPIO 通用I/O接口

    可编程的输入输出或者双向通信功能

    控制146个GPIO中断

    控制32个外部中断

    237个多功能I/O端口

  2. 定时器

    五个定时器(32位) 每一个都能产生中断请求。定时器0 1 2 3具有脉冲宽度调制,PWM,可以驱动1个外部I/O。定时器4是一个内部定时器,没有输出口线,定时器0具有死区发生器特性,适合大电流设备应用。

    减一计数,到0为止。

    • 双缓冲技术,有两组寄存器
    • TCNTBn、TCMPBn 初值寄存器
    • TCNTn、TCMPn 当前寄存器
    • 定时器都有一个定时器时钟驱动的32位递减计数器。初值由TCNTBn设定
    • TCMPBn的值用于PWM(脉冲宽度调制)
    • 当TCNTn递减计数器的值和TCMPn相等时,定时器控制单元改变输出电平,决定占空比。
    • 自动重装指定时器计数到0时的操作,初值寄存器的值会自动加载到当前寄存器。
  3. UART 通用异步收发器,使用方便,编程简单,成本低廉。所有的微控制器都提供串行通讯接口。

    工作原理

    • 协议规定 空闲位、停止位为高电平,起始位为低电平。
    • 数据发送:首先发送起始位,然后数据位。数据位按照规定的发送波特率先低后高诸位移出。最后发送停止位。
    • 接收过程
      • 异步通信需要高倍频的采样时钟,一般接收方采样时钟为接收波特率的16倍
      • 连续采样8次都是低电平,确认接收起始位
      • 然后每次间隔16个采样时钟接收一次数据位
      • 接收奇偶校验位和停止位,同数据位方式。
      • 停止位接收完毕进入空闲。

    UART提供四个独立的异步的串行I/O口。每个UART包含 一个波特率发生器、一个发送器、一个接收器和一个控制部件。

    • 操作步骤
      • 设置涉及到引脚为UART功能
      • 设置波特率、传送格式
      • UART通道的工作模式
      • 等待发送/接收数据完成
  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1、 ARM处理器有 7种工作模式,它们分为两类 非特权模式 、 特权模式 。其中用户模式属于 非特权模式 2、 ARM支持两个指令集, ARM核因运行的指令集不同,分别有两个状态 ARM 、 Thumb ,状态寄存器CPSR的 T 位反映了处理器运行不同指令的当前状态 3、 ARM核有多个寄存器,其中大部分用于通用寄存器,有小部分作为专用寄存器, R15 寄存器用于存储PC,R13通常用来存储 SP 4、 ARM处理器有两种总线架构,数据和指令使用同一接口的是 冯诺依曼 ,数据和指令分开使用不同接口的是 哈佛结构 1. 下列不是嵌入式系统特点的是: A. 系统内核小 B. 专用性强 C. 系统精简 D. 实时性要求不高 2. 关于ARM汇编和C语言混合编程下列错误的是: A.C语言中可以直接嵌入某些汇编指令 B. C语言中可以调用汇编的子程序 C. 汇编程序中可以调用C语言的函数 D. C语言嵌入的汇编指令时,不可以使用C的变量 3. 关于ATPCS规则,说法错误的是: A. 只能使用R0-R3来传递参数 B. R13为堆栈指针SP,需要保护 C. R14为连接寄存器,用于存放程序返回地址 D. 单的返回值存放在R0 4. 关于交叉编译描述正确的是: A. 编译器运行在目标机,生成的可执行文件在宿主机上运行 B.编译器运行在宿主机,生成的可执行文件在宿主机上运行 C.编译器运行在目标机,生成的可执行文件在目标机上运行 D.编译器运行在宿主机,生成的可执行文件在目标机上运行 5. 建立嵌入式Linux开发环境中,使用Bootp协议的直接目的是: A. 分配宿主机的IP地址 B. 分配目标机的IP地址 C. 用于宿主机和目标机之间通讯 D. 用于监控目标机的运行。
嵌入式期末考试编程题通常涉及到嵌入式系统的设计和编程。以下是一个示例的嵌入式期末考试编程题: 题目:设计一个嵌入式系统,实现一个简单的温度监测和控制系统。系统要求能够读取温度传感器的数据,并根据设定的温度范围控制一个风扇的开关。 设计思路: 1. 首先,需要连接一个温度传感器到嵌入式系统的GPIO引脚上,以便读取温度数据。 2. 使用适当的编程语言(如C或C++)编写程序,通过GPIO接口读取温度传感器的数据。 3. 将读取到的温度数据与设定的温度范围进行比较,判断是否需要开启或关闭风扇。 4. 根据比较结果,控制GPIO引脚上的风扇开关信号,以实现风扇的开启或关闭。 示例代码(使用C语言): ```c #include <stdio.h> #include <wiringPi.h> #define TEMPERATURE_PIN 0 // 温度传感器连接的GPIO引脚 int main(void) { wiringPiSetup(); // 初始化wiringPi库 pinMode(TEMPERATURE_PIN, INPUT); // 设置GPIO引脚为输入模式 while (1) { int temperature = digitalRead(TEMPERATURE_PIN); // 读取温度传感器的数据 if (temperature > 25) { printf("Temperature is too high. Turning on the fan.\n"); // 控制风扇开启的代码 } else { printf("Temperature is within the acceptable range. Turning off the fan.\n"); // 控制风扇关闭的代码 } delay(1000); // 延时1秒 } return 0; } ``` 请注意,以上代码仅为示例,实际的嵌入式系统设计和编程需要根据具体的硬件平台和需求进行调整。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值