第4章-基于ARM的硬件结构设计_第1页
第4章-基于ARM的硬件结构设计_第2页
第4章-基于ARM的硬件结构设计_第3页
第4章-基于ARM的硬件结构设计_第4页
第4章-基于ARM的硬件结构设计_第5页
已阅读5页,还剩87页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1,第4章基于ARM的硬件结构设计,4.1概述ARM公司是把ARM作为知识产权IP推向市场,因此ARM架构在市场上出现也有多种形式,既有处理器内核(如ARM7TDMI)形式,也有处理器核(如ARM720T)形式。半导体厂商或片上系统SoC设计应用厂商采用ARM架构来生产相应的MPU或SoC芯片。ARM系统设计人员再在MPU或SoC芯片的基础上根据实际需求再进行硬件系统一级的扩展和软件系统的裁剪和应用程序的编写。嵌入式系统的软/硬件框架如下图所示。,2,软硬件框架图,3,智能监控器系统体系结构,4,4.1.1、嵌入式系统的设计原则和步骤,嵌入式系统设计的重要特点之一,就是技术多样化。知识多变性和面向对象的系统设计性技术多样性就是实现同一个嵌入式系统可以有许多不同的设计方案选择;而不同的设计方案就意味使用不同的设计和生产技术。所谓知识多变性是指实现系统目标的基础理论和方法随着新知识的出现不断的变化嵌入式系统设计一般由5个阶段构成:需求分析、体系结构设计、硬件/软件设计、系统集成和系统测试。各个阶段之间往往要求不断的反复和修改,直至完成最终设计目标。,5,设计步骤图,6,1)、需求分析阶段,contents分析用户的需求确定硬件软件检查需求分析的结果确定项目的约束条件概要设计,7,需求分析-罗列用户的需求1/2,(1)系统用于什么任务?(2)系统从用户或其他源接收什么输入?(3)系统从用户或其他源输出什么?(4)用户想要如何同系统打交道?(5)系统的重量和体积如何?(6)系统连接何种外设?(7)系统是否需要运行某些现存的软件?(8)系统处理哪种类型的数据?(9)系统是否要与别的系统通讯?(10)系统是单机还是网络系统?,8,需求分析-罗列用户的需求2/2,(11)系统的响应时间是多少?(12)需要什么安全措施?(13)系统在什么样的环境下运行?(14)外部存储媒介和内存需要多大?(15)系统的可拆装性,可靠性和牢固性的期望值是什么?16)如何给系统供电?(17)系统如何向用户通报故障?(18)是否需要任何手动或机械代用装置?(19)系统是否将具有远程诊断或更正问题的功能?(20)其他问题,9,2)体系结构设计,描述系统的功能如何实现是体系结构设计的目的。决定因素系统是硬实时系统还是软实时系统操作系统是否需要嵌入物理系统的成本、尺寸和耗电量是否是产品成功的关键因素选择处理器和相关硬件其他,10,3)详细设计阶段-硬件与软件划分,决定哪些用硬件实现,哪些用软件实现?例如:浮点运算网络通信控制器实现的功能软调制解调器/硬调制解调器软件压缩解压/硬件压缩解压图像,11,详细设计阶段-硬件设计,设计硬件子系统:top-down方法分成模块设计框图例:CPU子系统、存储器子系统等定义硬件接口I/O端口硬件寄存器共享内存硬件中断存储器空间分配处理器的运行速度,12,详细设计阶段-软件设计,设计软件子系统总体设计、模块设计定义软件接口模块接口、函数接口,13,详细设计阶段-检查设计,小项目自己审查设计文档中等项目拿给同事朋友并向他们解释你的设计大型项目-审查会设计者应作一个更正式的报告。由于这是一个设计审查会,召集一群人,主要由工程师组成,并尽可能包括一些对项目有不同看法角度的成员,如做市场的人员、最终用户,14,4)系统集成,把系统的软件、硬件和执行装置集成在一起,进行调试,发现并改进设计过程中的错误。5)系统测试对设计好的系统进行测试,看其是否满足给定的要求。,15,基于分层和模块化的嵌入式系统设计方法,16,4.1.2嵌入式系统选型原则,1、嵌入式系统选型原则当我们在设计信息电器、数字医疗设备等嵌入式产品时,嵌入式操作系统的选择至关重要。一般而言,在选择嵌入式操作系统时,可以遵循以下原则。总的来说,就是“做加法还是做减法”的问题。1)市场进入时间制定产品时间表与选择操作系统有关系,实际产品和一般演示是不同的。目前是Windows程序员可能是人力资源最丰富的。现成资源最多的也就可能是WinCE。使用WinCE能够很快进入市场。因为WinCE+X86做产品实际上是在做减法,去掉你不要的功能,能很快出产品,但伴随的可能是成本高,核心竞争力差。而某些高效的操作系统可能由于编程人员缺乏,或由于这方面的技术积累不够,影响开发进度。,17,2)可移植性当进行嵌入式软件开发时,可移植性是要重点考虑的问题。良好的软件移植性应该比较好,可以在不同平台、不同系统上运行,跟操作系统无关。软件的通用性和软件的性能通常是矛盾的,即通用以损失某些特定情况下的优化性能为代价。很难设想开发一个嵌入式浏览器而仅能在某一特定环境下应用。反过来说,当产品与平台和操作系统紧密结合时,往往你的产品的特色就蕴含其中。3)可利用资源产品开发不同于学术课题研究,它是以快速、低成本、高质量的推出适合用户需求的产品为目的的。集中精力研发出产品的特色,其他功能尽量由操作系统附加或采用第三方产品,因此操作系统的可利用资源对于选型是一个重要参考条件。Linux和WinCE都有大量的资源可以利用,这是它们被看好的重要原因。其它有些实时操作系统由于比较封闭,开发时可以利用的资源比较少,因此多数功能需要自己独立开发。从而影响开发进度。近来的市场需求显示,越来越多的嵌入式系统,均要求提供全功能的Web浏览器。而这要求有一个高性能、高可靠的图形用户接口GUI的支持。,18,4)系统定制能力,信息产品不同于传统PC机结构的单纯性,用户的需求是千差万别的,硬件平台也都不一样,所以对系统的定制能力提出了要求。要分析产品是否对系统底层有改动的需求,这种改动是否伴生着产品特色?Linux由于其源代码开放的天生魅力,在定制能力方面具有优势。随着WinCE原码的开放,以及微软在嵌入式领域力度的加强,其定制能力会有所提升。5)成本成本是所有产品不得不考虑的问题。Linux免费,WinCE等商业系统需要支付许可证使用费,但这都不是问题的答案。成本是需要综合权衡以后进行考虑的-选择某一系统可能会对其它一系列的因素产生影响,如对硬件设备的选型、人员投入、以及公司管理和与其它合作伙伴的共同开发之间的沟通等许多方面的影响。,19,6)中文内核支持,国内产品需要对中文的支持。由于操作系统多数是采用西文方式,是否支持双字节编码方式,是否遵循GBK,GB18030等各种国家标准,是否支持中文输入与处理,是否提供第三方中文输入接口是针对国内用户的嵌入式产品的必需考虑的重要因素。上面提到用WinCE+x86出产品,这实际上就是所谓PC家电化;另外一种做法是加法,利用家电行业的硬件解决方案(绝大部分是非x86的)加以改进,加上嵌入式操作系统,再加上应用软件。这是所谓家电PC化的做法,这种加法的优势是成本低,特色突出,缺点是产品研发周期长,难度大(需要深入了解硬件和操作系统)。如果选择这种做法,Linux是一个好选择,它让你能够深入到系统底层。嵌入式系统是面向用户、面向产品、面向应用的。嵌入式处理器的功耗、体积、成本、可靠性、速度、处理能力、电磁兼容性等方面均受到应用要求的制约,这些也是各个半导体厂商之间竞争的热点。嵌入式处理器的应用软件是实现嵌入式系统功能的关键。软件要求固化存储,软件代码要求高质量、高可靠性,系统软件(OS)的高实时性是基本要求。,20,2、嵌入式操作系统选择原则,嵌入式操作系统选择的原则:1)操作系统的硬件支持是否支持目标硬件平台、可移植性;2)开发工具的支持程度;3)能否满足应用要求对操作系统性能的要求、中文内核支持、标准兼容性、技术支持、源代码还是目标代码、许可(一次性付费?);如自建操作系统:一种是完全从内核开始,另一种是在免费的源代码公开的内核上写自己的RTOS。,21,4.1.3嵌入式系统开发环境、方法和开发经验,1、嵌入式系统开发环境嵌入式系统通常是一个资源受限的系统,因此直接在嵌入式系统的硬件平台上编写软件比较困难。目前一般采用的解决办法是首先在通用计算机上编写程序,然后通过交叉编译生成目标平台上可以运行的二进制代码格式,最后再下载到目标平台上的特定位置上运行。交叉开发环境是指编译、链接和调试嵌入式应用软件的环境,它与运行嵌入式应用软件的环境有所不同,通常采用宿主机/目标机模式。宿主机(Host)是一台通用计算机(如PC机或者工作站),它通过串口或者以太网接口与目标机通信。宿主机的软硬件资源比较丰富,不但包括功能强大的操作系统(如Windows和Linux),而且还有各种各样优秀的开发工具,能够大大提高嵌入式应用软件的开发速度和效率。,22,嵌入式系统的交叉开发环境一般包括交叉编译器、交叉调试器和系统仿真器,其中交叉编译器用于在宿主机上生成能在目标机上运行的代码,而交叉调试器和系统仿真器则用于在宿主机与目标机间完成嵌入式软件的调试。在采用宿主机/目标机模式开发嵌入式应用软件时,首先利用宿主机上丰富的资源和良好的开发环境开发和仿真调试目标机上的软件,然后通过串口或者以太网接口将交叉编译生成的目标代码传输并装载到目标机上,并在监控程序或者操作系统的支持下利用交叉调试器进行分析和调试,最后目标机在特定环境下脱离宿主机单独运行。,23,建立交叉开发环境是进行嵌入式软件开发的第一步,目前常用的交叉开发环境主要有开放和商业两种类型。开放的交叉开发环境的典型代表是GNU工具链、目前已经能够支持x86、ARM、MIPS、PowerPC等多种处理器。商业的交叉开发环境则主要有MetrowerksCodeWarrior、ARMSoftwareDevelopmentToolkit、EmbeddedVisualC+等。在完成嵌入式软件的编码之后,需要进行编译和链接以生成可执行代码,由于开发过程大多是在使用Intel公司x86系列CPU的通用计算机上进行的,而目标环境的处理器芯片却大多为ARM、MIPS、PowerPC等系列的微处理器,这就要求在建立好的交叉开发环境中进行交叉编译和链接。,24,交叉编译器和交叉链接器是能够在宿主机上运行,并且能够生成在目标机上直接运行的二进制代码的编译器和链接器。例如在基于ARM体系结构的gcc交叉开发环境中,arm-linux-gcc是交叉编译器,arm-linux-ld是交叉链接器。嵌入式系统在链接过程中通常都要求使用较小的函数库,以便最后产生的可执行代码能够尽可能的小,因此实际运用时一般使用经过特殊处理的函数库。对于嵌入式Linux系统来讲,功能越来越强、体积越来越大的C语言函数库glibc和数学函数库libm已经很难满足实际的需要,因此需要采用它们的精化版本uClibc、uClibm和newlib等,25,目前嵌入式的集成开发环境都支持交叉编译和交叉链接,如WindriverTornado和GNU工具链等,编写好的嵌入式软件经过交叉编译和交叉链接后通常会生成两种类型的可执行文件:用于调试的可执行文件和用于固化的可执行文件。2、嵌入式开发流程在嵌入式系统的应用开发中,整个系统的开发过程有选择嵌入式处理器、选择嵌入式操作系统、开发嵌入式应用软件、进行测试和开发结束。嵌入式系统发展到今天,对应于各种微处理器的硬件平台一般都是通用的、固定的、成熟的,这就大大减少了由硬件系统引入错误的机会。此外,由于嵌入式操作系统屏蔽了底层硬件的复杂性,使得开发者通过操作系统提供的API函数就可以完成大部分工作,因此大大简化了开发过程,提高了系统的稳定性。嵌入式系统的开发者现在已经从反复进行硬件平台设计的过程中解脱出来,从而可以将主要精力放在满足特定的需求上。,26,嵌入式系统开发流程框图,27,在嵌入式软件开发中,调试时采用的是在宿主机和目标机之间进行的远程调试,调试器仍然运行在宿主机的通用操作系统之上,但被调试的进程却是运行在基于特定硬件平台的嵌入式操作系统中,调试器和被调试进程通过串口或者网络进行通信,调试器可以控制、访问被调试进程,读取被调试进程的当前状态,并能够改变被调试进程的运行状态。远程调试(RemoteDebug)允许调试器以某种方式控制目标机上被调试进程的运行方式,并具有查看和修改目标机上内存单元、寄存器以及被调试进程中变量值等各种调试功能。,28,嵌入式系统远程调试方法很多,可被细分成不同的层次,但一般都具有以下特点:调试器和被调试进程运行在不同的机器上,调试器运行在PC或者工作站上(宿主机),而被调试进程则运行在各种专业调试板上(目标机)。调试器通过某种通信方式与被调试进程建立联系,如串口、并口、网络、DBM、JTAG或者专用的通信方式。目标机可能是某种形式的系统仿真器,通过在宿主机上运行目标机的仿真软件,整个调试过程可以在一台计算机上运行。此时物理上虽然只有一台计算机,但逻辑上仍然存在着宿主机和目标机的区别。在嵌入式软件开发过程中的调试方式有很多种,应根据实际的开发要求和条件进行选择。,29,ARM实验平台与PC机连接关系框图,30,3、嵌入式系统开发工具与测试通常采用宿主机/目标机方式。首先,利用宿主机上丰富的资源及良好的开发环境开发和仿真调试目标机上的软件。然后,通过串行口或网络及交叉编译生成目标代码传输并装载到目标机上,并用交叉调试器在监控程序或实时内核/操作系统的支持下进行实时分析和调度。最后,目标机在特定的环境下运行。嵌入式系统开发工具主要包括有高级语言编译器、源程序模拟器和实时在线仿真器。1)高级语言编译器C语言作为一种通用高级语言大幅度提高了嵌入式系统工程的工作效率,充分发挥出嵌入式处理器日益提高的性能,缩短产品进入市场时间。另外,C语言便于移植和修改,使产品的升级和继承更迅速。嵌入式系统中C语言编译器要专门进行优化,以提高编译效率。优秀的C编译器代码长度仅比以汇编语言编写的同样功能程度长520。,31,2)源程序模拟器它是在广泛使用的、人机接口完备的工作平台上,如小型机和PC机,通过软件手段模拟执行某种嵌入式处理器内核编写的源程序测试工具。简单的模拟器可以通过指令解释方式逐条执行源程序,分配虚拟存储空间和外设,供程序员检查。高级的模拟器可以利用计算机的外部接口模拟处理器的I/O信号。模拟器软件独立于处理器硬件,一般与编译器集成在同一个环境中,是一种有效的源程序检验和测试工具。但其毕竟是以一种处理器模拟另一种处理器的运行,在指令执行时间、中断响应、定时器等方面可能与实际处理器有相当大的差别。另外,它无法和ICE一样,仿真嵌入式系统在应用系统中的实际执行情况。3)实时在线仿真系统ICE在计算机辅助设计非常发达的今天,实时在线仿真,32,系统(ICE)仍是进行嵌入式应用系统调试最有效的开发工具。ICE首先可以通过实际执行,对应用程序进行原理性检验,排除人的思维难以发现的设计逻辑错误。ICE的另一个主要功能是在应用系统中仿真微控制器的实际执行,发现和排除由于硬件干扰等引起的异常执行行为。此外,高级的ICE带有完善的跟踪功能,可以将应用系统的实际状态变化、微控制器对状态变化的反映、以及应用系统对控制的响应等以一种录像的方式连续记录下来,以供分析和优化控制过程。嵌入式应用的特点是和现实世界中硬件系统有关,存在各种异变和事先未知的变化,这就给微处理器的指令执行带来了各种不确定性,这种不确定性只有通过ICE的实时在线仿真才能发现,特别是在分析可靠性时要在同样条件下多次仿真以发现偶然出现的错误。ICE不仅是软件硬件排错工具,同时也是提高和优化系统性能指标的工具。,33,4)软件测试有两种方法:(1)白盒测试基于代码的测试检查程序的内部设计。把100%的代码都测试一遍是不可能的,所以要选择最重要的代码进行白盒测试。在进行测试是要把系统的与其用途作为重要依据,根据实际中对负载、定时、性能的要求,判断软件是否满足这些需求规范。白盒测试一般在目标硬件上进行。通过硬件仿真进行,所以选取的测试工具应该支持在宿主环境中进行。这种方法一般是开发方的内部测试方法。(2)黑盒测试在某些情况下也称为功能测试。不依赖于代码,而是从使用的角度进行测试。黑盒只能限制在需求的范围内进行。第三方采用的方法,进行验证和确认测试。,34,嵌入式软件的测试工具内存分析工具、性能分析工具、GUI(图形界面)测试工具、覆盖分析工具。硬件故障的特性像一个浴缸曲线。在模块的生命初期,硬件故障率是很高的;在产品的有效生命期,故障率比较低;一旦达到生命末期,模块的故障率又提高了。嵌入式微处理器的设计一般都具备有结构多样性和应用灵活性的两大特点。就智能性来说,现代的芯片计算机可以进行逻辑、符号和语言处理等,这些被认为是大脑左半球的功能,而且达到了人类自己都感到惊奇的程度。,35,4、嵌入式系统开发方法的变化过去擅长于软件设计的编程人员一般对硬件电路设计敬而远之,硬件设计和软件设计被认为是性质完全不同的技术。随着电子信息技术和计算机技术的飞速发展,特别是HDL的发明,硬件设计方法发生了变化,数字系统的硬件组成及其行为完全可以用HDL来描述和仿真。在这种情况下,要求设计人员都要借助HDL工具来描述硬件电路的行为、功能、结构、数据流、信号连接关系和定时关系,设计出满足各种功能要求的硬件系统。,36,EDA工具允许有两种设计输入工具,分别适应硬件电路设计人员和软件设计人员有两种不同背景的需要。让具有硬件背景的设计人员用已习惯的原理图输入方式,而让具有软件背景的实际人员用硬件描述语言输入方式。由于采用HDL描述输入,因而与系统行为描述更接近,且更便于综合、时域传递和修改,还能建立独立于工艺的设计文件。所以,擅长软件编程的人一旦掌握了HDL和一些必要的硬件知识,往往可以比习惯于传统设计的工程师设计出更好的硬件电路和系统。所以,习惯于传统设计的工程师应该学会用HDL来描述和编程。嵌入式系统设计的3个层次第1层次以PCBCAD软件和ICE为主要工具的设计方法。这是过去和现在我国单片机应用人员一直沿用的方法,其步骤是先抽象后具体。,37,第2层次以EDA工具软件和EOS为开发平台的设计方法。随着微电子工艺的发展,各种通用的可编程半定制逻辑器件应运而生。这样,硬件设计人员从过去选择和使用标准通用集成电路,逐步转向自己设计和制作部分专用的集成电路器件ASIC。随着半制定器件的规模增大,可集成的器件越来越多,使印制板上互连器件的线路、装配和调试费用越来越少,即减少了面积和插件的数量,降低了成本,又增加了可编程应用的灵活性。更重要的是降低了系统的功耗,提高了系统的工作速度和可靠性及安全性。半定制逻辑器件经历了可编程逻辑阵列PLA、可编程阵列逻辑PAL、通用阵列逻辑GAL、复杂可编程逻辑器件CPLD和现场可编程门阵列FPGA的发展过程。设计人员可以利用各种EDA工具和标准的CPLD和FPGA等,设计和自制用户专用的集成电路。然后再通过自下而上的设计方法,把用半定制期间设计自制的集成电路、可编程外围器件、所选择的ASIC与嵌入式微控制器或微处理器在印版上布局、布线构成系统。,38,第3层次以IP内核库为设计基础,用软硬件协同设计技术的设计方法。已开始从集成电路级设计转向到集成系统级的设计。目前已进入单片系统SOC设计阶段,并开始进入实用阶段。如智能IC卡等。这3个层次各有各的应用范围。初级应用设计人员会以第1种方法为主;富有经验的设计人员会以第2种方法为主;很专业的设计人员会用第3种方法进行简单单片系统的设计和应用。嵌入式微处理器的设计一般都具有结构多样性与应用灵活性的两大特点。硬件和软件的协同设计在嵌入式系统设计中是一项很重要的技术。,39,5、嵌入式系统开发经验,嵌入式系统设计主要适用于电子玩具、工业控制、民用电器、机电一体化产品、航天航海等众多领域。它们的应用开发不单是软件的开发,其开发语言和硬件密切相关。所以只有开发者对嵌入式系统的内部结构非常了解,才能编好软件。而嵌入式系统的开发应用还涉及到硬件扩展接口和各类传感器,更重要的是必须尽可能地了解各学科中适应嵌入式系统完成的控制项目以及控制过程。掌握嵌入式系统的应用开发需要一个过程。首先必须掌握数字电路和模拟电路方面的知识,还必须学习单片机原理、硬件结构、扩展接口和编程语言。初次开发时由于没经验,可能要经过多次反复才能完成项目。这时,你会得到较大的收获和积累,表现在以下几个方面:硬件设计方面的积累;软件设计方面的积累;设计经验方面的积累。,40,系统的应用开发不单是软件的开发,其开发语言和硬件密切相关。所以只有开发者对嵌入式系统的内部结构非常了解,才能编好软件。而嵌入式系统的开发应用还涉及到硬件扩展接口和各类传感器,更重要的是必须尽可能地了解各学科中适应嵌入式系统完成的控制项目以及控制过程。硬件开发是嵌入式系统开发的基础,软件的开发是建立在硬件之上,软硬件设计的巧妙结合是项目开发质量保证的关键。在硬件开发设计中应注意以下几个方面:开发者必须学习应用最新嵌入式系统,如新型的MPU的优势表现在时钟频率的进一步提高。处理器相关功能的提高,内部程序存储器和数据存储器容量的进一步扩大,A/D和D/A转换器的内部集成,LCD显示等功能模块的内部集成,外部扩展功能的增强。,41,扩展接口的开发尽可能采用FPGA或CPLD等器件开发。这类器件都有开发平台的支持,开发难度较小,开发出的硬件性能可靠、结构紧凑、利于修改、保密性好。在扩展了RS-232等标准串口以后,嵌入式系统可和PC机通信,对于众多测控方面的人机对话、报表输出、集成控制等功能进行优势互补。C语言是普及最广泛的程序设计语言,它既有高级语言的各种特点,又可对硬件进行操作,并可进行结构化程序设计,用C语言编写的程序较容易移植。目前已有专用的C语言编译器,它们可生成简洁可靠的目标代码,在代码效率和代码执行速度上完全可以和汇编媲美。有时开发一个嵌入式系统应用项目,在仿真调试完成后系统运行正常,而接入现场后出现不能正常运行或运行时好时坏,脱离现场后一切正常,这种现象就涉及到可靠性问题。解决这种问题可以从以下几个方面考虑:,42,1)选择性能好、抗干扰能力强的供电系统,尽量少地从电源引入干扰;2)设计电路板时排除可能引起干扰的因素,合理布线,避免高频信号的干扰;3)选择较好的接地方式,如模拟地和数字地采用一点接地方式,驱动大电流信号时采用光电隔离;4)数据采集时进行数字滤波处理,常用的数字滤波方式有:程序判断滤波、中位值滤波、算术平均滤波、递推平均滤波法、防脉冲干扰平均值滤波、一阶滞后滤波等。由于干扰问题可能是由于不同的原因引起,在设计时要根据项目应用场所分析可能出现的干扰,有目的地设计抗干扰电路。,43,其中,开发平台部分为用户提供了一个简易,方便的开发环境,使用户可对单片机应用项目进行可视化开发硬件智能开发部分提供了一个通过选项开发硬件原理图的方法,这个过程中根据硬件方案平台自动的生成一部分配套软件。可视化软件开发可简单方便的开发出用户程序,成品系统库中有大量已开发成功的项目,在产品开发时如开发项目功能相近,只要略加修改便可成为一个新的项目。成品系统库开发为用户升级成品库提供了一个开放式的环境。子程序开发中为子程序的升级提供了一个开放式的环境。实用信息部分提供了开发方面用到的大量实用信息,44,4.1.4嵌入式系统设计的层次和设计架构,嵌入式系统设计的层次分为系统级和应用级设计原则具体分为:复用原则模块化原则标准化原则地址总线;数据总线;控制总线电源、网络标号的使用-网络标号的使用反映用途例如:RXD,TXD等分图的处理分图之间的连接线尽量少,45,嵌入式系统硬件系统的设计架构大致可包含三部分:(1)、微处理器的选型、时钟及复位电路的设计(2)、存储系统ROM/RAM的设计(3)、系统外围设备接口电路的设计其中系统外围设备接口电路的硬件部分包括:通用接口的设计、人机交互接口的设计和网络接口的设计。针对不同类型的处理器应采用不同的设计方法。,46,近年来,各种可编程芯片的出现,改变了嵌入式硬件模块的设计方法,出现“可重构计算“的概念。可重构计算是通过可编程逻辑器件实现的,它允许在不改变硬件电路板的情况下,实现不同的控制接口和控制功能。可重构计算结合了通用微处理器和ASIC的特点。可重构计算是通过现场编成门阵列FPGA实现的。FPGA是20世纪80年代中期以后发展起来的一种可编程的大规模集成器件。FPGA具有保密性好、体积小、重量轻、可靠性高等一系列专用大规模集成电路ASIC的优点,是一种新型的ASIC产品。FGPA的出现,是电子系统设计领域内的一次重大变革。这次变革使一个电子系统可仅仅由三种标准模块构成,即微处理器、存储器和可编程逻辑器件。以往,前两种器件已经产品化、系列化,而系统中大量的逻辑控制仍由许多中小规模器件来实现,其工作复杂,开发周期长,而且速度低,可靠性差。FPGA的出现,使系统中的第三个模块也实现了大规模集成化与可编程化。这一方面改进了系统的可调整性,降低了功耗,提高了可靠性促使系统更加小型化,另一方面大大缩短了系统的开发周期,减少了设计成本,并降低了设计风险。,47,4.2微处理器系统的硬件设计,在现阶段,嵌入式系统设计仍处于一种手工阶段。虽然有关硬件结构和软件子系统的知识是很清楚的,但是还没有协调整个设计过程的通用系统设计方法,在大多数项目中嵌入式系统的设计仍然采用某种特定方法。嵌入式系统设计所面临的某些挑战源于基础技术的改变以及系统各部件如何能全部正确地混合和集成在一起的细微之处,另一些挑战源于新的并且常常是不熟悉的系统需求。此外用于通信和协作的基础设施和技术的改善已经使快速设计以响应市场需求呈现出前所未有的可能性。但是,还没有有效的设计方法和相关的设计工具足以迅速应付这些挑战。,48,微处理器系统的硬件一般包括有微处理器、时钟电路、复位电路和电源管理等几部分。微处理器是根据不同应用的场合来进行选型。时钟管理为各个外围模块提供时钟。在不使用某个单元时刻关闭其时钟以降低功耗。这些时钟均来自核内部的可控频率的时钟源PLL。复位电路一般有硬件复位(RESET引脚)、Watchdog软件复位等方式。电源管理可控制处理器的几种不同耗电的工作方式。,49,(1)运行方式属正常工作方式,允许所有电源和允许的时钟。在复位可进入运行方式。(2)空闲方式允许用户停止CPU核时钟,但仍继续监视片内和外中断服务请求。这时系统单元模块(中断控制器、LCD控制器、时钟和电源管理器等)及存储器仍处于运行状态(3)睡眠方式内核可无电源,仅电源管理器继续工作。仅唤醒信号和复位信号等才能触发处理器。快速方式(PXA250)或低速方式(S3C2410)部分机器带有允许处理机核在短时间内高速/低速运行。,50,4.2.1ARM微处理器芯片选型的一般原则,(1)ARM内核如果希望使用WinCE或Linux等操作系统以减少软件开发时间,就需要选择ARM7T以上带有MMU功能的ARM芯片。(2)系统时钟控制器系统时钟决定了ARM芯片的处理速度,常见的ARM7芯片系统时钟为20MHZ133MHZ,ARM9的系统时钟为100MHZ233MHZ,ARM10最高可以达到700MHZ。有的芯片只有一个主时钟频率,这样的芯片不能顾及UART和音频时钟的准确性。有的芯片内部时钟控制器可以分别为CPU内核和USB、DSP、音频等功能部件提供不同频率的时钟。还有内存储器容量、USB接口、GPIO(引脚)数量、IIS(集成音频接口)、LCD控制器、PWM输出、ADC和DAC、UART和IrDA、DSP、内置FPGA、DMA控制器等。还有多ARM内核、ARM芯核+DSP芯核、ARM芯核+FPGA等。,51,ARM处理器本身是32位设计,但也配备16位指令集,以允许软件编码为更短的16位指令。与等价的32代码相比,占用的存储器空间可节省高达35%,然而保留了32位系统所有的优势。ARM还提供了两个前沿特性嵌入式ICERT逻辑和嵌入式跟踪宏核系列,用以辅助带嵌入式处理器核的、高集成的SOC器件的调试。ARM业界领先的跟踪解决方案嵌入式跟踪宏单元(ETM,EmbeddebTraceMacrocell),被设计成驻留在ARM处理器上,用以监控内部总线,并能以核速度无妨碍地跟踪指令和数据的访问。,52,*基于ARM7架构的嵌入式芯片Samsung3C44B0 x芯片*8MBSDRAM,1MB线性Flash、16MB非线性Flash*接口丰富:串口、USB等*键盘输入,320240分辨率16级灰度LCD显示*10M以太网口,支持TCP/IP协议*触摸屏*预留A/D、I/D、SPI、I2C、IIS等总线接口,简介,53,嵌入式硬件平台体系结构图,54,4.2.2多路时钟电路的设计,在8位单片机中时钟电路产生的频率可直接作为单片机的主频工作,但在高频时易产生电磁干扰。因此在高性能的嵌入式处理器上通常使用频率较低的基准时钟源,然后通过锁相倍频电路得到高频时钟在进行分频器进行分频,获得多时钟源来提供给系统使用。出于节电设计的考虑,不同的I/O接口等智能部件的工作状态可以由处理器的编程控制。于是这样处理器内部设计了多种时钟源,分别为处理器内核、实时时钟电路、I/O部件提供不同的时钟信号。例如,使用MC68EZ328的锁相时钟电路可以形成四种时钟输出,其一是CLK32,即32khz的时钟源,送给实时时钟,完成嵌入式处理器的日历功能。其二是LCDCLK,液晶控制器的时钟。其三是DMACLK,DMA控制器的时钟。最后是SYSCLK,系统主时钟。ARM微处理器内核中有一个可控频率的时钟源PLL(PhaseLockedLoop,锁相环电路)把低频振荡器的输出作为自己的输入,产生所需的高频信号。时钟发生模块有一个逻辑电路,用来在复位后或各种模式下产生稳定的时钟频率。其他的时钟均来自核内部的PLL。,55,多路时钟方式一般用于高性能的嵌入式处理器中,通常32位及以上处理器中不同的功能部件电路使用不同频率的时钟频率工作。各个时钟内部之间具有相关性,它们是通过主时钟分频或倍频来形成的。有的系统是采用两套石英晶振来实现。日历时钟系统与处理器集成在一起。日历时钟32.768KHz,可以通过两种方式实现。其一是通过对主时钟进行分频方式来实现,其二是由外部32.768KHz晶体振荡器直接产生32.768KHz日历时钟信号。处理器的日历时钟一直工作,即使系统进入省电状态的时候也同样工作。系统不需要外接日历时钟芯片和相关的电路,56,4.2.3系统复位电路的设计,系统复位电路的设计也是设计中一个必要的环节。比如在微处理器S3C44B0X中,首先把外部复位信号也作为一个中断来处理。在系统复位的时候,程序(PC)指针被设置成0,使程序跳转到0 x00000000开始运行。此空间对应的是Bank0,系统的1MB的线性Flash和处理器的Bank0相连接。在线性Flash里存储的是供系统初始化的程序,此程序负责配置处理系统的结构、工作模式以及自动检测嵌入式控制器的各个硬件是否工作正常。系统经过初始化和硬件自检以后,此程序负责把存储在16MB的非线性处理器里面的system.bin文件复制到0 xc000000地址(此地址是系统8MB的SDRAM的首地址)。然后,引导程序把程序(PC)指针指向0 xc000000地址,系统开始运行。,57,系统复位电路图,58,初始化内容,中断向量表(vectortable)始终在0地址处开始。初始化存储器系统Memoryaccessinterface:type,timing,etc.初始化堆栈为指定的模式分别设置SP,注意模式改变次序初始化有特殊要求的端口、设备初始化应用程序执行环境全局变量区,动态存储器分配区改变处理器模式包括中断使能控制呼叫应用程序跳转至主函数入口,部分次序可调整,59,4.2.4电源管理器,嵌入式系统中各个单元的电压范围有如下几种:1.35V(部分微处理器)、3.3V(外部接口芯片)和5.0V、12V(外部设备)。操作系统是通过电源管理器来进行系统的电源管理,提高整个系统的电源效率,并为每一个外围设备模块提供电源管理。通过电源管理不仅可以减少目标设备上的电源损耗,而且可以在系统重启、运行、空闲和挂起的电源状态下保存RAM中的文件系统。电源管理模块通过软件来控制系统时钟,以降低微处理器的耗电量。这些方案与、时钟控制逻辑、外设的时钟控制以及唤醒信号有关。电源管理器会同三种不同的客户端程序发生作用,对于这三种客户端电源管理器提供了不同的编程接口:,60,电源管理器相关的设备驱动程序可以改变系统电源状态或者改变设备性能的应用程序,如一些需要改变系统时钟频率的应用;在电源相关事件发生时需要得到通知的应用程序以及影响系统的电源状态的改变的应用程序,例如电池电量低时发出警告的程序。芯片的电源管理技术:芯片内部:电压分区设置、时钟管理、分区投切外围器件:电源开关、可关断DC/DC、可关断器件电源管理器可控制微处理器的几种不同耗电的工作方式:运行方式、空闲方式、睡眠方式。,61,4.3存储系统的分析与设计,存储器是构成嵌入式系统硬件的重要组成部分。出于成本和体积的限制,嵌入式系统的存储器通常采用高度集成的存储芯片,以节省电路板的面积,减少设计的复杂性,提高系统的可靠性。基于嵌入式微处理器/控制器的专用嵌入式系统而言,它们的存储器系统与通用计算机系统的设计方法有所不同,主要体现在以下几个方面。嵌入式系统由于体积的限制,尽量使用存储密度比较大的存储芯片。嵌入式系统由于功耗的限制,在设计嵌入式系统的存储系统时需要考虑功耗问题。出于成本考虑,大多数嵌入式系统的存储器容量与软件的大小相匹配。,62,使用MCU微控制器的嵌入式系统,由于微控制器上集成了存储器资源(ROM和RAM),因此有的系统可以不需要另外设计存储器子系统;有的则需要扩展一部分存储器子系统。如果嵌入式处理器上没有存储器,就进行扩充,通常需要扩充ROM子系统用于存储程序,RAM子系统用于存储中间数据,FlachROM子系统用于存储配置数据和常数。嵌入式系统的存储子系统通常设置成模块结构,包括ROM子系统、RAM子系统,每个子系统占用一定的存储空间。嵌入式系统的存储器通常与系统主板设计在一起,而不设计成所谓的内存条形式。原因是:一方面嵌入式系统的内存通常是固定大小的;另一方面一体系结构可以提高系统的可靠性。,63,ARM架构处理器的存储器寻址空间有4GB。该存储空间可以分为快存/缓存区域和不可快存/不可缓存区域。ARM架构的处理器有的带有指令快存和数据快存。但是片内都不带有RAM和ROM。系统所需的RAM和ROM(包括闪存)都通过总线外接。由于系统的地址范围较大,所以有的片内还带有MMU。ARM架构处理器还允许外接PCMCIA。快存(Cache)是一种小容量、高速度的存储器,用于处理器与主存之间存放当前被使用的主存内容,以减少访问主存的等待时间。快存放置数据的常用地址变换方法有直接映像、组相联映像、和全相联映像方式。替换算法有随机法、近期最少使用法和循环法。存储器写策略采用写直达法、通过缓存写直达法和写回法。,64,对于32位地址、4GB寻址的ARM微处理器一般都采用页式寻址的方式。若页面大小为4KB,可采用2级页表的方式来寻址。在32位逻辑地址中,最高10位用作为目录索引,接下来的10位作为页表项索引,余下的作偏移量。由于页目录和页表都存放在主存中,从逻辑地址变换至物理地址需读2次主存。因此在它们之间插入了一个地址变换缓冲器TLB(转换旁路缓冲器)。TLB中每一项都由逻辑页号与相对应物理页号所组成。TLB采用类似快存的结构,只存放最近使用过的页表项,故也称为快表。而页表与段表之间的变换表则称为慢表。ARM的存储器管理MMU是通过系统控制协处理器CP15来实现和完成虚拟存储器管理功能的。,65,高速缓冲存储器,工作原理:,66,4.3.1存储系统的构成分析,下面以基于S3C44B0X的存储系统为例来进行介绍。支持数据存储的大/小端选择(通过外部引脚和程序进行选择)地址空间:具有8个存储体,每个存储体可达32Mb,总共可达256MB。对所有存储体的访问大小均可进行改变(8位16位32位)8个Bank中,Bank0Bank5可支持ROM、SRAM;Bank6、Bank7可支持ROM、SRAM和EDOSDRAM等。,67,1)存储器接口,ARM的总线接口信号分成4类(以ARM7TDMI为例说明):时钟和时钟控制信号:MCLK、ECLK、nRESET、nWAIT。地址类信号:A31.0、nRW、MAS1.0、nOPC、nTRANS、LOCK、TBIT。存储器请求信号:nMREQ、SEQ。数据时序信号:D31.0、DIN31.0、DOUT31.0、ABORT、BL3.0。,68,2)典型系统中存储体的分配情况,69,系统的存储空间分配,Bank0:1片2MBNORFlash,放置系统引导程序,系统上电复位后,PC指针自动指向Bank0的第一个单元,进行系统自举。以便从硬盘中将系统文件和用户应用程序复制到SDRAM内存中执行。值得注意的是在嵌入式系统中内核映象与根系统映象也可以直接在Flash这样的固态存储器中直接运行,但是会使其运行速度减慢。Bank1:非线性寻址。Bank1上接16MNANDFlash,当做系统硬盘使用,可以构造文件系统,存放海量数据。用SDRAM当作系统内存,只有Bank6/Bank7能支持SDRAM,所以将SDRAM接在Bank6上。如果同时使用Bank6/Bank7,则要求连接相同容量的存储器,而且其地址空间在物理上是连续的。Bank2:PDIUSBD12。USB设备端接口芯片,占用系统外部中断0。8位数据总线。Bank3、Bank4未接设备。可以供扩展使用。,70,Bank5:RTL8019AS,ISA总线兼容的10M以太网(PHYMAC层)控制芯片。占用系统外部中断1,16位数据总线;扩展IO口Bank6:SDRAM,起始地址为0 xC000000。在SDRAM中,前512Kbyte的空间划分出来,作为系统的LCD显示缓冲区使用(更新其中的数据,就可以更新LCD的显示)。系统的程序存储空间从0 xC080000开始。也就是,引导系统的时候,需要把system.bin文件复制到0 xC080000开始的地址空间,把PC指针指向0 xC080000。Bank7:未使用。可以扩展另一片SDRAM,或者其他的外设。系统的同步串行口(SIO),连接着触摸屏控制芯片FM7843(与ADS7843完全兼容);CAN总线控制芯片MCP2510;Max504(D/A);键盘和LED扫描芯片ZLG7289。在同步串行口上,还可以扩展其他的芯片。通过IO口控制设备的片选信号(CS)来防止设备的冲突。,71,3)BootLoader的任务,BootLoader是系统加电后首先运行的一段代码,其目的是将系统的软硬件环境带到一个合适的状态,为调用操作系统内核准备好正确的环境。对于不使用操作系统的嵌入式系统而言,应用程序的运行同样也需要依赖它,因此BootLoader对于嵌入式系统是必要的。每种嵌入式微处理器体系结构都有不同的BootLoader。即使是基于相同嵌入式微处理器构建不同嵌入式目标板也要修改BootLoader的源程序。因此,建立一个通用、标准的BootLoader应该是几乎不可能的。通常,BootLoader只有几十KB的大小,其作用相当于普通pc机的BIOS,是在系统复位后执行的第一段代码。,72,因此,整个系统的加载启动任务就完全由BootLoader来完成。它首先完成系统硬件的初始化,包括时钟的设置、存储器的映射等。并设置堆栈指针,然后跳转到操作系统内核入口,如系统在加电或复位时通常从地址0 x00000000处开始执行,而在这个地址处安排的通常就是系统的BootLoader程序。这样,将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统内核准备好正确的环境。在此之后,系统的运行在操作系统的控制下了。另外,由于大多数BootLoader都分为阶段1和阶段2两部分。依赖于CPU的体系结构的代码,比如设备初始化代码等,通常都放在阶段1中,而且通常用汇编语言来实现,以达到短小精悍的目的。而阶段2通常用C语言来实现,这样可以实现一些复杂的功能,而且代码会具有更好的可读性和移植性。,73,堆栈初始化,DRAM配置,设定特殊寄存器,开始,建立中断向量表,内存初始化,镜像文件拷贝,系统重新映射,切换到用户模式,进入C代码区,在FlashMemory中执行,在SDRAM中执行,启动代码流程图,74,BootLoader阶段1其主要步骤有:硬件系统自检、对系统硬件进行初始化(设置处理器时钟和运行速度)。S3C44B0X的Bank0是通过外部的一个管脚提供的上拉、下拉电阻来配置的。主要包括:数据位数(8位、16位、32位),数据格式(大端、小端)。而其他的Bank的配置,以及读写周期等信息是靠Bank0内部的代码配置相应的寄存器来实现的。同时,系统的引导Rom也负责配置系统的其他的一些寄存器,比如,系统的PLL(锁频环)配置,系统的IO口等一些端口功能的配置等等。引导Rom负责检测系统的启动所必须的外设是否正常。主要是系统的SDRAM的检测。为加载BootLoader的阶段2准备RAM空间;并复制BootLoader的阶段2到RAM空间中。配置相关寄存器、存储器或者端口、外设等地址、工作模式和堆栈等。处理系统的中断。处理器的中断是从0 x0地址开始,引导ROM负责把这一部分的中断映射到另一个区域,以便系统处理。,75,BootLoader阶段1完成的功能有:(1)基本的硬件初始化,包括屏蔽所有的中断、设置CPU的速度和时钟频率、RAM初始化、关闭CPU内部指令/数据Cache。(2)为加载阶段2准备RAM空间,由于阶段2通常是C语言执行代码,因此在考虑空间大小时还要把堆栈空间也考虑进来。一般而言1M的RAM已经足够了。(3)拷贝阶段2到RAM中,拷贝时要确定阶段2的可执行映象在固态存储设备的存放起始地址和终止地址。还有RAM空间的起始地址。(4)设置

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论