您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 其它行业文档 > 第4章-基于ARM的硬件结构设计
1第4章基于ARM的硬件结构设计4.1概述ARM公司是把ARM作为知识产权IP推向市场,因此ARM架构在市场上出现也有多种形式,既有处理器内核(如ARM7TDMI)形式,也有处理器核(如ARM720T)形式。半导体厂商或片上系统SoC设计应用厂商采用ARM架构来生产相应的MPU或SoC芯片。ARM系统设计人员再在MPU或SoC芯片的基础上根据实际需求再进行硬件系统一级的扩展和软件系统的裁剪和应用程序的编写。嵌入式系统的软/硬件框架如下图所示。2软硬件框架图机械装置嵌入式微处理器SDRAMROMI/OA/DD/A人机交互接口通用接口实时操作系统(RTOS)图形用户接口BSP/HAL硬件抽象层/板极支持包任务管理文件系统应用程序嵌入式计算机系统传感器1传感器2传感器N......驱动器1驱动器2驱动器N......硬件层软件层中间层功能层被控对象3智能监控器系统体系结构44.1.1、嵌入式系统的设计原则和步骤嵌入式系统设计的重要特点之一,就是技术多样化。知识多变性和面向对象的系统设计性技术多样性就是实现同一个嵌入式系统可以有许多不同的设计方案选择;而不同的设计方案就意味使用不同的设计和生产技术。所谓知识多变性是指实现系统目标的基础理论和方法随着新知识的出现不断的变化嵌入式系统设计一般由5个阶段构成:需求分析、体系结构设计、硬件/软件设计、系统集成和系统测试。各个阶段之间往往要求不断的反复和修改,直至完成最终设计目标。5体系结构设计系统需求分析:规格说明书机械系统设计硬件设计软件设计系统集成系统测试产品设计步骤图61)、需求分析阶段contents1.分析用户的需求2.确定硬件软件3.检查需求分析的结果4.确定项目的约束条件5.概要设计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)其他问题92)体系结构设计描述系统的功能如何实现是体系结构设计的目的。决定因素1.系统是硬实时系统还是软实时系统2.操作系统是否需要嵌入3.物理系统的成本、尺寸和耗电量是否是产品成功的关键因素4.选择处理器和相关硬件5.其他103)详细设计阶段-硬件与软件划分决定哪些用硬件实现,哪些用软件实现?例如:1.浮点运算2.网络通信控制器实现的功能3.软调制解调器/硬调制解调器4.软件压缩解压/硬件压缩解压图像11详细设计阶段-硬件设计1.设计硬件子系统:top-down方法1.分成模块2.设计框图3.例:CPU子系统、存储器子系统等2.定义硬件接口1.I/O端口2.硬件寄存器3.共享内存4.硬件中断5.存储器空间分配6.处理器的运行速度12详细设计阶段-软件设计设计软件子系统总体设计、模块设计定义软件接口模块接口、函数接口13详细设计阶段-检查设计小项目自己审查设计文档中等项目拿给同事朋友并向他们解释你的设计大型项目-审查会设计者应作一个更正式的报告。由于这是一个设计审查会,召集一群人,主要由工程师组成,并尽可能包括一些对项目有不同看法角度的成员,如做市场的人员、最终用户144)系统集成把系统的软件、硬件和执行装置集成在一起,进行调试,发现并改进设计过程中的错误。5)系统测试对设计好的系统进行测试,看其是否满足给定的要求。15基于分层和模块化的嵌入式系统设计方法传感器详细设计驱动器集成测试机械结构规格说明机械本体机械结构层嵌入式实时操作系统详细设计嵌入式应用程序集成测试软件件结构规格说明人机界面软件层嵌入式微处理器详细设计其它接口电路集成测试硬件结构规格说明FPGA接口电路硬件层机械系统层硬件层软件层系统集成系统测试体系结构总体需求硬件抽象层电气抽象层SensorDriverMachineI/OMemoryHMIAPIRTOS最高层中间层底层MPU164.1.2嵌入式系统选型原则1、嵌入式系统选型原则当我们在设计信息电器、数字医疗设备等嵌入式产品时,嵌入式操作系统的选择至关重要。一般而言,在选择嵌入式操作系统时,可以遵循以下原则。总的来说,就是“做加法还是做减法”的问题。1)市场进入时间制定产品时间表与选择操作系统有关系,实际产品和一般演示是不同的。目前是Windows程序员可能是人力资源最丰富的。现成资源最多的也就可能是WinCE。使用WinCE能够很快进入市场。因为WinCE+X86做产品实际上是在做减法,去掉你不要的功能,能很快出产品,但伴随的可能是成本高,核心竞争力差。而某些高效的操作系统可能由于编程人员缺乏,或由于这方面的技术积累不够,影响开发进度。172)可移植性当进行嵌入式软件开发时,可移植性是要重点考虑的问题。良好的软件移植性应该比较好,可以在不同平台、不同系统上运行,跟操作系统无关。软件的通用性和软件的性能通常是矛盾的,即通用以损失某些特定情况下的优化性能为代价。很难设想开发一个嵌入式浏览器而仅能在某一特定环境下应用。反过来说,当产品与平台和操作系统紧密结合时,往往你的产品的特色就蕴含其中。3)可利用资源产品开发不同于学术课题研究,它是以快速、低成本、高质量的推出适合用户需求的产品为目的的。集中精力研发出产品的特色,其他功能尽量由操作系统附加或采用第三方产品,因此操作系统的可利用资源对于选型是一个重要参考条件。Linux和WinCE都有大量的资源可以利用,这是它们被看好的重要原因。其它有些实时操作系统由于比较封闭,开发时可以利用的资源比较少,因此多数功能需要自己独立开发。从而影响开发进度。近来的市场需求显示,越来越多的嵌入式系统,均要求提供全功能的Web浏览器。而这要求有一个高性能、高可靠的图形用户接口GUI的支持。184)系统定制能力信息产品不同于传统PC机结构的单纯性,用户的需求是千差万别的,硬件平台也都不一样,所以对系统的定制能力提出了要求。要分析产品是否对系统底层有改动的需求,这种改动是否伴生着产品特色?Linux由于其源代码开放的天生魅力,在定制能力方面具有优势。随着WinCE原码的开放,以及微软在嵌入式领域力度的加强,其定制能力会有所提升。5)成本成本是所有产品不得不考虑的问题。Linux免费,WinCE等商业系统需要支付许可证使用费,但这都不是问题的答案。成本是需要综合权衡以后进行考虑的---选择某一系统可能会对其它一系列的因素产生影响,如对硬件设备的选型、人员投入、以及公司管理和与其它合作伙伴的共同开发之间的沟通等许多方面的影响。196)中文内核支持国内产品需要对中文的支持。由于操作系统多数是采用西文方式,是否支持双字节编码方式,是否遵循GBK,GB18030等各种国家标准,是否支持中文输入与处理,是否提供第三方中文输入接口是针对国内用户的嵌入式产品的必需考虑的重要因素。上面提到用WinCE+x86出产品,这实际上就是所谓PC家电化;另外一种做法是加法,利用家电行业的硬件解决方案(绝大部分是非x86的)加以改进,加上嵌入式操作系统,再加上应用软件。这是所谓家电PC化的做法,这种加法的优势是成本低,特色突出,缺点是产品研发周期长,难度大(需要深入了解硬件和操作系统)。如果选择这种做法,Linux是一个好选择,它让你能够深入到系统底层。嵌入式系统是面向用户、面向产品、面向应用的。嵌入式处理器的功耗、体积、成本、可靠性、速度、处理能力、电磁兼容性等方面均受到应用要求的制约,这些也是各个半导体厂商之间竞争的热点。嵌入式处理器的应用软件是实现嵌入式系统功能的关键。软件要求固化存储,软件代码要求高质量、高可靠性,系统软件(OS)的高实时性是基本要求。202、嵌入式操作系统选择原则嵌入式操作系统选择的原则:1)操作系统的硬件支持是否支持目标硬件平台、可移植性;2)开发工具的支持程度;3)能否满足应用要求对操作系统性能的要求、中文内核支持、标准兼容性、技术支持、源代码还是目标代码、许可(一次性付费?);如自建操作系统:一种是完全从内核开始,另一种是在免费的源代码公开的内核上写自己的RTOS。214.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、嵌入式开发流程在嵌入式系统的应用开发中,整个系统的开发过程有选择嵌入式处理器、选择嵌入式操作系统、开发嵌入式应用软件、进行测试和开发结束。嵌入式系统发展到今天,对
本文标题:第4章-基于ARM的硬件结构设计
链接地址:https://www.777doc.com/doc-6166757 .html