




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、手持式移动设备嵌入式WinCE开发,5,EVC开发工具简介,第,章,本章目标,掌握SDK的导出方法,熟悉EVC集成开发环境,掌握远程调试工具的使用,5.1 SDK,使用eMbedded Visual C+工具编写Windows CE 应用程序时,必须知道自己所开发的程序运用在什么样的硬件目标平台上,以及目标平台具有什么操作系统功能,否则,开发者开发的应用程序很可能不能在目标平台上运行 通过Platform Builder 向eMbedded Visual C+ 导出应用程序要运行平台的SDK,可以使EVC开发出的应用程序能够很好的运行在特定的目标平台上 应用程序开发主要包括三各方面的内容: 从
2、PB中导出SDK(软件开发工具包) 安装SDK到EVC+ Win32编程,MFC编程,5.1 SDK,下面我们重点介绍SDK的导出以及安装过程。导出SDK主要有如下几个步骤: 导出新的SDK SDK的配置 SDK的编译 下面将在前面创建的内核myce2基础上进行SDK的导出 SDK的导出 启动PB,并打开前面创建的Win CE内核myce2(可以选择创建一个基于某个BSP的内核),5.1 SDK,5.1 SDK,点击PB-Platform-Configure SDK,如下图所示,5.1 SDK,点击下一步,如下图所示,5.1 SDK,输入SDK名称和制造商名称,点击下一步,如下图所示,5.1
3、SDK,导出在eVC+环境开发的SDK,点击下一步,如下图所示,5.1 SDK,SDK导出完成,点击Finish,如下图所示,5.1 SDK,SDK的配置 再次点击PB-Platform-Configure SDK,如下图所示,5.1 SDK,如下图所示选项,视图表示导出的SDK存储在开发者创建内核的路径下的SDK目录里,创建的内核平台名称为MYCE2,导出的SDK是一个标准的安装文件,名称为MYCE2_SDK.msi,5.1 SDK,点击Emulation,对模拟器设置,如下图所示,设置后点击“确定”退出 如果不需要导出应用于模拟器的SDK,可在Emulation下拉表中选择None。在此s
4、etting项,还需要根据先前内核定制的平台,进行CPU的选择。同时还可以在install项进行安装信息的填写。,5.1 SDK,SDK的编译 点击PB-Platform-Build SDK,如下图所示,5.1 SDK,SDK编译结束,如下图所示,5.1 SDK,若编译过程没有错误,导出的SDK保存到开发者指定的目录,文件名为MYCE2_SDK.msi,5.1 SDK,SDK的安装 双击MYCE2_SDK.msi文件,就可以安装,如下图所示,5.1 SDK,点击”Next”,如下图所示,5.1 SDK,安装过程,如下图所示,5.1 SDK,至此,我们就已经完成了SDK的导出,设置,编译,安装过
5、程。后续我们就需要在EVC的开发中根据我们的程序应用平台选择我们定制的SDK,5.2 EVC集成开发环境,Windows CE开发工具 Windows CE与Windows编程有何不同 处理器: CE:支持多种处理器 Xp等:支持X86系列处理器 屏幕或键盘等输入设备: CE:支持触摸屏(非标准分辨率大小)或无显示器,可能无鼠标或键盘 Xp等:支持标准显示器,必须有鼠标和标准键盘 存储设备: CE:可能没有硬盘等大容量存储器,可能无法存储大量文件,可能无法实现虚拟内存,内存访问受限(由于内存容量通常较小,又无法实现虚拟内存),内存是稀缺资源 Xp等:大容量硬盘,虚拟内存,大容量内存等配置决定了
6、程序员通常不用考虑内存是否够用。,5.2 EVC集成开发环境,字符编码 CE:支持Unicode,而且通常都是以Unicode为字符的编码标准,即以两个字节来表示任何一个字符(不论是中文字符还是标准ASCII字符),这样在编写程序时,与字符串相关的处理需要特别注意这一点 XP等:通常是使用ASCII字符,同时支持Unicode CE的其他主要特性 界面紧凑、配置多样化、API函数的精简等等 开发工具的选择 CE系统通常使用 EVC 或 .NET 等开发工具,同时支持模拟器及模拟器的调试,5.2 EVC集成开发环境,我们的第一个WinCE应用程序:HelloWorld 打开EVC4,创建一个工作
7、空间,在对话框中选择Workspaces标签 在Workspace name对话框中填入工作空间的名称以及存储位置,5.2 EVC集成开发环境,向刚创建的hello工作空间添加文件或项目 在对话中选择Files标签,然后选择C+ Source File,5.2 EVC集成开发环境,在File处填入文件名 在hello.c中编写你的程序,5.2 EVC集成开发环境,5.2 EVC集成开发环境,hello.c的代码,5.2 EVC集成开发环境,这个文件包含了一组文件,它们中定义了Windows API及其用到的结构和常量 程序的入口点是本程序和标准C程序之间最大的差别,5.2 EVC集成开发环境,
8、这个文件包含了一组文件,它们中定义了Windows API及其用到的结构和常量 程序的入口点是本程序和标准C程序之间最大的差别,5.2 EVC集成开发环境,第1个参数,hInstance为其它应用程序指明程序实例,也为需要验证这个EXE的Windows API函数提供了程序实例 参数hPrevInstance是从旧的Win16 API(Windows 3.1及更早的系统)遗留下来的。包括Windows CE在内的所有Win32 操作系统中,hPrevInstance 始终是0,可以忽略掉。 参数lpCmdLine指向一个Unicode字符串,包含了命令行文本。从微软Windows CE浏览器启
9、动的应用程序没有命令行参数,但在某些情况下,例如当系统自动启动一个程序时,系统包含一个命令行参数来说明程序为什么被启动,5.2 EVC集成开发环境,参数lpCmdLine 是Windows CE与XP出现差异的情况之一,在Windows CE里,命令行字符串是Unicode字符串,在其它版本的Windows 里,命令行字符串总是ASCII的 最后一个参数,nCmdShow,指明了程序主窗口的初始状态。由父进程,通常是浏览器传递这个参数到程序里。它对应用程序如何配置主窗口给出了说明,在Windows CE里,这个参数的值被限制成3个状态:普通(SW_SHOW)、隐藏(SW_HIDE)和非激活显示
10、(SW_SHOWNOACTIVATE)。除非应用程序需要强制它的窗口预先确定状态,在程序主窗口被创建后,这个值是不加修改,只是简单的传递给ShowWindow函数,5.2 EVC集成开发环境,这个应用程序唯一的功能行 Windows CE支持大部分标准C库,包括printf,getchar等等。这一行有趣的地方在于它不像Windows CE其它任何地方,这个串不是Unicode而是ANSI。下面是对这个现象的合理解释:对于用ANSI标准编译的C标准库,printf和诸如strcpy等其它字符串库函数用的是ANSI字符串。当然,Windows CE支持这些标准函数的Unicode版,例如 wpr
11、intf, getwchar,和 wcscpy 编译hello.c 选择应用程序将运行的目标平台,注意CPU和SDK的选择。在此,我们选择基于emulator平台进行实验。如果是要运行在特定的硬件平台,必须按照前面讲述的内容导出SDK并安装到EVC中去,然后进行应用程序的开发,5.2 EVC集成开发环境,5.2 EVC集成开发环境,在EVC中,选择Build菜单下的Compile hello.c进行编译 如果弹出下面的提示,点击yes即可,5.2 EVC集成开发环境,如果没有错误,将在输入窗口(Output)中输出如下内容,在EVC中,创建可执行文件,5.2 EVC集成开发环境,在执行完后,会
12、出现下面的提示,在Workspace的存储目录下将生成hello.exe文件,5.2 EVC集成开发环境,运行程序 导出一个基于模拟器的WinCE界面 在开发工作站的C盘下创建soft目录,将C:testhelloemulatorDbg目录下的hello.exe拷贝到C:soft目录下 在Emulator的Emulator菜单下,选择Folder Sharing共享本机的目录,5.2 EVC集成开发环境,在共享目录中填入C:soft(或者使用浏览选择),在WinCE系统中打开“我的电脑”,选择Storage Card:,5.2 EVC集成开发环境,双击打开Storage Card,在双击hel
13、lo.exe执行即可,将看到Windows CE打开一个命令行窗口,打印一个Hello World之后退出 上述运行过程是通过路径共享的方式,使得WinCE系统能访问WinXP系统上的可执行文件 应用程序的执行有时候可以直接在EVC下的模拟器执行,但是它只适合调试基于emulator:X86编译的内核。所以,我们要用模拟器调试程序时,要注意先前开发过程中的SDK的配置以及编译平台的选择。当然,对于应用程序到开发板的调试,我们还可以用前面提到过的activesync工具,5.2 EVC集成开发环境,消息窗口的使用 下面的程序Welcome创建一个消息框而不是用printf来显示文字,5.2 EV
14、C集成开发环境,编译并运行Welcome,可以看到如图所示的小窗口:,MessageBox函数原型如下: int MessageBox (HWND hWnd, LPCTSTR lpText, LPCTSTR lpCaption, UINT uType); 第1个参数是顶层窗口的句柄,它是消息窗口的父窗口。目前我们把这个参数置为NULL,因为Welcome还没有任何其它窗口 第2个参数是准备显示在窗口里的文字。注意传入的字符串是用TEXT宏包裹的,确保它能够编译成Unicode版本 第3个参数lpCaption是显示在窗口标题栏的文字。最后一个参数uType是一系列标志位,规定消息框如何显示在屏
15、幕上。标志位规定了消息框中按扭的数量和类型,规定了图标的类型以及消息框窗口的风格设置,5.3 远程调试工具,EVC远程调试工具主要用于在开发平台与实际平台间执行一些调试工作 利用远程调试工具可以在开发平台运行,得到实际平台上的文件、监视实际平台上进程或线程的状况、测试实际平台上应用程序的性能等 一部分远程调试工具是我们在开发应用程序时常用的,还有一部分是开发内核时常用的,5.3 远程调试工具,远程调用评测程序(Remote Call Profiler) 远程调用评测程序包含评测和分析工具。利用图形图像显示出你的代码中算法的效率或者占用资源情况。远程调用评测程序包含一系列接口函数。在你想要评测的
16、代码中调用这些接口函数,然后运行你编写的程序。远程调用评测程序就能够接收你编写的程序的数据并记录。最后利用图形显示出来 通过实例hello来体验远程调用评测程序,5.3 远程调试工具,运行远程文件浏览程序,先弹出一个对话框,要选择访问哪个平台,如图所示 选择Default Device后。主窗口就显示出来了,如图所示。左边目录数列出的是模拟器运行的内核的所有目录。右边是指定目录下的文件。工具栏最右边是导入和导出按钮。这里的导入和导出是相对开发平台而言的,远程文件浏览程序(Remote File Viewer) 远程文件浏览程序是最常用、最易操作的工具之一。它的作用就是向实际平台导入或导出文件,
17、5.3 远程调试工具,要将一个位图文件传到模拟器中。先单击导出按钮(上箭头),在弹出的对话框中选择一个位图文件,确定后,这个文件就出现在远程文件浏览程序的右边文件窗口中了。导入也简单,先选择一个文件,再单击导入按钮,再选择路径,保存即可,5.3 远程调试工具,远程堆查看程序(Remote Heap Walker) 从名字就可以看出它是用来查看操作系统中每个进程使用的堆的情况 利用“远程堆查看程序”能够查看到:内核中正运行的进程的名字、ID、及使用的所有的堆的ID 如图所示进程的一个堆中的首地址、结束地址、及标志(Fixed、Free)堆中每块(Block)的实际内容,5.3 远程调试工具,CE
18、下每个进程启动时,系统会自动分配192KB的局部堆给这个进程。要是不够你就通过调用堆管理函数自己再分配自定义大小的堆。自己分配的堆,包括系统给你分配的堆,都由ID来标识 “Flag”只有一个值“HF32_DEFAULT”,表示系统默认分配的堆 图中的“device.exe”,有四个都一样。但从进程ID就可以看出这是一个进程,而不是一个应用程序的四个实例。因为列表是以堆为单位,“device.exe”分配了四个堆,就显示了四个 双击列表中任何一项,弹出这个堆的包含的块的列表。列出块的首地址、大小、标志。 我们分配了一个堆,就可以在堆中分配数组、结构等。这个块就指每个分配的元素。标志中“Fixed
19、”表示不能释放这个块占据的内存空间。而“Free”则相反,表示能够释放这个块占据的内存空间,5.3 远程调试工具,远程内核跟踪程序(Remote Kernel Tracker) 远程内核跟踪程序用于跟踪实际平台内核的执行情况,一般使用它跟踪内核的启动情况,搜集相关数据并在开发平台上以图表形式显示出来,5.3 远程调试工具,这个程序能够跟踪所有的进程和进程中的所有线程。从开始运行起跟踪,跟踪结束的时间由数据接收缓冲区的大小决定。缓冲区的大小从1MB到 100MB,由用户自己设定 跟踪内容为进程的运行、不运行,线程的运行、阻塞、睡眠。还有在线程中所有发生的同步事件 。在此程序的右边有所有能够跟踪的
20、事件对应的图标 个程序提供了查找功能和过滤功能。查找功能可以查找你想要找的事件,而过滤功能可以让此程序只记录你想要的事件,5.3 远程调试工具,远程性能监视程序(Remote Performance Monitor) 这个程序和其它Windows操作系统中附带的性能监视器界面非常相似 它能够监视Remote Access Server (RAS)、Internet Control Message Protocol (ICMP)、 TCP/IP、User Datagram Protocol (UDP)、Memory、Battery、System、Process、Thread,5.3 远程调试工具,远程进程浏览程序(Remote Process Viewer) 此程序共三个窗口,分别显示当前内核中所有进程、进程中的线程、及进程中所有加载的DLL 在显示进程的窗口中,分别显示进程名、进程 ID、基本优先级级别、拥有的线程总数、基地址、访问键值、主窗口名 在显示线程的窗口中,分别显示线程
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 基于共享经济的2025年民宿项目可持续发展可行性研究报告
- 企业通信费用管理办法
- 乡镇液化气站管理办法
- 企业标准实施管理办法
- 乳山教师管理办法细则
- 企业合同争议管理办法
- 冷链物流温控技术在冷链物流冷链物流企业冷链运输安全保障中的应用报告
- 丰都扶贫项目管理办法
- 企业宿舍职工管理办法
- 企业商标申请管理办法
- 全国广播电视技术能手调频与电视广播组题库
- 六西格玛(6Sigma)详解及实际案例分析
- 初中物理课程标准(2022版)测试题库附答案(物理新课程标准试题教师资格考试教师招聘考试试卷)
- 小学四年级下册《科学》期末考试质量分析
- 妇产科手术分级目录
- 2017版银皮书(中英文完整版)FIDIC设计采购施工交钥匙项目合同条件
- MT/T 467-1996煤矿用带式输送机设计计算
- GB/T 23776-2018茶叶感官审评方法
- GB/T 15972.4-1998光纤总规范第4部分:传输特性和光学特性试验方法
- 讲课儿童肺功能详解课件
- 沙迪克操作手册
评论
0/150
提交评论