450 likes | 741 Views
5 Windows CE 操作系统实验. 内容. 1 、 安装 Windows CE BSP 2 、 Windows CE 内核定制 3 、 WINCE 和桌面系统通讯 4 、 Windows CE 应用程序编写 5 、 Windows CE 驱动程序编写. 安装 Windows CE BSP. 1 、安装 Windows CE. 按照提示进行设置,并选择安装路径,安装过程请使用 “ Custom Setup ” ,并在 “ Custom Setup ” 对话框中按照下图进行设置。. 安装过程中请将系统中安装的杀毒软件关闭. 安装 WINDOWS CE 4.2 BSP.
E N D
内容 • 1、安装Windows CE BSP • 2、Windows CE内核定制 • 3、WINCE和桌面系统通讯 • 4、Windows CE应用程序编写 • 5、Windows CE驱动程序编写
安装Windows CE BSP • 1、安装Windows CE 按照提示进行设置,并选择安装路径,安装过程请使用“Custom Setup”,并在“Custom Setup”对话框中按照下图进行设置。 安装过程中请将系统中安装的杀毒软件关闭
安装WINDOWS CE 4.2 BSP • 1、只读属性一定要去掉,而且包括SMDK2410及其下所有目录和文件。 • 2、在WINDWOS 2000或者WINDOWS XP中请点击SMDK2410的右键菜单属性,如下图对话框中,去掉“只读”,并点击“确定”按钮。并在新弹出的对话框中选择“将更改应用于文件夹、子文件夹和文件”,并点击“确定”按钮。
Windows CE内核定制实验 • 1、特性安装(Catalog Installation) • 2、创建和编译新项目 • 3、运行image文件
特性安装(Catalog Installation) 点击Remove 点击Import 新增加的特性
创建和编译新项目 定制应用程序支持
创建和编译新项目 定制网络和通讯连接
点击”Build”->”Build Platform”菜单开始编译 创建和编译新项目 编译成功
创建和编译新项目 • 1、如果编译成功WINCE420\PUBLIC\SMDK2410\RelDir\SAMSUNG_SMDK2410_ARMV4Release目录下将生成nk.bin、nk.nb0等文件。
运行image文件 • 1、设置并建立tftp服务器 • 设置之前请将您的注意的IP地址修改为192.168.1.180。 • 下载和运行image文件需要首先在主机端建立tftp服务器,在Windows环境中建立tftp服务器请使用光盘中tools\tftpd32j\tftpd32.exe文件。运行后请点击“Browse”按钮选择tftp服务器目录,如图所示,设置d:\tftpboot\目录为tftp服务器根目录。
通过uboot下载nk.nb0 • 1、首先将nk.nb0拷贝到tftp服务器目录d:\tftpboot
WINCE端设置 • 1、运行WINCE • 2、按照如下提示在WINCE中进行设置: • 打开【我的电脑】->【控制面板】->【网络和拨号连接】->【新建连接】,并在“新建连接”设置对话框中,选择连接类型为“直接连接”,并点击“下一步”按钮。 • 系统将弹出一个“设备对话框”,在该对话框的“选择设备”下拉列表中选择“S3C2410 USB CABLE:”,然后点击“完成”按钮。这时将在“连接”中添加“我的连接”图标。
WINCE端设置 • 回到“控制面板”,点击【PC连接】图标,进入“PC连接属性”设置对话框,选中“启用与桌面计算机的直接连接”的复选框,然后再点击“更改连接”按钮,在“更改连接”设置对话框的下拉列表框中选择刚才建立的连接“我的连接”,然后按“OK”按钮退出。 • 注意: • (1) 如果此时触摸屏出现校准不正确的情况,请参考附录G进行触摸屏的校准工作。 • (2) 请使用光盘中的WINCE映象文件或者2.4节编译出来的映象文件,不能使用2.2节章中的映象文件,2.2中生成的映象文件有许多特性不支持,需要添加进去才可以。
activeSync安装 • 1、首先在主机端安装activeSync程序。该安装程序在WINCE420\tools目录下的MSASYNC.exe。双击该文件开始安装。
通讯 • 1、在我的电脑中双击“移动设备”将打开WINCE同步目录,可以和操作WINDOWS其它目录一样操作该目录,包括拷贝文件到该目录已经将文件从该目录拷贝到PC机。
下载并安装Microsoft eMbedded Visual C++ 4.0 • 1、下载Microsoft eMbedded Visual C++ 4.0: • 下载Microsoft eMbedded Visual C++ 4.0: • http://download.microsoft.com/download/WindowsCENETPlatformBuilder/Install/4.0/NT5XP/EN-US/eVC4.exe • 2、下载Microsoft eMbedded Visual C++ 4.0 SP4: • 请从如下地址下载Microsoft eMbedded Visual C++ 4.0 SP4: • http://download.microsoft.com/download/a/7/3/a735c7fb-dcbd-429f-9090-d09b3b15d3fa/evc4sp4.exe
下载并安装Microsoft eMbedded Visual C++ 4.0 • 3、安装Microsoft eMbedded Visual C++ 4.0 • 先将eVC4.exe解压缩。 • 然后执行解压后目录的setup.exe文件开始安装Microsoft eMbedded Visual C++ 4.0。安装之前必须已经正确安装PB4.2,且关闭了所有的PB程序。另外,请关闭norton等杀毒工具。安装过程建议使用缺省设置。安装过程请使用cdkey.txt文件中的cdkey。 • 执行sdk目录下的setup.exe文件开始安装Platform SDK。安装过程建议使用缺省设置。
下载并安装Microsoft eMbedded Visual C++ 4.0 • 4、安装Microsoft eMbedded Visual C++ 4.0 SP4: • 先将eVC4SP4.exe解压缩。 • 然后执行解压后目录的setup.exe文件开始安装Microsoft eMbedded Visual C++ 4.0 SP4。安装之前必须已经正确安装PB4.2以及Microsoft eMbedded Visual C++ 4.0,且关闭了所有的PB程序。另外,请关闭norton等杀毒工具。安装过程建议使用缺省设置。 • 5、检查安装: • 如果安装正确,如图所示执行开始菜单下的eMbedded Visual C++ 4.0
建立HelloWorld工程 选择WCE Application • 1、创建HelloWorld工程 • 选择File菜单的New菜单项,出现如下图所示对话框
建立HelloWorld工程 选择Build菜单下的Rebuild All菜单项对工程进行编译
下载并运行HelloWorld • 1、首先检查硬件连接,要求: • ▲ JXARM9-2410的UART0连接至计算机串口; • ▲ JXARM9-2410与计算机连接至局域网并建立tftp服务器。 • ▲ 将JXARM9-2410实验箱左上角的JP3和JP4跳线分别跳到右边(核心板一侧)。 • ▲ 用USB线将JXARM9-2410实验箱的SLAVE USB插座与计算机USB接口相连。 • 2、按照第二章的内容通过uboot下载nk.nb0,并运行WinCE image文件。运行的结果将在LCD上出现WINCE启动界面。
下载并运行HelloWorld • 3、按照“第3章”的内容实现WINCE和桌面系统之间的连接并正确安装activeSync。 • 4、如果连接正确,将上节生成的HelloWorld.exe文件拷贝到“移动设备”下的“My Documents”目录。如下面两图所示。
下载并运行HelloWorld • 5、此时HelloWorld.exe文件已经被拷贝到WINCE中,在WINCE中,点击“我的电脑”中的“My Documents”目录,如果已经存在HelloWorld.exe程序请双击该文件,将开始运行HelloWorld程序。 • 注意: • (1) 如果此时触摸屏出现校准不正确的情况,请参考附录G进行触摸屏的校准工作。 • (2) 请使用光盘中的WINCE映象文件或者2.4节编译出来的映象文件,不能使用2.2节章中的映象文件,2.2中生成的映象文件有许多特性不支持,需要添加进去才可以。
Windows CE驱动程序实验 • 1、WINCE驱动程序模型 • 2、本机设备驱动程序的系统结构 • 3、流接口驱动程序的系统结构 • 4、设备文件名 • 5、流接口驱动程序入口函数 • 6、流接口驱动程序开发 • 7、流接口驱动程序调用实例 • 8、运行
Windows CE驱动程序实验 • 1、本机设备驱动程序 • WINCE是可移植的,将它移植到目标平台上,必须为在平台上已建立的设备提供驱动程序。一些类型的设备,如键盘、显示器等,对操作系统都有一定的接口。因为这些接口是专门用于WINCE的,所以这类设备的驱动程序称作本机设备驱动程序。 • 2、流接口驱动程序 • 流接口驱动程序是一般类型的设备驱动程序。流接口驱动程序表现为在用户一级的动态链接库DLL,用来实现一组固定的函数称为流接口函数,这些流接口函数使得应用程序可以通过文件系统访问这些驱动程序。
GWES 设备管理器 DDI函数 流接口函数 DDI函数 设备驱动程序 单片设备驱动程序 设备驱动程序 MDD层 MDD层 DDSI函数 DDSI函数 PDD层 PDD层 硬件 本机设备驱动程序的系统结构 • 1、单片驱动程序和分层的驱动程序
流接口驱动程序的系统结构 • 1、流接口驱动程序是以动态链接库形式存在的,由设备管理器统一加载、管理和卸载。 • 2、为了与外围设备进行交互,流接口驱动程序通常使用本机设备驱动程序所提供的DDSI函数来使用本机设备驱动程序。 • 3、流接口驱动程序的主要任务就是把外设的使用传递给应用程序,这是通过把设备表示为文件系统的一个特殊文件实现的。对于串口1在用户级别的程序里面通常被描述为COM1。
设备文件名 • 1、在WINCE中应用程序通过文件系统里的特殊入口访问外围设备。WINCE中的文件系统代码包括那些识别特殊文件名并重定向IO操作到适当的流接口驱动程序的代码。 • 2、WINCE的设备文件名是由三个大写字母、一个数字和冒号组成的,例如“COM1:”。WINCE使用前面三个字母来识别与特殊流接口驱动程序相对应的特殊设备。文件名前缀存储在称作“Prefix”的注册表键值中,一般来说如果用户想生成自己的流接口驱动程序,就要指定这三个字母的前缀。它可以是任意三个字母。
设备文件名 • 3、WINCE设备文件名中的数字是用来区分由同一个流接口驱动程序管理的所有设备。设备管理器对索引的编号默认是从1到9,1用于第一个设备文件名,如果需要10个文件名可以把0也用上。
流接口驱动程序入口函数 • 1、每个流接口驱动程序必须实现一组标准的函数,用来完成标准的文件IO函数和电源管理函数,这些函数提供给WINCE内核使用。这些函数通常叫做流接口驱动程序的DLL接口。
流接口驱动程序入口函数 • 1、XXX_Open • 2、XXX_Close • 3、XXX_Init • 4、XXX_Deinit • 5、XXX_Read • 6、XXX_Write • 7、XXX_IOControl
流接口驱动程序开发 • 1、在EVC中新建一个工程
流接口驱动程序开发 • 1、编辑TestDRV.cpp • 2、新建并编辑TestDRV.def文件 • 3、编译工程 • 4、打开PB,并点击“Open Workspace”,选择第1章中的SMDK2410工程。目录为E:\WINCE420\PUBLIC\SMDK2410。 • 5、修改platform.bib文件 • 6、修改platform.reg文件 • 7、编译
流接口驱动程序调用实例 void CTestDRVDlg::OnBtnOpen() { // Open the device file hStr=CreateFile(TEXT("TST1"), GENERIC_READ|GENERIC_WRITE,0,NULL,OPEN_EXISTING,0,0); if(INVALID_HANDLE_VALUE==hStr) { ::MessageBox(NULL, _T("Cannot open TST1:"),_T("TestDRV"), MB_OK); }else { ::MessageBox(NULL, _T("Open TEST1: Succed"),_T("TestDRV"), MB_OK); } }
流接口驱动程序调用实例 void CTestDRVDlg::OnBtnClose() { if(hStr!=NULL) { CloseHandle(hStr); hStr=NULL; } }
流接口驱动程序调用实例 void CTestDRVDlg::OnBtnRead() { WCHAR wch[256]; DWORD dwBytesRead=256; memset(&wch, '\0', 256*sizeof(WCHAR)); ::ReadFile(hStr, wch, sizeof(wch), &dwBytesRead, NULL); ::MessageBox(NULL, wch, TEXT("TestDRV"), MB_OK); }
流接口驱动程序调用实例 void CTestDRVDlg::OnBtnWrite() { DWORD dwWritten=0; WCHAR* pString = TEXT("This is a test of WINCE device driver. This is only a test"); ::WriteFile(hStr, pString, (_tcslen(pString) + 1), &dwWritten, NULL); } void CTestDRVDlg::OnBTNIOControl() { ::DeviceIoControl(hStr, NULL, NULL, NULL, NULL, NULL, NULL, NULL); }
运行 • 1、将6.3节编译生成的nk.nb0下载到教学系统中运行。 • 2、拷贝6.4节编译生成的TestDRV.exe文件到WINCE的My Documents目录下,在WINCE420\image目录下有该文件,可以拷贝该文件到WINCE中。