XP+VS2008+MINI2440+ActiveSync 调试平台的建立(wince6.0)
因为要做一个基于wince的应用软件开发,没办法,又搞了一块mini2440.一开始用的是win7,开发板的同步驱动装上后,立刻蓝屏,重复4次后,无奈,重装xp。
NO1. 装xp,(若哪位win7上成功装好驱动的,请指教)
NO2. 将mini2440接到电脑,找到硬件后,手动找到驱动,地址为 x:\mini2440\windows平台工具\CE用同步USB驱动,会提示一个没有通过验证的驱动,安装就是了
NO3. 装Activesync,可以装mini2440光盘里的4.1 ,不过推荐安装最新的4.5;
NO4. 装好Activesync并接好开发板后,Activesync会提示找到新的设备并同步,不用管它,这说明你的pc已经认这个开发板了
NO5. 安装vs2008
NO6. 安装mini2440的sdk
NO7. 新建C#工程 智能设备项目-设备应用程序(目标平台 windowsce ,.net3.5)
NO8. 项目建立好后,右击方案资源管理器里的工程名,并选择更改目标平台,改为我们需要用的mini2440-ce6-sdk
NO9. 随便拉个框,或者按钮,然后点击调试吧,如果你的Activesync是亮的,表明当前连接正确,稍等一会儿就可以在mini2440上看到你写的应用程序了
点击此处下载 ourdev_540356.rar(文件大小:4.09M) (原文件名:Mini2440-CE6-SDK-20100204.rar)
点击此处下载 ourdev_540357.zip(文件大小:6.87M) (原文件名:ActiveSyncsetupchs.zip)
我写的一个测试的东西,没有意义。ourdev_540358.rar(文件大小:29K) (原文件名:HelloWorld.rar) mark 学习了,谢谢 mark mini2440带的WINCE有没有时间限制?
M网站的好象都有时间限制 标记 关注下文.... 学习,希望能把我带入WinCE的大门 NO1. 装xp,(若哪位win7上成功装好驱动的,请指教)
NO2. 将mini2440接到电脑,找到硬件后,手动找到驱动,地址为 x:\mini2440\windows平台工具\CE用同步USB驱动,会提示一个没有通过验证的驱动,安装就是了
NO3. 装Activesync,可以装mini2440光盘里的4.1 ,不过推荐安装最新的4.5;
NO4. 装好Activesync并接好开发板后,Activesync会提示找到新的设备并同步,不用管它,这说明你的pc已经认这个开发板了
NO5. 安装vs2008
NO6. 安装mini2440的sdk
NO7. 新建C#工程 智能设备项目-设备应用程序(目标平台 windowsce ,.net3.5)
NO8. 项目建立好后,右击方案资源管理器里的工程名,并选择更改目标平台,改为我们需要用的mini2440-ce6-sdk
NO9. 随便拉个框,或者按钮,然后点击调试吧,如果你的Activesync是亮的,表明当前连接正确,稍等一会儿就可以在mini2440上看到你写的应用程序了
你没有必要使用光盘带的驱动。 它好像可以自动网络搜索安装。我使用WIN7已经成功.
win7下不使用Activesync 换成了“设备中心”。如果你使用VS2008的话就不能使用PB6。
现在我就遇到一个难题如果你使用C#写程序。但是现在几乎没有那个书介绍使用c#开发WINCE的。 mark PB 6.0 is a snap-in for Studio '05 only.It will not work with Studio '08.
Studio '05 and '08 can coexist. 楼主和7楼朋友,为什么我的电脑装不上USB驱动呢,能不能把你们的驱动传上来,我是在XP环境下,S3C2440A,谢谢。
我的邮箱:polite_ncepu@QQ.com 点击此处下载 ourdev_540526.rar(文件大小:16K) (原文件名:CE用同步USB驱动.rar) 9楼: 谢谢你的提醒,我暂时只是开发应用程序,而bsp,sdk这些mini2440都提供了,所以我没有安装vs2005.
【7楼】 bynce 罗曼: c#的开发和上位机差不多,就是库精简了,你看看msdn,估计很快就能入门了,最困难的是如何通过c#进行硬件设备的使用,这个我今天看了一天的资料,学了一点 流驱动的毛皮,你也看看,最好对照着mini2440bsp下面的驱动文件一起看,不是很难。
WinCE流驱动基础知识小结
1、基础知识:
1)系统调用是操作系统内核和应用程序之间的接口,设备驱动程序是操作系统内核和机器硬件之间的接口。设备驱动程序为应用程序屏蔽了硬件细节,在应用程序看来硬件只是一个设备文件,应用程序可以像操作普通文件一样对硬件设备进行操作。设备驱动是内核的一部分。
2)驱动程序完成以下功能:
——对设备初始化和释放;
——把数据从内核传送到硬件和从硬件读取数据;
——读取应用程序传送给设备文件的数据和回送应用程序请求的数据;
——检测和处理设备出现的错误。
3)上层应用程序运行在用户模式(非特权模式,Ring 3),代码被严格约束执行。如不能执行硬件IO指令。所有的这些被阻止的操作如果想运行必须通过陷阱门来请求操作系统内核。
4)操作系统内核运行在内核模式(特权模式,Ring 0),可以执行所有有效的CPU指令。包括IO操作,可访问任何内存区。
5)整个硬件系统资源在驱动程序面前是赤裸裸的,驱动可以使用所有系统资源,编写驱动程序时我们必须格外小心驱动代码的边界条件,确保它们不会损坏整个操作系统。
2、Windows支持的驱动:
1)虚拟设备驱动程序(Virtual Device Driver):Windows3.1(Windows95/98/Me)
2)内核模式驱动程序(Kernel Mode Driver):Windows NT
3)Win32驱动程序模型(Win32 Driver Mode):从Windows98开始使用。
其中WDM是目前主流,然而在WinCE系统中,由于硬件资源有限和嵌入式系统的特点,对其的支持非常有限。
3、WinCE系统驱动简介:
1)WinCE毕竟是一个嵌入式系统,有其自身的特殊性,为了提高运行效率,所有驱动皆为动态链接库,驱动实现中可以调用所有标准的API。而在其他Windows系统中可能的驱动文件还有.vxd, .sys和动态链接库。
2)WinCE驱动从结构上讲分为本地驱动(Native Driver)和流接口驱动(Stream Driver)。
——本地驱动主要用于低级、内置的设备。实现它们的接口并不统一,而是针对不同类型的设备相应设计。因此开发过程相对复杂,没有固定的模式,一般做法是通过移植、定制现有的驱动样例来实现。
——流接口驱动是最基本的一种驱动结构,它的接口是一组固定的流接口函数,具有很高的通用性,WinCE的所有驱动程序都可以通过这种方式来实现。流接口驱动程序通过文件系统调用从设备管理器和应用程序接收命令。该驱动程序封装了将这些命令转换为它所控制的设备上的适当操作所需的全部信息。
流接口驱动是动态链接库,由一个叫做设备管理程序的特殊应用程序加载、管理和卸载。与本地驱动程序相比,所有流接口驱动程序使用同一组接口函数集,包括实现函数:XXX_Init、XXX_Deinit、XXX_Open、XXX_Close、XXX_Read、XXX_Write、XXX_PowerUp、XXX_PowerDown、XXX_Seek、XXX_IOControl,这些函数与硬件打交道。用户函数:CreateFile、DeviceIoControl、 ReadFile、 WriteFile,这些函数方便用户使用驱动程序。
3)WinCE下驱动的加载方式:
——通过GWES(Graphics, Windowing, and Events Subsystem):主要加载与显示和输入有关的驱动,如鼠标、键盘驱动等。这些驱动一般为本地驱动。
——通过设备管理器:两种结构的驱动都加载,加载的本地驱动主要由PCMCIA Host Controller,USB Host Controller driver,主要是总线类的驱动;流接口驱动主要有音频驱动,串并口驱动。
——动态加载:前两者都是系统启动时加载的,动态加载则允许设备挂载上系统时将驱动调入内核,主要有外接板卡驱动,USB设备驱动等。
4、流接口驱动函数介绍:
1)DWORD XXX_Init(LPCTSTR pContext, LPCVOID lpvBusContext);
pContext:指向一个字符串,包含注册表中该流接口活动键值的路径
lpvBusContext:此参数是被处理过的一个指针数据,由函数ActiveDeviceEx 的第四参数 lpvParam传递而来(若该对应的驱动由ActiveDeviceEx 调用而加载则lpvBusContext被传递过来,否则为0)
该函数是驱动挂载后第一个被执行的。主要负责完成对设备的初始化操作和驱动的安全性检查。由ActiveDeviceEx通过设备管理器调用。其返回值一般是一个数据结构指针,作为函数参数传递给其他流接口函数。
2)BOOL XXX_Deinit(DWORD hDeviceContext);
hDeviceContext:XXX_Init的返回值。
整个驱动中最后执行。用来停止和卸载设备。由DeactivateDevice触发设备管理器调用。成功返回TRUE。
3)DWORD XXX_Open(DWORD hDeviceContext, DWORD AccessCode , DWORD ShareMode);
hDeviceContext:XXX_Init的返回值。
AccessCode:访问模式标志,读、写或其他。
ShareMode:驱动的共享方式标志。
打开设备,为后面的操作初始化数据就够,准备相应的资源。应用程序通过CreateFile函数间接调用之。返回一个结构指针,用于区分哪个应用程序调用了驱动,这个值还作为参数传递给其他接口函数XXX_Read、XXX_Write、XXX_Seek、XXX_IOControl。
4)BOOL XXX_Close(DWORD hOpenContext);
hOpenContext:XXX_Open返回值。
关闭设备,释放资源。由CloseHandle函数间接调用。
5)DWORD XXX_Read(DWORD hOpenContext, LPVOID pBuffer, DWORD Count);
hOpenContext:XXX_Open返回值。
pBuffer:缓冲区指针,接收数据。
Count:缓冲区长度。
由ReadFile函数间接调用,用来读取设备上的数据。返回读取的实际数据字节数。
6)DWORD XXX_Write(DWORD hOpenContext, LPCVOID pBuffer, DWORD Count);
hOpenContext:XXX_Open返回值。
pBuffer:缓冲区指针,接收数据。
Count:缓冲区长度。
由WriteFile函数间接调用,把数据写到设备上,返回实际写入的数据数。
7)BOOL XXX_IOControl(DWORD hOpenContext, DWORD dwCode, PBYTE pBufIn,DWORD dwLenIn, PBYTE pBufOut, DWORD dwLenOut, PDWORD pdwActualOut);
hOpenContext:XXX_Open返回值。
dwCode:控制命令字。
pdwActualOut:实际输出数据长度。
用于向设备发送命令,应用程序通过DeviceIoControl调用来实现该功能。要调用这个接口还需要在应用层和驱动之间建立一套相同的命令,通过宏定义CTL_CODE(DeviceType, Function, Method, Access来实现。如:
#define IOCTL_INIT_PORTS \ CTL_CODE(FILE_DEVICE_UNKNOWN,0X801,METHOD_BUFFERED,FILE_ANY_ACCESS)
8)void XXX_PowerDown(DWORD hDeviceContext);
hDeviceContext:XXX_Init的返回值。
负责设备的上电控制。
9)void XXX_PowerUp(DWORD hDeviceContext);
hDeviceContext:XXX_Init的返回值。
负责设备的断电控制
10) DWORD IOC_Seek(DWORD hOpenContext, long Amount, WORD Type)
hOpenContext:XXX_Open返回值。
Amount:指针的偏移量。
Type:指针的偏移方式。
将设备的数据指针指向特定的位置,应用程序通过SetFilePointer函数间接调用。不是所有设备的属性上都支持这项功能。
5、流接口驱动的加载和注册表设置:
系统启动时启动设备管理程序,设备管理程序读取HKEY_LOCAL_MACHINE\Drivers\BuiltIn键的内容并加载已列出的流接口驱动程序。因此注册表对于驱动的加载有着关键作用。下面是一个例子:
【HKEY_LOCAL_MACHINE\Drivers\BuiltI\IOControler】
“Prefix”=”XXX”
“Dll”=”drivername.dll”
其中,“Prefix”=“XXX”中的XXX要和XXX_Init等函数中的一样。CreateFile创建的驱动名前缀也必须和它们一致。
6、驱动程序的编写、编译及其相关目录、配置文件的格式和修改:
1)首先必须在PB相应平台的的driver目录下建立要创建的驱动所在的目录。如在x:\Wince420\platform\smdk2410\drivers目录下建立一个IOCtrol目录。
2)修改Drivers目录下的dirs文件。
3)创建驱动源文件XXX.c,在该文件中实现上述流接口函数。并且加入DLL入口函数:
BOOL DllEntry(HINSTANCE hinstDll, /*@parm Instance pointer. */
DWORD dwReason, /*@parm Reason routine is called. */
LPVOID lpReserved /*@parm system parameter. */
)
4)创建Makefile和Sources和.def文件,控制编译。
5)使用CEC Editor修改cec文件,编译添加的新特性。
注:此文为转载网络的文章,在此谢谢原作者。 mark 我也上传一个资料吧。 关于C#开发WINCE
点击此处下载 ourdev_540648.pdf(文件大小:160K) (原文件名:csharp_factor_1.pdf)
点击此处下载 ourdev_540649.pdf(文件大小:180K) (原文件名:csharp_factor_2.pdf)
点击此处下载 ourdev_540650.pdf(文件大小:196K) (原文件名:csharp_factor_03.pdf) Mark一下…… 【14楼】 bynce 罗曼
能将你win7下的驱动给我一份吗? 我只能显示一个generic USB serial 搞定,在win7下,先安装设备中心,然后接上开发板后,会自动识别的
点击此处下载 ourdev_540715.rar(文件大小:12.02M) (原文件名:drvupdate-x86.rar) 我怎么给你呀。 我从网络上自动安装 【18楼】 bynce 罗曼
搞定了! 嘿嘿! 谢啦! 调试的不错 kankan 不知为什么,我装sdk总报错 MARK 正需要的资料 学习 mark mark hao!!! mark 非常不错,过几天试试看 mark ok,mark下 用Delphi连ce的导航仪连接成功传上一演示窗口后发现界面难调得美现就放弃了 mark 我的SDK不能再win7上成功安装呢 mark WinCE的文,先mark下,谢谢楼主! WinCE的文,先mark下,谢谢楼主! WinCE的文,先mark下,谢谢楼主! ..........mark too 好东西 mark 学习! 楼主有一个问题请教一下,我在友善上下载的WINCE5.0(wince5-images-20100204版本)的,安装到MINI2440上,然后用VS2008写程序,在调试时,部署报错,如下图
http://cache.amobbs.com/bbs_upload782111/files_42/ourdev_656911PY2PUI.jpg
调试时部署出错。 (原文件名:41_6655_c3d3738de2bf937.jpg)
然后我又去下载了个WINCE6.0的(wince6-images-20100109和mini2440-ce6-image-ch-20110421的2个版本),在烧录后,板子自己启动进入WINCE,调试VS程序也没有问题,但是重启后,从NAND启动,死活启动不了,一直停在开机进度条上,进度条加载完成。我想是不是友善提供的这个文件都是有问题的,原来的光盘带的和从网站上下都是有问题调试VS都部署出错。
楼主有碰到过吗?
能否把你的WINCE的BIN文件传一份上来我试试,谢谢了。 mark cool 先标记!谢谢楼主! mark 不错 mark 现在还是使用2440的新手,将来希望能做成WINCE上的监控系统。 不错,非常好,学习了 记录一下,还不会搭建
页:
[1]