嵌入式系统概论

嵌入式系统的定义

  • 以应用为中心
  • 以计算机技术为基础
  • 软/硬件可裁剪
  • 满足应用系统对功能、可靠性、成本、体积和功耗的要求

与通用计算机相比,嵌入式系统具有一下重要特征

  • 通常是面向特定应用的
  • 软硬件都必须高效率的设计,满足功耗、可靠性、功能的要求
  • 实时操作系统支持
  • 嵌入式系统的与具体应用有机结合在一起
  • 有专门的开发工具支持

与一般操作系统相比,嵌入式系统的的特点

  • 强稳定性,弱交互性
  • 较强的实时性
  • 可伸缩性
  • 外围硬件接口的统一性

根据响应时间不同,嵌入式系统可分为

  • 强实时嵌入式操作系统
  • 一般实时嵌入式操作系统
  • 弱实时操作系统

嵌入式系统的组成

  • 微处理器
  • 外围硬件设备
  • 嵌入式操作系统
  • 用户应用软件

ARM体系结构

ARM9的五级流水线

  • 取指:从存储器中取出指令(fetch),并将其放入指令流水线
  • 译码:对指令进行译码(dec)
  • 执行:执行运算ALU(exe)
  • 访存(缓冲/数据):如果需要,则访问数据存储器(acc mem);否则ALU的结果只是简单地缓冲1个时钟周期,以便所有的指令具有同样的流水线程
  • 回写:将指令产生的结果回写到寄存器(wtbk res),包括任何从存储器中读取的数据

AMBA总线接口

  • AHB:用于连接高性能系统模块
  • ASB:用于连接高性能系统模块,他支持突发数据传输模式
  • APB:一个简单接口,支持低性能的外围接口

ARM9工作模式
ARM9TDMI处理器核共支持以下7种工作模式:

  • 用户模式(usr):ARM处理器正常执行程序时的处理
  • 快速中断模式(fiq):用于高速数据传输或通道处理
  • 外部中断模式(irp):用于通用的中断处理
  • 管理模式(svc):操作系统使用的保护模式
  • 指令/数据访问终止模式(abt):当数据或指令预取终止时进入该模式。可用于虚拟存储及存储保护
  • 系统模式(sys):运行具有特权的操作系统任务时的模式
  • 未定义指令终止模式(und):当未定义的指令执行时进入该模式,可用于支持硬件协处理器的软件仿真
    除用户模式外,其余6种模式称为非用户模式或特权模式;
    除用户模式和系统模式外,其余5种模式称为异常模式;

大端存储和小端存储

  • 大端存储:大端模式,是指数据的高字节保存在内存的低地址中,而数据的低字节保存在内存的高地址中,这样的存储模式有点儿类似于把数据当作字符串顺序处理:地址由小向大增加,而数据从高位往低位放。
  • 小端存储:小端模式,是指数据的高字节保存在内存的高地址中,而数据的低字节保存在内存的低地址中,这种存储模式将地址的高低和数据位权有效地结合起来,高地址部分权值高,低地址部分权值低,和我们的逻辑方法一致。

如果将一个32位的整数0x12345678存放到一个整型变量(int)中,这个整型变量采用大端或者小端模式在内存中的存储由下表所示。
为简单起见,本文使用OP0表示一个32位数据的最高字节MSB(Most Significant Byte),使用OP3表示一个32位数据最低字节LSB(Least Significant Byte)。

I/O端口的访问方式

  1. 端口的地址和存储器统一编址(存储器映射方式)
    优点:对I/O端口设备的访问是使用访问存储器的指令,这不仅使访问I/O端口可实现输入/输出操作,而且还可以对端口内容进行算术逻辑运算、移位等操作;另外,它能给I/O端口较大的编址空间,这对大型控制系统及数据通信是很有意义的
    缺点:I/O端口占用了存储器的地址空间,使存储器的容量变小
  2. I/O端口地址与存储器分开独立编址(I/O映射(独立编址))
    优点:I/O端口地址不占用存储器空间;使用专门的I/O指令对I/O端口进行操作;由于专门I/O指令与存储器访问指令助记符有明显的区别,使得1/O操作和存储器操作层次清晰,程序可读性强。

内部存储器
ARM9处理器内部有37个32位寄存器,分为通用寄存器状态寄存器两种;
程序代码运行是涉及的工作寄存器组是由ARM9处理器的工作模式确定的;

1.通用寄存器

  1. 未分组寄存器R0~R7
    未分组寄存器包括RO~R7,在所有工作模式下﹐它们在物理上是同一个寄存器。也就是说,不管在哪种工作模式下,若访问R0寄存器,访问到的是同一个32位的物理寄存器Ro;若访问R1寄存器,访问到的是同一个32位的物理寄存器R1;以此类推。由于不同的处理器工作模式均使用相同的未分组寄存器,可能会造成寄存器中数据的破坏
  2. 分组寄存器R8~R14
    分组寄存器包括R8~ R14。对于分组寄存器,它们每次所访问的物理寄存器与处理器当前的工作模式有关,如图2.5.所示。对于R8~R12寄存器,每个寄存器对应两个不同的物理寄存器。当使用fiq模式时,访问寄存器R8_fiq ~R12_fiq;当使用fiq模式以外的其他模式时,访问寄存器R8_usr~R12_usr

    R13寄存器在ARM指令中常用作堆栈指针,又称为SP(Stack Pointer)
    R14寄存器可用作子程序链接寄存器(Subroutine Link Register)或链接寄存器LR(Link Register)
  3. 程序计数器R15
    R15寄存器的用途是程序计数器(PC),用于控制程序中指令的执行顺序

2.程序状态寄存器
ARM9体系结构包含一个当前程序状态寄存器CPSR(Current Program StatusRegister)和5个备份的程序状态寄存器SPSR (Saved Program Status Register),CPSR又称为R16;

  • 条件码标志
    CPSR寄存器的高4位是N 、Z,C、V(Negative、Zero.Carry、Overflow),称为条件码标志位
  • 控制位
    CPSR寄存器的低8位是IF、T和 M[4:0],称为控制位。当发生异常时,这些位可以被改变;当处理器运行在特权模式时,这些位也可以由程序修改。
  • 中断禁止位.:包括I和F,用来禁止或允许IRQ和FIQ两类中断。当I=1时,表示禁止IRQ中断;I=0时,表示允许IRQ中断。当F=1时,表示禁止FIQ中断;F=0时,表示允许 FIQ中断。
  • T标志位.:标志位用于标识/设置处理器的工作状态。对于ARM 体系结构v4及以上版本的T系列处理器,当T=1时,表示程序运行于 Thumb 状态;当T=0时,表示程序运行于 ARM状态。ARM 指令集和 Thumb指令集均有切换处理器状态的指令,这些指令通过修改T位的值为1或0来实现两种工作状态之间的切换,但 ARM处理器在开始执行代码时,应该处于ARM状态。
  • 工作模式位:工作模式位(M[4:0])用于标识或设置处理器的工作模式。M4,M3,M2,M1,M0决定了处理器的工作模式,具体含义如表所列。需要强调的是,表2.3中未列出的模式位的组合是不可用的
  1. 保留位
    CPSR寄存器中的其余位是保留位,当改变CPSR 中的条件码标志位或者控制位时,保留位不需要被改变,在程序中也不要使用保留位来存储数据。

ARM9异常

异常的类型及向量地址

  • (1)复位异常
    当系统上电或按下复位按键时,ARM9处理器会收到一个复位信号。当处理器收到复位信号后,产生复位异常,中断执行当前指令,并在禁止中断的管理模式下,从地址0x00000000 或oxFFFFO000 开始执行程序。
  • (2)未定义指令异常
    当ARM9处理器执行未定义的指令时,会产生未定义指令异常,可分为两种情况:
    1、当处理器在执行协处理器指令时,它必须等待任一外部协处理器应答后,才能真正执行这条指令。若协处理器没有响应,会出现未定义指令异常。利用未定义指令异常,可以在没有设计硬件协处理器的系统上,对协处理器的功能进行软件仿真。
    2、试图执行未定义的指令,也会出现未定义指令异常。
    未定义指令异常结束时,将 R14 - und中的值赋给PC,并将SPSR – und中的值赋给 CPSR,处理器即返回到未定义指令的下一一条指令继续执行。
  • (3)软件中断异常
    处理器执行软件中断指令 SWI将产生软件中断异常,处理器进入管理模式

异常的优先级

ARM指令系统

ARM9具有32位ARM指令和16位Thumb指令

ARM指令分类及格式
ARM指令可以分为以下6类:

  • 数据处理指令:数据传输指令、算数指令、逻辑指令、比较指令、乘法指令和前导零计数

  • 程序状态访问指令:MRS和MSR

  • 分支指令:B、BL和BX

  • 访存指令:单数据访存指令、多数据访存指令和数据交换指令

  • 异常产生指令:SWI和BKPT

  • 协处理指令:CDP、LDC、STC、MCR、MRC

  • opcode:指令操作符编码

  • cond:指令执行条件编码

  • S:指令的操作是否影响CPSR的值

  • Rn:包含第一个操作数的寄存器编码

  • Rd:目标寄存器编码

  • Shifter operand:第二个操作数

  • x:x=1表示第二位操作数是立即数寻址;x=0表示第二位操作数是寄存器寻址

ARM指令寻址方式

  • 寄存器寻址

  • 立即数寻址

  • 寄存器移位寻址(移位的位数可以用立即数或寄存器表示)
    (1)算术右移ASR
    (2)逻辑左移LSL
    (3)逻辑右移LSR
    (4)循环右移ROR
    (5)扩展的循环右移RRX

  • 寄存器间接寻址

  • 变址寻址
    (1)前变址方式
    (2)自动变址方式
    (3)后变址方式

  • 多寄存器寻址

  • 堆栈寻址

  • 块复制寻址

  • 相对寻址
    PC的值=当前执行地址+8(ARM)/4(Thumb)

常见ARM指令

  • 数据处理指令
    (1)数据传送指令
    (2)算数运算指令
    (3)逻辑运算指令
    (4)比较指令
    (5)乘法指令:MUL乘法指令;MLA乘加指令

  • 程序状态访问指令
    (1)读取状态寄存器指令
    (2)写状态寄存器指令

  • 分支指令
    (1)转移指令
    (2)带链接的转移指令
    (3)带状态切换的转移指令

  • 访问指令
    (1)单数据访存指令STR、LDRH、LDRSB、LDRSH
    (2)多数据访存指令LDM
    (3)数据交换操作指令

  • 异常指令(SWI主要)
    (1)软件中断指令SWI
    (2)断点指令BKPI
    (3)前导0计数指令

  • 协处理器指令
    (1)协处理器数据处理指令
    (2)协处理器数据存取指令
    (3)ARM存储器与协处理器数据传送指令

ARM汇编伪指令与伪操作

常见ARM汇编指令

  • ADR
  • ADRL
  • LDR
  • NOP

常见ARM汇编伪操作

  • 符合定义伪操作
    GBLA、GBLL和GBLS:声明全局变量
    LCLA、LCLL和LCLS:声明局部变量
    SETA、SETL、SETS:给变量赋值
    RLIST:给通用寄存器列表定义名称
  • 数据定义伪操作
    LTORG:声明一个数据缓冲池的开始
    SPACE 用于分配一片连续的存储单元,并用0初始化
    DCB 用于分配一片连续的字节存储单元并用指定的数据初始化
    DCW(DCWU) 用于分配一片连续的半字存储单元并用指定的数据初始化
  • 汇编控制常用伪操作
    IF、ELSE、ENDIF:有条件选择汇编
    WHILE、WEND:有条件循环汇编
    MACRO、MEND、MEXIT:宏定义汇编
  • 其他常用伪操作
    CODE16和CODE32:16:16位的Thumb指令;32:32位的ARM指令

ARM汇编基础

ARM程序常用文件格式

源程序文件 文件扩展名 说明
汇编程序文件 *.s 用ARM汇编语言编写的ARM程序或Thumb程序
C程序文件 *.c 用C语言编写的程序代码
头文件 *.h 为简化源程序,通常将程序中经常适用的常量名、宏定义、数据结构定义等单独存放在一个文件中

ARM预定义变量:

  1. Ro-R15和r0-r15
  2. a1-a4(参数,结果或者临时寄存器,与r0-r3同意)
  3. v1-v8(变量寄存器,与r4-r11同意)
  4. sb和SB(静态基址寄存器,与r9同意)
  5. sl和SL(堆栈限制寄存器,与r10同意)
  6. fp和FP(帧指针,与r11同意)
  7. ip和IP(过程调用中间临时寄存器,与r12同意)
  8. sp和SP(堆栈指针,与r13同意)
  9. lr和LR(连接寄存器,与r14同意)
  10. pc和PC(程序计数器,与r15同意)
  11. cpsr和CPSR(程序状态寄存器)
  12. spsr和SPSR(程序状态寄存器)
  13. f0-f7和F0-F7(FPA寄存器)
  14. s0-s31和S0-S31(VFP单精度寄存器)
  15. d0-d15和D0-D15(VFP双精度寄存器)
  16. p0-p15(协处理器0-15)
  17. c0-c15(协处理器寄存器0-15)

C语言与汇编混合编程

  1. C程序嵌入汇编程序
  2. 交互规则
  3. C程序调用汇编程序
  4. 汇编程序调用C程序

时钟及电源管理

主时钟来源于外部晶振(XTlpll)或外部时钟(EXT-CLK)
时钟发生器包含一个连接外部晶振的振荡器,两个产生高频时钟的锁相环(PLLs)
两个时钟源依据模式控制引脚(OM3和OM2)的不同组合来选择,在nRESET的上升沿查询OM3和OM2引脚状态并锁到OM[3:2]

S3C2410电源管理模式

  1. 正常模式
  2. 空闲模式
  3. 低速模式
  4. 休眠模式

SRAM和DRAM

SRAM和DRAM被称为随机存储器,其保存信息在通电情况下是不会丢失的,主要用来存储正在运行的程序和数据

  • SRAM读/写速度比DRAM读/写速度快
  • SRAM比DRAM的功耗大
  • DRAM的集成度可以做得更高,其存储器容量也可以更大
  • DRAM需要周期性的刷新,而SRAM不需要

NOR Flash和NAND Flash

比较特点:

  • NOR的读速度比NAND稍快一些
  • NAND的写入速度比NOR快很多
  • NAND的4ms擦除速度远比NOR的5s快
  • 大多数写入操作需要先进行擦除操作
  • NAND的擦除单元更小,相应的擦除电路更少

存储器接口方式

  • SRAM型的全地址/数据总线接口
  • DRAM型动态存储器接口
  • 串行存储器接口

存储管理单元(MMU)

主要用来完成虚实地址之间的转换
MMU实现的主要功能有:

  • 将主存地址从虚拟存储空间映射到物理空间
  • 存储器访问权限控制
  • 设置虚拟存储空间的缓冲特性等

定时器工作原理

主要用作定时功能或计数功能
当定时器输入条件满足计时要求时开始计时,设定值寄存器存储设定时间值不变,当前值寄存器存储当前时间值随时间发生变化,一旦当前时间值增加到与设定时间值相同,定时器发生动作,常开触点接通而常闭触电断开,并通过程序作用于被控制对象,以达到控制时间的目的

DMA

DMA方式与中断方式传输数据比较特点:

  • 中断方式下,CPU需要执行多条指令,占用一定的时间;而DMA传送1字节只占用CPU的一个总线周期,占用CPU的时间少
  • DMA的响应速度比中断快
  • 对于快速的I/O设备,中断方式传输速度已经无法满足要求

DMA传送过程

  • 申请阶段
  • 响应阶段
  • 数据传送阶段
  • 传送结束阶段

DMA方式传送的工作过程

  • 外设可通过baiDMA控制器向CPU发出DMA请求
  • CPU响应DMA请求,系统转变为DMA工作方式,并把总线控制权交给DMA控制器
  • 由DMA控制器发送存储器地址,并决定传送数据块的长度
  • 执行DMA传送
  • DMA操作结束,并把总线控制权交还CPU

S3C2410 DMA

有4个独立通道的DMA控制器处理情况:

  1. 源设备和目的设备都在内部系统总线上
  2. 源设备和目的设备都在外部系统总线上
  3. 源设备在内部系统总线上,目的设备在外部总线上
  4. 源设备在外部系统总线上,目的设备在内部总线上

嵌入式系统----原理与应用技术考点相关推荐

  1. 《嵌入式系统原理与接口技术》——嵌入式系统接口应用基础

    本文为我负责编写的电子工业出版社出版的<嵌入式系统原理与接口技术>一书第七章部分,这里整理的仍然是修改稿,供需要的同学参考,本书为普通高等教育"十二五"规划教材,电子信 ...

  2. 嵌入式系统原理与接口技术

    <嵌入式系统原理与接口技术>--嵌入式系统接口应用基础 本文为我负责编写的电子工业出版社出版的<嵌入式系统原理与接口技术>一书第七章部分,这里整理的仍然是修改稿,供需要的同学参 ...

  3. 《嵌入式系统原理与接口技术》第1章 绪论1.1 嵌入式系统概述

    点击查看本书目录与写作说明 课程比较多,一直没太多的时间写,打总更新一下,欢迎提出宝贵意见. 第1章 绪论 1.1 嵌入式系统概述 嵌入式系统的飞速发展已经极大的改变了我们的生活,从风靡全球的ipho ...

  4. 嵌入式系统原理与应用技术(第2版) 【期末复习】:随堂习题2

    随堂习题2 1.下列哪一项不属于嵌入式系统软件结构一般包含的四个层面.( A ) A.嵌入式处理器 B.实时操作系统(RTOS) C.应用程序接口(API)层 D.实际应用程序层 2.一条ARM数据处 ...

  5. 2020 嵌入式系统原理与应用技术(第2版) 期末复习 【整理】 习题2

    文章目录 习题2 习题2 1.下列哪一项不属于嵌入式系统软件结构一般包含的四个层面.( A ) A.嵌入式处理器 B.实时操作系统(RTOS) C.应用程序接口(API)层 D.实际应用程序层 2.一 ...

  6. 嵌入式系统原理及应用课后习题答案

    嵌入式系统原理及应用-基于ARM Cortex-M3内核的STM32F103系列微控制器 第1篇 系统篇 第1章嵌入式系统概述 第2章嵌入式系统开发 第2篇 内核篇 第3章ARMCortex-M3处理 ...

  7. MIMO-OFDM系统原理及其关键技术

    MIMO-OFDM系统原理及其关键技术 引言 未来的宽带无线通信系统,将在高稳定性和高数据传输速率的前提下,满足从语 音到多媒体的多种综合业务需求.而要在有限的频谱资源上实现综合业务内容的快速传输,需 ...

  8. 嵌入式系统原理及应用《基于ARM Cortex-M3 内核的STM32F103系列微控制器》思维导图

    嵌入式系统原理及应用 <基于ARM Cortex-M3 内核的STM32F103系列微控制器>课程思维导图 目录 第一章 嵌入式系统概论 第二章 嵌入式系统开发 第三章 ARM Corte ...

  9. 史上最详细!嵌入式系统知识和接口技术总结

    1 什么是嵌入式 IEEE(Institute of Electrical and Electronics Engineers,美国电气和电子工程师协会)对嵌入式系统的定义:"用于控制.监视 ...

最新文章

  1. [css] 请写出font属性的快捷写法
  2. Python中NotImplementedError的使用方法(抽象类集成子类实现)
  3. Android Studio Design界面不显示layout控件的解决方法
  4. C#winform遍历控件判断控件类型
  5. RabbitMQ之Topic交换器模式开发
  6. linux 报警级别,linux PMBus总线驱动设计分析
  7. tomcat8和tomcat7性能比较
  8. 按方位提取高程数据的方法
  9. WPS 使用宏 下载 VBA
  10. hdu 5145 NPY and girls 莫队
  11. 电脑网页端远程控制手机方法
  12. 公司官网建站笔记(六):域名进行公安备案并将备案号显示在网页底部
  13. IE浏览器无法打开HTTPS解决办法
  14. uni-app在手机上背景图片不显示
  15. unity中Loding.UpdatePreloading占用CPU过高如何解决?
  16. 手机nfc的简单使用
  17. 贷款客户资源获取,一文了解贷款行业怎么获取高效精准客户
  18. nas和san网络存储区别_存储区域网络或SAN
  19. 编写一个程序。要求输入5个学生的成绩(从0到100的整数)并将这5个数保存到文件“data.txt”中,然后再编写一个程序,从文件“data.txt”中读取这5个学生的成绩,计算并输出他们的平均数,然
  20. OpenStack 归档 - 虚拟机临时存储与块存储

热门文章

  1. mmse评估量表_简易精神状态评价量表(MMSE量表)
  2. 转业费计算器2019_退役金计算器_2012版 (含现役工资和转业费计算)
  3. ui加Java岗位_本人不怕加班,java和ui学哪个好,打算以后往产品经理方向发展?...
  4. 安装superset(详细版)
  5. 【JavaSE】集合
  6. 如何获取IMEI号和MEID号
  7. 拒绝“内鬼式”数据泄露,安全内控如何构建?
  8. mysql lsof打开数过多_lsof 查看进程打开的文件情况 df -h 磁盘空间满的异常处理...
  9. 2021年全球除湿机收入大约2769.4百万美元,预计2028年达到4758.2百万美元
  10. 深入浅出内存管理--页表的创建