嵌入式设备调试方法及其调试工具
技术领域
本发明涉及计算机领域,特别是有关于一种嵌入式设备调试方法及其调试工具。
背景技术
当前,应用于PDA(Personal Digital Assistant,个人数字助理)等嵌入式设备的主要调试方法是直接观察调试信息或远程做一些系统运行状况的监视。这种现有嵌入式设备调试方法的软件系统如图1所示,最底层的若干个驱动程序和类驱动程序负责驱动各自的设备,这些驱动程序由操作系统内核统一管控,操作系统内核通过标准应用库与应用程序相连,从而构成一个以驱动程序为底层,应用程序为最高层的完整的软件系统。应用程序通过其人机界面接收指令通过标准应用库传达给操作系统内核,操作系统内核将该指令分析归类传达给某一个或数个驱动程序来驱动该设备。设备的反馈由驱动程序回馈给操作系统内核再经操作系统内核通过标准应用库送至应用程序,并在其人机界面上显示出来。这样,测试者可以在本机或远程计算机上观察到设备状态数据,并可以继续输入指令进行下一步调试。
上述的现有测试方法存在的缺点是,首先需要编写完备的驱动架构,应用程序和驱动程序依托操作系统,只有在建立了完整的软件系统后才能进行调试。对于驱动程序而言,在嵌入式设备上,对硬件的控制就是通过内存映像或寄存器访问来实现的。通常对不同的外部设备,操作系统内核将其归并到相应的类中去。工程师就要开发不同类型的驱动程序。不同类型的驱动程序与操作系统的接口也不尽相同。
其次,通常驱动程序都采用内置的方式,包含在系统映像中。每次改动,都要重新编译系统。尤其是在开发设备驱动程序的过程中,需要多次改写程序,进而不得不多次编译操作系统部分。这样,大量的时间被花费在编译、烧录的过程中,降低了开发的效率。这种被动的调试方法并不能即时检测问题设备的状态,尤其不适合开发/量产过程中的调试作业。
发明内容
本发明的目的在于提供一种嵌入式设备调试方法,以克服上述现有技术的不足,能够在无需编写完备的驱动架构的情况下,直接对硬件进行控制,从而简化硬件功能验证和检测的过程。
为实现上述目的,本发明提供一种嵌入式设备调试方法,包括以下步骤:a.提供一个硬件调试驱动程序,通过内存映像访问存储器和寄存器;b.提供一个控制程序,独立控制硬件调试驱动程序读写存储器和寄存器;c.采用操作系统内核提供的标准系统接口连接该硬件调试驱动程序和该控制程序的接口;d.设置一个用户界面,并通过该用户界面输入、传送测试指令给控制程序并显示系统状态。
其中,所述的控制程序可以设置在远端计算机上,也可以设置在该嵌入式设备上,还可以分为远端计算机端控制程序和设备端控制程序分别设置在远端计算机上和嵌入式设备上。
在具有远端计算机的情况下,所述的嵌入式设备调试方法还包括以下步骤:硬件调试驱动程序复制显示缓冲区,实时地将图像传送到远端计算机上的控制程序,进而传送到用户界面程序并显示在其创建的显示窗口中;用户界面程序截取用户在窗口中的点击及键盘输入,回馈给嵌入式设备。
所述的硬件调试驱动程序采用动态安装的模式,可以根据需要改变硬件调试驱动程序,复制到嵌入式设备上去,然后由控制程序动态启动已被改变的硬件调试驱动程序。硬件调试驱动程序还可以通过保存文件的方式,将调试的动作和相应的系统状态保存下来。
所述的调试方法采用脚本控制方式,控制程序读取/分析/执行相关的脚本。所述的控制程序在设备死机时,触发硬件中断,在中断处理程序中导出系统的状态。
本发明的另一目的在于提供一种与本发明的嵌入式设备调试方法相对应的嵌入式设备调试工具。
为实现上述目的,本发明提供一种嵌入式设备调试工具,包括设置在该嵌入式设备上的用户界面和命令解析与平台控制元件,其特征在于:该设备还设有可通过内存映像访问存储器和寄存器的硬件调试驱动程序,以及独立控制硬件调试驱动程序读写存储器和寄存器的控制程序。
进一步的,所述的调试工具还包括一台远程计算机,该远端计算机上设有用户界面、负责控制命令的组装和命令响应的解析的远端控制元件、与该嵌入式设备进行通信的通信端口;嵌入式设备上设有通信端口与远端计算机上的通信接口进行通信。
所述的硬件调试驱动程序可以复制显示缓冲区,实时地将图像传送到远端计算机上的控制程序,由用户界面负责创建一个显示窗口并截取用户在窗口中的点击及键盘输入,回馈给嵌入式设备。该硬件调试驱动程序采用动态安装的模式,可以根据需要改变硬件调试驱动程序,复制到嵌入式设备上去,然后由控制程序动态启动已被改变的硬件调试驱动程序。硬件调试驱动程序还可以通过保存文件的方式,将调试的动作和相应的系统状态保存下来。
所述的调试工具采用脚本控制方式,控制程序读取/分析/执行相关的脚本。所述的控制程序可在设备死机时,触发硬件中断,在中断处理程序中导出系统的状态。
本发明能够在无需编写完备的驱动架构的情况下,直接对硬件进行控制,从而简化了硬件功能验证和检测的过程。本发明采用非内置式/动态装载设计,减少对操作系统的依赖,无需多次重新编译操作系统,节省开发时间;本发明采用Log文件记录状态信息,以及热键激活设备状态的导出。使得调试程序更为方便安全地进行。在远端调试工作模式下,采用远端显示输入,即使设备的显示/输入部件工作不正常,也可以完成调试。
以下结合附图与实施例对本发明作进一步的说明。
附图说明
图1为现有调试方法的软件系统示意图。
图2为本发明的调试方法的软件系统示意图。
图3为远端调试工作模式下采用远端显示输入的方块图。
图4为本发明调试工具的一个实施例的的方块图。
具体实施方式
有关本发明的详细说明及技术内容,现就结合附图说明如下:
首先参阅图2,图2为本发明的调试方法的软件系统示意图(设备端)。本发明的软件系统主要包括一个硬件调试驱动程序(可以独立存在或与硬件真正的驱动程序编写在一起),该硬件调试驱动程序实现最简单的驱动程序接口,通过内存映像访问存储器和寄存器,监控硬件中断,生成记录现场信息的Log文件;一个控制程序,解析脚本及手动命令,控制硬件调试驱动程序读写存储器和寄存器,在远程调试的状态下负责与远端程序的交互,转发状态信息。连接该硬件调试驱动程序和该控制程序的接口是内核提供的标准系统接口;一个用户界面,用于接收用户输入,传送给控制程序并显示系统状态。
在嵌入式设备上,对硬件的控制就是通过内存映像或寄存器访问来实现的。通常对不同的外部设备,操作系统将其归并到相应的类中去。就需要开发不同类型的驱动程序。本发明提供一个特殊的驱动程序,专门负责访问存储器和寄存器。从而提供了一个简化的功能验证接口。本方法能够在无需编写完备的驱动架构的情况下,将对直接对硬件进行控制的通用模组由单一驱动来完成,从而简化了硬件功能验证和检测的过程。
在Windows CE等嵌入式操作系统中,应用程序工作在保护模式,因而不能直接访问特定的物理内存和寄存器。通过提供一个完成内存映像功能的硬件调试驱动程序,用户程序就可以完成物理内存和寄存器的访问,从而能够实现指定物理内存/寄存器内容进行检查和改写。
本发明的硬件调试驱动程序采用非内置式的动态安装的模式,减少对操作系统的依赖,无需多次重新编译操作系统,节省开发时间。通常硬件调试驱动程序都采用内置的方式,包含在系统映像中。每次改动,都要重新编译系统。本发明的硬件调试驱动程序采用动态安装的模式,开发人员可以根据需要改变硬件调试驱动程序,复制到嵌入式设备上去,然后由控制程序动态启动已被改变的硬件调试驱动程序,而不必每次改变都重新编译系统。
为了便于后期的分析,调试程序需要将调试的动作和相应的系统状态保存。本发明的硬件调试驱动程序通过保存文件的方式,将调试的动作和相应的系统状态保存下来。
相应的,本发明的控制程序负责对本发明的硬件调试驱动程序的读写存储器和寄存器的过程进行控制,以及远程控制的处理。
连接该硬件调试驱动程序和该控制程序的是标准的系统接口。因为本发明的硬件调试驱动程序采用的是操作系统支持的最简单的驱动程序架构,故可以通过标准系统接口相连接。
本发明的控制程序可以设置在该嵌入式设备上,也可以设置在远端计算机上,还可以分为远端计算机端控制程序和设备端控制程序分别设置在远端计算机上和嵌入式设备上。
在具有远端计算机的情况下,还可以采用远端显示输入方法,这样即使设备端显示/输入部件工作不正常,也可以完成调试。在嵌入式设备上,有显示驱动程序和键盘驱动程序,分别负责显示输出和通知系统用户的输入。嵌入式系统通常利用显示缓冲区来保存待显示的信息。在显示硬件没有完全配置好的情况下,用户无法看到正常的显示。本发明可以利用复制显示缓冲区的方式,实时地将图像传送到主计算机上的控制程序,进而输送给用户界面程序创建的显示窗口。用户界面程序截取用户在窗口中的点击及键盘输入,回馈给嵌入式设备,再由相应的程序将输入通知系统。
请参阅图3,图3为远端调试工作模式下采用远端显示输入的方块图。为清晰起见,本图只描述了模块间的主要数据流向。在这个实施例中,远端计算机是一台PC,其具有普通的PC显示器和鼠标/键盘,在这台PC上设有PC端控制程序,即前述的控制程序的一部分——远端计算机端控制程序。相应的设备端设有设备端显示缓冲和设备端控制程序,在这个实施例中设备端由操作系统对输入、输出做最终的处理。设备端控制程序将从设备显示缓冲获取的图像数据复制传送给PC端控制程序。PC端控制程序将该图像数据传给PC显示器显示。另一方面PC端的鼠标/键盘可以进行输入,输入的事件由PC端控制程序传送到设备端控制程序,进而发送给操作系统。
由于有些硬件的控制具有严格的时序要求,例如利用GPIO实现I2C总线传输。这时,单条控制执行的手动方式无法满足需求。因此,本发明提供基于脚本的控制方式,预先建立所需要输入的指令的脚本文件。控制程序读取/分析/执行相关的脚本,从而实现对复杂时序控制的支持,满足了复杂时序要求。
通常在设备调试阶段,系统比较容易出现死机状况。这时,通常应用程序不能继续执行,但硬件中断服务还能被触发。本发明定义了触发硬件中断的热键,利用按键的动作触发一次硬件中断,从而在中断处理程序中导出系统的状态,便于分析症结所在。
根据本发明的调试工具既可以设置在嵌入式设备本机上也可以通过远端计算来进行远程测试。设置在嵌入式设备本机上的调试工具,包括设置在该嵌入式设备上的用户界面和命令解析与平台控制元件,其内部设有可通过内存映像访问存储器和寄存器的硬件调试驱动程序,以及独立控制硬件调试驱动程序读写存储器和寄存器的控制程序。
请参阅图4,图4为本发明调试工具的一个实施例的的方块图。这是一个具有远端计算机可进行远端调试的实施例,在设备端具有设备端用户界面、设备端控制程序、硬件调试驱动程序、以及通信端口。
在PC机端,这里的远端计算机是一台PC机,具有PC端用户界面、PC端控制程序、以及通信端口。其中,通信端口负责双方的数据通讯管理,双方的信息传递可以通过有线(如串行数据线、通用串行总线等)/无线(如802.11、蓝牙等)多种方式实现。PC机上的用户界面提供运行在主机上的用户接口,如控制选择/受控设备状态显示等,支持图形界面和命令行控制两种模式;设备端用户界面运行于受控设备上的用户接口模块,可以进行调试指令的手动或脚本输入以及调试状态的显示。它们可以是任何输入/显示设备。PC端控制程序负责控制命令的组装和命令响应的解析;设备端控制程序负责解析主机/本地的脚本/手动控制命令,转发状态信息等工作;硬件调试驱动程序接受上层指令,完成设备访问,热键监测,回馈信息,记录Log文件等任务。运行于受控设备上的软件模块,独立于操作系统映像文件,单独编译,采用调试时动态安装的工作模式。
以上所介绍的,仅仅是本发明的较佳实施例而已,不能以此来限定本发明实施的范围,即本技术领域内的一般技术人员根据本发明所作的均等的变化,例如将以上实施例中的各个器件进行功能替换或对各个步骤进行组合。以及本领域内技术人员熟知的改进,都应仍属于本发明专利涵盖的范围。