您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 经营企划 > 中科大软院嵌入式期末总结
复习提纲:(C语言翻译汇编)一、概述1.嵌入式系统是“用于控制、监视或者辅助操作机器和设备的装置国内普遍认同的嵌入式系统定义为:以应用为中心、以计算机技术为基础、软硬件可裁剪、适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。2.嵌入式系统的几个重要特征(简述5特征)(1)嵌入式系统工业是不可垄断的高度分散的工业从某种意义上来说,通用计算机行业的技术是垄断的。嵌入式系统则不同,它是一个分散的工业,充满了竞争、机遇与创新,没有哪一个系列的处理器和操作系统能够垄断全部市场。(2)操作系统内核小由于嵌入式系统一般是应用于小型电子装置的,系统资源相对有限,所以内核较之传统的操作系统要小得多。比如ENEA公司的OSE分布式系统,内核只有5K,而Windows的内核则要大得多。(3)专用性强嵌入式系统的个性化很强,其中的软件系统和硬件的结合非常紧密,一般要针对硬件进行系统的移植。即使在同一品牌、同一系列的产品中也需要根据系统硬件的变化和增减不断进行修改。同时针对不同的任务,往往需要对系统进行较大更改,程序的编译下载要和系统相结合,这种修改和通用软件的“升级”是完全不同的概念。(4)系统精简嵌入式系统一般没有系统软件和应用软件的明显区分,不要求其功能设计及实现上过于复杂,这样一方面利于控制系统成本,同时也利于实现系统安全。(5)高实时性OS这是嵌入式软件的基本要求,而且软件要求固态存储,以提高速度。软件代码要求高质量和高可靠性、实时性。6)嵌入式软件开发走向标准化嵌入式系统的应用程序可以没有操作系统直接在芯片上运行。为了合理地调度多任务、利用系统资源、系统函数以及和专家库函数接口,用户必须自行选配RTOS(Real-TimeOperatingSystem)开发平台,这样才能保证程序执行的实时性、可靠性,并减少开发时间,保障软件质量。(7)嵌入式系统开发需要开发工具和环境由于其本身不具备自主开发能力,即使设计完成以后,用户通常也是不能对其中的程序功能进行修改,必须有一套开发工具和环境才能进行开发。这些工具和环境一般是基于通用计算机上的软硬件设备以及各种逻辑分析仪、混合信号示波器等。开发时往往有主机和目标机的概念,主机用于程序的开发,目标机作为最后的执行机,开发时需要交替结合进行。(8)嵌入式系统运行环境差异很大:(9)嵌入式系统比通用PC系统资源少得多:(10)一般的嵌入式系统具有低功耗、体积小、集成度高、成本低等特点:(11)建立完整的嵌入式系统的系统测试和可靠性评估体系,保证嵌入式系统高效、可靠、稳定工作:(12)具有较长的生命周期3.嵌入式系统的组成(最后的图,有印象)嵌入式硬件系统嵌入式处理器各种类型存储器模拟电路及电源接口控制器及接插件嵌入式软件系统实时操作系统(RTOS)板级支持包(BSP)设备驱动(DeviceDriver)协议栈(ProtocolStack)应用程序(Application)4.嵌入式系统的实时性二、嵌入式系统设计方法、过程(2.3ppt)1.交叉开发环境、先在通用PC机上编程,然后通过交叉编译链接,将程序做成目标平台上可以运行的二进制代码格式。最后将程序下载到目标平台上的特定位置由目标板上启动代码运行这段二进制代码。交叉开发:在一台通用计算机上进行软件的编辑编译,然后下载到嵌入式设备中运行调试的开发方式。开发计算机一般称宿主机,嵌入式设备称为目标机,在宿主机上编译好的程序,下载到目标机上运行。交叉开发环境一般由运行于宿主机上的交叉开发软件、宿主机到目标机的调试通道组成。如基于ARM9、µCOS的嵌入式系统开发,需要安装交叉编译工具ADS。基于VxWorks的开发环境:Tornado2.几种常用的调试方法、指令集模拟器一种利用PC机端的仿真开发软件模拟调试的方法。如:Skyeye清华大学陈渝主持的自由软件项目,模拟器驻留监控软件驻留监控程序运行在目标板上,PC机端调试软件可通过并口、串口、网口与之交互,以完成程序执行、存储器及寄存器读写、断点设置等任务ARM公司的Angel是长驻在目标机Flash中的监控程序JTAG仿真器(基于JTAG的ICD(In-CircuitDebugger))通过ARM芯片的JTAG边界扫描口与ARM核进行通信,不占用目标板的资源,是目前使用最广泛的调试手段在线仿真器ICE(In-CircuitEmulator)使用仿真头代替目标板上的CPU,可以完全仿真ARM芯片的行为。但结构较复杂,价格昂贵,通常用于ARM硬件开发中(ARM-LINUX开发一般过程不要求)三、Bootloader(3个常用)1、什么是bootloaderBootloader,为引导加载程序,是嵌入式系统加电后运行的第一段代码,相当于PC机的BIOS。Bootloader的位置:通常固化在硬件上的某个固态存储设备上,加电后自启动。Bootloader功能:初始化硬件设备、建立内存空间的映射图(有的CPU没有内存映射功能如S3C44B0x),将系统的软、硬件环境带到一个合适的状态,以便为最终调用操作系统内核或用户应用程序准备好正确的环境。Bootloader的地址:在嵌入式系统中,系统加电复位后,几乎所有的CPU都从由复位地址上取指令。2、Bootloader操作模式两种不同的操作模式:“启动加载”模式和“下载”模式。其区别对于开发人员才有意义。从最终用户的角度看,Bootloader的作用就是用来加载操作系统,而并不存在所谓的启动加载模式与下载模式的区别。启动加载(Bootloading)模式启动加载模式称为“自举”(Autonomous)模式。即Bootloader从目标机上的某个固态存储设备上将操作系统加载到RAM中运行,整个过程并没有用户的介入。启动加载模式是Bootloader的正常工作模式,在嵌入式产品发布的时侯,Bootloader必须工作在这种模式下。下载(Downloading)模式下载方式:在这种模式下,目标机上的Bootloader将通过串口连接或网络连接等通信手段从主机下载文件。下载内容及存储:主要是下载内核映像和根文件系统映像等。从主机下载的文件通常首先被Bootloader保存到目标机的RAM中,然后再被Bootloader写到目标机上的FLASH类固态存储设备中。下载模式应用场合:Bootloader的这种模式通常在第一次安装内核与根文件系统时被使用;此外,以后的系统更新也会使用到这种工作模式。用户应用接口:工作于这种模式下的Bootloader通常都会向它的终端用户提供一个简单的命令行接口。如在RedBoot下,将出现“RedBoot”提示符;在viviBootloader下出现“vivi”提示符。3、Bootloader启动过程Bootloader的启动可以分为两个阶段1、第一阶段阶段1主要包含依赖于CPU体系结构及硬件设备的初始化等。通常都用汇编语言来实现。这个阶段的任务有5:(1)、基本的硬件设备初始化这是Bootloader一开始就执行的操作,其目的是为阶段2的执行、以及随后kernel的执行准备好一些基本的硬件环境。它通常包括以下工作:关闭处理器内部指令/数据cache等关闭中断关闭看门狗配置PLL配置内存初始化各工作模式的堆栈配置中断拷贝RW段,初始化ZI段(2)、为阶段2代码准备RAM空间为了获得更快的执行速度,通常把阶段2的代码加载到RAM空间中来执行。准备RAM空间考虑的因素:阶段2代码大小、堆栈、页大小(4KB的倍数)、安排位置等。(3)、拷贝阶段2代码到RAM空间(4)、设置好堆栈堆栈指针sp设置在1MB的RAM空间的最顶端(堆栈向下生长)。(5)、跳转到阶段2的C程序入口点在上述一切都就绪后,就可以跳转到Bootloader的stage2去执行了。2、第二阶段阶段2通常用C语言来实现,以便实现更复杂的功能,也使程序有更好的可读性和可移植性。这个阶段的主要任务有5:(1)、初始化本阶段要使用到的硬件至少初始化一个串口,以便和终端用户进行I/O输出信息等。(2)、检测系统内存映射(memorymap)所谓内存映射,就是指在整个物理地址空间中有哪些地址范围被分配用来作为系统的RAM单元。为后面使用RAM、运行程序做好准备。(3)、将kernel和根文件系统映像从flash读到RAM空间(4)、为kernel设置启动参数这是在调用内核之前应该做的准备工作。Linux2.4.x以后的内核都期望以标记列表(taggedlist)的形式来传递启动参数。启动参数标记列表方法:以ATAG_CORE标记开始,以ATAG_NONE标记结束。在嵌入式Linux系统中,通常需要由BootLoader设置的启动参数有:ATAG_CORE、ATAG_MEM(内存映射)、ATAG_NONE等。(5)、调用内核Bootloader调用Linuxkernel的方法是直接跳转到内核的第一条指令处。在跳转时必须满足下列条件:1)、CPU寄存器的设置:R0为0;R1为机器类型ID;R2为启动参数,标记列表在RAM中的起始基地址。(机器类型参见linux/arch/arm/tools/mach-types目录)2)、CPU模式:CPU必须设置为SVC模式,必须禁止中断(IRQs和FIQs)。3)、MMU和Cache的设置:MMU必须关闭;指令Cache可以打开也可以关闭;数据Cache必须关闭。4、有哪些常用的BootloaderBootloader是严重地依赖于硬件而实现的。每种不同体系结构的处理器都有不同的Bootloader。1、vivivivi是韩国Mizi公司开发的Bootloader,适用于ARM9处理器。2、RedBootRedBoot即红帽(RedHat)嵌入式调试引导程序,是一种用于嵌入式系统的独立开放源代码引导/装载器。3、U-BootU-Boot(UniversalBootloader)由德国DENX小组开发,是一款目前功能较为强大的开源Bootloader程序,它支持多种处理器平台,包括ARM、PowerPC、MIPS等。四、嵌入式微处理器1、嵌入式系统硬件基础知识(体系结构,指令集)1)冯·诺依曼体系结构和哈佛体系结构冯·诺依曼体系结构存储器CPUPC数据地址数据和指令都存储在一个存储器中的计算机被称为冯·诺依曼机指令的执行周期T1)取指令(InstructionFetch):TF2)指令译码(InstructionDecode):TD3)执行指令(InstructionExecute):TE4)存储(Storage):TS每条指令的执行周期:T=TF+TD+TE+TS冯·诺依曼体系结构特点:1)数据与指令都存储在存储器中2)被大多数计算机所采用3)冯诺依曼体系:英特尔公司的8086,英特尔公司的其他中央处理器、ARM的ARM7、MIPS公司的MIPS处理器。哈佛体系结构数据存储器CPUPC数据地址程序存储器地址数据数据和指令存储在各自独立的存储器中的计算机体系结构称为哈佛体系结构哈佛体系结构特点:1)程序存储器与数据存储器分开2)提供了较大的数据存储器带宽3)适合于数字信号处理4)大多数DSP都是哈佛结构5)Microchip公司的PIC16芯片、摩托罗拉公司的MC68系列、Zilog公司的Z8系列、ATMEL公司的AVR系列和ARM公司的ARM9、ARM10和ARM11。很难在哈佛机上编写出一个自修改程序(写入数据值然后使用这些值作为指令的程序2)CISC与RISCCISC:复杂指令集(ComplexInstructionSetComputer)8/2原则:80%的程序只使用20%的指令具有大量变长形式的不同指令大多数程序只使用少量的指令就能够运行。PUSHAXMOVAL,80HMOVAX,1090HRISC:精简指令集(ReducedInstructionSetComputer)RISC是在开发高性能微处理器过程中的一个进步在通道中只包含最有用的指令(少而简单)确
本文标题:中科大软院嵌入式期末总结
链接地址:https://www.777doc.com/doc-7243539 .html