关于嵌入式系统的论文5000字
关于嵌入式系统的论文5000字
历史:现代计算机的技术发展史(1)始于微型机时代的嵌入式应用 电子数字计算机诞生于1946年,在其后漫长的历史进程中,计算机始终是供养在特殊的机房中,实现数值计算的大型昂贵设备。直到20世纪70年代,微处理器的出现,计算机才出现了历史性的变化。以微处理器为核心的微型计算机以其小型、价廉、高可靠性特点,迅速走出机房;基于高速数值解算能力的微型机,表现出的智能化水平引起了控制专业人士的兴趣,要求将微型机嵌入到一个对象体系中,实现对象体系的智能化控制。例如,将微型计算机经电气加固、机械加固,并配置各种外围接口电路,安装到大型舰船中构成自动驾驶仪或轮机状态监测系统。这样一来,计算机便失去了原来的形态与通用的计算机功能。为了区别于原有的通用计算机系统,把嵌入到对象体系中,实现对象体系智能化控制的计算机,称作嵌入式计算机系统。因此,嵌入式系统诞生于微型机时代,嵌入式系统的嵌入性本质是将一个计算机嵌入到一个对象体系中去,这些是理解嵌入式系统的基本出发点。 (2)现代计算机技术的两大分支 由于嵌入式计算机系统要嵌入到对象体系中,实现的是对象的智能化控制,因此,它有着与通用计算机系统完全不同的技术要求与技术发展方向。 通用计算机系统的技术要求是高速、海量的数值计算;技术发展方向是总线速度的无限提升,存储容量的无限扩大。 而嵌入式计算机系统的技术要求则是对象的智能化控制能力;技术发展方向是与对象系统密切相关的嵌入性能、控制能力与控制的可靠性。 早期,人们勉为其难地将通用计算机系统进行改装,在大型设备中实现嵌入式应用。然而,对于众多的对象系统(如家用电器、仪器仪表、工控单元……),无法嵌入通用计算机系统,况且嵌入式系统与通用计算机系统的技术发展方向完全不同,因此,必须独立地发展通用计算机系统与嵌入式计算机系统,这就形成了现代计算机技术发展的两大分支。 如果说微型机的出现,使计算机进入到现代计算机发展阶段,那么嵌入式计算机系统的诞生,则标志了计算机进入了通用计算机系统与嵌入式计算机系统两大分支并行发展时代,从而导致20世纪末,计算机的高速发展时期。 (3) 两大分支发展的里程碑事件 通用计算机系统与嵌入式计算机系统的专业化分工发展,导致20世纪末、21世纪初,计算机技术的飞速发展。计算机专业领域集中精力发展通用计算机系统的软、硬件技术,不必兼顾嵌入式应用要求,通用微处理器迅速从286、386、486到奔腾系列;操作系统则迅速扩张计算机基于高速海量的数据文件处理能力,使通用计算机系统进入到尽善尽美阶段。 嵌入式计算机系统则走上了一条完全不同的道路,这条独立发展的道路就是单芯片化道路。它动员了原有的传统电子系统领域的厂家与专业人士,接过起源于计算机领域的嵌入式系统,承担起发展与普及嵌入式系统的历史任务,迅速地将传统的电子系统发展到智能化的现代电子系统时代。 因此,现代计算机技术发展的两大分支的里程碑意义在于:它不仅形成了计算机发展的专业化分工,而且将发展计算机技术的任务扩展到传统的电子系统领域,使计算机成为进入人类社会全面智能化时代的有力工具。现状1 嵌入式系统的含义及分类 嵌入式系统被定义为:以应用为中心、以计算机技术为基础、软件硬件可裁剪、适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。 嵌入式系统是将先进的计算机技术、半导体技术和电子技术和各个行业的具体应用相结合后的产物,这一点就决定了它必然是一个技术密集、资金密集、高度分散、不断创新的知识集成系统。 目前嵌入式系统除了部分为32 位处理器外,大量存在的是8 位和16 位的嵌入式微控制器(MCU) ,嵌入式系统是计算机应用的另一种形态,正如前所述它与通用计算机应用不同:嵌入式计算机是以嵌入式系统的形式隐藏在各种装置、产品和系统之中的一种软硬件高度专业化的特定计算机系统。目前根据其发展现状,嵌入式计算机可以分成下面几类:(1) 嵌入式微处理器(Embedded MicroprocessorUnit , EMPU) 嵌入式微处理器的基础是通用计算机中的CPU。在应用中,将微处理器装配在专门设计的电路板上,只保留和嵌入式应用有关的母板功能,这样可以大幅度减小系统体积和功耗。为了满足嵌入式应用的特殊要求,嵌入式微处理器虽然在功能上和标准微处理器基本是一样的,但在工作温度、抗电磁干扰、可靠性等方面一般都做了各种增强。(2) 嵌入式微控制器(Microcontroller Unit , MCU) 嵌入式微控制器又称单片机。嵌入式微控制器一般以某一种微处理器内核为核心,芯片内部集成ROMPEPROM、RAM、总线、总线逻辑、定时P计数器、WatchDog、IPO、串行口、脉宽调制输出、APD、DPA、Flash RAM、E2PROM 等各种必要功能和外设。为适应不同的应用需求,一般一个系列的单片机具有多种衍生产品,每种衍生产品的处理器内核都是一样的,不同的是存储器和外设的配置及封装。这样可以使单片机最大限度地和应用需求相匹配,功能不多不少,从而减少功耗和成本。和嵌入式微处理器相比,微控制器的最大特点是单片化,体积大大减小,从而使功耗和成本下降、可靠性提高。(3) 嵌入式DSP 处理器( Embedded Digital SignalProcessor , EDSP) DSP 处理器对系统结构和指令进行了特殊设计,使其适合于执行DSP 算法,编译效率较高,指令执行速度也较高。在数字滤波、FFT、谱分析等方面DSP 算法正在大量进入嵌入式领域,DSP 应用正从在通用单片机中以普通指令实现DSP 功能,过渡到采用嵌入式DSP 处理器。(4) 嵌入式片上系统(System On Chip) 随着EDI 的推广和VLSI 设计的普及化,及半导体工艺的迅速发展,在一个硅片上实现一个更为复杂的系统的时代已来临, 这就是System On Chip(SOC) 。各种通用处理器内核将作为SOC 设计公司的标准库,和许多其它嵌入式系统外设一样,成为VLSI 设计中一种标准的器件,用标准的VHDL 等语言描述,存储在器件库中。用户只需定义出其整个应用系统,仿真通过后就可以将设计图交给半导体工厂制作样品。这样除个别无法集成的器件以外,整个嵌入式系统大部分均可集成到一块或几块芯片中去,应用系统电路板将变得很简洁,对于减小体积和功耗、提高可靠性非常有利。2 嵌入式系统工业的特点(1) 嵌入式系统工业是不可垄断的高度分散的工业 从某种意义上来说,通用计算机行业的技术是垄断的。占整个计算机行业90 %的PC 产业,80 %采用Intel 的8x86 体系结构,芯片基本上出自Intel ,AMD ,Cyrix 等几家公司。在几乎每台计算机必备的操作系统和文字处理器方面,Microsoft 的Windows 及Word 占80 - 90 % ,凭借操作系统还可以搭配其它应用程序。因此当代的通用计算机工业的基础被认为是由Wintel (Microsoft 和Intel 90 年代初建立的联盟)垄断的工业。 嵌入式系统则不同,它是一个分散的工业,充满了竞争、机遇与创新,没有哪一个系列的处理器和操作系统能够垄断全部市场。即便在体系结构上存在着主流,但各不相同的应用领域决定了不可能有少数公司、少数产品垄断全部市场。因此嵌入式系统领域的产品和技术,必然是高度分散的,留给各个行业的中小规模高技术公司的创新余地很大。另外,社会上的各个应用领域是在不断向前发展的,要求其中的嵌入式处理器核心也同步发展,这也构成了推动嵌入式工业发展的强大动力。 器件是嵌入式系统产业的根本,嵌入式系统工业的基础就是以应用为中心的“芯片”设计技术和面向应用的软件产品开发技术。(2) 嵌入式系统具有的产品特征 嵌入式系统是面向用户、面向产品、面向应用的,如果独立于应用自行发展,则会失去市场。嵌入式处理器的功耗、体积、成本、可靠性、速度、处理能力、电磁兼容性等方面均受到应用要求的制约,这些也是各个半导体厂商之间竞争的热点。 和通用计算机不同,嵌入式系统的硬件和软件都必须高效率地设计,量体裁衣、去除冗余,力争在同样的硅片面积上实现更高的性能,这样才能在具体应用对处理器的选择面前更具有竞争力。嵌入式处理器要针对用户的具体需求,对芯片配置进行裁剪和添加才能达到理想的性能;但同时还受用户订货量的制约。因此不同的处理器面向的用户是不一样的,可能是一般用户,行业用户或单一用户。 嵌入式系统和具体应用有机地结合在一起,它的升级换代也是和具体产品同步进行,因此嵌入式系统产品一旦进入市场,具有较长的生命周期。嵌入式系统中的软件,一般都固化在只读存储器中,而不是以磁盘为载体,可随意更换,所以嵌入式系统的应用软件生命周期也和嵌入式产品一样长。另外,各个行业的应用系统和产品,和通用计算机软件不同,很少发生突然性跳跃,嵌入式系统中的软件也因此更强调可继承性和技术衔接性,发展比较稳定。 嵌入式处理器的发展也体现出稳定性,一个体系一般要存在8 - 10 年的时间。一个体系结构及其相关的片上外设、开发工具、库函数、嵌入式应用产品是一套复杂的知识系统,用户和半导体厂商都不会轻易地放弃一种处理器。(3) 嵌入式系统软件的特征 嵌入式处理器的应用软件是实现嵌入式系统功能的关键,对嵌入式处理器系统软件和应用软件的要求也和通用计算机有所不同。 ①软件要求固态化存储 为了提高执行速度和系统可靠性,嵌入式系统中的软件一般都固化在存储器芯片或单片机本身中,而不是存贮于磁盘等载体中。 ②软件代码高质量、高可靠性尽管半导体技术的发展使处理器速度不断提高、片上存储器容量不断增加,但在大多数应用中,存储空间仍然是宝贵的,还存在实时性的要求。为此要求程序编写和编译工具的质量要高,以减少程序二进制代码长度、提高执行速度。 ③系统软件(OS) 的高实时性是基本要求多任务嵌入式系统中,对重要性各不相同的任务进行统筹兼顾的合理调度是保证每个任务及时执行的关键,单纯通过提高处理器速度是无法完成和没有效率的,这种任务调度只能由优化编写的系统软件来完成,因此系统软件的实时性是基本要求。 ④多任务操作系统是知识集成的平台和走向工业标准化道路的基础(4) 嵌入式系统开发需要开发工具和环境 通用计算机具有完善的人机接口界面,在上面增加一些开发应用程序和环境即可进行对自身的开发。而嵌入式系统本身不具备自举开发能力,即使设计完成以后用户通常也是不能对其中的程序功能进行修改的,必须有一套开发工具和环境才能进行开发,这些工具和环境是基于通用计算机上的软硬件设备以及各种逻辑分析仪、混合信号示波器等。(5) 嵌入式系统软件需要RTOS 开发平台 通用计算机具有完善的操作系统和应用程序接口(API) ,是计算机基本组成不可分离的一部分,应用程序的开发以及完成后的软件都在操作系统(OS) 平台上面运行,但一般不是实时的。嵌入式系统则不同,应用程序可以没有操作系统直接在芯片上运行;但是为了合理地调度多任务、利用系统资源、系统函数以及和专家库函数接口,用户必须自行选配RTOS 开发平台,这样才能保证程序执行的实时性、可靠性,并减少开发时间,保障软件质量。(6) 嵌入式系统开发人员以应用专家为主 通用计算机的开发人员一般是计算机科学或计算机工程方面的专业人士,而嵌入式系统则是要和各个不同行业的应用相结合的,要求更多的计算机以外的专业知识,其开发人员往往是各个应用领域的专家。因此开发工具的易学、易用、可靠、高效是基本要求。前景3 嵌入式系统的应用前景嵌入式控制器的应用几乎无处不在:移动电话、家用电器、汽车……无不有它的踪影。嵌入控制器因其体积小、可靠性高、功能强、灵活方便等许多优点,其应用已深入到工业、农业、教育、国防、科研以及日常生活等各个领域,对各行各业的技术改造、产品更新换代、加速自动化化进程、提高生产率等方面起到了极其重要的推动作用。 嵌入式计算机在应用数量上远远超过了各种通用计算机,一台通用计算机的外部设备中就包含了5 - 10 个嵌入式微处理器。在制造工业、过程控制、网络、通讯、仪器、仪表、汽车、船舶、航空、航天、军事装备、消费类产品等方面均是嵌入式计算机的应用领域。 嵌入式系统工业是专用计算机工业,其目的就是要把一切变得更简单、更方便、更普遍、更适用;通用计算机的发展变为功能电脑,普遍进入社会,嵌入式计算机发展的目标是专用电脑,实现“普遍化计算”,因此可以称嵌入式智能芯片是构成未来世界的“数字基因”。正如我国资深嵌入式系统专家—沈绪榜院士的预言, “未来十年将会产生头大小、具有超过一亿次运算能力的嵌入式智能芯片”,将为我们提供无限的创造空间。总之“嵌入式微控制器或者说单片机好象是一个黑洞,会把当今很多技术和成果吸引进来。中国应当注意发展智力密集型产业”。参 考 文 献[1] 吕京建 BOL System I 从嵌入式系统的可靠性与可信性看Y2K问题[2] 穆玉刚, 等 嵌入式系统及其调试手段的研究JOURNAL OF SHENYANG INSTITUTE OF TECHNOLOGY(Vol 18 N [3] 吕京建,等 嵌入式Internet 技术及其应用 http :PP bol - com[4] 吕京建,肖海桥 嵌入式处理器分类与现状 http :PP bol - com[5] 吕京建,肖海桥 面向二十一世纪的嵌入式系统综述 http :PP bol - com[6] Clarke Esler ,TASKING I And Christopher S Sontag ,emWare《Em2bedded web for 8 - and 16 -bit MPUs》Components in EApril [7] Warren W 嵌套技术促进汽车改革 http :PP com[8] 吕京建,肖海桥 嵌入式系统开发工具及RTOS 平台 http :PP bol - com[9] TASKING致力于嵌入式通信,推动Internet 和通信解决方案 ht2tp :PP bol - com[10] 嵌入式系统的2000 年问题 中国台湾省行政院主计处电子处理资料中心[11] 何立民 建设单片机应用平台, 实施平台开发战略 http :PP bol - com[12] 8 位和16 位微控制器的嵌入式Internet 接入 http :PP bol - com[13] 能提供C 可编程性的低成本控制器 EDN 编辑部,EDN
现在这方面的东西很多的 , 看看自己搜搜MP3 这类的就可以满足要求的 , 其他的如果不会的哈, 也不太好弄的
对系统的移植和裁剪,以达到所需的系统要求以PowerPC8xx系列处理器为例,通过对此类处理器的引导模式。引导代码的编写和调试,以及如何引导操作系统执行等问题的研究,探索嵌入式系统引导过程的一种解决方案。关键词:MPC860嵌入式操作系统存储映射引导嵌入式系统应用开发不同于PC机,其开发过程同时涉及软硬件,需要将硬件平台的设计。操作系统以及上层应用开发综合考虑;而PC机应用开发建立在已经定制好的硬件和操作系统平台上,开发者只需调用系统提供的接口和服务完成相应的功能。由于应用和成本约束,嵌入式系统的硬件平台需根据应用量身定制,通常所用的MPU存储器。外围设备等有多种选择余地,而且软件调试技术特殊,使平台的引导设计变得十分复杂。因此,对于嵌入式系统开发者而言,有必要深入分析系统引导过程,将软硬件开发有效地综合,即针对不同的硬件平台和软件运行模式,正确地进行底层上电初始化,进而引导操作系统执行。这个问题的核心在于对系统的引导模式的研究。嵌入式系统的启动代码一般由两部分构成:引导代码和操作系统执行环境的初始化代码。其中引导代码一般也由两部分构成:第一部分是板级。片级初始化代码,主要功能是通过设置寄存器初始化硬件的工作方式,如设置时钟。中断控制寄存器等,完成内存映射。初始化MMU等;第二部分是装载程序,其功能是将操作系统和应用程序的映像从只读存储器装载或者拷贝到系统的RAM中,并跳转到相应的代码处继续执行。操作系统执行环境的初始化代码主要由硬件抽象层HAL代码。设备驱动程序初始化代码和操作系统执行体初始代码三部分构成。本文以摩托罗拉MPC860处理器和具有自主知识产权的操作系统CRTOSII为例,研究嵌入式系统引导程序的设计和实现技术。嵌入式软件的开发涉及调试模式和固化模式两种运行状态。调试模式主要解决如何在目标板上调试正确性未经验证的程序的问题;而固化模式主要解决如何引导已调试成功的程序的问题。相应地,引导代码的设计应针对两种模式分别进行。1调试模式的系统引导1.1调试模式引导代码的作用1调试模式的系统引导1.1调试模式引导代码的作用一个完整的嵌入式软件的解决方案大致包括四方面:①硬件平台配置初始化和系统引导代码;②操作系统软件执行环境的初始化代码;③操作系统;④应用程序。在上述四方面中,引导代码是本研究中力求解决的问题。事实上,板级初始化。操作系统硬件抽象层。设备驱动程序三者整合到一起,就构成了嵌入式系统中BSP(板级支持包)的主体。BSP的代码与具体的目标板硬件设计相关,同时也与应用程序的设计要求相关,针对应用程序提出的不同要求,例如不同设备驱动程序。不同的中断源个数。不同的中断优先级安排。是否启用MMU机制等,BSP部分应作出相应的安排。上述第四部分的应用程序是建立在前三部分正确运行的基础上,并需反复调试。由上述分析可知,BSP和应用程序代码的正确性通过一次的编写不能得到保证,需要经历“调试——修改——调试”反复的过程,因此需要建立一个可靠的调试环境。该环境建立的基础正是调模式下的引导代码。1.2引导代码的调试方法本研究实验采用一种称作BDM(Background Debug Mode)的OCD(On Chip Debuging)调试技术。BMD是由Motorola公司提供的一种硬件调试方法,类似于JTAG调试。它利用处理器提供的调试端口调试。MPC860采用一种特殊的BDM——EPBDM,其运作相当于用处理器内嵌的调试模块接管中断及异常处理,用户通过设置调试许可寄存器(debug enable register)指定哪些中断或异常发生后处理器直接进入调试状态,而不是操作系统的处理程序。进入调试状态后,内嵌调试模块向外部调试通信接口发出信号,通知一直在通信接口监听的主机调试器,然后调试器便可通过调试模块使处理器执行系统指令(相当于特权态)。由于专用的片级调试接口装置(BDI2000)的支持,不需要目标端配备相应的调试代理(Monitor)软件。1.3调试模式引导代码实现调试模式引导代码的核心在于使用BDM协议解析微指令,通过调试接口向MPC860发送信号,初始化调试环境。由于MPC860采用RISC结构,所以初始化部分主要是设置处理器内部寄存器,这个过程包括三方面内容:(1)对处理器相关寄存器进行初始化:主要是关于处理器状态的寄存器(MSRSRRSIUMCR等),中断。时钟相关模块(SYPCRSCCRPLPRCRTBSCR等)。(2)对BDM调试端口的初始化:包括调试使能寄存器DER支持指令断点的寄存器ICTRL等。(3)对片级。板级内存映射的初始化:包括内部内存映射寄存器IMMR,内存控制相关寄存器OR0~0RBR0~BR7等。它们主要功能是地址映射。片选信号选择。内存控制器选择(UMPAUMPBGPCM)。如果选择UPM,由于UPM控制采用微指令方式,而这些微指令根据内存的不同(SRAMSDRAMDRAM等),需要设计人员自行编写代码写入MPC860内部存储区相应位置。对于需要实时刷新的存储体(如SDRAM),还需设置刷新控制微指令。上述初始化代码得以执行,一方面依赖于目标机MPC860提供的调试接口支持,另一方面也需要宿主机GDB的支持。对于宿主机系统,可能选择Linux,在其下配置GBD;也可以选择Windows2000,使用可视化的调试工具LambdaTools GDB(Coretek公司产品,不支持硬件断点),或者使用BDI2000(支持硬件断点的仿真器)。不管使用哪种调试工具,都可以使用该调试器能够识别的脚本文伯存放初始化指令。这些脚本在功能上是等效的,指令的描述一般都采用如下格式:操作码寄存器数值如在嵌入式Linux下SDRAM初始化的代码片断为:mpcbdm spr MDR=0x1FF77C35mpcbdm spr MDR=0xEFEABC34mpcbdm spr MDR=0x1FB57C35……而在Windows2000下使用BDI2000代码为:WUPM 0x00000005 0x1FF77C35WUPM 0x00000006 0xEFEABC34WUPM 0x00000007 0x1FB57C35……脚本描述的指令执行后,MPC860按照预先的设想进入一个可以正常工作的状态,可以用装载器将程序下载到SDRAM中调试执行。这个程序主要包含中断表。操作系统和应用程序映象两部分,其格式可以为ff等。图1给出了下载完毕后的内存映象。当程序下载完成后,PC指针指向Image代码段(text段)的首条指令,可以利用调试器提供的命令开始调试。2固化模式的系统引导2.1概述经过调试后,OS和上层应用程序构成的Image的正确性得到了保证,但是这个Image不能自主运行。因为调试模式下,是通过BDM接口初始化处理器,并且通过BDM接口将程序下载到RAM中去运行。实际应用环境中,Image必须被存储在非易失性存储器中,如FEPROM等,本文选择Flash。系统启动时,处理器执行一段引导程序替代调试模式下的调试脚本和装载程序的功能。启动代码主要考虑以下几个问题:(1)系统上电和复位时程序如何执行,需要初始化哪些寄存器,重点仍然是内存映射相关部分;(2)启动代码为几部分,每部分代码应该全部还是部分放到Flash或者RAM中执行;(3)在时间效率和空间效率的折衷。2.2上电初始化在两种引导模式下,上电初始化总是必要步骤。它涉及各种核心寄存器初始化。地址映射等问题的处理。2.2.1地址映射MPC860的复位是通过一种异常中断来处理的(可理解为CPU自己产生的中断),向量号为0x100。异常向量表的基地址加上复位向量号即为复位向量,也就是CPU开始执行指令的地方。异常向量表在内存空间的可能位置有两个:0x0000000和0xFFF00000。所以PowerPC的复位向量为0x100或0xFFF00100。假设复位向量为0xFFF00100,系统有128K字节的Flash,并准备把它映射到CPU内存空间0xFE000000开始的地址。MPC860内部的CS0片选信号是默认的系统启动片选信号,已被连接到Flash的片选线上。上电时,内存控制器会忽略所有参与征选逻辑的地址线的高17位,CS0总是有效。这样,Flash总会被选中,CPU从Flash偏移0x100的地方取指令,此时CPU的4GB内存空间的每个128KB的块都被映射到Flash。2.2.2寄存器初始化固化方式下的大致相同,但是不再采用脚本文件编写,而是直接将一段MPC860汇编程序存放在一个s文件中。与调试模式初始化程序一样,主要完成以下处理:(1)初始化CPU核心寄存器;(2)设置机器状态寄存器;(3)禁止ceche;(4)初始化IMMR;(5)初始化系统接口单元(SIU);(6)初始化时钟和中断控制寄存器;(7)初始化通信处理机(CPM);(8)初始化内存控制器(UPM);(9)初始化C语言堆栈。2.2.3地址空间重映射上电时,由于只有一个片选信号有效,它选通了Flash,而RAM和其它存储设备地址无效,需要经过地址空间重映射才能访问。MPC860的地址空间重映射是通过设置0R0~ORBR0~BR7这十六个寄存器完成的。由于上电时4GB的地址空间均被Flash占用,所以0xFFF00100这个地址仍在Flash的偏移0x100处。在寄存器初始化过程中,需要把SDRAMMPC860内部寄存器空间以及外设等也映射进来。在进行这些操作前,需要把Flash的位置固定下来,例如映射到0xFE000000,这个操作是通过设置OR0和BR0寄存器实现的。但在写OR0时,CPU仍然在0xFFF00000的那一块取指令,而Flash即将被映射到0xFE000000块,所以程序必定出现“跑飞”的现象,必须对程序计数器(PC)进行调整,然而PC指针对程序员是不可见的,必须用跳转指令修改它。在Flash地址映射完成后,通过设置OR1~ORBR1~BR7可以完成对所有存储器空间的映射,各种存储设备可映射在CPU地址空间中的任意位置,但相互之间不能冲突。2.3引导代码的构成和运行系统启动所涉及的代码由寄存器初始化汇编文件一个Load程序以及操作系统与应用程序的Image三部分构成,引导代码则只包含s和Load程序。Load程序的作用是将操作系统与应用程序的构成的Image从Flash拷贝到SDRAM中,并跳转到Image的首条指令。调试完成后的Image有两种运行模式:Flash-resident image:Load程序仅仅把Image中的数据段(data+bss)复制到RAM中,代码段(text)在Flash中直接运行。Flash-based image:Load程序把Image完全搬到RAM中执行,包括image中的代码段(text)和数据段(data+bss)。图2和图3分别描述了两种Image的存贮映象,以及从Flash到SDRAM的装载过程。2.4时间效率和空间效率上的折衷在嵌入式系统的应用过程中,针对不同的应用环境,对时间效率和空间效率有不同的要求,基于MPC860的启动代码对此有比较充分的解决方案。2.4.1时间限制时间限制主要包括两种情况:系统要求快速启动和系统启动后要求程序高速执行。对于要求快速启动的系统,应该使在Flash中执行的初始化程序尽量简短,诸如循环语句之类的语法应该尽量减少,尽快将程序装载到RAM中执行,这样做的原因在于Flash的访存时间与RAM的访存时间存在数量级上的差距。但是必须根据代码量以及存储器的特片进行权衡。因为,虽然RAM中捃速度快,但是将Flash中的代码复制到RAM中的操作会带来一定的开销。由于可见,启动时间由Flash中引导代码的运行时间。代码从Flash拷贝到RAM的时间以及RAM中后续启动代码的运行时间三部分组成。启动时间的最小值是这三者和的最小值。对于启动后要求程序高速执行的系统,主要受处理器。存储器特性以及I/O速度等的影响。在软件方面,应该采用了上述Flash-based image方式,使得代码段在RAM中运行,提高运行速度。2.4.2空间限制空间限制主要包括两种情况:Flash等非易失性存储空间有限和RAM等易失性空间有限两种系统。对于采用高性能非易失性存储器的系统,出于成本因素,Flash等存储设备不能太大,然而它又是系统存放启动代码和操作系统Image的地方。在存放Image时,可以先使用gzip等压缩工具进行压缩,在将Image加载到RAM时采用逆向的解压缩算法解压。同时,出于实时性考虑,压缩算法不能过于复杂,否则压缩解压过程消耗大量时间将与启动时间限制发生严重冲突。采用压缩策略并不一定会增加系统启动时间,因为压缩解压过程虽然消息了一定的时间,但是由于Image体积减小,由Flash复制到RAM中的时间相应减少,有可能反而减少了时间消耗。对于采用高性能RAM的系统,同样出于成本因素,RAM空间有一定限制,此时一般采用前文描述的Flashresident image方式:Load程序把Image中的数据段复制到RAM中,代码段在Flash中运行。折衷同样存在,因为code段在低速的Flash中运行,在节省空间的同时,却牺牲了时间。本文介绍了基于嵌入式处理器的操作系统引导方法,重点研究嵌入式系统的引导模式以及不同类别的引导方法。以在MPC860C处理器上引导CRTOSII操作系统为例,阐述了调试模式和固化模式下引导代码的构成。作用以及执行方式,并对不同引导模式下的时空效率的折衷进行了分析。最终,借助BDI2000仿真器对编写的引导代码进行调试,成功实现了调试模式和固化模式下操作系统的引导。后续工作包括:继续研究在不同硬件平台上的操作系统引导方法,例如最流行的ARMX86系列;在同一平台上,可以研究不同操作系统的启动方法,例如嵌入式LVWinCE等。
关于嵌入式系统的论文
具体哪方便的啊?嵌入式Linux下USB驱动程序的研究与开发 _1248_html嵌入式Linux基于MiniGUI下的手机应用程序_1248_html
这个只能给你一些方向自己去思考,首先要了解和吃透嵌入式系统原理与应用基础概念和知识点。这个可以选择一些免费平台学习和试听,推荐你可以学习华清创客学院的教程,每个知识点都有对应的案例,理解起来很容易,零基础入门的量身教程。在线问答让你的每天的问题可以得到及时的解答,不留尾巴。课程内容干货多,废话少,交互式让枯燥的课程变得生动有趣,加强你的学习欲望。
你好,建议您登陆【中国安防监控论坛】 中的【技术问答】在线咨询一下,会员都是比较专业做安防监控的,相信一定能够帮到您,谢谢。
楼上的 “嵌入式网络监控系统”,发的不错。。。
嵌入式系统设计论文5000字
我的论文,基于STM32的多关节机器人设计,图文详细,绝对满足你的需求网页链接
大哥,这个都是专业级的,一般人绝对回答不了,另外叫你加QQ的,都是要钱,而且都骗钱的,记住,现在的任何论文都要自己去写! 谢谢!
对系统的移植和裁剪,以达到所需的系统要求以PowerPC8xx系列处理器为例,通过对此类处理器的引导模式。引导代码的编写和调试,以及如何引导操作系统执行等问题的研究,探索嵌入式系统引导过程的一种解决方案。关键词:MPC860嵌入式操作系统存储映射引导嵌入式系统应用开发不同于PC机,其开发过程同时涉及软硬件,需要将硬件平台的设计。操作系统以及上层应用开发综合考虑;而PC机应用开发建立在已经定制好的硬件和操作系统平台上,开发者只需调用系统提供的接口和服务完成相应的功能。由于应用和成本约束,嵌入式系统的硬件平台需根据应用量身定制,通常所用的MPU存储器。外围设备等有多种选择余地,而且软件调试技术特殊,使平台的引导设计变得十分复杂。因此,对于嵌入式系统开发者而言,有必要深入分析系统引导过程,将软硬件开发有效地综合,即针对不同的硬件平台和软件运行模式,正确地进行底层上电初始化,进而引导操作系统执行。这个问题的核心在于对系统的引导模式的研究。嵌入式系统的启动代码一般由两部分构成:引导代码和操作系统执行环境的初始化代码。其中引导代码一般也由两部分构成:第一部分是板级。片级初始化代码,主要功能是通过设置寄存器初始化硬件的工作方式,如设置时钟。中断控制寄存器等,完成内存映射。初始化MMU等;第二部分是装载程序,其功能是将操作系统和应用程序的映像从只读存储器装载或者拷贝到系统的RAM中,并跳转到相应的代码处继续执行。操作系统执行环境的初始化代码主要由硬件抽象层HAL代码。设备驱动程序初始化代码和操作系统执行体初始代码三部分构成。本文以摩托罗拉MPC860处理器和具有自主知识产权的操作系统CRTOSII为例,研究嵌入式系统引导程序的设计和实现技术。嵌入式软件的开发涉及调试模式和固化模式两种运行状态。调试模式主要解决如何在目标板上调试正确性未经验证的程序的问题;而固化模式主要解决如何引导已调试成功的程序的问题。相应地,引导代码的设计应针对两种模式分别进行。1调试模式的系统引导1.1调试模式引导代码的作用1调试模式的系统引导1.1调试模式引导代码的作用一个完整的嵌入式软件的解决方案大致包括四方面:①硬件平台配置初始化和系统引导代码;②操作系统软件执行环境的初始化代码;③操作系统;④应用程序。在上述四方面中,引导代码是本研究中力求解决的问题。事实上,板级初始化。操作系统硬件抽象层。设备驱动程序三者整合到一起,就构成了嵌入式系统中BSP(板级支持包)的主体。BSP的代码与具体的目标板硬件设计相关,同时也与应用程序的设计要求相关,针对应用程序提出的不同要求,例如不同设备驱动程序。不同的中断源个数。不同的中断优先级安排。是否启用MMU机制等,BSP部分应作出相应的安排。上述第四部分的应用程序是建立在前三部分正确运行的基础上,并需反复调试。由上述分析可知,BSP和应用程序代码的正确性通过一次的编写不能得到保证,需要经历“调试——修改——调试”反复的过程,因此需要建立一个可靠的调试环境。该环境建立的基础正是调模式下的引导代码。1.2引导代码的调试方法本研究实验采用一种称作BDM(Background Debug Mode)的OCD(On Chip Debuging)调试技术。BMD是由Motorola公司提供的一种硬件调试方法,类似于JTAG调试。它利用处理器提供的调试端口调试。MPC860采用一种特殊的BDM——EPBDM,其运作相当于用处理器内嵌的调试模块接管中断及异常处理,用户通过设置调试许可寄存器(debug enable register)指定哪些中断或异常发生后处理器直接进入调试状态,而不是操作系统的处理程序。进入调试状态后,内嵌调试模块向外部调试通信接口发出信号,通知一直在通信接口监听的主机调试器,然后调试器便可通过调试模块使处理器执行系统指令(相当于特权态)。由于专用的片级调试接口装置(BDI2000)的支持,不需要目标端配备相应的调试代理(Monitor)软件。1.3调试模式引导代码实现调试模式引导代码的核心在于使用BDM协议解析微指令,通过调试接口向MPC860发送信号,初始化调试环境。由于MPC860采用RISC结构,所以初始化部分主要是设置处理器内部寄存器,这个过程包括三方面内容:(1)对处理器相关寄存器进行初始化:主要是关于处理器状态的寄存器(MSRSRRSIUMCR等),中断。时钟相关模块(SYPCRSCCRPLPRCRTBSCR等)。(2)对BDM调试端口的初始化:包括调试使能寄存器DER支持指令断点的寄存器ICTRL等。(3)对片级。板级内存映射的初始化:包括内部内存映射寄存器IMMR,内存控制相关寄存器OR0~0RBR0~BR7等。它们主要功能是地址映射。片选信号选择。内存控制器选择(UMPAUMPBGPCM)。如果选择UPM,由于UPM控制采用微指令方式,而这些微指令根据内存的不同(SRAMSDRAMDRAM等),需要设计人员自行编写代码写入MPC860内部存储区相应位置。对于需要实时刷新的存储体(如SDRAM),还需设置刷新控制微指令。上述初始化代码得以执行,一方面依赖于目标机MPC860提供的调试接口支持,另一方面也需要宿主机GDB的支持。对于宿主机系统,可能选择Linux,在其下配置GBD;也可以选择Windows2000,使用可视化的调试工具LambdaTools GDB(Coretek公司产品,不支持硬件断点),或者使用BDI2000(支持硬件断点的仿真器)。不管使用哪种调试工具,都可以使用该调试器能够识别的脚本文伯存放初始化指令。这些脚本在功能上是等效的,指令的描述一般都采用如下格式:操作码寄存器数值如在嵌入式Linux下SDRAM初始化的代码片断为:mpcbdm spr MDR=0x1FF77C35mpcbdm spr MDR=0xEFEABC34mpcbdm spr MDR=0x1FB57C35……而在Windows2000下使用BDI2000代码为:WUPM 0x00000005 0x1FF77C35WUPM 0x00000006 0xEFEABC34WUPM 0x00000007 0x1FB57C35……脚本描述的指令执行后,MPC860按照预先的设想进入一个可以正常工作的状态,可以用装载器将程序下载到SDRAM中调试执行。这个程序主要包含中断表。操作系统和应用程序映象两部分,其格式可以为ff等。图1给出了下载完毕后的内存映象。当程序下载完成后,PC指针指向Image代码段(text段)的首条指令,可以利用调试器提供的命令开始调试。2固化模式的系统引导2.1概述经过调试后,OS和上层应用程序构成的Image的正确性得到了保证,但是这个Image不能自主运行。因为调试模式下,是通过BDM接口初始化处理器,并且通过BDM接口将程序下载到RAM中去运行。实际应用环境中,Image必须被存储在非易失性存储器中,如FEPROM等,本文选择Flash。系统启动时,处理器执行一段引导程序替代调试模式下的调试脚本和装载程序的功能。启动代码主要考虑以下几个问题:(1)系统上电和复位时程序如何执行,需要初始化哪些寄存器,重点仍然是内存映射相关部分;(2)启动代码为几部分,每部分代码应该全部还是部分放到Flash或者RAM中执行;(3)在时间效率和空间效率的折衷。2.2上电初始化在两种引导模式下,上电初始化总是必要步骤。它涉及各种核心寄存器初始化。地址映射等问题的处理。2.2.1地址映射MPC860的复位是通过一种异常中断来处理的(可理解为CPU自己产生的中断),向量号为0x100。异常向量表的基地址加上复位向量号即为复位向量,也就是CPU开始执行指令的地方。异常向量表在内存空间的可能位置有两个:0x0000000和0xFFF00000。所以PowerPC的复位向量为0x100或0xFFF00100。假设复位向量为0xFFF00100,系统有128K字节的Flash,并准备把它映射到CPU内存空间0xFE000000开始的地址。MPC860内部的CS0片选信号是默认的系统启动片选信号,已被连接到Flash的片选线上。上电时,内存控制器会忽略所有参与征选逻辑的地址线的高17位,CS0总是有效。这样,Flash总会被选中,CPU从Flash偏移0x100的地方取指令,此时CPU的4GB内存空间的每个128KB的块都被映射到Flash。2.2.2寄存器初始化固化方式下的大致相同,但是不再采用脚本文件编写,而是直接将一段MPC860汇编程序存放在一个s文件中。与调试模式初始化程序一样,主要完成以下处理:(1)初始化CPU核心寄存器;(2)设置机器状态寄存器;(3)禁止ceche;(4)初始化IMMR;(5)初始化系统接口单元(SIU);(6)初始化时钟和中断控制寄存器;(7)初始化通信处理机(CPM);(8)初始化内存控制器(UPM);(9)初始化C语言堆栈。2.2.3地址空间重映射上电时,由于只有一个片选信号有效,它选通了Flash,而RAM和其它存储设备地址无效,需要经过地址空间重映射才能访问。MPC860的地址空间重映射是通过设置0R0~ORBR0~BR7这十六个寄存器完成的。由于上电时4GB的地址空间均被Flash占用,所以0xFFF00100这个地址仍在Flash的偏移0x100处。在寄存器初始化过程中,需要把SDRAMMPC860内部寄存器空间以及外设等也映射进来。在进行这些操作前,需要把Flash的位置固定下来,例如映射到0xFE000000,这个操作是通过设置OR0和BR0寄存器实现的。但在写OR0时,CPU仍然在0xFFF00000的那一块取指令,而Flash即将被映射到0xFE000000块,所以程序必定出现“跑飞”的现象,必须对程序计数器(PC)进行调整,然而PC指针对程序员是不可见的,必须用跳转指令修改它。在Flash地址映射完成后,通过设置OR1~ORBR1~BR7可以完成对所有存储器空间的映射,各种存储设备可映射在CPU地址空间中的任意位置,但相互之间不能冲突。2.3引导代码的构成和运行系统启动所涉及的代码由寄存器初始化汇编文件一个Load程序以及操作系统与应用程序的Image三部分构成,引导代码则只包含s和Load程序。Load程序的作用是将操作系统与应用程序的构成的Image从Flash拷贝到SDRAM中,并跳转到Image的首条指令。调试完成后的Image有两种运行模式:Flash-resident image:Load程序仅仅把Image中的数据段(data+bss)复制到RAM中,代码段(text)在Flash中直接运行。Flash-based image:Load程序把Image完全搬到RAM中执行,包括image中的代码段(text)和数据段(data+bss)。图2和图3分别描述了两种Image的存贮映象,以及从Flash到SDRAM的装载过程。2.4时间效率和空间效率上的折衷在嵌入式系统的应用过程中,针对不同的应用环境,对时间效率和空间效率有不同的要求,基于MPC860的启动代码对此有比较充分的解决方案。2.4.1时间限制时间限制主要包括两种情况:系统要求快速启动和系统启动后要求程序高速执行。对于要求快速启动的系统,应该使在Flash中执行的初始化程序尽量简短,诸如循环语句之类的语法应该尽量减少,尽快将程序装载到RAM中执行,这样做的原因在于Flash的访存时间与RAM的访存时间存在数量级上的差距。但是必须根据代码量以及存储器的特片进行权衡。因为,虽然RAM中捃速度快,但是将Flash中的代码复制到RAM中的操作会带来一定的开销。由于可见,启动时间由Flash中引导代码的运行时间。代码从Flash拷贝到RAM的时间以及RAM中后续启动代码的运行时间三部分组成。启动时间的最小值是这三者和的最小值。对于启动后要求程序高速执行的系统,主要受处理器。存储器特性以及I/O速度等的影响。在软件方面,应该采用了上述Flash-based image方式,使得代码段在RAM中运行,提高运行速度。2.4.2空间限制空间限制主要包括两种情况:Flash等非易失性存储空间有限和RAM等易失性空间有限两种系统。对于采用高性能非易失性存储器的系统,出于成本因素,Flash等存储设备不能太大,然而它又是系统存放启动代码和操作系统Image的地方。在存放Image时,可以先使用gzip等压缩工具进行压缩,在将Image加载到RAM时采用逆向的解压缩算法解压。同时,出于实时性考虑,压缩算法不能过于复杂,否则压缩解压过程消耗大量时间将与启动时间限制发生严重冲突。采用压缩策略并不一定会增加系统启动时间,因为压缩解压过程虽然消息了一定的时间,但是由于Image体积减小,由Flash复制到RAM中的时间相应减少,有可能反而减少了时间消耗。对于采用高性能RAM的系统,同样出于成本因素,RAM空间有一定限制,此时一般采用前文描述的Flashresident image方式:Load程序把Image中的数据段复制到RAM中,代码段在Flash中运行。折衷同样存在,因为code段在低速的Flash中运行,在节省空间的同时,却牺牲了时间。本文介绍了基于嵌入式处理器的操作系统引导方法,重点研究嵌入式系统的引导模式以及不同类别的引导方法。以在MPC860C处理器上引导CRTOSII操作系统为例,阐述了调试模式和固化模式下引导代码的构成。作用以及执行方式,并对不同引导模式下的时空效率的折衷进行了分析。最终,借助BDI2000仿真器对编写的引导代码进行调试,成功实现了调试模式和固化模式下操作系统的引导。后续工作包括:继续研究在不同硬件平台上的操作系统引导方法,例如最流行的ARMX86系列;在同一平台上,可以研究不同操作系统的启动方法,例如嵌入式LVWinCE等。
关于嵌入式系统的论文题目
对系统的移植和裁剪,以达到所需的系统要求以PowerPC8xx系列处理器为例,通过对此类处理器的引导模式。引导代码的编写和调试,以及如何引导操作系统执行等问题的研究,探索嵌入式系统引导过程的一种解决方案。关键词:MPC860嵌入式操作系统存储映射引导嵌入式系统应用开发不同于PC机,其开发过程同时涉及软硬件,需要将硬件平台的设计。操作系统以及上层应用开发综合考虑;而PC机应用开发建立在已经定制好的硬件和操作系统平台上,开发者只需调用系统提供的接口和服务完成相应的功能。由于应用和成本约束,嵌入式系统的硬件平台需根据应用量身定制,通常所用的MPU存储器。外围设备等有多种选择余地,而且软件调试技术特殊,使平台的引导设计变得十分复杂。因此,对于嵌入式系统开发者而言,有必要深入分析系统引导过程,将软硬件开发有效地综合,即针对不同的硬件平台和软件运行模式,正确地进行底层上电初始化,进而引导操作系统执行。这个问题的核心在于对系统的引导模式的研究。嵌入式系统的启动代码一般由两部分构成:引导代码和操作系统执行环境的初始化代码。其中引导代码一般也由两部分构成:第一部分是板级。片级初始化代码,主要功能是通过设置寄存器初始化硬件的工作方式,如设置时钟。中断控制寄存器等,完成内存映射。初始化MMU等;第二部分是装载程序,其功能是将操作系统和应用程序的映像从只读存储器装载或者拷贝到系统的RAM中,并跳转到相应的代码处继续执行。操作系统执行环境的初始化代码主要由硬件抽象层HAL代码。设备驱动程序初始化代码和操作系统执行体初始代码三部分构成。本文以摩托罗拉MPC860处理器和具有自主知识产权的操作系统CRTOSII为例,研究嵌入式系统引导程序的设计和实现技术。嵌入式软件的开发涉及调试模式和固化模式两种运行状态。调试模式主要解决如何在目标板上调试正确性未经验证的程序的问题;而固化模式主要解决如何引导已调试成功的程序的问题。相应地,引导代码的设计应针对两种模式分别进行。1调试模式的系统引导1.1调试模式引导代码的作用1调试模式的系统引导1.1调试模式引导代码的作用一个完整的嵌入式软件的解决方案大致包括四方面:①硬件平台配置初始化和系统引导代码;②操作系统软件执行环境的初始化代码;③操作系统;④应用程序。在上述四方面中,引导代码是本研究中力求解决的问题。事实上,板级初始化。操作系统硬件抽象层。设备驱动程序三者整合到一起,就构成了嵌入式系统中BSP(板级支持包)的主体。BSP的代码与具体的目标板硬件设计相关,同时也与应用程序的设计要求相关,针对应用程序提出的不同要求,例如不同设备驱动程序。不同的中断源个数。不同的中断优先级安排。是否启用MMU机制等,BSP部分应作出相应的安排。上述第四部分的应用程序是建立在前三部分正确运行的基础上,并需反复调试。由上述分析可知,BSP和应用程序代码的正确性通过一次的编写不能得到保证,需要经历“调试——修改——调试”反复的过程,因此需要建立一个可靠的调试环境。该环境建立的基础正是调模式下的引导代码。1.2引导代码的调试方法本研究实验采用一种称作BDM(Background Debug Mode)的OCD(On Chip Debuging)调试技术。BMD是由Motorola公司提供的一种硬件调试方法,类似于JTAG调试。它利用处理器提供的调试端口调试。MPC860采用一种特殊的BDM——EPBDM,其运作相当于用处理器内嵌的调试模块接管中断及异常处理,用户通过设置调试许可寄存器(debug enable register)指定哪些中断或异常发生后处理器直接进入调试状态,而不是操作系统的处理程序。进入调试状态后,内嵌调试模块向外部调试通信接口发出信号,通知一直在通信接口监听的主机调试器,然后调试器便可通过调试模块使处理器执行系统指令(相当于特权态)。由于专用的片级调试接口装置(BDI2000)的支持,不需要目标端配备相应的调试代理(Monitor)软件。1.3调试模式引导代码实现调试模式引导代码的核心在于使用BDM协议解析微指令,通过调试接口向MPC860发送信号,初始化调试环境。由于MPC860采用RISC结构,所以初始化部分主要是设置处理器内部寄存器,这个过程包括三方面内容:(1)对处理器相关寄存器进行初始化:主要是关于处理器状态的寄存器(MSRSRRSIUMCR等),中断。时钟相关模块(SYPCRSCCRPLPRCRTBSCR等)。(2)对BDM调试端口的初始化:包括调试使能寄存器DER支持指令断点的寄存器ICTRL等。(3)对片级。板级内存映射的初始化:包括内部内存映射寄存器IMMR,内存控制相关寄存器OR0~0RBR0~BR7等。它们主要功能是地址映射。片选信号选择。内存控制器选择(UMPAUMPBGPCM)。如果选择UPM,由于UPM控制采用微指令方式,而这些微指令根据内存的不同(SRAMSDRAMDRAM等),需要设计人员自行编写代码写入MPC860内部存储区相应位置。对于需要实时刷新的存储体(如SDRAM),还需设置刷新控制微指令。上述初始化代码得以执行,一方面依赖于目标机MPC860提供的调试接口支持,另一方面也需要宿主机GDB的支持。对于宿主机系统,可能选择Linux,在其下配置GBD;也可以选择Windows2000,使用可视化的调试工具LambdaTools GDB(Coretek公司产品,不支持硬件断点),或者使用BDI2000(支持硬件断点的仿真器)。不管使用哪种调试工具,都可以使用该调试器能够识别的脚本文伯存放初始化指令。这些脚本在功能上是等效的,指令的描述一般都采用如下格式:操作码寄存器数值如在嵌入式Linux下SDRAM初始化的代码片断为:mpcbdm spr MDR=0x1FF77C35mpcbdm spr MDR=0xEFEABC34mpcbdm spr MDR=0x1FB57C35……而在Windows2000下使用BDI2000代码为:WUPM 0x00000005 0x1FF77C35WUPM 0x00000006 0xEFEABC34WUPM 0x00000007 0x1FB57C35……脚本描述的指令执行后,MPC860按照预先的设想进入一个可以正常工作的状态,可以用装载器将程序下载到SDRAM中调试执行。这个程序主要包含中断表。操作系统和应用程序映象两部分,其格式可以为ff等。图1给出了下载完毕后的内存映象。当程序下载完成后,PC指针指向Image代码段(text段)的首条指令,可以利用调试器提供的命令开始调试。2固化模式的系统引导2.1概述经过调试后,OS和上层应用程序构成的Image的正确性得到了保证,但是这个Image不能自主运行。因为调试模式下,是通过BDM接口初始化处理器,并且通过BDM接口将程序下载到RAM中去运行。实际应用环境中,Image必须被存储在非易失性存储器中,如FEPROM等,本文选择Flash。系统启动时,处理器执行一段引导程序替代调试模式下的调试脚本和装载程序的功能。启动代码主要考虑以下几个问题:(1)系统上电和复位时程序如何执行,需要初始化哪些寄存器,重点仍然是内存映射相关部分;(2)启动代码为几部分,每部分代码应该全部还是部分放到Flash或者RAM中执行;(3)在时间效率和空间效率的折衷。2.2上电初始化在两种引导模式下,上电初始化总是必要步骤。它涉及各种核心寄存器初始化。地址映射等问题的处理。2.2.1地址映射MPC860的复位是通过一种异常中断来处理的(可理解为CPU自己产生的中断),向量号为0x100。异常向量表的基地址加上复位向量号即为复位向量,也就是CPU开始执行指令的地方。异常向量表在内存空间的可能位置有两个:0x0000000和0xFFF00000。所以PowerPC的复位向量为0x100或0xFFF00100。假设复位向量为0xFFF00100,系统有128K字节的Flash,并准备把它映射到CPU内存空间0xFE000000开始的地址。MPC860内部的CS0片选信号是默认的系统启动片选信号,已被连接到Flash的片选线上。上电时,内存控制器会忽略所有参与征选逻辑的地址线的高17位,CS0总是有效。这样,Flash总会被选中,CPU从Flash偏移0x100的地方取指令,此时CPU的4GB内存空间的每个128KB的块都被映射到Flash。2.2.2寄存器初始化固化方式下的大致相同,但是不再采用脚本文件编写,而是直接将一段MPC860汇编程序存放在一个s文件中。与调试模式初始化程序一样,主要完成以下处理:(1)初始化CPU核心寄存器;(2)设置机器状态寄存器;(3)禁止ceche;(4)初始化IMMR;(5)初始化系统接口单元(SIU);(6)初始化时钟和中断控制寄存器;(7)初始化通信处理机(CPM);(8)初始化内存控制器(UPM);(9)初始化C语言堆栈。2.2.3地址空间重映射上电时,由于只有一个片选信号有效,它选通了Flash,而RAM和其它存储设备地址无效,需要经过地址空间重映射才能访问。MPC860的地址空间重映射是通过设置0R0~ORBR0~BR7这十六个寄存器完成的。由于上电时4GB的地址空间均被Flash占用,所以0xFFF00100这个地址仍在Flash的偏移0x100处。在寄存器初始化过程中,需要把SDRAMMPC860内部寄存器空间以及外设等也映射进来。在进行这些操作前,需要把Flash的位置固定下来,例如映射到0xFE000000,这个操作是通过设置OR0和BR0寄存器实现的。但在写OR0时,CPU仍然在0xFFF00000的那一块取指令,而Flash即将被映射到0xFE000000块,所以程序必定出现“跑飞”的现象,必须对程序计数器(PC)进行调整,然而PC指针对程序员是不可见的,必须用跳转指令修改它。在Flash地址映射完成后,通过设置OR1~ORBR1~BR7可以完成对所有存储器空间的映射,各种存储设备可映射在CPU地址空间中的任意位置,但相互之间不能冲突。2.3引导代码的构成和运行系统启动所涉及的代码由寄存器初始化汇编文件一个Load程序以及操作系统与应用程序的Image三部分构成,引导代码则只包含s和Load程序。Load程序的作用是将操作系统与应用程序的构成的Image从Flash拷贝到SDRAM中,并跳转到Image的首条指令。调试完成后的Image有两种运行模式:Flash-resident image:Load程序仅仅把Image中的数据段(data+bss)复制到RAM中,代码段(text)在Flash中直接运行。Flash-based image:Load程序把Image完全搬到RAM中执行,包括image中的代码段(text)和数据段(data+bss)。图2和图3分别描述了两种Image的存贮映象,以及从Flash到SDRAM的装载过程。2.4时间效率和空间效率上的折衷在嵌入式系统的应用过程中,针对不同的应用环境,对时间效率和空间效率有不同的要求,基于MPC860的启动代码对此有比较充分的解决方案。2.4.1时间限制时间限制主要包括两种情况:系统要求快速启动和系统启动后要求程序高速执行。对于要求快速启动的系统,应该使在Flash中执行的初始化程序尽量简短,诸如循环语句之类的语法应该尽量减少,尽快将程序装载到RAM中执行,这样做的原因在于Flash的访存时间与RAM的访存时间存在数量级上的差距。但是必须根据代码量以及存储器的特片进行权衡。因为,虽然RAM中捃速度快,但是将Flash中的代码复制到RAM中的操作会带来一定的开销。由于可见,启动时间由Flash中引导代码的运行时间。代码从Flash拷贝到RAM的时间以及RAM中后续启动代码的运行时间三部分组成。启动时间的最小值是这三者和的最小值。对于启动后要求程序高速执行的系统,主要受处理器。存储器特性以及I/O速度等的影响。在软件方面,应该采用了上述Flash-based image方式,使得代码段在RAM中运行,提高运行速度。2.4.2空间限制空间限制主要包括两种情况:Flash等非易失性存储空间有限和RAM等易失性空间有限两种系统。对于采用高性能非易失性存储器的系统,出于成本因素,Flash等存储设备不能太大,然而它又是系统存放启动代码和操作系统Image的地方。在存放Image时,可以先使用gzip等压缩工具进行压缩,在将Image加载到RAM时采用逆向的解压缩算法解压。同时,出于实时性考虑,压缩算法不能过于复杂,否则压缩解压过程消耗大量时间将与启动时间限制发生严重冲突。采用压缩策略并不一定会增加系统启动时间,因为压缩解压过程虽然消息了一定的时间,但是由于Image体积减小,由Flash复制到RAM中的时间相应减少,有可能反而减少了时间消耗。对于采用高性能RAM的系统,同样出于成本因素,RAM空间有一定限制,此时一般采用前文描述的Flashresident image方式:Load程序把Image中的数据段复制到RAM中,代码段在Flash中运行。折衷同样存在,因为code段在低速的Flash中运行,在节省空间的同时,却牺牲了时间。本文介绍了基于嵌入式处理器的操作系统引导方法,重点研究嵌入式系统的引导模式以及不同类别的引导方法。以在MPC860C处理器上引导CRTOSII操作系统为例,阐述了调试模式和固化模式下引导代码的构成。作用以及执行方式,并对不同引导模式下的时空效率的折衷进行了分析。最终,借助BDI2000仿真器对编写的引导代码进行调试,成功实现了调试模式和固化模式下操作系统的引导。后续工作包括:继续研究在不同硬件平台上的操作系统引导方法,例如最流行的ARMX86系列;在同一平台上,可以研究不同操作系统的启动方法,例如嵌入式LVWinCE等。
关于嵌入式系统的论文选题
这个得看自己的爱好~还有就是自己擅长哪个方向~
简单单人嵌入式毕业设计选题:快速指令集仿真、外部信号和I/O仿真、中断过程仿真、片内所有外围设备仿真,其中由于GNU将要实现UNIX系统的接口标准,因此GNU计划可以分别开发不同的操作系统部件。GNU计划采用了部分当时已经可自由使用的软件,例如TeX排版系统和X Window视窗系统等。不过GNU计划也开发了大批其他的自由软件。发展分析用户选用ARM处理器开发嵌入式系统时,选择合适的开发工具可以加快开发进度,节省开发成本。因此一套含有编辑软件、编译软件、汇编软件、链接软件、调试软件、工程管理。其中函数库的集成开发环境(IDE)一般来说是必不可少的,至于嵌入式实时操作系统、评估板等其他开发工具则可以根据应用软件规模和开发计划选用。