作者:文斌
来源:文斌程序网 http://www.wenbinweb.com
回顾一下我们以前学过的内容,我们学习了嵌入式系统的基本概念,学习了如何定制一个操作系统,还学习了如何引导一个CE操作系统。这次我们来学习CE系统的高级调试技术,主要是利用PB的集成开发环境来调试操作系统的内核和设备驱动程序。
PB集成开发环境强大的调试功能为我们提供了可以深入调试系统程序的途径,它的操作方式与常规的集成开发环境如VC++等非常相似,但功能却比它们强得多,因为利用PB我们可以调试到一些系统内核部分的程序如内核组件、IE组件,也可以调试各种设备驱动程序如串口驱动、网卡驱动等,因此,我们才能够更加方便的定制专用的系统。
下面我们先来打开上次我们用的Hello的那个系统,我们定制它时是在模拟器上来模拟的,为了讲解方便,也为了更多的人能够方便的学习,我们以后的内容尽量使用模拟器。但是我们必须清楚的意识到,模拟器必竟不是真实的目标机器,哪怕你用一台PC机来作为CE的目标机器都比使用模拟器好,因此有条件的学习者还是使用真实的目标设备为好。
我们使用Debug的配置来重新编译Hello平台,假设目前我们要调试串口设备的驱动程序,那么我们先要找到串口驱动程序的源程序,这个可以通过Workspace窗口来找到,在设备驱动程序下的串口设备中找到并双击com16550.c源程序,就可以在主窗口中打开这个源程序了,在程序中设置断点以后当程序执行到断点处后就会中断,然后由我们通过在PB中使用调试工具栏上的单步跟踪等调试方法来进行驱动程序的调试,在调试工具栏中还可以查看到内存、调用堆栈、反汇编、变量、寄存器等调试工具。由于此处虽然使用核心调试功能,但程序的调试与常规的程序调试方法是相同的,所以此处不做更多的举例。
我们来看一下对CE目标设备的进程、线程等的控制。
将编译好的平台下载到目标设备上,我们打开Target菜单,使用“CE Processed”命令打开一个CE的进程管理窗口如下图:
在这个窗口中我们可以看到每一个CE进程的信息,同时在工具栏上还可以控制中止某一个进程或打开某一个进程的线程。
同样的,我们使用“CE Threads”命令可以打开线程窗口如下图:
在这个窗口中我们可以通过工具栏上的进程列表框来选择查看某个进程的所有线程的详细信息,包括调用堆栈及各种时间信息等。
如果想了解目标平台中的模块的地址信息和重定位信息等,我们就可以使用“CE Modules and Symbols”菜单命令打开如下的窗口:
利用“CE Exceptions”菜单命令则可以改变CE对异常响应的行为,窗口如下图所示:
利用以上的四个功能我们可以对CE的进程、线程、模块和异常响应进行必要的管理,也是以后常用的命令。如果想进一步的控制CE,我们还可以使用以下三个命令。
使用“Run Programs”命令可以在开发机上控制目标机中运行某个指定的程序,此命令运行后打开的窗口如下图:
如果我们在其中选择iesample.exe然后点击“Run”按钮,则会在目标机上发现IE浏览器已经运行起来了。如果开发的目标设备上无显示功能,则可以通过这个无程运行其中的程序。
还有一个“CE Target Control”的命令,它可以打开一个设备控制窗口,在其中输入设备控制命令后也能控制目标设备动作,如果有兴趣使用这些设备控制命令的话可以查一下PB的帮助。
另一个高级调试功能是使用调试区,它是CE中很常用的调试功能,具体它的代码实现及要求我们将在设备驱动程序中进行讲解,这里我们主要看一下它的应用方式,举个具体的例子,如果我们要跟踪目标机上键盘的动作以查看键盘驱动程序的工作情况,那我们就要用到调试区了。执行“CE Debug Zone”命令打开调试区窗口如下图:
左侧列表是模块名称,右侧是某一模块对应的调试区域,如上,我们选中kbdmouse.dll模块,右侧就列出了该模块的16个调试区,默认已经勾选了三个,所以当这个dll被调入内存执行时就会在PB的Debug窗口中输出它的初始化信息、警告信息和错误信息,如果我们想在Debug窗口中得到某个按键的扫描码,那么只要勾选Scan Codes项就可以了,确定以后,我们到目标设备上按键盘,就可以在开发机PB的Debug窗口上看到如下内容:
1468296 PID:63ef1802 TID:e3ec1eda 0x83ebe9f8: KeybdPdd_GetEventEx2: scan code 0x0000001c, code in progress 0x00000000, previous 0x00000000
1468296 PID:63ef1802 TID:c3ec4062 0x83ef1948: KeybdEventThreadProc: keybd 0 scan code 0x0000001c Down
1468296 PID:63fc9e0a TID:e3ed3e22 0x83eeee44: OpenSwMixer - no mixer found
1468296 PID:63fc9e0a TID:e3ed3e22 0x83eeee44: SPS - open failed : 0x1
1468300 PID:63fc9e0a TID:e3fc5a32 0x83eb1830: OpenSwMixer - no mixer found
1468300 PID:63fc9e0a TID:e3fc5a32 0x83eb1830: SPS - open failed : 0x1
1468425 PID:63ef1802 TID:e3ec1eda 0x83ebe9f8: KeybdPdd_GetEventEx2: scan code 0x000000f0, code in progress 0x00000000, previous 0x0000001c
1468430 PID:63ef1802 TID:e3ec1eda 0x83ebe9f8: KeybdPdd_GetEventEx2: scan code 0x0000001c, code in progress 0x00000000, previous 0x0000001c
1468430 PID:63ef1802 TID:c3ec4062 0x83ef1948: KeybdEventThreadProc: keybd 0 scan code 0x0000001c Up
这其中就是调试区返回给Debug窗口的信息,其实质就是在做kbdmouse.dll这个驱动程序时实现了对应的调试区。
好了,常规调试也好,高级调试也罢,目的只有一个,就是要排除程序中的错误,得到必要的信息,快试试吧!
分享到:
相关推荐
综上所述,《ARM&WinCE实验与实践》一书提供了全面而详尽的学习资源,不仅适合初学者快速入门Windows CE 5.0的应用程序和驱动程序开发,也为有一定基础的技术人员提供了深入探索的可能。无论是从理论还是实践的角度...
WinCE6.0开发教程是一本针对WinCE6.0操作系统的开发指南,本书以tq开发板为例,为开发者们提供了易于理解的开发指导和操作步骤。在深入探讨WinCE6.0开发之前,我们先了解一下相关的基本知识。 首先,Windows CE...
### WinCE.net ARM实验教程知识点总结 #### 一、WinCE.NET系统概述 - **概述**:Windows CE.NET 是一个高度可定制的操作系统,适用于多种嵌入式设备和移动设备。它提供了丰富的功能集和先进的技术,使得开发者能够...
### ARM嵌入式WinCE教程知识点总结 #### 一、ARM嵌入式WinCE实践教程概览 **ARM嵌入式WinCE实践教程**是一部专为学习ARM嵌入式技术与Windows CE操作系统的读者设计的专业教材。该书由华中科技大学国家电工电子教学...
虽然没有提供具体的WinCE实验视频,但可以推断,这些实验可能涉及WinCE的开发环境设置、应用程序开发和设备驱动程序的编写。 "redhat教程.wmv"可能是关于Red Hat Linux的教程,它是一种流行的Linux发行版,涵盖了...
Windows CE,简称Wince,是微软推出...通过“Wince系统编程实验”这个资源,你可以深入实践这些知识点,从基础到高级,逐步掌握Wince编程。书中的实例和练习将帮助你更好地理解和应用这些理论知识,提高你的编程能力。
- **高级应用实验**:如 GPS 定位、GPRS 数据传输、蓝牙通信等。 #### 七、总结 《基于 XScale270 嵌入式 Windows CE 开发实验与实践》是一本非常适合初学者的教材,不仅提供了详尽的理论知识介绍,还配套了大量的...
### Windows CE高级实验 #### 5.1 直流电机调速实验 - **电机控制**:通过实验了解如何使用Windows CE来控制直流电机的速度。 #### 5.2 经典平台与PC机串口通讯实验 - **串口通讯**:学习如何实现Windows CE设备与...
- **概念**:嵌入式操作系统是用于嵌入式系统的操作系统,它是嵌入式系统的核心组成部分之一,负责管理硬件资源,提供用户接口和服务。 - **特点**: - **内核精简**:为了适应有限的资源环境,嵌入式操作系统的...
《MSWince6培训资料之实践手册》是一本专注于Windows Embedded CE 6.0(简称WinCE 6.0)的实战型教材,适合于希望深入理解和应用WinCE 6.0开发的工程师们。WinCE 6.0是微软推出的一款面向嵌入式设备的操作系统,具有...
【周立功ARM (magicarm2410) 高级实验】是针对基于ARM9处理器的2410开发板进行的一系列高级实践教程,主要聚焦于Windows CE 5.0(简称Wince5.0)系统的应用开发。这个实验涉及到硬件平台、操作系统以及嵌入式软件...
第三天的实验内容通常会涉及更高级的主题,如设备驱动的深入开发、网络功能的集成等,进一步提升开发者对WinCE.NET系统的理解和控制能力。 总之,这份实验指导手册提供了一个系统性的学习路径,让初学者能够逐步...
3. **MEDC 2006移动开发**:MEDC(Microsoft Embedded Developer Conference)是微软主办的嵌入式开发大会,其中的动手实验部分提供了实践经验,帮助开发者掌握在Wince上开发软件的技巧。 4. **SQL Mobile**:在...
【压缩包子文件的文件名称列表】中的"第3章 Windows CE.net高级实验"可能是一个详细的教程或教材部分,涵盖了Windows CE(在Windows CE 5.0版本中有时被称为Windows CE.net)的高级主题。这部分内容可能包括: 1. *...
实验五:应用程序开发/调试实验(VS2005) #### 应用程序开发 使用Visual Studio 2005进行Windows CE应用程序的开发与调试。 #### 操作步骤 1. **新建项目**:在Visual Studio 2005中创建一个新的Windows CE应用...
### 1.5 实验五:超级终端配置 #### 1.5.1 实验目的 - 配置超级终端软件,以便于通过串口与开发板进行通信。 #### 1.5.2 实验内容 - 安装并配置超级终端软件。 - 测试串口连接是否正常工作。 #### 1.5.3 实验...
此外,高级调试工具的使用也被涵盖,如远程性能监视器、内存泄漏检测、内核追踪器、Application Verifier、Remote Call Profiler和Monte Carlo Profiling,这些都是用于优化和验证嵌入式系统性能的重要工具。...