




已阅读5页,还剩62页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
复习 第1章嵌入式系统基础 1 1 1嵌入式系统的定义 嵌入式系统不同于常见的计算机系统 不以独立的设备物质形态出现 没有统一的外观 它根据主体设备已经应用的需要嵌入在设备内部 发挥着运算 处理 存储及控制的作用 体系结构 嵌入式处理器 支撑硬件 嵌入式软件 微处理器 微控制器 SOC等 存储介质 通信部件 显示部件 控制部件等 驱动程序 操作系统 BSP 应用中间件等 嵌入式系统定义1 嵌入式系统是指以应用为中心 以计算机技术为基础 软硬件可裁剪 适应应用系统对功能 成本 体积 功耗和可靠性严格要求的专用计算机系统 嵌入式系统主要有嵌入式处理器 外围硬件设备 嵌入式操作系统以及特定的应用程序等四部分组成 是集软硬件于一体的可独立工作的 器件 嵌入式操作系统 嵌入式操作系统是用来管理存储器分配 中断处理 任务间通信和定时器响应 以及提供多任务处理等的软件模块集合 嵌入式操作系统常常有实时要求 所以嵌入式操作系统往往又是 实时操作系统 1 1 3嵌入式系统的特点 其最本质的三个特点为 嵌入性 专用性和计算机体系 具体而言 1 嵌入性 很多嵌入式系统用户界面不够友好 甚至没有 如 汽车上的ABS系统等 这是因为某些系统不需要和用户进行数据交互 就能够完成任务 这就不强调界面友好美观与PC不同 1 1 3嵌入式系统的特点 2 专用性 在嵌入式领域 有集成了众多通信接口的通信处理器 有集成音频 视频接口的用于摄像的专用处理器 还有低功耗的手机处理器等等 几乎每一个特定的市场 都有一种特定的功能 特别的处理器与之对应 这也就觉得了嵌入式处理器品种的千差万别 不像在PC领域 处理器主流Intel和AMD两大品牌 IntelXscale IntelStongARM MotorolaPowerPC ARM ToshibaSHX 1 1 3嵌入式系统的特点 3 计算机体系 嵌入式系统是软硬件结合的 但又有他的特殊性 如软件相对特定 因为嵌入式系统的专用性 所以嵌入式系统的软件往往都是针对特定系统特定功能而专门开发的 同时有些嵌入式系统有较高的实时性要求 如核武器的导航系统 有些需要功耗极低 如手持设备 需要工作在低温环境或者其他恶劣环境 成本控制严格等 另外如电信设备的嵌入式系统要求非常的稳定等等 一 嵌入式处理器分类 嵌入式微处理器 EmbeddedMicroprocessorUnit EMPU 微控制器 MicrocontrollerUnit MCU DSP处理器 DigitalSignalProcessor DSP 片上系统 SystemOnChip SOC ARM处理器 ARM AdvancedRISCMachines 公司是全球领先的16 32位RISC微处理器知识产权设计供应商 ARM处理器有3大特点 小体积 低功耗 低成本而高性能 16 32位双指令集 全球众多的合作伙伴 ARM处理器分ARM7 ARM9 ARM9E ARM10 ARM11 Cortex和SecurCore系列 代码编程 生成代码阶段 在嵌入式系统的开发过程中 一般采用的方法是先在通用PC上编程 然后通过交叉编译链接 将程序做成目标平台上可以运行的二进制代码格式 最后将程序下载到目标平台上的特定位置 在目标板上启动运行这段二进制代码 生成代码阶段 交叉编译和链接 嵌入式软件开发编码完成后 要进行编译和链接以生成可执行代码 但是 在开发过程中设计人员普遍使用Intel的x86系列CPU的计算机进行开发 而目标环境的处理芯片却是多种多样的 如ARM DSP PowerPC DragonBall系列等 这就要求开发机上的编译器能支持交叉编译 嵌入式集成开发环境都支持交叉编译 链接 如WindRiver公司的Tornado 以及GNU套件等 交叉编译链接生成两种类型的可执行文件 调试用的可执行文件和固化的可执行文件 生成代码阶段 交叉调试 交叉调试 又叫远程调试 具有以下特点 调试器和被调试的程序运行在不同的机器上 调试器运行在PC或工作站上 而被调试程序运行在各式的专用目标机上 调试器通过某种通信方式与目标机建立联系 如串口 并口 网络 JTAG或者专用的通信方式 在目标机上一般具有某种调试代理 这种代理能与调试器一起配合完成对目标机上运行程序的调试 这种代理可以是某种能支持调试的硬件 也可以是某种软件 目标机可以是一种仿真机 通过在宿主机上运行目标机的仿真软件 仿真一台目标机 使整个调试工作只在一台计算机上进行 测试 嵌入式系统开发的测试与通用软件的测试相似 分为单元测试和系统集成测试 2 3嵌入式系统的调试 嵌入式系统的调试方法 1 源程序模拟器方式2 监控器方式3 仿真器方式 嵌入式系统的调试过程 源程序模拟器方式 源程序模拟器 Simulator 是在PC机上 通过软件手段模拟执行为某种嵌入式处理器编写的源程序的测试工具 注意 模拟器的功能毕竟是以一种处理器模拟另一种处理器的运行 在指令执行时间 中断响应 定时器等方面很有可能与实际处理器有相当大的差别 另外 它无法仿真嵌入式系统在应用系统中的实际执行情况 比如 ARM公司的ARMulator模拟器 监控器方式 监控器 Monitor 调试方式需要目标机与宿主机协调 首先 在宿主机和目标机之间通过串口 以太口等建立物理连接 然后在宿主机上运行调试器 目标机运行监控程序和被调试程序 从而建立宿主机与目标机的逻辑连接 宿主机通过调试器与目标机的监控器建立通信连接 它们相互间的通信遵循远程调试协议 比如ARM公司的Angel 仿真器方式 仿真器调试方式是在微处理器的内部嵌入额外的控制模块 当特定的触发条件满足时 系统将进入某种特殊状态 在这种状态下 被调试的程序暂时停止运行 宿主机的调试器通过微处理器外部特设的通信口访问各种寄存器 存储器资源 并执行相应的调试指令 在宿主机的通信端口和目标板调试通信接口之间 通信接口的引脚信号可能存在差异 因此在这两者之间往往可以通过一块信号转换电路板连接 一般高档的微处理器都带JTAG JointTestActionGroup 联合测试行动组 接口 它是一种边界扫描标准 只需5根引脚就可以实现在线仿真的功能 第3章ARM体系结构 3 1 1ARM体系结构的特点 ARM体系结构的特点 RISC型处理器结构ARM Thumb指令集多处理器状态模式 7种处理器模式 嵌入式在线仿真调试灵活和方便的接口ARM体系结构具有协处理器接口ARM处理器核还具有片上总线AMBA AHB ASB APB 低电压低功耗的设计 ARM体系结构的3级流水线 ARM7体系结构采用了3级流水线 分为取指 译码和执行 下图是单周期3级流水线的操作示意图 ARM9TDMI 流水线结构 ARM9TDMI处理器内核采用了5级流水线 ARMI O结构 ARM架构中的处理器核和处理器内核一般都没有I O的部件和模块 构成ARM架构的处理器中的I O可通过AMBA总线来扩充 1 存储器映像I OARM采用存储器映像I O的方式 即把I O端口地址作为特殊的存储器地址 不过I O的输入 输出与真正的存储器读 写仍然有所不同 存储器的单元重复读多次的值是一致的 而I O设备的连续2次输入 其输入值可能会有所不同 2 直接存储器存取DMA在I O的数据流量比较大 中断处理比较频繁的场合 会明显影响系统的性能 因此 许多系统就采用了直接存储器存取DMA 这样 I O的数据块传送至存储器的缓冲器区域就不需要处理器介入 而中断也仅仅出现在出现出错时或缓冲器满时 3 中断IRQ和快速中断FIQ一般的ARM没有DMA的功能 为了提高I O处理的能力 对于一些要求I O处理速率比较高的事件 系统安排快速中断FIQ FastInterrupt 而对其余的I O源仍安排一般中断IRQ ARMAMBA接口 ARM处理器也可以通过先进微控制器总线架构AMBA AdvancedMicrocontrollerBusArchitecture 来扩展不同体系架构的宏单元及I O部件 AMBA事实上已成为片上总线OCB OnChipBus 标准 AMBA包括以下三类总线 先进高性能总线AHB先进系统总线ASB先进外围总线APB 3 1 3ARM处理器内核 ARM体系结构的处理器内核有 ARM7TDMI ARM8 ARM9TDMI ARM10TDMI及ARM11TDMI等 3 1 4ARM处理器核 在最基本的ARM处理器内核基础上 可增加Cache 存储器管理单元MMU 协处理器CP15 AMBA接口以及EMT宏单元等 构成ARM处理器核 以ARM7TDMI处理器内核为基础的有 ARM720T处理器核ARM740T处理器核以ARM9TDMI处理器内核为基础的有 ARM920T处理器核ARM940T处理器核 ARM940T ARM940T处理器核与ARM740T处理器核相似 采用了ARM9TDMI处理器内核 是ARM920T处理器核的简化 没有存储器管理单元MMU 不支持虚拟存储器寻址 而是用有储器保护单元来提供存储保护和Cache控制 ARM940T的存储保护单元结构与ARM740T的基本相同 3 2 1数据类型 ARM处理器支持下列数据类型 Byte字节 8位 Halfword半字 16位 半字必须与2字节边界对准 Word字 32位 字必须与4字节边界对准 3 2 2处理器模式 ARM体系结构支持7种处理器模式 软件控制下可以改变模式 外部中断或异常处理也可引起模式发生改变 3 2 3处理器工作状态 ARM处理器有两种工作状态 ARM 32位 这种状态下执行字对准的ARM指令 Thumb 16位 这种状态下执行半字对准的Thumb指令 ARM处理器在两种工作状态之间可以切换 ARM和Thumb之间状态的切换不影响处理器的模式或寄存器的内容 1 进入Thumb状态 当操作数寄存器的状态位 位 0 为1时 执行BX指令进入Thumb状态 如果处理器在Thumb状态进入异常 则当异常处理 IRQ FIQ Undef Abort和SWI 返回时 自动转换到Thumb状态 2 进入ARM状态 当操作数寄存器的状态位 位 0 为0时 执行BX指令进入ARM状态 处理器进行异常处理 IRQ FIQ Reset Undef Abort和SWI 在此情况下 把PC放入异常模式链接寄存器中 从异常向量地址开始执行也可以进入ARM状态 3 2 4寄存器组织 ARM处理器总共有37个寄存器 P6931个通用寄存器 包括程序计数器 PC 这些寄存器是32位的 6个状态寄存器 这些寄存器也是32位的 但只使用了其中的12位 通用寄存器 通用寄存器 R0 R15 可分成3类 不分组寄存器R0 R7 在所有的处理器模式下 它们每一个都访问一样的32位物理寄存器 分组寄存器R8 R14 它们每一个访问的物理寄存器取决于当前的处理器模式 每种处理器模式有专用的分组寄存器用于快速异常处理 寄存器R13通常用作堆栈指针 称作SP 寄存器R14用作子程序链接寄存器 也称为链接寄存器LR 寄存器R8 R12各有两组物理寄存器 一组为FIQ模式 另一组为除FIQ以外的其它模式 寄存器R13 R14各有6个分组的物理寄存器 1个用于用户模式和系统模式 而其它5个分别用于5种异常模式 程序计数器R15 在ARM状态 位 1 0 为 位 31 2 保存PC在Thumb状态 位 0 为0 位 31 1 保存PC 3 2 5异常 异常由内部或外部源产生并引起处理器处理一个事件 例如外部中断或试图执行未定义指令都会引起异常 ARM支持7种类型的异常 当异常出现时 异常模式分组的R14和SPSR用于保存状态 当处理异常返回时 把SPSR传送到CPSR R14传送到PC 这可用两种方法自动完成 即使用带 S 的数据处理指令 将PC作为目的寄存器 使用带恢复CPSR的多加载指令 3 2 5异常 简介 只要正常的程序流被暂时中止 处理器就进入异常模式 例如响应一个来自外设的中断 在处理异常之前 ARM内核保存当前的处理器状态 CPSR SPSR 这样当处理程序结束时可以恢复执行原来的程序 SPSR CPSR 如果同时发生两个或更多异常 那么将按照固定的顺序来处理异常 详见 异常优先级 部分 异常入口 出口汇总 注意 MOVSPC R14 svc 是指在管理模式执行MOVSPC R14指令 MOVSPC R14 und SUBSPC R14 abt 4 等指令也是类似的 当多个异常同时发生时 一个固定的优先级系统决定它们被处理的顺序 3 2 5异常 异常优先级 存储器系统有两种映射机制 小端存储器系统 在小端格式中 高位数字存放在高位字节中 因此存储器系统字节0连接到数据线7 0 低位对齐 大端存储器系统 在大端格式中 高位数字存放在低位字节中 因此存储器系统字节0连接到数据线31 24 高位对齐 3 2 6存储器及存储器映射I O 存储器格式 寻址方式是根据指令中给出的地址码字段来寻找真实操作数地址的方式 ARM处理器支持的基本寻址方式有 3 3ARM基本寻址方式 寄存器寻址立即寻址寄存器移位寻址寄存器间接寻址变址寻址多寄存器寻址堆栈寻址块复制寻址相对寻址 3 4 1条件执行 几乎所有的ARM指令均可包含一个可选的条件码 句法说明中以 cond 表示 只有在CPSR中的条件码标志满足指定的条件时 带条件码的指令才能执行 并使用后缀 S 来区分是否根据执行结果修改条件码标志 3 4 2指令分类说明 32位ARM指令集由13种基本指令类型组成 分成4大类 3种类型的存储器访问指令 控制存储器和寄存器之间的数据传送 一种类型用于优化的灵活寻址 另一种类型用于快速上下文切换 第三种类型用于交换数据 3种类型的数据处理指令 使用片内ALU 桶形移位器和乘法器针对31个寄存器完成高速数据处理操作 4种类型的分支指令 控制程序执行流程 指令优先级以及ARM代码和Thumb代码的切换 3种类型的协处理器指令 专用于控制外部协处理器 这些指令以开放和统一的方式扩展了指令集的片外功能 ARM指令集 第2个操作数 immed 8r 常数表达式该常数必须对应8位位图 即一个8位的常数通过循环右移偶数位得到 循环右移10位 8位常数 ARM伪指令 大范围的地址读取 LDR伪指令用于加载32位的立即数或一个地址值到指定寄存器 在汇编编译源程序时 LDR伪指令被编译器替换成一条合适的指令 若加载的常数未超出MOV或MVN的范围 则使用MOV或MVN指令代替该LDR伪指令 否则汇编器将常量放入文字池 并使用一条程序相对偏移的LDR指令从文字池读出常量 LDR cond register expr label expr LDR伪指令格式 指令执行的条件码 加载的目标寄存器 基于PC的地址表达式或外部表达式 注意 1 从指令位置到文字池的偏移量必须小于4KB 2 与ARM指令的LDR相比 伪指令的LDR的参数有 号 作业 简述ARM处理器所支持的4种类型的堆栈ARM处理器支持的数据类型有哪些 解释以下各条指令所实现的功能 1 LDRR0 R1 4 2 ADDR0 R0 R0 LSL 2 3 EORR11 R12 R3 ASR 5 4 ANDSR1 R1 R2 LSLR3 5 SWPR1 R1 R2 6 LDRR0 R1 R2 4 如何辨别LDR指令是ARM机器指令还是伪指令 各举出3条数据传送LDR指令和3条LDR伪指令的例子 第4章ARM系统硬件设计基础 4 2 1ARM汇编器支持的伪指令 伪指令是ARM汇编语言程序中的一些特殊指令助记符 这些助记符与指令系统的助记符不同 没有相对应的操作码 它们所完成的操作称为伪操作 伪指令在源程序中的作用是为完成汇编程序做各种准备工作的 这些伪指令仅在汇编过程中起作用 一旦汇编结束 伪指令的使命就完成了 ARM汇编器支持的伪指令包括 符号定义伪指令 数据定义伪指令 汇编控制伪指令 宏指令以及其他伪指令 ARM汇编器支持的常见伪指令 4 2 2基于ARM的汇编语言语句格式 ARM汇编语言的语句格式 标号 指令或伪指令 注释 标号是代表地址的符号 必须在一行的顶格书写 其后不能添加冒号 而所有指令均不能顶格书写 ARM汇编语言对标识符的大小写敏感 书写标号及指令时字母大小写要一致 在ARM汇编语言中 ARM指令 伪指令 寄存器名等可以全部大写或者全部小写 但不能大小写混合使用 为了使源文件易读 可以将一条长的指令通过使用反斜杠字符 将其分成几行书写 每行从第一个分号开始到本行结束为注释内容 所有的注释内容均被汇编起忽略 4 2 3ARM汇编语言程序的基本结构 在ARM汇编语言程序中 以程序段为单位来组织代码 段是相对独立的指令或数据序列 具有特定的名称 段可以分为代码段和数据段 代码段的内容为执行代码 数据段存放代码运行时所需的数据 可执行映像文件通常由以下几部分构成 一个或多个代码段 代码段为只读属性 零个或多个包含初始化数据的数据段 数据段的属性为可读写 零个或多个不包含初始化数据的数据段 数据段的属性为可读写 硬件启动程序的工作一般包括 1 分配中断向量表 2 初始化存储器系统 3 初始化各工作模式下的堆栈 4 初始化有特殊要求的硬件模块 5 初始化用户程序的执行环境 6 切换处理器的工作模式 7 呼叫主应用程序 4 3基于ARM的硬件启动程序 5 初始化用户程序的执行环境 可执行程序映像的结构 映像一开始总是存储在ROM Flash中 其RO部分既可以在ROM Flash中执行 也可以转移到速度更快的REM中执行 而RW和ZI这两部分必须转移到可写的RAM中 应用程序执行环境的初始化 就是完成必要的从ROM到RAM的数据传输和内容清零 4 4 1C语言与汇编语言混合编程应遵守的规则 在C程序和ARM汇编程序之间相互调用时必须遵守ATPCS规则 ATPCS规定了一些子程序间调用的基本规则 比如 寄存器的使用规则子程序之间通过寄存器r0 r3来传递参数 当参数个数多于4个时 使用堆栈来传递参数 在子程序中 使用寄存器r4 r11保存局部变量 寄存器r12用于保存堆栈指针SP 当子程序返回时使用该寄存器出栈 记作IP 寄存器r13用作堆栈指针 记作SP 寄存器r14称为链接寄存器 记作LR 该寄存器用于保存子程序的返回地址 寄存器r15称为程序计数器 记作PC 堆栈的使用规则堆栈采用满递减类型 FD FullDescending 即堆栈通过减小存储器地址而向下增长 堆栈指针指向内含有效数据项的最低地址 参数的传递规则整数参数的前4个使用r0 r3传递 其他参数使用堆栈传递 浮点参数使用编号最小且能够满足需要的一组连续的FP寄存器传递参数子程序的返回结果为一个32位整数时 通过r0返回 返回结果为一个64位整数时 通过r0和r1返回 依此类推 结果为浮点数时 通过浮点运算部件的寄存器F0 D0或S0返回 4 4 2汇编程序调用C程序的方法 汇编程序调用C程序的方法为 首先在汇编程序中使用IMPORT伪指令事先声明将要调用的C语言函数 然后通过BL指令来调用C函数 例如在一个C源文件中定义了如下求和函数 intadd intx inty return x y 调用add 函数的汇编程序结构如下 IMPORTadd 声明要调用的C函数 MOVr0 1 通过r0和r1来传递参数MOVr1 2BLadd 调用C函数add 4 4 3C程序调用汇编程序的方法 C程序调用汇编子程序的方法为 首先在汇编程序中使用EXPORT伪指令声明被调用的子程序 表示该子程序将在其他文件中被调用 然后在C程序中使用extern关键字声明要调用的汇编子程序为外部函数 例如在一个汇编源文件中定义了如下求和函数 EXPORTadd 声明add子程序将被外部函数调用 add 求和子程序addADDr0 r0 r1MOVpc lr 在一个C程序的main 函数中对add汇编子程序进行了调用 externintadd intx inty 声明add为外部函数voidmain inta 1 b 2 c c add a b 调用add子程序 4 4 4C程序中内嵌汇编语句 在C语言中内嵌汇编语句可以实现一些高级语言不能实现或者高级语言不容易实现的功能以及时间紧迫的功能 内嵌的汇编器支持大部分ARM指令和Thumb指令 但是不支持诸如直接修改PC实现跳转的底层功能 也不能直接引用C语言中的变量 嵌入式汇编语句在形式上表现为独立定义的函数体 其语法格式为 asm 指令 指令 指令 第5章基于S3C2410的系统硬件设计 5 1 4时钟和电源管理 时钟和电源管理模块包括三部分 时钟控制 CPU所需的FCLK时钟信号 AHB总线外围设备所需的HCLK时钟信号 以及APB总线外围设备所需的PCLK时钟信号 USB控制电源控制 正常模式慢速模式空闲模式掉电模式 5 2 1S3C2410A的I O口工作原理 S3C2410A共有117个多功能复用输入输出口 I O口 分为8组PORTA PORTH PORTA除了作为功能口外 它只作为输出口使用 其余的PORTB PORTH都可以作为输入输出口使用 8组I O口按照其位数的不同 可分为 1个23位的输出口 PORTA 2个11位的I O口 PORTB和PORTH 4个16位的I O口 PORTC PORTD PORTE PORTG 1个8位的I O口 PORTF 与配置I O口相关的寄存器包括 端口控制寄存器 GPACON GPHCON 端口数据寄存器 GPADAT GPHDAT 端口上拉寄存器 GPBUP GPHUP 杂项控制寄存器外部中断控制寄存器 EXTINTN 5 3 1ARM的中断原理 ARM系统包括两类中断 一是IRQ中断 一是FIQ中断 处理中断的步骤如下 1 保存现场 保存当前的PC值到R14 保存当前的程序运行状态到SPSR 2 模式切换 根据发生的中断类型 进入IRQ模式或FIQ模式 3 获取中断源 以异常向量表保存在低地址处为例 若
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年智能穿戴设备中金纳米粒子技术创新应用分析报告
- 2025年新能源行业企业社会责任报告编制与优化建议报告
- 2025年核能发电安全性提升与欧美市场拓展潜力研究报告
- 2025年唐山社区考试试题及答案
- 第11课 变迁中的家园教学设计-2025-2026学年初中艺术·美术苏少版2024七年级上册-苏少版2024
- DB65T 4411-2021 热泵干制哈密瓜片技术规程
- 2025年高风险作业考试题及答案
- DB65T 4355-2021 南疆冬小麦机械化匀播高产栽培技术规程
- 毒气应急处理预案(3篇)
- 数学专业教学测试题及答案
- 安全驾驶教育培训课件
- 西师大版数学六年级上册 第一单元测试卷(A)(含解析)
- 2025北京京剧院招聘10人备考题库及答案解析
- 防护用品使用课件
- 日间手术课件
- 人形机器人-价值5万亿美元的全球市场 Humanoids A $5 Trillion Global Market
- 好好说话暖人心课件
- 部队新闻培训课件
- 2025年初级注册安全工程师考试练习题及答案解析
- 幼儿园膳食委员会流程
- 船员技能评估体系-洞察及研究
评论
0/150
提交评论