




已阅读5页,还剩6页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
u 什么是嵌入式系统嵌入式系统(Embedded Systems)是指:“嵌入到对象体系中的、用于执行独立功能的专用计算机系统”。即以应用为中心,以微电子技术、控制技术、计算机技术和通讯技术为基础,强调硬件软件的协同性与整合性,软件硬件可剪裁的,适应应用系统对功能、可靠性、成本、体积、功耗和应用环境有等严格要求的专用计算机系统。嵌入式系统的嵌入式本质就是将一个计算机嵌入到一个对象体系中去。u 嵌入式系统按形态可分为u 设备级(工控机)u 板级(单板、模块)u 芯片级(MCU、SoC)“嵌入性”、“专用性”与“计算机系统”是嵌入式系统的三个基本要素。与通用的计算机系统化相比,嵌入式系统具有以下显著特点。 u 系统内核小 u 专用性强 u 运行环境差异大u 可靠性要求高 u 系统精简和高实时性操作系统 u 具有固化在非易失性存储器中的代码 u 嵌入式系统开发工作和环境 硬件抽象层(Hardware Abstraction Layer,HAL),有时也称为板级支持包(Board Support Package,BSP)。这个新增加的中间层次位于操作系统和硬件之间,包含了操作系统中与硬件相关的大部分功能。它能够通过特定的上层接口与操作系统进行交互,向操作系统提供底层硬件信息,并根据操作系统的要求完成对硬件的直接操作。BSP是相对于操作系统而言的,不同的操作系统对应于不同定义形式的BSP。嵌入式系统结构驱动程序、HAL/BSP驱动层应用程序接口(API)数据库模块网络模块图形驱动OS核内存管理文件管理OS层应用层基本模块扩展模块进程调度应用程序文件系统/图形用户接口硬件层嵌入式操作系统的主要特点如下 :u 体积小 u 实时性 u 特殊的开发调试环境。嵌入式系统按软件实时性需求分类u 非实时系统(如PDA)u 软实时系统(如消费类产品)u 硬实时系统(如工业实时控制系统)实时系统 (real-time system)u 实时系统的正确性依赖于运行结果的逻辑正确性和运行结果产生的时间正确性,即实时系统必须在规定的时间范围内正确地响应外部物理过程的变化。硬实时&软实时u “软”意味着如果没有满足指定的时间约束并不会导致灾难性的后果,而对于硬实时系统来说却是灾难性的。u 从实践上说,软实时和硬实时之间的区别通常与系统的时间精度有关:典型的,软实时任务的调度精度必须大于千分之一秒,而硬实时任务为微秒级。 采用RISC架构的ARM微处理器一般具有如下特点:u 体积小、低功耗、低成本、高性能;u 支持Thumb(16位)/ARM(32位)双指令集,能很好的兼容8位/16位器件;u 大量使用寄存器,指令执行速度更快;u 大多数数据操作都在寄存器中完成;u 寻址方式灵活简单,执行效率高;u 指令长度固定。 RISC和CISC之间的主要区别:指 标RISCCISC指令集 一个周期执行一条指令,通过简单指令的组合实理复杂操作;指令长度固定。 指令长度不固定,执行需要多个周期。流水线流水线每周期前进一步。 指令的执行需要调用微代码的一个微程序。寄存器更多通用寄存器。用于特定目的的专用寄存器。Load/Store结构 独立的Load和Store指令完成数据在寄存器和外部存储器之间的传输。 处理器能够直接处理存储器中的数据。u ARM微处理器的工作状态一般有两种,并可在两种状态之间切换:u ARM状态,此时处理器执行32位的字对齐的ARM指令;u Thumb状态,此时处理器执行16位的、半字对齐的Thumb指令。ARM微处理器在开始执行代码时,应该处于ARM状态。u 大端格式 在这种格式中,字数据的高字节存储在低地址中,而字数据的低字节则存放在高地址中u 小端格式 在这种格式中,字数据的高字节存储在低地址中,而字数据的低字节则存放在高地址中ARM微处理器中支持字节(8位)、半字(16位)、字(32位)三种数据类型存储管理单元(MMU)的完成的主要功能有:u 将主存地址从虚拟存储空间映射到物理存储空间。u 存储器访问权限控制。u 设置虚拟存储空间的缓冲特性等。ARM920T微处理器核的MMU采用了分页虚拟存储管理方式。它把虚拟存储空间分成一个个固定大小的页,把物理主存储的空间也分成同样大小的一个个页。通过查询存放在主存中的页表,来实现虚拟地址到物理地址的转换。但由于页表存储在主存储中,查询页表所花的代价很大,因此,通常又采用快表技术(TLB translation lookaside buffer)来提高地址变换效率。 TLB技术中,将当前需要访问的地址变换条目存储在一个容量较小(通常816个字)、访问速度更快(与微处理器中通用寄存器速度相当)的存储器件中。当微处理器访问主存时,先在TLB中查找需要的地址变换条目,如果该条目不存在,再从存储在主存中的页表中查询,并添加到TLB中。这样,当微处理器下一次又需要该地址变换条目时,可以从TLB中直接得到,从而提高了地址变换速度。ARM微处理器支持7种运行模式,分别为:u 用户模式(usr): ARM处理器正常的程序执行状态。u 系统模式(sys):运行具有特权的操作系统任务。u 快速中断模式(fiq):用于高速数据传输或通道处理。u 外部中断模式(irq):用于通用的中断处理。u 管理模式(svc):操作系统使用的保护模式。u 数据访问终止模式(abt):当数据或指令预取终止时进入该模式,可用于虚拟存储及存储保护。u 未定义指令中止模式(und):当未定义的指令执行时进入该模式,可用于支持硬件协处理器的软件仿真。除用户模式外,其它模式均为特权模式。ARM内部寄存器和一些片内外设在硬件设计上只允许(或者可选为只允许)特权模式下访问。此外,特权模式可以自由的切换处理器模式,而用户模式不能直接切换到别的模式。后五种模式称为异常模式。它们除了可以通过程序切换进入外,也可以由特定的异常进入。当特定的异常出现时,处理器进入相应的模式。每种异常模式都有一些独立的寄存器,以避免异常退出时用户模式的状态不可靠。ARM处理器中有37个寄存器,这些寄存器包括: 31个通用寄存器,包括程序计数器(PC指针),均为32位的寄存器。 6个状态寄存器,用以标识CPU的工作状态及程序的运行状态,均为32位,通用寄存器通用寄存器包括R0R15,可以分为三类:u 未分组寄存器R0R7;u 分组寄存器R8R14;u 程序计数器PC(R15)。对于分组寄存器,他们每一次所访问的物理寄存器与处理器当前的运行模式有关。对于R8R12来说,每个寄存器对应两个不同的物理寄存器,当使用fiq模式时,访问寄存器R8_fiqR12_fiq;当使用除fiq模式以外的其他模式时,访问寄存器R8_usrR12_usr。对于R13、R14来说,每个寄存器对应6个不同的物理寄存器,其中的一个是用户模式与系统模式共用,另外5个物理寄存器对应于其他5种不同的运行模式。寄存器R13在ARM指令中常用作堆栈指针,R14也称作子程序链接寄存器(Subroutine Link Register)或链接寄存器LR。当执行BL子程序调用指令时,R14中得到R15(程序计数器PC)的备份。寄存器R15用作程序计数器(PC)。当正常的程序执行流程发生暂时的停止时,称之为异常处理器允许多个异常同时发生,它们将会按固定的优先级进行处理。ARM体系结构所支持的异常类型异常类型模式复位管理未定义指令未定义软件中断(SWI)管理预取中止(取指令存储器中止)中止数据中止(数据访问存储器中止)中止IRQ(中断)IRQFIQ(快速中断)FIQu 程序状态寄存器作用和各标志位的作用 (P31)uu 对异常的响应 (1)将下一条指令的地址存入相应连接寄存器LR,以便程序在处理异常返回时能从正确的位置重新开始执行。 (2)将CPSR复制到相应的SPSR中。(3)根据异常类型,强制设置CPSR的运行模式位。(4)强制PC从相关的异常向量地址取下一条指令执行,从而跳转到相应的异常处理程序处,同时设置中断禁止位,以禁止中断发生。u 异常返回 u 异常处理完毕之后,ARM微处理器会执行以下几步操作从异常返回: u 将连接寄存器LR的值减去相应的偏移量后送到PC中。u 将SPSR复制回CPSR中。u 若在进入异常处理时设置了中断禁止位,要在此清除。uARM微处理器支持四种类型的堆栈工作方式,即:u 满递增方式FA(Full Ascending):堆栈指针指向最后入栈的数据位置,且由低地址向高地址生成。u 满递减方式FD(Full Decending):堆栈指针指向最后入栈的数据位置,且由高地址向低地址生成。u 空递增方式EA(Empty Ascending):堆栈指针指向下一个入栈数据的空位置,且由低地址向高地址生成。u 空递减方式ED(Empty Decending):堆栈指针指向下一个入栈数据的空位置,且由高地址向低地址生成。u 在ARM微处理器的数据传送中,数据的源和数据的目标只有两种:一种是ARM的寄存器R0R15;另一种就是外部存储器(它们可能是外围模块的寄存器、外部数据存储器或可访问的程序存储器等)。u 把数据从存储器到寄存器的传送叫加载,数据从寄存器到存储器的传送叫存储。在ARM汇编语言程序里有一些特殊指令助记符,这些助记符与指令系统的助记符不同,没有相对应的操作码,通常称这些特殊指令助记符为伪指令,他们所完成的操作称为伪操作。u 伪指令在源程序中的作用是既要把正常的程序用指令表达给计算机以外,又要把程序设计者的意图表达给编译器. 例如:要告诉编译器程序段的开始和结束,需要定义数据等.通用伪指令包括:u 符号定义伪指令u 数据定义伪指令u 汇编控制伪指令u 及其他一些常用伪指令等。其他常用伪指令是比较重要的,包括:ALIGN伪指令是地址对准伪指令;AREA伪指令是段指示伪指令,用于定义一个代码段或数据段;CODE16和CODE32伪指令是代码长度定义伪指令;ENTRY伪指令是程序入口伪指令,在一个完整的汇编程序中至少要有一个ENTRY;END伪指令是编译结束伪指令,用于通知编译器已经到了源程序的结尾,每个汇编语言的源程序都必须有一个END伪指令定义源程序结尾。等u ARM指令系统支持8种寻址方式。l 寄存器寻址l 立即寻址l 寄存器间接寻址l 变址寻址l 寄存器移位寻址 l 多寄存器寻址l 堆栈寻址l 相对寻址Arm指令包括:存储器访问指令数据处理类指令分支指令协处理器指令软件中断指令能够读懂并书写简单的汇编程序,(,页的例子) S3C2440A的驱动代码可以在外部的NAND Flash存储器上被执行。为了支持NAND Flash的boot loader,S3C2440A 配备了一个内部的 SRAM 缓冲器名为“Steppingstone”。启动时,NAND Flash上的前4Kbyte将被装载到 Steppingstone,且执行启动代码。 一般情况下,启动代码会拷贝NAND Flash上的内容到SDRAM。使用硬件的ECC检查NAND Flash的数据。在完成拷贝的基础上,主程序将在 SDRAM上被执行。简述S3C S3C2440中Boot Loader的启动的两个阶段。P246在S3C2440A芯片内部,除了有专门用于控制NADN Flash存储器的部件(NAND Flash控制器)外,内部还有许多支持NADN Flash存储器接口的寄存器,在设计NADN Flash存储器接口时,还必须对这些寄存器进行操作。输入输出端口是嵌入式系统硬件平台的重要组成部分,通过输入输出端口可以连接各种类型的外部输入输出设备。这里把在S3C2440A芯片中的输入输出端口称为GPIO端口。S3C2440A芯片中共有130个GPIO端口,分为9组,GPA GPJ,这9组GPIO端口均为多功能端口,端口功能可以编程设置,若选定某个GPIO端口的功能,用户应在主程序运行之前编程设置对应的控制寄存器,从而选定所需GPIO端口的功能;如果某个GPIO引脚不用于特定功能,那么该引脚就可以设置为普通的输入输出引脚。在S3C2440A芯片中,所有I/O引脚是功能复用的。因此,在具体使用I/O端口引脚时,应该通过编程设置端口控制寄存器,以决定使用每个I/O引脚的哪种功能。另外,I/O端口的状态(如输入/输出、数据线是否挂起),用户也需要通过编程设置控制寄存器来确定。1.端口A控制寄存器端口A的控制寄存器包括GPACON和GPADAT。GPACON是端口A功能设置寄存器,GPADAT是端口A数据寄存器, 用来存放端口A对应的数据2.端口B-J控制寄存器 端口B的控制寄存器包括GPBCON、GPBDAT和GPBUP。GPBCON是端口B功能设置寄存器,GPBDAT是端口B数据寄存器, GPBUP是端口B上拉设置寄存器,用来确定端口B的GPIO引脚是否内部接上拉电阻。小灯LED编程,蜂鸣器编程(寄存器地址不用记)p124-125中断的概念页中断控制寄存器及其作用p129-135DMA控制方式主要用于高速I/O设备与存储器之间进行大批量数据传送。DMA的主要优点就是其传输数据不受CPU的干涉。DMA控制器控制数据直接在I/O设备与存储器之间传送,而不必经过微处理器内部的寄存器,这样就大大提高了数据传送的效率S3C2440A 通用异步接收器和发送器(UART)提供了三个独立的异步串行 I/O端口,每个端口都可以在中断模式或DMA模式下操作。换言之,UART可以在微处理器与UART接口部件之间通过产生中断或DMA 请求来传输数据。嵌入式系统的软件开发与通用软件开发的区别主要在于软件实现部分,其中又可以分为编译和调试两部分。 1交叉编译 所谓交叉编译就是在一个平台上生可以在另一个平台上执行的代码。嵌入式应用开发需要良好的开发环境的支持。在嵌入式系统中,由于目标机的资源有限,不可能在其上建立庞大复杂的开发环境,因而通常的做法是把开发环境和目标运行环境进行分离。即在宿主机上建立开发环境,进行应用程序编码和交叉编译,然后在宿主机和目标机之间建立连接,将应用程序下载到目标机上进行交叉调试。经过调试和优化,最后将应用程序固化到目标机中实际运行。其中宿主机是用于开发嵌入式系统的计算机,它通常是拥有大容量内存和硬盘的PC机或工作站。目标机可以是嵌入式应用软件的实际运行环境,也可以是能够替代实际运行环境的仿真系统。 Boot Loader的基本概念Boot Loader 就是在操作系统内核运行之前运行的一段小程序。通过这段小程序,我们可以初始化硬件设备、建立内存空间的映射图,从而将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统内核准备好正确的环境。 每种不同的 CPU 体系结构都有不同的 Boot Loader。有些 Boot Loader 也支持多种体系结构的 CPU。主机和目标机之间一般通过串口建立连接,Boot Loader 软件在执行时通常会通过串口来进行 I/O,比如:输出打印信息到串口,从串口读取用户控制字符等。 Boot Loader启动的两个阶段通常包括的步骤 P264一个嵌入式 Linux 系统从软件的角度看通常可以分为四个层次: 1. 引导加载程序。包括固化在固件(firmware)中的 boot 代码(可选),和 Boot Loader 两大部分。 2. Linux 内核。特定于嵌入式板子的定制内核以及内核的启动参数。 3. 文件系统。包括根文件系统和建立于 Flash 内存设备之上文件系统。通常用 ram disk 来作为 root fs。 4. 用户应用程序。特定于用户的应用程序。有时在用户应用程序和内核层之间可能还会包括一个嵌入式图形用户界面。建立根文件系统的必要性Linux内核是嵌入式系统运行的基础,系统完成实际任务需要有应用程序来实现,应用程序并未包含到内核中去。Linux系统需要执行文件系统中的应用程序来完成工作,同时文件系统也是支持Linux系统运行的重要部分。Linux内核启动的最后操作之一就是安装(挂载)根文件系统。这一操作完成,Linux下的程序就可以访问基于文件系统的数据文件或者驱动程序了。简述Linux根文件系统的结构 P305Linux内核由进程管理、内存管理、虚拟文件系统、网络接口和进程间通信五大子系统组成,各个子系统之间的依
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 门诊承包协议合同范本
- 保利华府购房合同范本
- 青少年成长观察课程合同
- 耕地承包出租合同范本
- 安全生产总承包合同
- 员工餐厅服务合同范本
- 整人收费服务合同范本
- 特种空调采购合同范本
- 温控大棚租赁合同范本
- 简易板房销售合同范本
- 珠宝鉴定信息咨询服务合同
- 输变电工程施工质量验收统一表式(变电工程土建专业)
- 零星维修工程施工方案
- 结直肠腺瘤中西医结合防治指南-公示稿
- 电动车充电应急处置预案
- 入学测试卷(一)(试题)-2024-2025学年五年级上册数学苏教版
- 医疗护理员培训机构申报表
- 半导体器件的干法刻蚀技术考核试卷
- 农商行贷款合同(2024版)
- 论行政决策的科学化与民主化分析研究 公共管理专业
- 专家讲课劳务合同书
评论
0/150
提交评论