嵌入式系统调试手段及方法综述

嵌入式系统技术论文

嵌入式系统调试手段及方法综述

摘要:随着手机、MP4、PDA等移动终端的普及,嵌入式系统的应用已经越来越融入人们的生活,嵌入式系统开发设计也逐渐被人们所重视。调试是任何项目开发过程中必不可少的一部分,在软硬件结合非常紧密的嵌入式系统开发中更是如此。

关键词:嵌入式系统 调试 方法 经验

嵌入式系统已经融入到我们的生活,在移动物联网时代即将到来的今天,嵌入式系统的学习显得更加地重要。对于软硬件项目来说,调试是不可避免的,对于嵌入式系统的开发来说更是如此。

一、 根据调试手段来分

常见嵌入式调试方法有的有模拟器方式、监控器方式、仿真器方式和在线调试器方式四种,下面逐一给予介绍。

(一) 模拟器方式

调试工具和待调试的应用软件都在宿主机上运行,通过软件手段模拟目标机的行为,达到程序调试的目的,此为模拟器方式。简单的模拟器可以通过指令解释方式逐条执行源程序,分配虚拟存储空间和外设,进行语法和逻辑上的调试。模拟器软件独立于微处理器硬件,一般与编译器集成在同一个环境中,是一种有效的源程序检验和测试工具。但值得注意的是,模拟器的功能毕竟是以一种处理器模拟另一种处理器的行为,在指令执行时间、中断响应、定时器处理等方面,有时会存在很大的差别。另外,它也无法实现嵌入式系统在实际运行中的真实状况。ADS中的ARMulator模拟器就属于此种工具,它可以模拟开发各种ARM嵌入式处理器,具有指令和定时等模拟功能。

(二) 监控器方式

宿主机和目标机通过某种接口(通常是串口)连接,宿主机上提供调试界面,被调试程序下载到目标机上运行,这种调试方式属于监控器方式。监控程序是一段运行于目标机上的可执行程序,主要负责监控目标机上被调试程序的运行情况,并在宿主机的控制下,及时反馈目标机的运行信息,与宿主机端的调试器一起完成对应用程序的调试。监控器方式操作简单易行,功能强大,不需要专门的调试硬件,适用面宽,已广泛应用于多种嵌入式系统的开发之中。但监控器调试主要用于调试目标机应用程序,不适宜调试目标机操作系统。ARM公司的Angel是可以常驻在目标机Flash中的监控程序,只需通过串行口与宿机相连,就可以在宿主机上对基于ARM架构处理器的目标机进行监控式开发和调试。

(三) 仿真器方式

仿真器(In-Circuit Emulator,ICE)是一种完全仿造调试目标CPU设计的仪器,目标系统对用户来说是完全透明的、可控的。仿真器与目标机通过仿真头连接,与主机有串口、并口、以太网口或USB口等连接方式。仿真器可以真正地

1

嵌入式系统技术论文 运行所有的目标CPU动作,并且可以在其使用的内存中设置非常多的硬件中断点,实时查看所有需要的数据,从而给调试过程带来很多便利。由于仿真器自成体系,调试时可以连接目标机,也可以不接目标机。使用ICE同使用一般的目标硬件一样,只是在ICE上完成调试后,需要把调试好的程序重新下载到目标系统上而已。由于ICE价格昂贵,而且每种CPU都需要一种与之对应的ICE,使得开发成本较高。

(四) 在线调试器方式

使用ICD(In-Circuit Debugger,在线调试器)和目标机的调试端口连接,发送调试命令和接收调试信息,可以完成必要的调试功能。一般情况下,在以ARM为CPU的目标机上采用JTAG边界扫描口进行调试。使用合适的开发工具可以利用这些接口。例如,ARM目标机,可以将JTAG调试器接在目标机的JTAG口上,宿主机通过JTAG口与ARM处理器核进行通信。由于JTAG调试的目标程序是在目标机上执行,因此,这种方式更接近于目标硬件。该方式是目前采用较多的一种调试方式。

二、根据调试模块来分

可以把嵌入式的调试分为硬件调试、软件调试以及综合调试。

(一)硬件调试

一般是指系统刚开发出来时上电前后的检查,包括:

1)上电前检查电源和地是否短路,目视检查是否有虚焊、漏焊;

2)上电后检查时钟线上的频率和波形、幅度是否正常,各电源电压是否稳定正常,各芯片温度是否正常,各指示灯是否正常。

(二)软件调试

一般是指保证硬件一切正常的情况下验证程序执行的时序是否正确,逻辑和结果是否与设计要求相符,能否满足功能和性能要求等。软件调试的方法有很多,包括:

1)用指示灯跟踪调试;

2)用串口打印调试;

3)用简单的调试器进行汇编代码级调试;

4)用比较高端的调试器进行源代码级调试;

5)用仿真器进行硬件仿真。

(三)综合调试

上述单纯的硬件调试或软件调试都是相对比较简单的,困难的是综合调试。对于综合调试,技术前辈们总结出来的经验方法如下:

1)加深理解法:加深理解包括加深对硬件和软件的理解,加深对硬件的理解主要是详细阅读相关的芯片数据手册,而加深对软件的理解是因为现在开发嵌入式系统并不是所有程序都需要自己编写,很多都是已经做好的,直接从网上获取或者采购获得,但这些软件不一定是完全针对我们自己的目标板的,所以在使用过程中经常会发现一些问题,特别是底层软件,而一旦出现问题,开发人员首先必须了解出现问题的代码。只有建立在对相关硬件和软件深入理解的基础上才可能做出更符合实际的判断,才可能更好地解决问题。

2)比较法:比较的方法有很多,比如将同样的软件放在两个类似但不相同的硬件平台上运行比较现象;将两个不同版本的软件放在同一个硬件平台上运行比较

2

嵌入式系统技术论文 现象;将相同的软件放到相同批次但不同的两个硬件平台上运行比较现象。对于一些不是很隐蔽的问题通过比较法通常能得到不错的效果。

3)分解法:当碰到分析起来比较复杂、可能有很多因素的问题时,可以把问题分成解几个小问题来测试诊断,比如编写几个单独的小测试程序对各种可能因素进行排查测试,根据这些测试结果再进行科学判断。

4)软硬件结合法:这种方法是需要一定灵感和悟性的。在测试过程中,可以在不破坏硬件的前提下临时改变一下硬件的状态(比如该例中将数据线和时钟线短路),看问题现象会不会有所变化,如果有,那么多做类似试验找出变化规律和关键因素,然后再进行分析解决。在底层软件开发中,对于时序要求严格的硬件模块的软件编程要特别注意,一旦程序的时序出了问题,而这部分软件已经与其他系统软件融合到一起,那么这种软件让别人去检查是很难查出问题的。

三、调试总结

诊断、排故要建立在大量实验的基础之上,要多动手,不能光知道臆想,不愿实际操作,还美其名曰“善于思考和分析”。嵌入式系统开发是一门实践性很强的科学,需要在实践中总结出事物客观规律,从而更好地认识和利用它们,让它们更好地按我们的意图工作。嵌入式系统开发调试要求开发人员有严谨细致的工作态度,决不放过调试过程中发现的任何一点蛛丝马迹,因为它很可能就是打开潘多拉宝盒的钥匙。要有实事求是的工作作风,要有敢于怀疑一切的精神和勇气,我们理当尊重权威和前人的科技成果,但当出现矛盾时我们更应该相信实验结果,这样科学才会进步。要勇于挑战自我,抛开习惯性思维和成见,拓宽思路,多角度分析问题。

嵌入式系统开发特别是底层软件和操作系统内核开发因为需要同时跟软件和硬件打交道,所以是一件比较艰苦的工作,很有挑战性。即使我们各方面都做得非常好,考虑得非常细致周全,目标系统仍然可能跟我们开一些小小的玩笑,我们经常会碰到一个非常小的问题困扰我们几天甚至几周的时间,这期间我们可能茶饭不思、夜不能寐,因此嵌入式系统底层软件开发人员不但要有平和的心态,且具备一定的耐心和毅力,还要有勇于克服一切困难的勇气和信心!

所以说,嵌入式系统调试过程就是一个更加深入了解我们的目标系统以及系统中的每个单元模块特性的过程,就是一个锻炼我们的逻辑思维和分析推理能力的过程,就是一个开拓思路、向习惯思维和权威挑战的过程,就是一个培养严谨细致的工作态度和实事求是工作作风的过程,就是一个锻炼我们耐力和毅力的过程,最终是一个学习进步的过程!嵌入式系统调试诊断能力的提升是一个长期实践、积累、提高的过程!

3

 

第二篇:调试嵌入式系统方法研究

电子科学

弘裂裂

一l≥;

调试嵌入式系统方法研究

王亮

张石磊

张春雷

(91245部队辽宁葫芦岛125001)

[摘要】简述了嵌入式系统的发展现状以及智能控制在嵌入式系统中的应用,并在此基础上着重讨论嵌入式系统开发,支撑环境,虚拟系统集成技术在构造嵌入式系统开发环境中的应用,介绍几种虚拟验证方法。

【关键词]嵌入式系统嵌入式软件虚拟系统集成中图分类号:TP2

文献标识码:^

文章编号:1671--7597(2008)0520022--01

一、模糊技术与人工智麓技术在嵌入式系统中的应用

嵌入式系统与模糊逻辑相结合反映在两个方面。一方面产生了模糊微控制器,另一方面产生了用于模糊控制的各种模糊开发软件和开发系统。模糊逻辑开发软件和开发系统有两类。一类是针对数字微控制器的,它的模糊控制机理要用软件实现。开发软件和开发系统的目的就是要产生能实现预定的模糊控制方式的微控制器软件。另一类是针对对模糊微控制器的,它的模糊控制机理要用参数设定,这种开发软件和开发系统的目的则是要产生模糊微控制器的结构参数。

=、几种常用的嵌入式系统调试环境

简单软件仿真系统。这种方法是在宿主机上只构造虚拟目标机。仿真执行嵌入式软件时,虚拟目标机与外部环境之间的信号交换需通过手工设定并以交互方式进行。这种方法很难描述外部环境的并发性和实时性,离不开对硬件调试设备及手段的依赖。

在线仿真器调试方法。这种方法是目前调试嵌入式软件普遍使用的方法。这种方法是在宿主机上交叉汇编生成目标机的目标码,然后通过仿真头将目标机的执行码装入到目标机上实际运行,并通过宿主机和目标机上的监控程序之间的信息传递来控制目标机上的目标码的执行。该方法需要反复调试嵌入式软件及嵌入式系统的硬件环境。

分布式仿真解决方案。大致包括以下几个部分:(1)起运行控制作用的仿真头。(2)利用调试软件,通过仿真头访问外部硬件环境,并执行调试功能。(3)通过LAN连到主机的逻辑分析仪提供实时的分析。

作为硬件设计工具的逻辑分析仪,目前在嵌入式设计的不同阶段都可发挥很大的作用。随着LAN以及主机X—WINDOWS界面技术的发展,分析人员利用其可以较容易地发现系统集成过程中所出现的问题。分布式仿真为软件开发者及硬件工程师开发调试以新一代处理器为核心的嵌入式系统提供了一个一致的、灵活的、且具有一定规模的工具。

三、虚拟集成与直拟验证技术

一般,嵌入式系统开发分为几个不同的开发阶段。首先通过需求分析确定嵌入式系统所要实现的功能,并在系统级对所实现的功能进行验证。然后将功能分解为软件实现和硬件实现两个部分。在此之后系统开发进入两个相对独立的开发阶段。当嵌入式软件及外部硬件环境设计结束之后,进入系统集成及系统测试阶段。在此阶段嵌入式软件运行于目标硬件环境中。’以此来调试嵌入式软件并同时验证系统是否实现了预期的功能。

随着硬件技术,特别是VLSI技术的不断发展,数字系统的复杂程度不断提高。与此同时,专用集成电路的广泛应用使得嵌入式系统硬件设计的难度进一步增加。在嵌入式系统的开发过程中,常常因为硬件设计的不当而影响整个系统的性能。因此在嵌入式系统硬件制造之前,应首先对包括硬件在内的整个系统功能进行验证,以确保系统所实现的功能与最初功能规格说明中的要求相一致。

解决上述矛盾的一个比较现实的方法是加强嵌入式软件开发及外围硬件设计阶段之间的信息交流。即在功能分解阶段后.借助模拟技术和虚拟原型技术对系统进行集成及测试,以期发现错误并对功能分解进行优化。这种虚拟系统集成技术强调协同设计和虚拟环境的构造。下面是几种协同设计方法和利用虚拟系统集成技术实现的全系统模拟方案的分析。

利用全功能模型执行目标代码的方法。这种方法是首先利用HDL编写微处理器或微控制器的全功能模型及相关外部硬件环境的功能模型。然后将嵌入式软件编译成目标码,并装入微处理器模拟器的内存模块逐条执

行。这种方法最大的缺点是模拟时间长,在很多情况下几乎不能使用。并且全功能处理器模型非常复杂,很难构造。同时由于专利的原因,全功能模型很难获得。

基于指令级模拟器的虚拟系统集成,这种协同模拟方法利用指令集模拟器模拟嵌入式软件的执行。指令集模拟器是一个C语言程序,它是嵌入式软件的解释器。它根据嵌入式软件的执行情况修改处理器状态,并在处理器端口产生与指令执行相对应的端口事件。指令集模拟器通过这些端口事件与嵌入式系统的离散事件模拟器进行通讯,以实现软件、硬件的协同模拟。

这种方法与采用处理器全功能模型的模拟方法相比,由于节省了处理器内部硬件结构离散事件的调度处理开销,因而可以大幅度提高协同模拟的执行速度。解决好软件与硬件之间的同步问题是保证该协同模拟方法正确性,及提高模拟速度的关键。

利用hardware

modeller执行目标代码的方法。一种减少全功能模型

执行时间的方法是将处理器及内存模型代之以真实的芯片,这些芯片通过

hardware

modeller与外部硬件环境模拟器相连。这34种技术允许抛开处理

器的复杂性而进行全功能模拟。但是,昂贵的hardware-modeller并非总能带来模拟速度的提高。瓶颈产生于软件模拟器并不能实时地处理微处理器所产生的信息。同时,由于程序运行于目标级,嵌入式软件的可见性难以保证。

利用功能函数模拟硬件环境的方法。当一个新项目开始时,最终执行软件程序的目标系统可能并不存在。为测试软件,程序可以交叉汇编到一个已经存在的系统上,硬件的功能可用模型化的函数功能来模拟。这种方法允许在硬件不存在的情况下,测试软件的大部分功能。这种方法的主要问题是它只提供硬件操作的近似仿真a

硬件仿真方法。这种技术是利用可编程的逻辑器件(例如,FPGA)构造外部硬件环境,它与微处理器或微控制器芯片一起构成仿真环境,嵌入式软件在此环境中运行调试。这种方法的优点是快速,并且在外围硬件定型前即可进行目标级调试。缺点是硬件投资大且调试周期长。

四、结束语

目前嵌八式工业具有硬件复杂化(RISC,ASIC技术的广泛应用)及软件智能化两个发展趋势。随着嵌入式系统复杂度的不断提高。虚拟集成及虚拟验证技术将在嵌入式工业中发挥着越来越重要的作用,实用、快速、准确的仿真和模拟技术将为整个嵌入式工业注入新的活力,并推动整个嵌入式工业的发展。

参考文献:

[1]Gajski

D

D,Vahid

F。Specification

anddesign

of

embedded

hardware-soft-are

systems。IEEEDesign&Testof

Computers,1995.[2]Antao

B

AA。Trends

in

CAD

of

analog

ICS。IEEE

Circuits&

Devices,1996。12(5).

[3]薛宏熙,边计年,苏明,

字系统设计自动化,北京:清华大学出版

杜,1996.

相关推荐