开发wince驱动步骤
WINCE 流接口驱动程序开发
![WINCE 流接口驱动程序开发](https://img.taocdn.com/s3/m/071fcec4bb4cf7ec4afed028.png)
Softeem Consultancy Service
BOOL XXX_Deinit(DWORD hDeviceContext); ; 参数: hDeviceContext 参数 由XXX_Init创建时生成的设备句柄 创建时生成的设备句柄 . 返回值:调用成功 返回TURE,调用失败 返回FALSE. 返回值 调用成功,返回 调用失败,返回 调用成功 返回 调用失败 返回 当用户需要卸载一个驱动程序时,设备管理器会调用这个 描 述:当用户需要卸载一个驱动程序时 设备管理器会调用这个 当用户需要卸载一个驱动程序时 函数来卸载这个驱动程序.应用程序不能直接调用这个函数 设备 函数来卸载这个驱动程序 应用程序不能直接调用这个函数,设备 应用程序不能直接调用这个函数 管理器通过DeactivateDevice()函数来调用这个函数 函数来调用这个函数. 管理器通过 函数来调用这个函数 DWORD XXX_Open(DWORD hDeviceContext, DWORD AccessCode , DWORD ShareMode); ; 参数:hDeviceContext XXX_Init的返回值. 的返回值. 参数 的返回值 AccessCode 访问模式标志,读,写或其他. 访问模式标志 读 写或其他. ShareMode:驱动的共享方式标志 例如串口通迅中将设备 :驱动的共享方式标志,例如串口通迅中将设备 设置为可读可写模式. 设置为可读可写模式. 返回值:返回驱动程序引用实例句柄 返回驱动程序引用实例句柄. 返回值 返回驱动程序引用实例句柄 描述:本函数用于打开一个设备驱动程序 当应用程序准备对某一 描述 本函数用于打开一个设备驱动程序,当应用程序准备对某一 本函数用于打开一个设备驱动程序 个设备进行读或写操作时,应用程序必须先执行 应用程序必须先执行CreateFile()函数 个设备进行读或写操作时 应用程序必须先执行 函数 用于打开这个设备.本函数执行了以后 系统才能执行读写操作. 本函数执行了以后,系统才能执行读写操作 用于打开这个设备 本函数执行了以后 系统才能执行读写操作
wince系统开发实验三
![wince系统开发实验三](https://img.taocdn.com/s3/m/b1f95471453610661fd9f43e.png)
w i n c e系统开发实验三 Document number【AA80KGB-AA98YT-AAT8CB-2A6UT-A18GG】实验三、W i n d o w s C E驱动开发一、实验目的1、学会使用WinCE 操作系统开发工具2、熟悉开发环境3、了解嵌入式系统驱动开发的基本思想和开发过程二、实验内容学习使用Platform Builder 4.2 集成开发环境,建立流驱动程序。
了解WinCE 基本系统体系架构了解WINDOWS CE系统设备驱动基础知识和方法学习使用Platform Builder 4.2 集成开发环境,建立流驱动程序三、预备知识C 语言基本知识,设备驱动基础知识和方法,WinCE 基本系统体系架构。
四、实验设备及工具硬件:PC 一台P3 以上(内存不小于384MB,安装完工具硬盘空间不得小于600M)、ARM9实验箱(包含NETARM2410-S 实验板、JTAG 仿真器、各种串口线、并口线、网线、光盘等)一台。
软件:PC 操作系统Win2000 以上、ADS1.2 集成开发环境、Platform Builder 4.2 版本、Source Insight3.0。
五、实验原理及说明1、WinCE 驱动程序架构目前WinCE 拥有两种驱动架构模型,一种是本机设备驱动,另一种是流接口设备驱动。
其中本机设备驱动已经被Microsoft 开发并由系统直接支持,由GWES (图形窗口及事件子系统)统一管理和加载;流驱动则是由WinCE 设备管理器来管理的。
这种组织形式相对于UNIX体系来说是比较复杂的。
本机设备驱动适合于集成到CE 平台的设备。
例如电源驱动,它们已经成为了GWES 的一部分,不表现为单个的DLL 使用。
这些驱动程序通常和系统有着较为紧密的联系,所以通常是和系统一起加载的。
流设备驱动由于具有较好的可移植性和可扩展性,被设备管理器独立出来管理统筹。
在本实验中,将以一个示例的流驱动演示程序来讲述简单驱动的工作。
WINCE驱动程序快速入门
![WINCE驱动程序快速入门](https://img.taocdn.com/s3/m/63fddd0416fc700abb68fccb.png)
WINCE驱动程序快速入门有人也许和我一样比较心急,想尽快知道如何去写一个具体的驱动程序,这里,假设您对驱动程序已经有比较好的了解,告诉大家一个快速上路的方法。
当然,如果您有足够的时间我建议在动手之前还是深入了解一下CE整个系统架构。
在CE中,最简单的一个驱动程序莫过于一个内置(Built-in)设备的流接口驱动。
对于一个不支持热拔插的设备,最快捷的方法就是为其实现一个内置的流接口的驱动。
对于这样一类驱动程序,我们只需要按一种特定的规则实现一个动态库,其中实现对所有的硬件功能的调用,再将这个动态库加入系统中,然后设置相关的注册表项,使得在系统启动时设备管理器能识别并且加载这个设备即可。
3〃1 实现动态链接库此动态链接库与应用程序层所用的库并不很大差别,源文件可以是C、C++、甚至汇编,,只是它要实现以下函数。
DllEntry(HINSTANCE DllInstance, INT Reason, LPVOID Reserved )这个函数是动态链接库的入口,每个动态链接库都需要输出这个函数,它只在动态库被加载和卸载时被调用,也就是设备管理器调用LoadLibrary而引起它被装入内存和调用UnloadLibrary将其从内存释放时被调用,因而它是每个动态链接库最早被调用的函数,一般用它做一些全局变量的初始化。
参数:DllInstance:DLL的句柄,与一个EXE文件的句柄功能类似,一般可以通过它在得到DLL 中的一些资源,例如对话框,除此之外一般没什么用处。
Reason: 一般我们只关心两个值:DLL_PROCESS_ATTACH与DLL_PROCESS_DETACH,Reason等于前者是动态库被加载,等于后者是动态库被释放。
所以,我们可以在Reason等于前者是初始化一些资源,等于后者时将其释放。
DWORD XXX_Init(LPCTSTR pContext,LPCVOID lpvBusContext);它是驱动程序的动态库被成功装载以后第一个被调用的函数。
实验五WinCE中的驱动程序开发
![实验五WinCE中的驱动程序开发](https://img.taocdn.com/s3/m/0f08030790c69ec3d5bb75bd.png)
WinCE中的驱动程序开发一.实验目的1、熟悉WinCE中流式接口驱动程序的12个接口的功能。
2、掌握流式驱动程序的工作过程。
3、能够编写出流式接口的驱动程序。
二.实验内容使用VS2005的智能设备应用程序开发方法,进行网络通信的编程,并通信多线程技术实现服务器与客户端之间的文件传输。
三.实验设备及工具硬件:PC机一台;软件:Windows XP操作系统,VS2005开发环境,WinCE 6.0开发环境,或Windows Mobile 5.0 SDK四.实验步骤及说明(1)写出流式接口驱动程序的12个接口,及每个接口的功能。
答:见教材515页(2)写出流式驱动程序的工作过程。
答:第一步:加载驱动程序,主要有两种加载方式:(1)当系统启动时,设备管理器搜寻注册表的HKEY_LOCAL_MACHINE\Drivers\BuiltIn键下面的子键,并逐一加载该子键下的每一个驱动,此过程称为BusEnum;(2)应用程序可调用ActivateDeviceEx()函数动态地加载驱动程序。
第二步:设备管理器从注册表的dll键值中获取驱动程序所在的DLL文件名。
第三步:设备管理器调用LoadDriver()函数把该DLL加载到自己的虚拟地址空间中。
第四步:设备管理器在注册表的HKEY_LOCAL_MACHINE\Drivers\Active下,记录所有已经加载的驱动程序。
第五步:设备管理器调用驱动程序中的COM_Init函数,并把上一步中添加的注册表项的完整路径作为COM_Init函数的第1个参数传入驱动程序内。
第六步:在COM_Init中,通常须对硬件进行一些最基本的初始化操作。
通过以上的操作完成流式驱动程序的加载任务。
对驱动程序的操作:第一步:应用程序使用该设备。
首先,应用程序调用CreateFile(TEXT(“COM1”)….)打开设备。
然后,文件系统判断打开的是文件还是设备。
最后,如果打开的是设备,就将控制权交回设备管理器。
实验3-驱动程序开发实验指导书
![实验3-驱动程序开发实验指导书](https://img.taocdn.com/s3/m/01524e8883d049649b665854.png)
Wince驱动开发实验1实验1:Wince驱动开发实验1.1 目标:在这个实验中,您将学会使用Platform Builder开发环境开发wince驱动程序,开发出来的驱动程序会编译成dll形式,加载进操作系统以后,会随着上层应用程序的触发而执行相应动作。
●创建并编译驱动程序●加载进系统内核●创建应用程序触发驱动程序动作1.2 预备知识:●熟悉Windows CE的内核定制,pb下最简单的应用程序开发(console类型)。
1.3 实验预计时间:80-120分钟1.4 实验步骤:1.4.1使用New Platform Wizard创建平台(如果以前建立过内核,此步骤可略过。
注意:一定要定制成中文的,否则驱动里面会显示乱码)1.打开Platform Builder。
2.选择“File”菜单中的“New Platform…”,弹出“New Platform Wizard”向导。
3.“New Platform Wizard - Step1”:选择“Next”。
4.“New Platform Wizard - Step2”:选择“EMULATOR:X86” BSP,按“Next”按钮继续。
5.“New Platform Wizard - Step3”:在“Available configurations”中选择“internet appliance”,在Location中输入“D:\”,在“Platform name”中输入工程名,比如“MyPlatform”,按“Next”继续。
6.“New Platform Wizard – Step4”:按“Next”继续。
7.“New Platform Wizard – Step5”:按“Finish”结束平台创建。
1.4.2配置和编译平台(如果pc机上面已经编译过平台并能启动起来,此项略过)1.选择“target”菜单的“connectivity option…”项。
Wince6.0驱动开发
![Wince6.0驱动开发](https://img.taocdn.com/s3/m/2560b76a7e21af45b307a82f.png)
Wince6.0驱动开发(1) 在WINCE600\PLATFORM\LPC32XX \SRC\DRIVERS目录下新建一个目录MyDriver.(2) 在MyDriver目录下新建5个文件。
a) MyDriver.c 实现流接口函数的具体代码。
b) MyDriver.h 为MyDriver.h的头文件。
c) MyDriver.def 定义导出的函数名称。
d) makefile 与其它驱动的相同,不用改。
e) sources 链接和编绎文件。
(3) 前缀定义为MYD(4)文件内容完成后,在平台的“解决方案”的界面下,寻找FLATFORM\LPC32XX\src\drivers\MyDriver,然后单击鼠标右键,在弹出的菜单中选择“Build”,开始编绎驱动,完成后,在WINCE600\PLATFORM\LPC321XX\target\ARMV4I\retail下可找到MyDriver.dll.(5) 驱动加载的方法:手动,自动。
这里介绍自动加载的方法:a) 在MyDriver目录的位置找到dirs文件,在该文件中插入一行mydriver (都为小写),并在上一行后加“\”。
b) 在平台的“解决方案”的界面下,寻找FLATFORM\LPC32XX\Parameter Files\platform.bib.打开此文件,在相关位置添加mydriver(_FLATRELEASEDIR)\mydriver.dll NK SHK SHK指明该文件的属性,S—系统文件,H—隐藏文件,K—在内核中的位置固定。
c) 在Platform.req文件中相关位置添加程序如下:;MyDriver[HKEY_LOCAL_MACHINE\Drivers\BuiltIn\MYD]“Prefix”=”MYD”“Dll”=”MyDriver.dll”“FriendlyName”=”Wangcong’s Driver”“Index”=dword:1“order”=dword:0d) 选择菜单“生成”“生成解决方案”,生成新的操作系统镜像。
Win CE驱动程序开发及测试流程
![Win CE驱动程序开发及测试流程](https://img.taocdn.com/s3/m/794160f028ea81c758f578ee.png)
6、ห้องสมุดไป่ตู้模拟器下面调试驱动程序
内核编译完毕后就可以在模拟器下面调试的驱动程序了, 首先单击菜单中的 “Target”并在弹出的菜单中选择“Configure Remote connection” ,弹出“Remote connection”设置对话框如图 9.8 所示。
图 9.8 “Remote Connection”属性对话框 在“Download”和“Kernel”下面都选择“Emulator”选项,设置完毕后单 击“确定”按钮,这个时候就可以使用模拟器来启动编译的内核了。单击菜单中 的“Target” ,在弹出的菜单中选择“Download Initialize” ,启动模拟器运行编 译的内核,这个时候就可以在 Debug 窗体内看到流接口驱动程序加载的情况 了。 打开 Remote Process Viewer, 定位到 device.exe, 从图 9.9 可以看到 mydriver.dll 已经在 device.exe 的模块列表中了。这说明 mydriver.dll 已经被作为一个驱动加 载了。
增加对驱动程序进行操作的函数,代码如下:
void WriteToDriver( ) { DWORD dwWritten; TCHAR *tcString=L"Demo String..."; HANDLE hDrv=CreateFile(L"DEM1:",GENERIC_WRITE,0,NULL,OPEN_EXISTING,FILE_ ATTRIBUTE_NORMAL,NULL); if (INVALID_HANDLE_VALUE == hDrv) { OutputDebugString(L"Failed to open Driver...\n"); } else { WriteFile(hDrv,(LPVOID)tcString,lstrlen(tcString)*sizeof(TCHAR ),&dwWritten,NULL); } CloseHandle(hDrv); } void ReadFromDriver( ) { DWORD dwRead; TCHAR tcTemp[30]; HANDLE hDrv=CreateFile(L"DEM1:",GENERIC_READ,0,NULL,OPEN_EXISTING,FILE_A TTRIBUTE_NORMAL,NULL); if (INVALID_HANDLE_VALUE == hDrv) { OutputDebugString(L"Failed to open Driver...\n"); } else { memset(tcTemp,0x00,30*sizeof(TCHAR)); ReadFile(hDrv,tcTemp,30,&dwRead,NULL); MessageBox(NULL,tcTemp,L"Demo Data",MB_OK); } CloseHandle(hDrv); } void HandleIOCTL( ) { HANDLE hDrv=CreateFile(L"DEM1:",GENERIC_WRITE,0,NULL,OPEN_EXISTING,FILE_ ATTRIBUTE_NORMAL,NULL); TCHAR tcBuffer[10];
wince流驱动的编写
![wince流驱动的编写](https://img.taocdn.com/s3/m/59e1ce08bb68a98271fefa25.png)
wince流驱动的编写驱动程序:就WINCE来讲,驱动程序抽象后的本质:向一定规则的框架中添加相应的代码,框架是指留给操作系统的一个接口;代码是指针对正确的硬件在正确的时间向正确的寄存器写入正确的值。
接口函数的调用顺序:XXX_Init()XXX_Open()XXX_IOControl()XXX_Read()XXX_Write()…..XXX_Close()流驱动的建立:一个流驱动程序至少需要包含.cpp、.def 、Makefile 、sourse、.reg、.bib.cpp是驱动源码,其中包含了所需要的头文件的调用、驱动代码和驱动接口。
.def提供驱动接口,内容大致如下:LIBRARY GPIOdriverEXPORTSxxx_Closexxx_Deinitxxx_Initxxx_IOControlxxx_Openxxx_PowerDownxxx_PowerUpxxx_Readxxx_Seekxxx_Writemakefile的内容大致如下:!INCLUDE $(_MAKEENVROOT)\makefile.def。
sources的内容包含:RELEASETYPE=PLATFORMTARGETNAME=生成动态库的名称TARGETTYPE=DYNLINKTARGETLIBS= $(_COMMONSDKROOT)\lib\$(_CPUINDPATH)\coredll.lib \INCLUDES= $(_TARGETPLATROOT)\src\inc; \$(_COMMONOAKROOT)\inc; \$(_PUBLICROOT)\common\oak\inc;$(_PUBLICROOT)\common\sdk\inc;$(_PUBLICROOT)\common\ddk\inc; \..\..\incSOURCES= \xxxDriver.cpp.reg文件,包含如下代码:[HKEY_LOCAL_MACHINE\Drivers\BuiltIn\驱动名]"Prefix"="前缀""Dll"="xxxdriver.dll".bib文件,包含以下代码:驱动动态库文件$(_FLATRELEASEDIR)\ 驱动动态库文件NK SH我做mydrivers GPIO驱动的过程:1.在BSP包的Drivers目录下新建一个名为“mydrivers”的目录,并进入到该目录下。
Windows CE下驱动程序开发基础
![Windows CE下驱动程序开发基础](https://img.taocdn.com/s3/m/0bd6256ba5e9856a57126030.png)
Windows CE 下驱动程序开发基础文/付林林这是我从1 月6 日开始主持天极网论坛嵌入式开发版以来第一次发表文章,加上以前琐碎的文章共计30 篇。
研究的越多就越感觉自己懂的太少,其实在驱动开发方面我还是个菜鸟,我是想再次抛砖引玉,让做驱动有N 年经验的人奉献一点出来,让大家减少一些研究驱动源码而又缺少注释所带来的痛苦。
我想即使读者看过微软的关于驱动开发的培训教材和CE 帮助文档中的驱动部分,头脑中仍然一片茫然。
要想真正了解驱动程序必须结合一些驱动程序源码,在此我以串口驱动程序(COM16550)中初始化过程为线索简单讲一讲驱动开发的基础知识。
Windows CE 下的串口驱动程序能够处理所有I/O 行为类似串口的设备,包括基于16450、16550 UART(通用异步收发芯片)的设备和一些采用DMA 的设备,常见的有9 针串口、红外I/O 口、Modem 等。
在%_WINCEROOT%PublicCommonOAKDriversSerial 目录下,COM_MDD2 子目录包含新的串口驱动MDD 层函数代码。
COM16550 子目录包含串口驱动PDD 层代码。
SER16550 子目录包含的一系列函数专用于控制与16550 兼容的UART,这样PDD 层的主要工作就是调用SER16550 中的函数。
还有一个ISR16550 子目录包含的是串口驱动程序专用的可安装ISR(中断服务例程),而很多硬件设备驱动程序采用CE 默认的可安装ISR giisr.dll。
一般串口设备相应的注册表设置例子及意义如下:SysIntr 由CE 在文件Nkintr.h 中预定义,用于唯一标识中断设备。
OEM 可以在文件Oalintr.h 中定义自己的SysIntr。
常见的预定义SysIntr 有SYSINTR_NOP(中断只由ISR 处理,IST 不再处理),SYSINTR_RESCHED(重新调度线程),SYSINTR_DEVICES(由CE 预定义的设备中断ID 的基值),。
wince驱动快速编译的方法
![wince驱动快速编译的方法](https://img.taocdn.com/s3/m/8255e711f18583d049645967.png)
wince驱动快速编译的方法creatorsz111@这段时间在学习wince驱动开发,但是每次wince编译都要很久,浪费很多时间。
经过网上搜索和自己摸索,发现了两个不错的方法。
编译驱动更新程序都是非常的快。
1.单独编译驱动,然后再build os菜单下,选择make run-time image(这个仅仅需要1分钟左右时间)单独编译驱动的方法如下:1).在build os菜单下进入open release dictionary,然后再进入你的驱动的目录,执行build就ok。
如果是第一次加入驱动,需要改动reg文件和bib文件,这个修改后要copy到Release 目录下,如果加入应用程序,也可以一起copy到这个目录下面。
2).按make run-time image就生产nk文件了。
2这一种方法更方便。
是网上一位大哥写的。
并且还专们写了一个程序,当然如果不写程序的话,也可以通过应用程序实现。
我在wince5测试ok。
文章我直接贴过来了:Windows CE下流驱动的动态加载我想很多WinCE的开发人员,尤其是刚入门并且做驱动开发的工程师,都曾碰到这样一个问题,要编写一个外围设备的驱动,拿最简单的GPIO驱动来说,编写驱动本身可能只花了一会儿功夫,可要把编译生成的DLL打包到先前做好的操作系统映像当中,最简单也得MakeImg一下,还要修改BIB文件、注册表文件,以让系统启动的时候就加载该驱动,所有工作都做完了,还得花几分钟下载整个操作系统到内存去运行,这也得要个好几分钟。
能力强的人一次成功,不走回头路也就算了。
如果驱动编写得有问题,那又得改代码,重新编译,把刚刚所做的事情再做一遍。
说出来不怕大家笑话,我刚开始做驱动时就这样,反反复复,半天下来,才调试好一个简单的驱动。
而事实上很大一部分时间都浪费在重复操作上。
这种调试驱动的方法实在效率太低了。
想到Linux下面的驱动调试,多方便!直接INSMOD一下,应用程序就可以调用,出现问题就RMMOD,根本无须来回倒腾操作系统的映像文件。
WINCE编写驱动程序
![WINCE编写驱动程序](https://img.taocdn.com/s3/m/8ea9482b647d27284b735120.png)
WINCE编写驱动程序(原创)转/lxzznn/blog/item/d5308ccbbdb56f1abf09e690.htmlWINCE添加驱动程序,目的为响应S3C2410的EINT7中断,使用了rGB2作为LED状态输出1.Kernel\Hal\cfw.cOEMInitInterrupts()使能EINT7、LED(Output)、触发方式2.Inc\oalintr.h(Inc\oalintr.inc)增加:#define SYSINTR_BEEP (SYSINTR_FIRMWARE+19)修改:_inline DWORD MapIrq2SysIntr(DWORD _Irq){if( _Irq<=18 )// 这里18改为19return ( SYSINTR_FIRMWARE + _Irq );elsereturn (0xffffffff);}3.Kernel\Hal\Arm\armint.cOEMInterruptHandler()//传说中的ISR此函数中添加:else if(IntPendVal == INTSRC_EINT4_7) // by xiaoyunsoft 2007-07-04 BEEP EINT7{s2410INT->rINTMSK |= BIT_EINT4_7;submask = s2410IOP->rEINTPEND;if (submask & (1<<7)){s2410IOP->rEINTMASK |= (1<<7);s2410IOP->rEINTPEND = (1<<7);s2410INT->rSRCPND = BIT_EINT4_7;if (s2410INT->rINTPND & BIT_EINT4_7){s2410INT->rINTPND = BIT_EINT4_7;}RETAILMSG(1,(TEXT("BEEP INTERRUPT HANDLERED! by xiaoyunsoft\r\n")));return SYSINTR_BEEP;}else{s2410INT->rSRCPND = BIT_EINT4_7;if (s2410INT->rINTPND & BIT_EINT4_7){s2410INT->rINTPND = BIT_EINT4_7;}RETAILMSG(1,(TEXT("ERR INT4_7 Handler! by xiaoyunsoft\r\n")));return SYSINTR_NOP;}}4.Kernel\Hal\cfw.cOEMInterruptEnable()增加:case SYSINTR_BEEP:s2410IOP->rEINTPEND = 0x80;s2410INT->rSRCPND = BIT_EINT4_7;if (s2410INT->rINTPND & BIT_EINT4_7){s2410INT->rINTPND = BIT_EINT4_7;}RETAILMSG(1,(TEXT("Beep Interrupt Enable Called by xiaoyunsoft \r\n")));s2410IOP->rEINTMASK &= ~0x80;s2410INT->rINTMSK &= ~BIT_EINT4_7;break;OEMInterruptDisable()增加:case SYSINTR_BEEP:s2410INT->rINTMSK |= BIT_EINT4_7;s2410IOP->rEINTMASK |= 0x80;break;OEMInterruptDone()增加:case SYSINTR_BEEP:s2410INT->rINTMSK &= ~BIT_EINT4_7;s2410IOP->rEINTMASK &= ~0x80;5.编写Beep流驱动程序:打开PB工程,File->New Project or File Name->Project->Deynamic Library源程序见下面的附16.编辑注册表Platform.reg,系统启动时自动加载Beep.dll添加:;=============== Beep by xiaoyunsoft 2007-08-04 ============================ [HKEY_LOCAL_MACHINE\Drivers\BuiltIn\Beep]"Index"=dword:1"Prefix"="BEP""Dll"="Beep.dll""Order"=dword:07.编辑Platform.bib文件添加:;Beep Driver xiaoyunsoft 2007-08-04Beep.dll $(_FLATRELEASEDIR)\Beep.dll NK SH注:EVC与PB环境都有查看远程CE注册表的功能,在Tools菜单下。
WinCE系统下的驱动开发知识
![WinCE系统下的驱动开发知识](https://img.taocdn.com/s3/m/a4cde290551810a6f424863b.png)
WinCE第三方驱动安装之二——CAB安装包制作Microsoft Windows CE是紧凑的,高效的操作系统,它被广泛的应用在从手持电脑到专门的工业控制器或消费用电子产品等各种嵌入工业产品中。
英创公司ARM9系列工控主板预装了正版Windows CE5.0操作系统,并对板上所有硬件资源提供了完备的驱动支持。
随着WinCE操作系统的广泛应用,越来越多的在PC上使用的硬件设备提供了对WinCE系统的支持,如3G模块,Wi-Fi等。
第三方驱动一般以两种形式提供,一是动态链接库(*.dll)加对应的注册表文件(*.reg),另一种是可直接安装的CAB文件(*.cab)。
与动态链接库加注册表文件形式的驱动相比,CAB文件安装十分方便,不需要了解繁杂的WinCE INF文件格式或REG文件格式。
本文介绍通过WinCE CAB Manager工具将以动态链接库usbser.dll和注册表文件usbser.reg 形式提供的USB转串口驱动程序压缩为可直接在英创主板上安装的CAB压缩包的方法。
1、打开WinCE CAB Manager,选择File->New,运行New Cabinet wizard(CAB新建向导),选择“next”直至完成如图1。
2、在CAB Information上点击右键,选择Properties(属性)选项(如图2),打开CAB 包属性设置对话框,如图3。
3、在CAB Properties对话框中(如图3),填写Company Name(公司名称)和Application Name(CAB包名称)。
4、切换至CAB Properties->Installation Directory对话框,设置CAB包默认安装路径,此处设置为NandFlash\USBDriverDll目录,如图4。
5、切换至CAB Properties->Cabinet对话框,设置处理器类型,Processor可直接选择为ALL/CEF,如图5。
wince4.2系统定制与驱动开发
![wince4.2系统定制与驱动开发](https://img.taocdn.com/s3/m/508626b5ec3a87c24028c4b9.png)
Windows 系统定制与驱动开发实验指导手册Ver3.1目录For personal use only in study and research; not for commercial use一、安装基于2410开发板的 BSP .................. 错误!未定义书签。
二、Wince系统工程的定制与编译....................................... 错误!未定义书签。
For personal use only in study and research; not for commercial use三、Wince的烧写(基于Edukit-iii+2410平台). .............. 错误!未定义书签。
四、系统特性的添加MFC特性,添加鼠标和U盘驱动... 错误!未定义书签。
五、导出SDK......................................................................... 错误!未定义书签。
六、虚拟地址的映射(操作外设IO 蜂鸣器) (33)七、通过开机Demo的显示了解平台配置文件 .................. 错误!未定义书签。
八、触摸屏驱动中断的添加和响应...................................... 错误!未定义书签。
九、LED驱动的添加............................................................. 错误!未定义书签。
十、LED应用程序控制实验 ................................................. 错误!未定义书签。
十一、串口通信实验.............................................................. 错误!未定义书签。
基于VS2005平台开发wince驱动步骤
![基于VS2005平台开发wince驱动步骤](https://img.taocdn.com/s3/m/8a019fe40975f46527d3e198.png)
1. 下载并安装好BSP安装包(里边包含有各类已编译的驱动程序及其他必要配置文件等)。
2.打开VS2005,在目录F:/WINCE600/OSDesigns/S3C6410_DEMO/下找到所安装BSP包下的.sln文件,选中打开。
3.在/WINCE600/PLA TFORM/SRC/DRIVER/目录下新建一个驱动工程Subproject2,里边含空文件,如下图:
4. 在include files文件夹下添加.h头文件,在source files文件夹下添加.c源文件,如上图所示,新建驱动工程后,系统自动生成.def文件和makefile文件以及source文件,最终编写好.c 源文件以及.h头文件后,需要对.def文件、source文件进行相应的编辑修改,如下图:在VS2005环境中可看到下图所示:
进入我的电脑F:/WINCE600/PLA TFORM/mybsp1/SRC/DRIVERS/目录中则可看到
5.在目录F:/WINCE600/PLA TFORM/mybsp1/Parameter Files/下编辑修改.bib二进制镜像文件构建文件和.reg注册表文件,如图所示:
6.编译新建的驱动工程,然后编译整个mybsp1包,则生成的CE系统镜像文件就包含所写驱动。
编译单个驱动工程如图所示:。
Windows CE 驱动程序开发
![Windows CE 驱动程序开发](https://img.taocdn.com/s3/m/b7e895c08bd63186bcebbc36.png)
使用Platform Builder开发驱动 程序的不足之处
许多芯片开发商对此开发环境并不熟悉。 不能调试基于Microsoft Pocket PC的设备。 硬件的使用或者测试平台支持可能会很 昂贵或难以找到。 很难把一个驱动程序移植到Visual Studio 里去。
Platform Builder 4.0介绍(1)
驱动程序实例分析(2)
串口驱动程序需要实现的DLL接口函数名描述 :
XXX_Close在驱动程序关闭时由应用程序通过Clos ehandle函数调用 XXX_Deinit设备管理器在卸载一个实体设备时调用 XXX_Init设备管理器在初始化一个实体装置时调用 XXX_IOControl在发送命令时由应用程序通过 DeviceIoControl函数调用 XXX_Open在打开一个设备驱动程序时由应用程序 通过CreateFile函数调用
驱动程序的汇出(1)
将驱动程序导出为msi文件,步骤如下:
1) 在Platform菜单下选择汇出指导手册。 2) 在对应目录下选择需要汇出的驱动程序。 3) 填写一些描述信息并为汇出的文件命名。 4) 点选完成按钮即可产生msi文件,该文件 可以直接在目标环境下安装使用。
驱动程序的汇出(2)
将驱动程序汇出为cab档案,步骤如下:
微软的Platform Builder 4.0是一个基于 Windows CE操作系统的嵌入式平台的集 成开发环境(IDE)。 Platform Builder同时包括了设计、建立供了一个单独的集成工作区,在工 作区内可以在平台和工程中进行开发。
驱动程序实例分析(3)
其中电源管理的部分是可选的,在实际开发中, 接口名称中的XXX三个字母由设备驱动的前缀 所代替,同时在声明这些接口时,需要在函数 原型的前面加上__declspec(dllexport),表示 这些函数是这个DLL提供的界面函数,例如:
wince简单驱动开发
![wince简单驱动开发](https://img.taocdn.com/s3/m/e7a2f86ccc7931b764ce155c.png)
3.2 IIC总线驱动实验一、实验目的1.了解IIC传输协议及控制方法。
2.理解总线驱动和设备驱动的关系。
3.掌握总线驱动编写的一般思路和方法。
二、实验内容1.实现对IIC功能的控制。
2.编写总线驱动。
3.了解驱动程序中常见Windows核心对象的基本用法。
三、预备知识1.C语言基本知识,设备驱动基础知识和方法,WinCE基本系统体系架构。
2.能够使用Platform Builder 4.2集成开发环境建立流驱动程序。
四、实验设备及工具硬件:PC一台P3以上(内存不小于384MB,安装完工具硬盘空间不得小于600M)、ARM9实验箱(包含NETARM2410-S实验板、JTAG仿真器、各种串口线、并口线、网线、光盘等)一台。
软件:PC操作系统Win2000以上、ADS1.2集成开发环境、Platform Builder 4.2版本、Source Insight3.0。
五、实验原理1、IIC总线接口S3C2410A IIC总线接口具有四种操作模式:— 主机发送模式— 主机接收模式— 从机发送模式— 从机接收模式这几种操作模式之间的关系如下所示:起始条件和停止条件当IIC总线接口未激活时,通常处于从机状态。
换句话说,在检测到SDA线上的起始条件之前接口应该配置为从机模式。
当接口改变状态为主机模式时,必须初始化SDA线上的数据,并且SDL开始生成时钟信号。
开始条件可以在数据线上传输一字节的数据,终止条件可以终止数据的传输。
终止条件可以描述为当时钟信号为高时数据线由低电平转换为高电平,其实信号与其相反。
起始信号和终止信号总是由主机生成。
在开始信号发送完毕后,IIC总线处于忙状态。
终止条件将释放IIC总线。
当主机初始化一个起始条件时,同时发送一个从机地址来通知从机设备,一个字节的地址段包含七位的地址信息和一位的发送方向指示(读或者写)。
如果第八位是零,预示着一个写操作(发送),相反为请求读取数据(接收)。
Windows CE设备驱动程序开发
![Windows CE设备驱动程序开发](https://img.taocdn.com/s3/m/c8696646f7ec4afe04a1dfbd.png)
4—o 文献标识 l_ 3 码t A
中 圈分类号t Fl5  ̄12 T .
Wid w E设备驱动程序 开发 no s C
胡军辉 ,王友刨
( 浙江大学仪器系 ,杭州 3 0 2 ) 0 7 1
囊
要 :Wi o s E操作系统标准设计的一个重要方面 ,就是原始设备制造商( E ) n w d C O Ms 和独立硬件开发商( V ) 以自主开发设备驱动程 I s H 可
已经越来越走近普通人 的生活, 随之而来 的就 是对嵌入式软 、
2 n o s E的中断处理 dw Wi C
就其 中断处理而言 ,Wid wsC 采用了一种独特 的方 no E 法 。它将 中断处理分为 两步 :中断服 务例程( R 和 中断服务 I ) S 线 程( T 。具体来讲就 是把 每个硬件 的设 备 中断请 求(R I ) S IQ) 和一个 IR联系起来 , S ,当一个中断发生并未被屏蔽时 ,内核
h y tm tu tr fW n o te s se srcu e o id wsCE d te p o e so e eo ig d vc rv r o id ws CE.I r vd sa v r e o e iedi e n a r c s fd v lpn e ie die sf rW n o h tp o ie o eviw fd vc — rv r n r ht tr , lb rtst n o e iedi e d l ner p a l. n o ac i cu e ea o ae eW id wsCE d vc -rv rm o esa d itru th de W i d wsCE u p r h olwig fu rv rmo es a v e h n n s p t tef l o s o n o rd ie d l:n t e i
带你认识WinCE Display驱动开发
![带你认识WinCE Display驱动开发](https://img.taocdn.com/s3/m/e78698956bec0975f465e2c0.png)
带你认识WinCE Display驱动开发在WinCE中,Display驱动由GWES模块来管理。
WinCE提供了两种架构的Display 驱动模型,可以满足不同的硬件需求。
一种是基于WinCE DDI的Display驱动模型,另一种是基于DirectDraw的Display驱动模型。
下面将对两种架构作简单介绍。
1. Display驱动模型WinCE下的Display驱动直接由GWES模块管理,它会直接被GWES模块管理和调用。
Display驱动实际上也是分层的,其中包括GPE库,该库处理一些默认的绘图,相当于驱动的MDD层。
用户只需要开发和硬件相关的PDD层驱动就可以了。
在WinCE中,整个架构如图:如图,Application为一个应用程序,该程序会调用图形设备接口函数(GDI),而GDI函数是由Coredll.dll模块导出的。
Coredll.dll会将函数调用的参数打包,然后触发对另一个进程的本地过程调用(LPC),所有的绘图和开窗口的工作被传给内核中GWES模块。
GWES模块被称为图形,窗口和事件子系统,专门处理图形输出和用户输入等事件及相关的所有交互。
GWES模块会调用Display驱动完成对显示硬件的操作。
Display驱动由GPE和DDL.dll组成,GPE 完成基本的默认绘图工作,而DDI.dll实际上从GPE类上继承而来的,并实现了相关的显示硬件的操作。
2. DirectDraw Display驱动模型DirectDraw提供了独立于硬件的直接访问显示设备的能力。
它可以通过直接访问硬件抽象层(HAL)中的一些函数来达到直接操作显示设备的目的,在这个过程中,不再需要图形设备接口(GDI)的转换。
这种直接的方法可以使图像更加连贯,也提高了显示的性能。
为了实现这样的功能,需要在显示驱动上扩展能够直接访问相关硬件的函数。
这些函数会被DirectDraw模块调用,并形成DirectDraw的硬件抽象层(DDHAL)。
Wincenet系统定制与驱动开发
![Wincenet系统定制与驱动开发](https://img.taocdn.com/s3/m/bf738deed15abe23492f4d2c.png)
Wincenet系统定制与驱动开发部门: xxx时间: xxx制作人:xxx整理范文,仅供参考,可下载自行修改Windows 系统定制与驱动开发实验指导手册 Ver 3.1目录第一天实验内容2一、安装SamArmDvk9 II型开发板地 BSP2二、使用BSP在PB4.2中创建一个新地Platform并编译连接生成新地Image文件4三、将生成地Image烧录到FLASH中安装SamArmDvk9 II型开发板地 BSP9b5E2RGbCAP四、添加MFC特性,添加鼠标和U盘驱动19五、建立一个带kitl特性地系统镜像22六、导出SDK26七、通过KITL建立EVC地调试环境30第二天主要内容35一、开机logo地实现35二、通过地址映射操作外部IO,实现LED控制36三、中断地添加和响应36第三天主要内容38第四天主要内容42一、编译一个调试型地内核42二、触摸屏驱动校正实验43三、电源管理驱动实现节电管理43第一天实验内容一、安装SamArmDvk9 II型开发板地 BSP1. 在WINCE420\PLATFORM目录下新建一个名为“SMDK2410”地目录,如果该目录下已有名为SMDK2410地目录,将其改名备份.p1EanqFDPw2. 拷贝光盘中地2410WINCE\2410WINCE4.2BSP\SMDK2410目录中地内容到步骤一建立地SMDK2410目录.DXDiTa9E3d3. 去掉该目录中所有文件地只读属性.4. 将“SMDK2410\_for_Public\oak\drivers\NET CARD”目录下地CS8900R目录拷贝到“WINCE420\PUBLIC\COMMON\OAK\DRIVERS\NETCARD”目录下.RTCrpUDGiT5. 在“WINCE420\PUBLIC\COMMON\OAK\DRIVERS\NETCARD”目录下地dirs文件中添加cs8900r,示例如下.5PCzVD7HxADIRS=\cs8900r\dc21x46. 拷贝“SMDK2410\_for_Public\CESYSGEN”目录下地Makefile文件到“WINCE420\PUBLIC\COMMON\CESYSGEN”目录下.jLBHrnAILg7. 单击【File】>【ManageCatalogFeatures…】菜单项,如图1所示.图18. 在Catalog列表中单击选中“smdk2410.cec”文件,如图2所示,然后单击【Remove】按钮,删除PB4.2自带地smdk2410BSP.xHAQX74J0X图29. 单击【Import】按钮,导入“PLATFORM\SMDK2410\smdk2410.cec”文件,如图3所示.LDAYtRyKfE图310. 完成第9步操作后,系统将在Catalog地BSPs文件夹下自动添加“SamsungSMDK2410:ARMV4项”,如图4所示,此时BSP安装完成.Zzz6ZB2Ltk图4二、使用BSP在PB4.2中创建一个新地Platform并编译连接生成新地Image文件1. 单击【FILE】>【NewPaltform】菜单项,如图5所示.图52. 在弹出地【NewPlatformWizard–Step1】对话框中单击【Next】按钮,如图6所示.dvzfvkwMI1图63. 在弹出地【NewPlatformWizard–Step2】对话框中选择新安装地BSP,接着单击【Next】按钮,如图7所示.rqyn14ZNXI图74. 在【NewPlatformWizard–Step3】对话框中选中【Available configurations】单选按钮,在下面地列表框中选择一项Cofiguration<这里选择Mobile Handheld),接着在右侧地【Platformname】文本框中输入平台名称,如图8所示,最后单击【next】按钮.EmxvxOtOco图85. 在【NewPlatformWizard–Step4】对话框中选择需要地应用,如图9所示,接着单击【Next】按钮.SixE2yXPq5图96. 在【NewPlatformWizard–Step5】对话框中选择需要地网络设置,如图10所示,然后单击【Next】按钮.6ewMyirQFL图107. 这时进入图11所示地对话框,接着单击【Next】按钮.图118. 在【NewPlatformWizard–Step5】对话框中单击【Done】按钮,如图12所示,完成新平台地建立.kavU42VRUs图129. 右键单击SMDK2410features,在弹出地菜单中选择【Settings…】菜单项,如图13所示.y6v3ALoS89图1310. 这时将弹出【Platform Settings】对话框,在右侧地【Build Option】选项卡中,取消【EnableKITL】和【EnableCETargetControlSupport】复选框地选中状态,如图14所示.最后单击【OK】按钮完成平台设置.M2ub6vSTnP图1411. 单击【Buildplatform】按钮编译新平台,如图15所示.编译完成后,将得到“EBOOT.BIN”、“EBOOT.NB0”、“NK.BIN”以及“NK.NB0”等文件.0YujCfmUCw图15三、将生成地Image烧录到FLASH中安装SamArmDvk9 II型开发板地 BSPeUts8ZQVRd1. 将目标板和PC机器通过串口和Ethernet(要用交叉网线>相连.2. 用MultiJtag工具和并口电缆,连接PC地并口和目标板地JTAG口,将目标板上电,在PC机端地控制台,准备运行SJF程序.sQsAEJkW5T3. 将Nboot_Debug.bin文件烧录到FLASH中(该文件用于调用第2块地EBOOT>.在控制台下sjf2410.exe(在开发工具光盘中\Flash烧写工具所目录中,应将该程序复制到硬盘中,并将工具光盘2中地NBoot.bin,eboot.nb0文件复制到同一目录下>.键入“sjf2410/f:NBoot_Debug.bin”,如图16所示.GMsIasNXkA图16回车后进入程序后,如图17所示,接着键入“0”.图17回车后如图18所示.选择将文件烧录到第0号块,选择“0”.图18回车后,烧写地过程如图19所示.图19烧写完毕后,选择“2”并按回车返回到控制台.4. 烧录完成后,再次单击运行SJF,将通过PlatformBuilder4.2编译生成地EBOOT.NB0文件或是资料盘中附带地EBOOT.NB0文件烧入FLASH 地第二块,如图20所示.TIrRGchYzg图20烧录方法同上一步骤,但注意:因为需要将该文件烧在第二块,所以在地址选择中需要选择“2”后回车.该文件较大,烧录时间可能会稍长些.7EqZcWLZNX5. 烧录完成后,运行DNW,然后单击【SerialPort】>【Connect】菜单项,如图21所示.lzq7IGf02E图216. 按开发板上地复位键,复位开发板,DNW显示如图22所示.图227. 下载完成后按空格键,DNW显示如图23所示.图238. 将各选项设置如图24所示.IPaddress需要和PC机地IP地址在同一个子网内,如PC机为192.192.78.1则IPaddress可设为192.192.78.2~255.其他各项保持和上图一致即可.注意设置MAC地址.zvpgeqJ1hk图239. 键入“W”将设置保存.10. 接着键入“F”将NandFlash低级格式化,如图24所示.这里不会格式化NandFlash地前10块.NrpoJac3v1图2511. 键入“9“将SMC逻辑格式化为BINFS格式,如图26所示,这一步操作时间会比较长<大约5分钟左右).1nowfTG4KI图2612. 完成上一步操作后,键入“D“下载Image文件,如图27所示.图2713. 接下来需要进行PlatformBuilder4.2中【RemoteConnection】属性地设置.单击【Target】>【ConfigureRemoteConnection…】菜单项,如图28所示.fjnFLDa5Zo图2814. 这时将弹出【Configure Remote Connection】对话框,在【Download】下拉列表框中选择【Ethernet】项,如图29所示.tfnNhnE6e5图2915. 同样在【Services】选项卡地【Kernel】下拉列表框中也选择【Ethernet】项,如图30所示.HbmVN777sL图3016. 接着单击【Download】下拉列表框右侧地【Configure】按钮,这时将弹出【Configure Ethernet Download Service】对话框,该对话框地【Available Devices】文本框中将出现【SMDK2410????】项<注:此时目标板需要为等待下载状态),如图31所示.选中该项,然后单击【OK】按钮即可.V7l4jRB8Hs图3117. 回到PlatformBuilder4.2中,接着单击【Target】>【Download/Initlize】菜单项,通过Ethernet即可将NK.BIN下载到目标板中,如图32所示.83lcPA59W9图3218. 此时目标板需要在等待下载状态<D),通过DNW能看到反馈信息,如图33所示.图3319. 下载完后通过DNW可以看到程序正在将下载地Image烧录到NandFlash中,如图34所示.mZkklkzaaP图3420. 稍等一会儿后,WINCE开始初始化并运行时,烧录工作就已完成了,如图35所示.图3521. 烧录完成后,按目标板上地复位键,WINCE将自动运行.四、添加MFC特性,添加鼠标和U盘驱动1. 选中“Catalog/Core OS/Display Based Device/ApplicationsandServicesDevelopment”目录下地“MicrosoftFoundationClasses(MFC>”文件,然后单击鼠标右键,在弹出地快捷菜单中选择【Add To Platform】菜单项,如图36所示.AVktR43bpw图362. 选中“Catalog/Core OS/Display Based Device/CoreOSServices/USBHostSupport”目录下地“USBHumanInputDevice(HID>ClassDriver”和“USBStorageClassDriver”两个组件,分别单击鼠标右键,在弹出地快捷菜单中选择【Add To Platform】菜单项,如图37、图38所示.ORjBnOwcEd图37图383. 重新编译并下载,系统即可正常支持MFC程序、U盘和USB鼠标了.五、建立一个带kitl特性地系统镜像1. 在Platform Builder中打开刚才建立地工程,在工程上单击鼠标右键,在弹出地快捷菜单中选择【setti ng…】菜单项,如图39所示.2MiJTy0dTT图392. 这时将弹出【Platform Settings】对话框,接着单击切换到【Build Option】选项卡中,按照图40所示地完成【Build Option】属性地设置.gIiSpiue7A图403. 单击【OK】按钮完成平台设置,然后Rebuild系统镜像并下载,这样就建立了一个带有KITL特性地系统.uEh0U1Yfmh4. 如板子掉电重启后,带有KITL特性地系统不能自动启动,需要通过DNW和Platform Builder来实现引导启动.IAg9qLsgBX5. 首先启动Platform Builder,打开带有KITL特性地工程,如图41所示.图416. 接着启动DNW,然后给开发板上电,按两下空格进入命令菜单,如图42所示.图427. 接着在DNW界面中键入“l”.8. 回到Platform Builder中,单击【Target】>【Connect】菜单项,如图43所示.到此就实现了引导启动,带有KITL特性地系统正常启动了.WwghWvVhPE图43六、导出SDK1. 在Platform Builder中打开工程,然后单击【Platform】>【ConfigureSDK】菜单项,如图44所示.asfpsfpi4k图442. 这时将弹出【Export SDK Wizard】对话框,单击【下一步】按钮,进行生成地SDK地名称和提供者姓名地填写(可随意填写>,如图45所示.ooeyYZTjj1图453. 单击【下一步】按钮,按照图46所示地完成“development language”属性地设置<若系统已经加入MFC特性并编译,则MFC相关地两项为灰体必选项).BkeGuInkxI图464. 最后单击【下一步】按钮完成设定.在Platform Builder中打开工程,再次单击【Platform】>【ConfigureSDK】菜单项可以设定SDK文件地输出路径或更改SDK文件名称和提供者信息.PgdO0sRlMo5. 在Platform Builder中单击【Platform】>【BuildeSDK】菜单项开始创建SDK文件,如图47所示.3cdXwckm15图476. 完成SDK地创建后,双击生成地.msi文件进行SDK地安装.安装完成后重新启动,打开EVC就可以针对生成地SDK进行编译了.h8c52WOngM七、通过KITL建立EVC地调试环境1. 首先通过引导启动带KITL特性地系统,然后将资料光盘中地示范工程IntTest复制到硬盘上,在EVC中单击Open Work Space打开硬盘上刚刚复制过来地IntTest工程文件中地IntTest.vcw.v4bdyGious2. 在EVC环境下单击【Tools】>【Configure platform manager…】菜单项,如图48所示.J0bm4qMpJ9图483. 在弹出地【Windows CE Platform Manager Configuration】对话框中选择刚才导出地SDK文件,如图49所示,然后单击对话框右侧【Properties】按钮.XVauA9grYP图494. 这时将弹出【Device Properties】对话框,按照图50所示地完成设备属性地设置,最后单击【OK】按钮.bR9C6TJscw5. 确认编译地目标SDK地名称和刚才选定地SDK一致,如图51所示.图516. 单击【Build】按钮进行编译.如果在编译过程中出现头文件无法找到地错误,应在电脑中进行搜索,然后将找到地文件地路径复制下来.接着在EVC中单击【Tool】>【Options】菜单项,在弹出地对话框中切换到【Directory】选项卡中,将刚才找到地文件地路径填入<注意,不可将找到地文件复制到当前工程目录下,否则可能会出现错误),如图52所示.最后单击【OK】按钮.pN9LBDdtrd图527. 完成编译成功后,EVC会自动通过KITL和开发板建立联机,至此就可以进行联机调试了.第二天主要内容一、开机logo地实现1. 找到\WINCE420\PLATFORM\SMDK2410\KERNEL\HAL\cfw.c文件,找到staticvoidInitDisplay(>这个函数地实现部分.DJ8T7nHuGT2. 下面这段代码即为开机logo地实现,其意义为将已经转化为C数组地BMP文件数据拷贝到显示缓冲区中.QF81D7bvUAmemcpy((void*>FRAMEBUF_BASE,ScreenBitmap,ARRAY_SIZE_TFT_16BIT>。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
开发wince驱动步骤:
software:VS20005+wince6.0+BSP
hardware:AT91SAM9261开发板(MCUZONE)1在vs2005新建一个驱动工程DemoDrv。
2编写好所有DemoDrv的源文件,例如“.cpp”or“.c”or“.REG”文件,特别注意source文件编写,然后单独编译DemoDrv看有无错误,这样避免全部编译NK导致时间太久。
然后立即看到编译结果。
若编译成功,会在$:\WINCE600\PLATFORM\AT91SAM9261EK\target目录有相应的DemoDrv.dll文件。
(在实现文件“.c”需添加串口抛出信息以便调试)在如图所示:
3在目录$:\WINCE600\PLATFORM\AT91SAM9261EK\FILES找到配置文件:platform.reg 和platform.bib文件。
platform.bib文件添加:
IF BSP_AT91SAM9261EK_DemoDrv
DemoDrv.dll$(_FLATRELEASEDIR)\DemoDrv.dll NK SHK
ENDIF BSP_AT91SAM9261EK_LED
platform.reg文件添加:
IF BSP_AT91SAM9261EK_DemoDrv
#include"$(_TARGETPLATROOT)\SRC\DRIVERS\DemoDrv\DemoDrv.reg"
ENDIF BSP_AT91SAM9261EK_LED
添加后分别保存。
4在$:\WINCE600\PLATFORM\AT91SAM9261EK\CATALOG目录下at91sam9261ek.PbcXml 文件打开:
添加文件:
<BspItemId>Item:ADENEO:BSP_AT91SAM9261EK_</BspItemId>
<Item Id="Item:ADENEO:BSP_AT91SAM9261EK_DemoDrv">
<Title>DemoDrv Driver</Title>
<Description>DemoDrv Driver for AT91SAM9261EK boards</Description>
<Comment>DemoDrv Driver for AT91SAM9261EK boards</Comment>
<Type>BspSpecific</Type>
<Variable>BSP_AT91SAM9261EK_DemoDrv</Variable>
<SupportedCpuId>Cpu:ARMV4I</SupportedCpuId>
<Module>DemoDrv.dll</Module>
<Location>Device Drivers\DemoDrv</Location>
</Item>
保存文件
5新建NK工程文件或者手动方式更改之前NK工程文件,例如之前工程文件:E:\BSP\BSP\trunk\sample9261\Wince600\AT91SAM9261EK_ARMV4I\PBInitEnv.bat添加
set BSP_AT91SAM9261EK_DemoDrv=1
6最后编译NK,最后生成的NK就带DemoDrv驱动,可以通过注册表软件ceregedt.exe,看DemoDrv.reg有无起作用或者查看嵌入式wince的文件系统\windows目录下有无DemoDrv.dll.。