⑴ 如何用VS2005或者2008开发wince应用程序
先说开发工具,目前用得比较多的开发工具有EVC4(SP4)、VS2005、VS2008和Platform Builder。
其中Platform Builder主要是用来定制操作系统的,虽然也支持编写应用程序,但用得相对较少。记得没错的话,它还得先编译系统,才能新建应用程序的工程。
VS2005和VS2008是微软的集大成开发工具,PB6.0就是作为VS2005的插件安装的(PB6.0目前应该是不支持VS2008)。在VS2005中,你可以编译WinCE6.0的操作系统,也可以编译设备上的应用程序,省去了切换开发环境的麻烦。
EVC4(SP4)即嵌入式的VC,使用起来基本跟VC6.0一致。
WinCE应用程序的开发相对桌面Windows应用程序的开发有一些特点,如下弯凳:
1. UNICODE编码。WinCE中的应用程序只能使用UNICODE编码,桌面系统则支持UNICODE和ANSI码。在移植PC端程序到设备上时需要注意这一点。
2.SDK。SDK即软件开发支持包,软件开发都少不了这个,但在WinCE应用程序的开发中尤为重要。因为WinCE系统本身是一个非标的操作系统,它的组件特性和可裁剪性决定了不同的系统支持的API是不同的。而桌面系统相对标准,SDK的作用就弱化了。WinCE中的SDK由系统开发人员在编译完系统后,通过Platform Builder导出。应用程序的开发人员安装此埋搜旅SDK,并编写应用程序,最终将应用程序下载到目标平台上运行测试。一般来说,SDK是应用程序和操作系统之间的纽带,但他们之间也并不是完全一一对应的。譬如,在硬件和操作系统都没调试好时,我们可以先用标准的SDK或者自己定制一个模拟器的SDK进行应用程序的开发,等硬件和系统调试完成后再做联调。应用程序基于新的SDK编译一下,甚至无需重新编译也可运行。当然,一个应用程序在别的设备上跑得很好,但到漏橘另外一个设备上却不能工作也是很正常的。就像很多WM上的应用程序在WinCE中不能跑一样,虽然内核相同,但系统不同,支持的API也是不同的。
最后说说开发语言,WinCE应用程序的开发有Win32、MFC和Managed等几种方式。对于开发者来说,选择使用哪一个主要看效能,开发的效能和运行的效能。根据能量守恒定律,开发效能和运行效能应该是一个此消彼长的关系。呵呵,跟能量守恒定律有关系么?勉强找个有力证据吧。托管代码的开发效率很高,但执行效率相对就低了。这在物资还不是极大丰富的嵌入式系统上,就显得尤为突出,实时性也得不到保证。MFC是基于Window32的一个基础类库,封装了很多Win32的API,方便开发者使用,但它也是有缺点的,似乎也没再更新。Win32是这三者中最底层的一个,编译出的程序小,没有额外的包袱,运行起来快,所以开发的难度自然就大了,代码量也很大。我们在开发应用程序时应根据实际情况选择更合适的。
⑵ VS2008 开发wince软件
这是我配置vs2005的模拟器,你参考一下吧。
1. 在VS2005里新建项目中时,选择创建Platform builder for CE 6.0的OS Design,新项目可以自
命名,这里命名为“MyEmulator”。
2. 创建MyEmulator的向导中,BSP一定要选择“Device Emulator: ARMV4I”,下一步;
3. 模板(Design Templates)选择“PDA Device”,下一步;
4. 选择“Mobile Handheld”,下一步;
5. 应用程序(Application & Media)就随自己的需要选择,下一步;
6. 网络和通信(Networking & Communications)在此只选择“Local Area Network(LAN)”,下一步;
7. 选择完成;
8. 选择Acknowledge;
到此工程建完;
四.添加组件(可以根据需要添加,这里主要添加汉字相关的组件)
(1) 添加汉字字库(这里要记得加入,很多人这里没有加入,就出现汉字只看到方框的现象):
1. 在Catalog View添加“Core OS”-->“CEBASE”-->“International”-->“Locale Specific support”-->“Chinese (Simplified)”-->“Fonts”-->“SimSun & NSimSum(choose 1)”-->“SimSun & NSimSun”或者“SimSum & NSimSun (Subset 2_50)”;
2. 在Catalog View添加“Core OS”-->“CEBASE”-->“International”-->“Locale Specific support”-->“Chinese (Simplified)”-->“GB18030 Data Vonverter”和“Monotype Imaging AC3 Font Compression”;
(2)添加中文输入法:
在Catalog View添加“Core OS”-->“CEBASE”-->“International”-->“Locale Specific support”-->“Chinese (Simplified)”-->“Input Method Editor”-->“MSPY 3.0 for Windows Embedded CE”;
(3) VS2005中菜单“项目”-->“MyEmulator(项目名)属性”,配置选择“所有配置”,配置属性-->“Build Options”,在“Build Options”中去掉“Enable KITL (no IMGNOKITL=1)” (这里如果加入了KITL功能的话,可能在模拟器运行的时候,会一直是黑屏的);
(4) “Locale”中,Locales先Clear All,然后选择“中文(中国)”,Default local选择“中文(中国)”;
(5) 运行VS2005菜单“生成”-->“生成MyEmulator”;
五.构建SDK:
1. 运行VS2005菜单“项目”-->“Add New SDK…”,在SDK属性页中填写必要的信息,属性“Emulation”中Configuration 选择Debug,可以设置模拟器的显示屏大小及色深,还有内存大小,在此设置为240 x 320,16色深,128M内存,然后“应用”,“确定”。。
2. 然后运行VS2005菜单“生成”-->“Build All SDK…”,顺利的话,就会在%WINCEROOT\OSDesigns\ \MyEmulator\MyEmulator\SDKs\SDK1\MSI\下会有MyEmulator.msi;
六.配置VS2005:
1、先安装生成好的MyEmulator.msi。运行Visual Studio 2005,选择菜单“工具->选项”,打开选项设置对话框,从左边的树型列表中选择“设备工具->设备”,右边的下拉列表框拉到底可以看到 “MyEmulator”,这就是刚刚生成的那个模拟器。下面的设备列表里有两项,双击MyEmulator,设定传输为DMA传输,再点击“仿真器选 项”,在“显示”选项卡里设定好模拟器屏幕尺寸,颜色深度等,全部保存。
2、用VS2005新建一个智能设备项目,向导选择平台时,先删除Pocket PC 2003,选择MyEmulator,完成。然后按F5运行程序,顺利的话定制的模拟器就会出来了(不过这个过程比较慢,需要等待一段时间)。
⑶ Win10下开发WinCE的配置
设置目标或测试计算机是配置计算机以便进行自动驱动程序部署、测试和调试的过程。一个测试和调试环境具有两台计算机:主计算机和目标计算机。目标计算机也称为“测试计算机”。使用主机上的 Visual Studio 开发和构建驱动程序。调试程序在主机上运行并且位于 Visual Studio 用户界面中。当测试和调试驱动程序时,驱动程序在目标计算机上运行。
主计算机和目标计算机必须能够彼此按名称执行 ping 操作。如果两台计算机已加入到同一工作组或同一网络域,则此操作可能更容易。如果你的计算机位于工作组中,我们建议你使用路由器(而非集线器或交换机)连接计算机。不支持对虚拟机进行设置。
准备目标计算机以进行设置
在目标计算机上,安装将用于运行和测试驱动程序的操作系统。
如果在 x86 或 x64 目标计算机上启用“安全启动”,则禁用该功能。
如果目标计算机使用 ARM 处理器,则安装 Windows 调试策略。则无需禁用“安全启动”。
在目标计算机上,运行与目标计算机平台匹配的 WDK 测试目标安装程序 MSI。可以在 Remote 下的 Windows 驱动程序工具包 (WDK) 安装目录中找到该 MSI。
例如:C:Program Files (x86)Windows Kits10Remotex64WDK Test Target Setup x64-x64_en-us.msi
如果目标计算机运行的是 N 或 KN 版本的 Windows,则安装适用于 N 和 KN 版本的 Windows 的媒体功能包。
如果目标计算机运行的是 Windows Server,请查找刚才通过 WDK 测试目标设置 MSI 创建的 DriverTest 文件夹。(例如:c:DriverTest)。右键单击“DriverTest”文件夹,然后选择“属性”。在“安全”选项卡上,向“经过身份验证的用户”组授予“修改”权限。
验证主机和目标计算机可以彼此执行 ping 操作。打开命令提示符窗口,并输入 ping 192.186.X.X(ip_adress)。
如果主计算机和目标计算机已加入到一个工作组,但它们位于不同的子网上,你可能必须调整某些防火墙设置,以便主计算机和目标计算机可以通信。请按照下列步骤进行操作:
两种方法(选一即可):
方法一:
在目标计算机上的“控制面板”中,转到“网络和 Internet”>“网络共享中心”。注意你的活动网络。它可能是“公共网络”、“私有网络”或“域”。
在目标计算机上的“控制面板”中,转到“系统和安全”>“Windows 防火墙”>“高级设置”>“入站规则”。
在入站规则列表中,查找用于活动网络的所有网络发现规则。(例如,查找所有“配置文件”为“专用”的网络发现规则。)双击每个规则,然后打开“作用域”选项卡。在“远程 IP 地址”下,选择“任何 IP 地址”。
在入站规则列表中,查找用于活动网络的所有“文件和打印机共享”规则。对于每个规则,双击该规则,将打开“作用域”选项卡。在“远程 IP 地址”下,选择“任何 IP 地址”。
方法二:
“控制面板”->“系统和安全”->“Windows防火墙”->"启动或关闭Windows防火墙"->"关闭Windows防火墙"
设置目标计算机
现在,你可以随时在 Visual Studio 中通过主计算机设置目标计算机。
在主计算机上,在 Visual Studio 的“Driver”菜单中,选择“Test”>“Configure Deivce”。
单击“Add New Device”。
在“Network host name”中输入目标计算机的名称。选择“Provision Device and choose debugger setting”。
选择某种调试连接类型,并输入所需的参数。
设置过程将需要几分钟时间,并且可能会自动重新启动目标计算机一到两次。设置完成后,单击“完成”。
WDK 10 与 Microsoft Visual Studio 完全集成。你可以使用 Visual Studio 开发环境生成驱动程序,也可以使用 Microsoft Build Engine (MSBuild) 直接从命令行生成驱动程序。
从 Windows 驱动程序工具包 (WDK) 8 开始,MSBuild 就已经取代了在早期版本的 WDK 中使用的 Windows 构建实用工具 (Build.exe)。现在,WDK 可使用与你用于构建 Visual Studio 项目相同的编译器和构建工具。使用早期版本的 WDK 构建的驱动程序项目必须进行转换才能在 Visual Studio 环境中工作。你可以从命令行运行转换实用工具,也可以通过从现有的源创建新的 Visual Studio 项目来转换现有驱动程序。
构建驱动程序主要有以下两种方式(选一即可)
方法一:使用 Visual Studio 构建驱动程序
构建驱动程序的方法与在 Visual Studio 中构建任何项目或解决方案的方法相同。当使用 Windows 驱动程序模板创建新的驱动程序项目时,该模板定义默认(活动)的项目配置以及默认(活动)的解决方案生成配置。
注意你可以将使用 WDK 8 或 Windows 驱动程序工具包 (WDK) 8.1 所创建的项目和解决方案转换为适用于 Windows 驱动程序工具包 (WDK) 10 和 Visual Studio 2015。打开项目或解决方案前,请先运行 ProjectUpgradeTool。ProjectUpgradeTool 将转换项目和解决方案,以便可以使用 WDK 10 构建它们。
1、确保安装在你的计算机上的 SDK 和 WDK 的版本相同。
2、在 Visual Studio 中打开驱动程序项目或解决方案。
3、在“解决方案资源管理器”中右键单击解决方案,并选择“配置管理器”。
4、从“配置管理器”中,选择与你感兴趣的构建类型相对应的活动解决方案配置(例如,“调试”或“发布”)以及活动解决方案平台(例如,“Win32”)。
5、选择要构建驱动程序的目标操作系统。导航到“驱动程序”>“常规”中的项目属性,然后设置 TargetVersion 属性。
6、为驱动程序或驱动程序包配置项目属性。 可以为部署、驱动程序签署或其他任务设置属性。
7、从“构建”菜单中,单击“构建解决方案” (Ctrl+Shift+B)。
方法二:
使用命令行构建驱动程序 (MSBuild)
你可以使用“Visual Studio 命令提示符”窗口和 Microsoft Build Engine (MSBuild) 来从命令行构建驱动程序。
使用“Visual Studio 命令提示符”窗口构建驱动程序
打开“适用于 VS2015 的开发人员命令提示符”窗口。
在此窗口中,你可以借助 MSBuild.exe,通过指定项目 (.VcxProj) 或解决方案 (.Sln) 文件来构建任何 Visual Studio 项目。
导航到项目目录并为你的目标输入 MSbuild 命令。
例如,若要使用默认的平台和配置生成名为 MyDriver.vcxproj 的全新的 Visual Studio 驱动程序项目,请导航到项目目录并输入以下 MSBuild 命令:
msbuild /t:clean /t:build .MyDriver.vcxproj
语法 - 若要指定特定的配置和平台,请使用以下命令语法:
msbuild /t:clean /t:build ProjectFile /p:Configuration=<Debug|Release> /p:Platform=architecture /p:TargetPlatformVersion=a.b.c.d /p:TargetVersion=OS
例如,以下命令将为“调试”配置、“Win32”平台和 Windows 10 生成一个通用 Windows 驱动程序。
msbuild /t:clean /t:build .MyDriver.vcxproj /p:Configuration="Debug" /p:Platform=Win32 /p:TargetVersion=”Windows10” /p:TargetPlatformVersion=”10.0.10010.0”
“TargetPlatformVersion”设置为可选项,并且允许你指定用于生成的工具包版本。默认值为使用最新的工具包。
使用 Visual Studio 中的选项增加构建输出详细信息的步骤
1、单击 Tools > Options。
2、单击“项目和解决方案”文件夹并单击“生成并运行”。
3、更改“MSBuild 项目构建输出详细信息”和“MSBuild 项目构建日志文件详细信息”。 默认情况下,这些都设置为“最少”。
⑷ 如何开发arm开发板winceOS下运行的程序
开发WinCE应用程序较多使用EVC,其界面与VC6类似
也可以使用VS2005开发
你可能还需要安装一个WinCE的标准SDK
关于调试:
WinCE设备可以通过Activesync与PC相连,然后在开发平台如VS2005下选择一些连接设备,选择Activesync连接方式,这时候,你再选运行调试就会自动下载到已经连接到Activesync的WinCE设备,可以单步调试,到这里就和调试PC上的应用程序没什么区别了
⑸ 如何在 Windows CE 5.0 中开发和测试设备驱动程序
本文介绍如何开发和测试 Windows CE 5.0 设备驱动程序。本文循序渐进地介绍如何创建流驱动程序,如何创建自定义 Windows CE Test Kit
(CETK) 测试,以及如何编写应用程序来测试驱动程序。这要花费大约 60 分钟来完成。
本页内容
第一部分:建立设备驱动程序
第二部分:测试流驱动程序测试代码
第三部分:检验驱动程序
第四部分:使用
Windows CE Test Kit
第五部分:创建自定义
CETK 测试
第六部分:确定谁拥有流驱动程序
小结
第一部分:建立设备驱动程序
在本练习中,您将使用 Platform Builder 来添加作为设备驱动程序的项目。
在 开始编写驱动程序之前,您应该了解设备驱动程序的用途。驱动程序将基础硬件从梁顷操作系统中抽象出来,使之更好地面对应用程序开发人员。应用程序开发人员无需
知道显示硬件或串行硬件的详细信息 — 例如,串行设备是用 Universal Asynchronous Receiver/Transmitter (UART)
实现的还是用 field-programmable gate array (FPGA)
实现的。在大多数情况下,应用程序开发人员根本不需要知道硬件是如何实现的。
Microsoft Windows 为开发人员公开了调用硬件的应用程序编程接口
(API),他们不需要知道物理硬件的情况。例如,为了向串行端口写入数据,应用程序开发人员只需调用 COMx 上的 CreateFile( )(其中 x
表示您要打开的串行端口编号,例如 COM1 代表串行端口 1),再调用 WriteFile( ) 以将一些字节数据写入串行端口,然后调用
CloseHandle( ) 以关闭串行端口。不管基础串行硬件是什么(也不管您运行的是哪个 Windows 操作系统),API 都会以同样的顺序执行。
相同的情况也适用于其他 API:如果您希望在显示表面画一条线,那么您只需调用 PolyLine( )、MoveToEx( ) 或 LineTo(
)。作为应用程序开发人员,大多数情况下您都不需要知道显示硬件的情况。此处调用的 API 将返回显示表面的维数、颜色深度等码销等。
好 消息是开发人员可以调用一个一致的、众所周知的 API 集。这些 API
将他们的应用程序从基础硬件中抽象出来。这至关重要,因为应用程序开发人员无法知道应用程序是运行在便携式计算机上,还是运行在 Tablet PC
上,抑或运行在桌面计算机上。无论电脑以 1024×768 还是 1600×1200
的分辨率运行,应用程序开发人员都可以在运行时查询屏幕分辨率和颜色深度,因此不需要构建只在特定硬件上运行的应用程序。
驱动程序只是一 个动态链接库(DLL)。将 DLL 加载到父进程地址空间;然后父进程就可以调用从该 DLL 公开的任何接口。通常,父进程通过调用
LoadLibrary( ) 或 LoadDriver( ) 来加载驱动程序。LoadDriver 不仅将 DLL 加载到父进程地址空间中,而且还要确保 DLL
没有“paged out”。
调用进程如何知道从您的 DLL 或驱动程序公开了哪些 API 或函数呢?父进程调用 GetProcAddress( ),后者可以获取函数名称和所加载的
DLL 的 hInstance。如果函数存在,调用返回该函数指针;如果没有从 DLL 公开该函数,则返回 NULL。
流驱动程序也公开了一个众所周知的函数集。对于流驱动程序,您会希望能够将字节流写入设备中,或者从设备中读取字节流。因此,在前面使用的串行端口示例中,您可能希望从您的驱动程序公开如下函数集:Open、Close、Read
和
Write。流驱动程序还公开一些其他函数:PowerUp、PowerDown、IOControl、Init
和 DeInit。
您可以将现有的操作系统映像用于模拟器平台(Basic Lab MyPlatform 平台最理想)。然后,您就可以将
DLL/驱动程序项目添加到该平台了。
橡模陆在构建并下载了该平台之后(这表明操作系统启动并运行良好),您需要创建您的主干驱动程序。您可以使用 File 菜单上的 Platform
Builder New Project or File 命令创建一个 Microsoft Windows CE DLL。创建用于公开函数或资源的
DLL 与创建用作驱动程序的 DLL 之间没有什么不同;唯一的不同之处在于 DLL 公开哪些函数,以及如何在平台上注册或使用 DLL。
此 外,一种创建国际化应用程序的方法是,首先创建包含一组核心语言字符串、对话框和资源的基本应用程序,然后创建许多外部
DLL,其中每个都包含针对特定区域设置的对话框、字符串和资源。然后,应用程序就可以在运行时加载相应的语言资源。只需要添加 DLL
文件,您就可以将语言添加到应用程序中。在 Developing International
Software 一书中描述了与此相关的主题以及其他一些有趣的主题,可以在 Microsoft Press 网站上获得此书。
添加一个作为设备驱动程序的项目
用 Platform Builder 打开现有的 MyPlatform 工作区。
在 File 菜单上,单击 New Project or File。
选择 WCE Dynamic-Link Library,给它一个合适的名称(例如,StreamDrv),然后单击
OK,如下图所示。
在下图所显示的页面中多少填写一些您需要的信息,然后单击 Next。
单击 A simple Windows CE DLL project,如下图所示。
单击 Finish 完成此向导。
此时,DLL 只包含一个空的 DllMain
函数。您可以公开一些应用程序要调用的函数,并公开一些资源(可能使之成为识别语言/文化的应用程序的一部分),或者使之成为一个设备驱动程序。在本文中,您将使用
Windows CE Stream Driver Wizard 创建您的主干流驱动程序。
在 Windows CE 中,打开流驱动程序就像打开文件一样,只需根据唯一的三字母前缀(例如,COM)。
为您的驱动程序选择一个唯一的三字母标识符。在 Location
框中输入您之前创建的流驱动程序的完整路径。或者使用“browse”按钮定位到 Platform Builder 安装中的 PBWorkspaces
目录,找到您前面创建的平台,然后找到流驱动程序的名称(在前面的示例中,此路径为 PBWorkspaces\TuxPlat\StreamDrv)。
在 Driver Filename 框中输入驱动程序的名称。如下图所示,使用与您前面使用名称 (StreamDrv)
相同的名称,以确保改写在 Platform Builder 中创建的原始文件。
按 Go,将生成流驱动程序源代码。
返回页首
第二部分:测试流驱动程序测试代码
现在您已经编写了用于 Windows CE 的自定义流驱动程序的基本代码。此时,驱动程序还没有与任何硬件连接。
在 编写完驱动程序之后,您需要为开发人员提供一种测试它的方法。Windows CE 附带了 Windows CE Test Kit
(CETK),它提供了用于各种驱动程序类型的驱动程序测试,包含网络连接、蓝牙、串行端口以及显示。您编写的驱动程序是一种自定义的流驱动程序,它没有
公开与现有的驱动程序测试一样的功能,因此您需要为该驱动程序编写一个自定义测试。虽然您完全可以编写一个应用程序来演练驱动程序,但提供一个 CETK
模块或许更好些,在开发期间可以使用此模块,并且还可以将此模块提供给客户,供他们在装配硬件上测试驱动程序。
在这一部分的练习中,您将执行以下过程:
创建主干 Tux 模块
将自定义驱动程序的测试代码添加到 Tux DLL 中
重新构建操作系统
设置断点
创建主干 Tux 模块
在 Platform Builder 中,在 File 菜单上单击 New Project or File。
选择 WCE TUX Dynamic-Link Library,键入 TuxTest 作为项目名称,输入一个位置,单击
Workspace Project,然后单击 OK,如下图所示。(实际上,您可以选择任意一个项目类型;对于本文,单击
Workspace Project)。
在下图显示的页面中多少填写一些您需要的信息,然后单击 Next。
阅读下图所显示的屏幕上的信息,然后单击 Next。
在最后一页上,您可以选择选取 Release Type 下的
CETK,如下图所示。该选项关闭了某些二进制的优化,以提高调试工作效率。单击 Finish。
单击 View | File View,然后展开 Projects 树显示 tux
源代码,如下图所示。
前图中需要注意的重要文件是:
ft.h — 该文件包含 tux DLL 所用的函数表。
test.cpp — 该文件包含从该函数表中调用的测试过程。
TuxStreamTest.cpp — 该文件包含 DLLMain 和 ShellProc,后者是从 Tux.exe
调用的。
将自定义驱动程序测试代码添加到 Tux DLL 中
打开源代码 Test.cpp。
使用 CodeClip 来获得 Tux_Custom_Test | TuxCode 源代码。
用 CodeClip 中的代码替代函数 TestProc 中的内容。
您会注意到,Test.cpp 中的代码加载了一个名为 Demo.dll 的驱动程序。对于本文,您创建了一个名为 StreamDrv
的驱动程序。您需要修改源代码以加载您的 StreamDrv.dll 驱动程序。
找到 Test.cpp 中调用 LoadLibrary 的源代码的位置,然后将要从 Demo.dll
中加载的驱动程序的名称修改为 StreamDrv.dll。
在 Platform Builder 文件视图中,右键单击 TuxTest 项目,然后单击 Build Current
Project。
您还需要从该目录中添加 Windows CE Test Kit 组件。
在 Device Drivers 下,找到该目录中 Windows CE Test Kit 组件的位置,然后选择
Add the Windows CE Test Kit,将该组件添加到您的平台中。
注 将该组件添加到您的平台上并没有将任何文件添加到最后的操作系统映像中;它将 Clientside 文件添加到 build release
文件夹中。您可以从 Platform Builder 下载 Clientside 应用程序,并在目标设备上运行该应用程序。
现在您需要重新构建您的操作系统,以便合并这些变更。
重新构建操作系统
在 Platform Builder 中,选择 Build OS | Sysgen。
构建过程将会花大约 5 分钟完成。
当加载驱动程序时,在流驱动程序的入口点设置一个断点来观察非常有用。
设置断点
单击 File View,打开 StreamDrv 项目,然后打开 Source files。
找到并打开 StreamDrv.cpp。
找到 DllMain,然后找到并单击 switch 语句。
按 F9 设置断点。
单击 Target | Attach,将操作系统下载到模拟环境中。
您会看到以下调试输出,断点将启用。注意,在加载操作系统的用户接口 (UI) 之前,这早就发生了。
4294780036 PID:23f767b6 TID:23f767e6 0x83fa6800: >>> Loading mole
streamdrv.dll at address 0x01ED0000-0x01ED5000
Loaded symbols for
'C:\WINCE500\PBWORKSPACES\DRVDEMO\RELDIR\EMULATOR_X86_DEBUG\STREAMDRV.DLL'
单击 switch 语句,然后按 F9 禁用断点。
按 F5,允许操作系统继续加载。
现在,您已经构建了一个 Windows CE 5.0
操作系统,它包含一个自定义流驱动程序,并且您已经在操作系统引导顺序的过程中看到了驱动程序加载。
返回页首
第三部分:检验驱动程序
在这一部分的练习中,您将执行以下过程:
使用命令行工具查看从驱动程序公开的函数
使用远程系统信息 (Remote System Information) 工具检验驱动程序
确定驱动程序已加载
检验您所创建的设备驱动程序的第一种方法是查看从该驱动程序公开的函数。Windows CE 附带了一个名为 Dumpbin
的命令行工具,可以用于检验导入应用程序或模块的内容,或者从 DLL(或驱动程序)导出的内容。
使用命令行工具查看从驱动程序公开的函数
在 Platform Builder 中,单击 Build OS | Open Release
Directory。该操作为当前的工作区打开 build release 文件夹中的 Command Prompt 窗口。
键入 mpbin exports StreamDrv.dll
下图显示输出。您可以看到,所有需要的流驱动程序函数都是从驱动程序公开的;函数是从 DLL 公开的(通过该项目的 .def 文件)。
键入 Exit 关闭 Command Prompt 窗口
StreamDrv.def 文件的内容如下所示。
LIBRARY DemoDriver
EXPORTS
DEM_Init
DEM_Deinit
DEM_Open
DEM_Close
DEM_IOControl
DEM_PowerUp
DEM_PowerDown
DEM_Read
DEM_Write
DEM_Seek
CustomFunction
CustomFunctionEx
您可以检验驱动程序的第二种方法是通过远程系统信息工具。
通过远程系统信息工具检验驱动程序
在 Platform Builder 中,单击 Tools | Remote System
Information。
选择 Windows CE Default Platform | Default Device,然后单击
OK,如下图所示。
此过程将远程系统信息应用程序连接到 Platform Builder 正在使用的当前活动平台上。下图显示了结果。
您也可以使用加载模块列表来确定已加载了您的驱动程序。
确定驱动程序已加载
在 Platform Builder 中,使用 Target Control 窗口 (gi mod) 或 View |
Debug Windows | Moles and Symbols。
下图显示了此过程的结果。
返回页首
第四部分:使用 Windows CE Test Kit
Windows CE Test Kit 包含设备端组件和桌面组件。设备端组件叫做 Clientside.exe,通过从目录中添加 CETK
组件,您可以将设备端组件添加到您的工作区中。注意,将 Clientside.exe
应用程序添加到工作区中并没有将任何文件添加到最终操作系统映像中,但它却将应用程序复制到 build release 文件夹中。
在桌面计算机上运行 CETK 之前,您需要启动设备上的 Clientside.exe 应用程序。没有链接工具(比如远程工具)的原因在于,CETK
也将运行在装配(零售)设备(比如 Pocket PC)上。
在这一部分的练习中,您将执行以下过程:
检验 Windows CE Test Kit 用户接口
运行一个标准测试
检验 Windows CE Test Kit 用户接口
在 Platform Builder 中,在 Tools 菜单上单击 Windows CE Test
Kit。
这 一步启动 Windows CE Test Kit 应用程序,如下图所示。注意,这不是一个标准的远程工具。Windows CE
附带的大多数远程工具都使用 Kernel Independent Transport Layer
(KITL),一种将工具从基础通信硬件中抽象出来的传输,以便这些工具可以运行在以太网、串行端口、1394、USB 或者其他传输上。
虽然对于 Windows CE 5.0,Windows CE Test Kit 通常通过套接字连接,但是也已经更新了工具来支持 KITL。
在 Windows CE Test Kit 中,单击 Connection | Start
Client。
这一步显示 Device Connection 对话框,其中您可以选择是通过套接字连接还是通过 KITL 连接。
确保清除了 Use Windows Sockets for the client/server communication
复选框,如下图所示。
单击 Connect。
在远程工具 (KITL) 的标准用户界面中,选择 Windows CE Default Platform | Default
Device,然后单击 OK,如下图所示。
该过程在目标设备上启动 Clientside.exe,并连接到目标设备上。在完成连接之后,CETK 枚举目标平台上支持的设备,并禁用 CETK
中不支持的设备。
在 CETK 连接到目标设备并枚举设备之后,UI 如下图所示。注意,禁用了某些硬件类别,比如 Bluetooth、IR
Port 和 Modem。
将自定义测试添加到 CETK 中之前,您可以运行一个标准测试,以查看测试工作如何进行。
运行标准测试
在 CETK 中,展开 Windows CE (x86)。
找到并展开 Serial Port。
右键单击 Serial Port Driver Test,然后单击 Quick Start。
这一步只运行了这一个测试,还没有运行所选的其他测试。UI 指示测试正在进行,如下图所示。
CETK 提供测试过程和测试输出的更新。您也可以在 Platform Builder 中检验调试输出,以便查看测试过程,如下例所示。
405910 PID:83d4ee4a TID:83ea5a8a *** Test Name: Set event mask and wait for
thread to close comm port handle
405920 PID:83d4ee4a TID:83ea5a8a *** Test ID: 1007
405920 PID:83d4ee4a TID:83ea5a8a *** Library Path: \serdrvbvt.dll
405920 PID:83d4ee4a TID:83ea5a8a *** Command Line:
405920 PID:83d4ee4a TID:83ea5a8a *** Result: Passed
405920 PID:83d4ee4a TID:83ea5a8a *** Random Seed: 15595
405930 PID:83d4ee4a TID:83ea5a8a *** Thread Count: 1
405930 PID:83d4ee4a TID:83ea5a8a *** Execution Time: 0:00:05.110
405930 PID:83d4ee4a TID:83ea5a8a ***
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
如果 CETK UI
指示模拟器上的串行端口测试已经失败(如下图所示),那么失败可能不是由于每个测试的完全失败而导致的。它可能表明,全部测试套件只有一部分已经失败,并且这部分实际上也是期望的行为。
右键单击 Serial Port Driver Test [Failed],然后单击 View
Results。
出现如下图所示的窗口。
查看上图所示的结果,您可以看到,已经运行了 10 个单独的测试。除了 Set and verify receive timeout
以外,所有这些测试都已经通过。
要获得更多信息,您可以单击个别测试。
返回页首
第五部分:创建自定义 CETK 测试
通过使用 Platform Builder User-Defined Test Wizard,您可以创建一个自定义 CETK
测试。该测试将验证自定义流驱动程序(您也已经将其添加到平台中)的导出函数。
在这一部分的练习中,您将执行以下过程:
列出 CETK 中的自定义流驱动程序测试
运行自定义流驱动程序测试
列出 CETK 中的自定义流驱动程序测试
在 CETK 中,单击 Tests | User Defined。
这一步启动 User-Defined Test Wizard。该向导的第一页只是一些信息。
单击 Next,如下图所示。
单击 Add a New Test,然后单击 Next,如下图所示。
输入下列信息,然后单击 Next:
· 在 Name of Test 框中键入 Custom Stream Driver Test
· 在 Tux Mole (DLL) 框中,定位到
C:\Wince500\PBWorkspaces\MyPlatform\RelDir\Emulator_x86_Debug 目录,然后选择
test.dll 或 TuxTest.dll(这依赖于您在 Platform Builder 中所使用的 Tux
测试的名称)。
· 在 Command Line 框中,保留当前测试的默认设置。
· 在 Processor 框中键入 x86
下图显示信息如何出现在当前的向导页中。
单击 Copy the files to the directory for user-defined tests,然后单击
Next,如下图所示。
您需要将自定义驱动程序测试(您的 DLL)复制到用户定义的测试文件夹中。如果您要删除现有的工作区,那么自定义驱动程序测试仍然保持完好。
单击 Next,如下图所示。
单击 Finish,如下图所示。
CETK 应用程序不会用新的测试进行自动刷新。您需要重新同步桌面应用程序,以查看新添加的测试。
右键单击 Windows CE (x86),然后单击 Redetect Peripherals。
该过程添加了一个名为 User Tests 的新驱动程序类别。您只添加了一个测试,因此,当您展开这个项目时,您只能看到 Custom
Stream Driver Test。
注 已经将自定义流驱动程序测试的 DLL 复制到下列位置: C:\Program Files\Windows CE Platform
Builder\5.00\CEPB\wcetk\user\x86.
运行自定义流驱动程序测试
在可用的测试列表中展开 User Tests。
右键单击 Custom Stream Driver Test,然后单击 Quick Start。