嵌入式系统开发要素的选择分析
扫描二维码
随时随地手机看文章
摘要:主要讨论在嵌入式系统开发中,设计人员如何考虑和选择嵌入式处理器、嵌入式操作系统、调试器、仿真器以及开发人员的技术水平和结构比例等组成要素;同时,以实例说明如何选择这些开发要素。 关键词:嵌入式系统 嵌入式处理器 实时操作系统 仿真器 调试器 引 言 在计算机、互联网和通信技术高速发展的同时,嵌入式系统开发技术也取得迅速发展。这不仅表现在从事嵌入式系统开发研究的人员队伍日益壮大,嵌入式处理器和实时操作系统的性能增强和产品升级换代,更重要的体现在嵌入式技术应用范围的急剧扩大。 嵌入式系统拥有巨大的市场空间,我国应该抓住机遇,与时俱进,奋起直追,在嵌入式系统领域赶超世界先进水平。要达到这个目标,具有一定的现实可行性,这是因为同PC机系统相比,嵌入式系统更有自身的特征。在PC领域,虽有AMD系列处理器和Linux操作系统的市场冲击,但是 Win_Tel(Windows+Intel)体系架构仍占主导地位;可是,嵌入式系统本身是一个相当分散的工业,典型特征是面向用户、面向产品、面向应用的,市场应用才是嵌入式系统开发的导向和前提,在当前的嵌入式市场中不存在垄断的局面。 嵌入式系统包含硬件和软件两部分:硬件架构上以嵌入式处理器为中心,配置存储器、I/O设备、通信模块等必要的外设;软件部分以软件开发平台为核心,向上提供应用编程接口(API),向下屏蔽具体硬件特性的板级支持包BSP。嵌入式系统中,软件和硬件紧密配合,协调工作,共同完成系统预定的功能。 对于不同的市场应用类型,嵌入式系统开发中的嵌入式处理器、实时操作系统、仿真器、调试器以及开发队伍的技术水平和结构比例等要素的选择是至关重要的。本文参考一些嵌入式系统开发的资料,结合具体的工程实践经验,系统总结了进行嵌入式系统开发时,如何全面考虑各开发要素并进行选择,最后结合一个具体实例进行详细阐述。 1 嵌入式处理器 嵌入式系统的功能软件集成于硬件系统之中,系统的应用软件与硬件一体化。在嵌入式系统的硬件设备中,嵌入处理器是整个系统的核心部件,其性能的好坏直接决定整个系统的运行效果。 PC机销售市场中,随着通用CPU技术的突破和工作频率的倍增,旧款低档CPU早已经不见踪迹。嵌入式系统开发面向具体应用,不同领域的应用市场需要不同款式和性能指标的处理器来开发,于是在嵌入式处理器市场中,中低端的4位、8位和16位处理器依然存在,高性能的32位处理器也有很多产品。随着超大规模集成电路技术和微电子技术发展,包含嵌入式处理器以及部分外围电路的微控制器产品也进入市场,片上系统SoC(System on Chip)产品也开始出现。这些产品的上市,不仅丰富了嵌入式处理器产品,而且也更加方便了工程技术人员进行嵌入式系统的技术开发和扩大嵌入式产品的应用领域。 由于嵌入式系统应用需求的多样性,市场上基于RISC结构的嵌入式处理器提供商也日渐增多。统计数字表明,1999年底市场销售额排在前三位的公司分别是ARM、Motorola和MIPS,其中ARM公司的芯片销售量达1.5亿个,市场份额超过50%。 面对这样的嵌入式处理器市场,开发设计人员应该如何选择呢?这里有两个前提条件。 一是深入研究具体的嵌入式系统应用需求,充分的应用需求分析后获取应用系统的性能指标。面向应用是嵌入式系统的特色,具体的应用需求决定着嵌入式处理器的性能选型。在工业控制等特殊领域,系统需求分析员不仅需要和工作人员、上级主管亲自面谈,而且要到工作现场获取第一手信息,收集充分的资料。应用需求分析后,需要定义产品具备的基本功能和性能指标,如系统处理的数据量大小和处理实时性要求、系统正常运行时的工作环境、系统运行过程中可能遇到的突发事件、系统的尺寸大小和功耗指标等。 第二个前提条件是,分析研究市场上各大厂商提供的各款嵌入式处理器的性能指标,如功耗、体积、成本、可靠性、速度、处理能力、电磁兼容性等。这些参数也是各个半导体芯片厂商之间竞争的热点。 开发人员通过应用需求分析获取了产品的功能性和非功能性指标,研究了市场上嵌入式处理器的性能参数后,能够对嵌入式处理器作出较好的选择。嵌入式处理器选择的基本原则是满足具体功能性和非功能性指标需求的、市场应用反应良好的、硬件配置最少的嵌入式处理器。如简单的智能仪器仪表设计考虑使用4位或者8 位低档单片机8051;和数字信号处理密切相关的选用TI公司的TMX320x系列的DSP(数字信号处理)芯片;如果产品偏重于通信功能,考虑Motorola公司的嵌入式处理器68K系列;如果产品功能比较齐全,可选用嵌入式处理器领域的后起之秀ARM公司的高性能嵌入式处理器ARM芯片系列等。 除了上述的产品性能需求因素,选择嵌入式处理器时也需要考虑开发人员对此系列处理器的熟悉程度。因为不同公司开发的嵌入式处理器差别较大,从一类处理器转移到另一类处理器的难度比同一系列不同处理器间的转移难度大得多,风险多得多。
2 实时操作系统 以嵌入式处理器为中心,开发人员搭建好硬件电路时仅提供了裸机运行平台,要使整个系统有限的硬件资源充分利用起来,还需要(嵌入式)实时操作系统 RTOS(Real Time Operating System)的软件支持。 RTOS与一般商用多任务OS(如Unix、Windows以及Linux等)有共同的一面,也有不同的一面。商用多任务OS主要目的是方便用户管理计算机资源和追求系统资源的最大利用率;而RTOS重点追求的是实时性、可确定性、可靠性,当然也包括有限资源的管理。一般RTOS内核都很小,在几 KB"十几KB之间。流行的RTOS基本上都支持基于优先级的抢占式调度策略和时间片轮转,具有微内核结构,有标准组件可供选用,支持虚拟存储技术和存储保护机制。 由于具体嵌入式应用的功能需求差异以及不同RTOS间不同的性能指标,RTOS的选择有三种方案:一是根据应用需要和公司技术实力,考虑自主开发研究(国内手机厂商宁波波导公司部分款式的手机操作系统就是自主开发的);二是充分考虑系统需求和流行RTOS的性能指标及性价比选择商用RTOS,如 WinCE、VxWorks等;三是考虑嵌入式Linux(RT_Linux),RT_Linux是开放源代码的免费自由软件,互联网技术论坛较多,具备较好的裁减性以支持不同的应用范畴。 当前全球范围内商用RTOS多达200多种,应用领域的多样性使得市场反应较好的也将近有十几种,如VxWorks、pSOS、Nucleus、 QNX、WinCE以及中科院软件研究中心研制的Hopen等。这些不同名称的RTOS,核心软件差异微妙而且难以琢磨,选择时重点是考虑它们的性能评价指标,主要包括调度算法、RTOS本身内存开销、RTOS内存管理模式、最大中断禁止时间和最大任务切换时间。当然,也包括RTOS的购买成本和提供的技术支持等相关因素。针对实时性要求较高的应用,需要重点考虑RTOS的最大中断禁止时间和最大任务切换时间。这两个参数越小越好。减小这两个参数值,除了选用较高工作主频的嵌入式处理器外,还和RTOS本身任务调度和中断处理机制密切相关。 选择RTOS时,通常还要考虑系统功能方面支持何种处理器硬件平台,何种API,是否支持核心态用户态、是否支持内存管理单元MMU、可移植性、调试支持、标准支持等。如果开发网络应用,还需要考虑该RTOS是否支持TCP/IP的网络组件和I/O服务等。如果开发游戏和娱乐市场,要着重研究该 RTOS对多媒体的支持能力。市场应用需求的多样性,使得RTOS本身应该支持用户自定制能力,根据应用需要在微内核的基础上选用标准组件。 3 仿真器和调试器 调试是嵌入式系统开发过程的重要环节。嵌入式系统开发调试和一般PC系统开发调试有较大差别。在一般PC机系统开发中,调试器和被调试程序是运行在相同的硬件和软件平台上的两个进程,调试器进程通过操作系统专门提供的调试接口控制和访问被调试进程。而在嵌入式系统中,调试器是运行在桌面操作系统上的应用程序,被调试程序是运行在基于特定硬件平台的操作系统,两个程序间需要实时通信。 嵌入式系统调试时,主机上运行的集成开发调试工具(调试器)通过仿真器和目标机相连。仿真器处理宿主机和目标机之间所有的通信,这个通信口可以是串口、并行口或者高速以太网接口。仿真器通过JTAG口和目标机相连。三者间的关系如图1所示。 嵌入式系统开发调试方法有快速原型仿真法和实时在线调试法。快速原型仿真法用于硬件设备尚未完成时,直接在宿主机上对应用程序运行进行仿真分析。在此过程中系统不直接和硬件打交道,由开发调试软件内部某一特定软件模块模拟硬件CPU系统执行过程,并可同时将仿真异常反馈给开发者进行错误定位和修改。实时在线调试法在具体的目标机平台上调试应用程序,系统在调试状态下的执行情况和实际运行模式完全一样,这种方式更有利于开发者实时对系统硬件和软件故障进行定位和修改,提高产品开发速度。 选用的调试器是运行在主机上的集成开发环境,一般需要集编辑、汇编、编译、链接和调试环境于一体,支持低级汇编语言、C和C++语言,基于友好的图形用户界面(GUI),支持用户观察或修改嵌入式处理器的寄存器和存储器配置、数据变量的类型和数值,堆栈和寄存器的使用,支持程序断点设置,单步、断点或者全速运行等特性。 应用需求的多样性导致市场上仿真器和调试器的提供商也较多,Windriver公司的Tornado是一个很好的开发调试工具。根据实践经验,一般配套选择规模较大、信誉较好公司的仿真器和调试器,虽然价格偏高,但是这些公司技术实力强,售后服务好,调试器和仿真器开发结合紧密。如果在开发调试过程遇到技术障碍,可以通过电话或者电子邮件方式及时获取技术支持。如选用ARM系列的嵌入式处理器时,可以购买Multi-ICE仿真器,并附加ARM250集成开发调试环境等。 4 开发队伍的技术水平和结构比例 嵌入式系统开发中选择好了嵌入式处理器、RTOS、仿真器和调试器等设备外,还需要考虑开发队伍的技术水平和结构比例。经验丰富的开发小组都深有体会:民用产品开发中,产品能够在预计的时间内进入市场赢得效益,其整个技术范围内新技术比例至多只能达到20%,超过这个界限,估算的时间期限可能会出现较大偏差。从高层规划人员的角度分析:20%以内的新技术,公司可以集中力量,投入足够多的人力、物力和财力进行突破性研究,正常情况下可以达到满意效果。如果新技术超出20%这个范围,恐怕心有余而力不足。 公司运作以市场作为向导,是市场赋予它们生命。公司看重市场,付出的劳动有市场回报才能正常运转。公司在开发过程中一般都尽量避免风险,而且整个开发过程中始终将风险分析作为重要的参考因素。公司一般都选择保守的开发模式,基于当前开发人员的技术实力和已经达到的技术储备,在许多种备选方案的技术论证过程,充分分析成本收益、风险大小、投入资源、开发人员的技术水平等因素,全面考虑,权衡利弊,尽量选用可靠的,风险小的设计方案。 在项目开发中,分配开发人员时不仅要确保任务在给定时间期限内完成的成功性,而且也要体现在锻炼培养后继人才方面。任何项目的开发,依据需求分析后,经过概要设计和详细设计,都会形成模块化结构,其工作难度也有一定的层次性。这样,公司在选派项目人员时,需要合理的人员结构安排,现在一般公认的人才结构比例是1(博士或同等学历)∶3(硕士或同等学历)∶7(学士、大专或同等学历)。在项目开发中,除了开发人员的技术水平和结构比例外,小组内部的民主化、科学化管理决策也是很重要的环节。[!--empirenews.page--]
5 应用实例解析 在详细讨论了嵌入式系统开发中的几个关键因素后,下面具体阐述这些因素在工作中的具体体现。图2是个人数字助理PDA和寻呼机二合一的手持式电子产品结构图。 该产品的基本功能包括: ① 个人数字助理——科学计算器、英汉互译辞典、电话号码簿、记事日程表等; ② 交通信息——列车时刻表的车次查询和车站查询、民航时刻表的航班查询等; ③ 寻呼信息——接收个人和公共寻呼信息,个人寻呼内容实时语音合成并播放,寻呼方式更新列车和民航时刻表数据等。 分析产品功能结构图并结合产品的基本功能,可以获得产品对嵌入式处理器的性能要求:高速嵌入式处理器处理列车和民航时刻表查询、个人寻呼内容的实时语音合成并播放等。处理器外围需要自带语音录放电路完成语音录入和播放,串行口和红外通信口进行数据通信,LCD接口电路提供用户输入接口,也需要电源管理模块完成便携式电子产品的低功耗设计。 选用ARM公司的嵌入式微控制器EP7211:内含的32位微处理器ARM720T,提供18MHz、36MHz、54MHz和72MHz工作主频,而且允许用户在应用程序中对控制寄存器编程切换处理器工作频率,这种切换频率的工作方式,不仅满足了不同的应用需求,而且降低了系统的功耗。EP7211 提供了SRAM和Flash存储芯片接口,2个RS232口(1个自带红外信号收发模块),支持G_729.a标准的语音录放Codec模块,有LCD接口和电源管理部分,支持低电压监测等。在休眠状态下,EP7211支持中断唤醒功能,唤醒时间是唤醒频率的2~3个周期,芯片提供8kHz的唤醒频率,使得在休眠状态下系统收到寻呼前导信号时能够及时唤醒。 选定了EP7211后就应选择RTOS了。从产品功能和程序流程的角度分析,系统基本上是单任务顺序处理,但要具备实时对寻呼中断的响应能力。 RTOS的选择有两个方案:一是使用已经购买的用在油田测井系统SL3000型产品的商用Nucleus,二是使用自主开发的、专门面向嵌入式应用系统的 XGW软件开发平台。 XGW软件开发平台功能强大,模块化设计,扩展性强;支持多种点阵和矢量字体;完善的中英文处理接口;支持汉王手写识别和拼音输入法等。XGW开发平台是自主研发的,软件产品升级和故障排除比较容易,产品成本费用相对较低。选择EP7211嵌入式处理器和XGW开发平台,还因为二者在“GPS汽车导航系统”项目中获得了成功应用。 关于集成开发调试环境,我们购买了ARM公司的ARM250。它基于GUI用户接口,一体化的编辑、汇编、编译、连接和调试多窗口工作环境,支持单步跟踪、断点设置和内存查看等;同时,ARM250开发调试界面和Microsoft 的VC6++集成环境相似,有助于开发人员快速熟悉和掌握。选用Multi_ICE仿真器,支持在线仿真调试,通过并行口连接主机,支持程序编译链接后的程序代码快速加载,加快了代码调试进度。 详细分析了产品的技术风险,对开发小组而言,只有寻呼系统是比较成熟的新技术,且工作频率高达155MHz,需要重点解决和其它功能模块的电磁兼容性,要投入较多的人力资源进行重点突破。关于嵌入式处理器EP7211和自主研发的XGW软件开发平台等,开发人员都有一定的技术积累和丰富的工作经验。 在系统开发中,设计了两套技术调试方案:一是基于内存SRAM模式,二是基于闪存Flash模式。在内存SRAM模式中,系统加电冷启动时,系统完成相关硬件初始化任务后执行一段代码,将系统编译连接生成的二进制可执行代码从Flash存储空间完全拷贝到SRAM内存空间中,整个应用程序调试完全在内存空间执行。此种方案极大加快了庞大应用程序的调试步伐,加快产品开发进度。二是在SRAM内存模式调试完应用程序的基础上,执行闪存Flash调试,系统启动后将中断服务程序ISR和少量的内核代码拷贝到SRAM后在SRAM中执行,其它应用程序在Flash中执行。Flash模式同SRAM模式相比,主要是修改系统启动代码段,应用程序代码完全保持一致。Flash模式减少了宝贵的SRAM资源需求、降低了产品开发成本,但是运行速度较SRAM模式慢。 6 小 结 本文详细阐述了在嵌入式系统开发中嵌入式处理器、嵌入式操作系统、调试器、仿真器以及开发人员的技术水平和结构比例等组成要素的选择原则,并且使用一个具体的实例来进一步分析说明。需要指出的是,这些要素之间不是彼此独立,而是紧密相关,可能还会在某些方面相互冲突。