现代嵌入式计算 - 第17章 平台调试

来源:互联网 发布:淘宝卖家扫码发货 编辑:程序博客网 时间:2024/06/06 08:38

平台调试

平台调试主要指,新的硬件平台做好后,启动软件系统的过程,是指在操作系统起来之前的硬件软件调试过程。

嵌入式系统的迅猛发展的是令人振奋的,新的处理器,新的传感器和新的电路板,然而新的硬件和新的软件一样,是充满问题的。此外,新硬件平台和系统软件所产生的问题也是稳定系统所不同的。应用级软件开发者通常不习惯于硬件或平台级故障;当他们调试错误,往往局限于应用程序开发环境的范围内。对于嵌入式平台调试,却并非如此。

当开发一个嵌入式系统,系统的大多数方面还是来自于上一代系统。这很重要,因为全部从头开始,在新硬件上开发新软件会是一项极其艰巨的任务。当系统的一些部分是稳定的并且功能正常,不管是软件,如操作系统内核或以前的设备驱动程序实现,或者硬件,诸如已知的电路板,这些正确的组件可以减少调试范围。

在本章中,我们将探讨嵌入式平台的调试过程。我们将看到,平台调试比明确定义的过程更加艺术,学习本章的后,你将能够诊断和识别那些最重要的导致系统无法工作的错误类别。

要做到这一点,我们将首先讨论一个观点和方法,它奠定了调试嵌入式平台的基础。然后,我们将讨论那些帮助调试的工具和芯片功能。最后,我们详细讨论平台的调试过程。


1. 调试新平台

假如你是一个嵌入式小组成员之一,你们带着创新的嵌入式想法成立了一家公司。小组完成了它的第一版电路设计,包括IntelAtom处理器和其它一些外设,是时候来启动它了。它是一个基于Linux

平台,并且该系统已经被设计从USB设备进行引导。小组成员聚集一起,usb内存卡已经插入,电源被接通,...然而没有任何动静。没有LED闪烁,无任何一种指示。团队期待一个庆祝活动,但一无所获。是什么错误?问题是否严重或小事?你将如何知道?

当然,这是个虚构的场景,在真实的平台调试工作里,有各种可能的原因。是电源没插好?是内存没正确就位?是某些部件被配置成了调试而非工作状态?是否有地方短路?完全列举名单将是一个非常长的清单,而我们的工作也不是沿着清单排查。我们将遵循一个过程,旨在系统地确定什么可行,哪里有问题或配置错误。

在进入这个过程之前,了解调试需要的心态和观点是很有益助的。调试是一个开放式的活动,事先无法解释这个问题也无法预测需要多少时间解决它。唯一可以肯定的,是你必须最终找到问题。鉴于此,你开始调试后,应保持积极的,好奇的心态。这不仅让你工作时感觉良好,也会让你在尝试时做的更好。调试时,无论是在系统平台层面还是应用层面,需要仔细和系统的努力,减少可能的原因,直到问题得到解决。

所以,在你开始调试后,确保你:冷静,系统,好奇。


2. 调试新平台的过程

当你的平台无法启动时,“修改-编译-调试”,这个程序员最熟悉的模式没有多大用处。这种做法只适合已经能够启动起来的系统,适合平台调试之后。

对于新平台的调试,这一章提出了一个过程。该过程表述为三个大的步骤:


1)外观检查。检查系统,验证外部电线,电缆,I/ O设备是否连接。取下盖板,检查电路板是否损坏,组件是否正确就位。


2)硬件评估。硬件组件,比如电源,电压调节器,和集成电路,是否在正确的状态并操作正常?我们将看到,这一步细分为​​若干具体的,有序的子步骤来发现可能的硬件故障或错误配置。


3)软件的评估。BIOS和操作系统内核是否正确配置,能否启动?这一步也被细分为若干子步骤。



                        图17.1平台调试过程。


这三个步骤显示在图17.1。我们将很快详细讨论这些调试步骤,但在这样做之前,我们必须先了解一些工具和芯片调试的特征。


3. 调试工具

平台级调试需要观察的系统状态,通常是不可见的。因此,调试过程中需要借助于各种工具。本节,我们将讨论平台级调试使用的工具。这包括硬件调试器,分析仪和软件工具。

首先,最基本的是电压表和万用表,它测试硬件的基本输出特性,如电压和电流。

然而观察这些特征随着时间的改变是必要的,要做到这一点,需要更高级的硬件探测器。


示波器

示波器常见的硬件调试器,主要提供随时间改变的电压水平。例如,引线可以连接到CPU引脚,观察系统上电后,电压的变化。


逻辑分析仪

逻辑分析仪,其目的是捕捉硬件协议信息。示波器报告模拟值,逻辑分析仪设计用于数字系统,信息和系统状态用离散的电压电平表示。

用户使用逻辑分析仪,选择被测系统内部观察点,为输入信号提供名称,...。以这种方式,逻辑分析仪可以被编程,以观察特定系统的条件下系统状态的精确子集。逻辑分析仪,和示波器一样,有各种形式,从单机模式,到最近的USB外挂式。

作为一个例子,逻辑分析仪可以用来捕捉CPUDRAM之间传输的存储器地址。对于给定的应用,逻辑分析仪必须能够捕捉所需数量的输入,并且必须在一个适当的频率进行操作。


总线分析仪

重要的计算机I/ O总线类型,如PCI总线,有足够的人气,所以有专用的逻辑分析仪。PCIExpress总线分析仪可以捕获和分析PCI信息。比使用通用的逻辑分析仪要简单得多。


上电自检卡

基于IA-32的设备,在系统通电后立即运行加电自检程序。这些例程由BIOS供应商定义,是启动过程的一部分,目的是为了分类系统资源,和识别系统错误。

PC用户可能很熟悉,用于诊断系统启动过程中硬件问题的某些所谓的“蜂鸣声代码”。例如,把一本书放在键盘上给PC上电,在多数机器上,将产生持续的系列蜂鸣声。

除了通过系统扬声器报告错误,大多数BIOS厂商,通过0x80I / O端口报告错误号,它被映射到PCI卡。这些卡,有时也被称为POST卡或80端口卡,可用于收集BIOS的更精细粒度的错误。


JTAG适配器

JTAG标准定义了控制处理器执行的过程。一个支持JTAGCPU或芯片组,必须支持的最小命令集,包括重置系统,读写系统状态和读写测试数据。最基本的用法是通过JTAG接口发送测试向量。这样的功能可用于芯片投产前测试逻辑的正确性。


除了系统测试,JTAG接口和指令集可以被用于控制CPU和它的软件。在这种情况下,JTAG可以用作一个系统级的调试器,设置断点,单步执行,和软件交互。JTAG还可以用来初始化设备,或把引导程序写入ROM。作为一个调试接口,JTAG是无价的,因为不管系统的软件状态,它都是可用的。


一个JTAG调试器通过JTAG接口连接到系统,而通过其它接口,如USB,连接到调试机器。

大多数芯片厂商提供的JTAG扩展版本。Intel处理器,包括IntelAtom,功能扩展调试端口(XDP),它实现JTAG和一些专有扩展。


4. 调试过程细节

如前所述的调试过程概要,和讨论的调试工具,我们现在可以考虑详细平台调试过程了。


1)目视检查

第一步骤是目视检查,尤其对于新到的嵌入式硬件。卸下机盖,让底层电路板可见,其本身就是一个挑战。

机盖卸下后,检查是否有物理损坏的迹象。是否有脱离的配件,是否有错误的配件,或者无意损坏的部件,金属痕迹等。如果设计包括开关跳线,验证它们是否配置在启动系统状态。

在目视检查中,短路或燃烧的迹象也应当被注意到。错误的设计或组装,可以导致短路和过容,造成组件和设备烧穿。

确保所有布线,电源和I/O,正确就位和连接好。对于能提供可视和可听线索的组件,如LED或风扇,了解引导期间,它们会给出怎样的指示。这些指示,当存在时,可以大大缩短识别系统启动问题的时间。


2) 硬件评估

目视检查之后,下一个步骤是检查硬件组件的状态,观察它们是否正常运行。这一过程的步骤说明如

17.2




验证实时时钟:

英特尔架构构建的计算设备,一般包括一个3.3伏锂电池供电的实时时钟(RTC)。如果电池丢失,损坏或没电,系统则不能复位。您可以验证RTC振荡器的SUSCLK信号。这个信号表现出32kHz的方波。


电源供电

大多数英特尔架构系统包括ATX电源。该ATX电源将从AC电源提供几个电压等级的直流电源。

ATXPS_ON#信号,指示电源开始供应,PWR_OK信号,指示所有的电压都已稳定。提供的电压从高到低先后提供,如图17.3所示。图中的T1T2T3可以在电源供应商的规格书中看到。


电压稳定:

一旦电源被验证为供电,下一个步骤是确定,芯片是否被供待机电压。详细的电压和时序取决于特定的PCH或系统芯片。

这个阶段,系统处于S5系统休眠状态。RTC在运行,但系统本身不工作。要唤醒系统,需要按下电源按钮。

加入系统处于合适的待机状态,并且按下了电源按钮。系统从S5变换到S0状态。期间,芯片会插入PS_ON#信号来打开ATX的供电。假如芯片没有焊接,或者未安装好,则不会有这个信号。


时钟运行:

一旦电源稳定下来,下一个里程碑是验证系统时钟运行正常。英特尔架构的设备会产生一个时钟给CPU或芯片组,和其它时钟给其它I/O设备。

CPU频率由BSEL时钟芯片的输入信号指示。


设备和CPU复位:

如果电源和时钟信号都存在并且稳定,PCH将尝试系统复位,使所有设备进入操作状态。PWR_OK被置后,PCH会插入PLTRST#信号。然后,PCH会发送一个CPU复位包。一旦该消息被获取,CPURST#将被拉高,而这将导致CPU开始从其复位地址执行(物理地址0xFFFFFFF0)。如果你的系统走到这里,它已准备好开始执行的第一个指令了。


3) 软件评估

如果硬件没有问题而系统仍无法正常启动,下一步则应检查平台的软件配置。

CPU复位后,它会从复位向量(物理地址0xFFFFFFF0)开始执行。这个地址将被映射到固件或I/ O设备,这在BIOS中设置。第6章描述了正常的开机过程。

要在系统启动的BIOS阶段诊断问题,如前所述,BIOS厂商输出POST代码。这些代码表示启动过程中那些步骤工作正常,而哪一步系统挂起。

17.6表示了一般的启动过程和相关联的POST代码。


如果系统正常启动到这一步,你已经成功地从平台调试转变操作系统或设备驱动程序调试。

0 0
原创粉丝点击