本站首页    管理页面    写新日志    退出


«July 2025»
12345
6789101112
13141516171819
20212223242526
2728293031


公告

☆★☆★☆★☆★☆★☆
生活的点点记录,以及一些体会...........

喜欢是淡淡的爱,爱是深深的喜欢.

时间会见证一切.......................

欢迎大家指出错误,共同进步..........

期待中..............................

☆★☆★☆★☆★☆★☆


我的分类(专题)

日志更新

最新评论

留言板

链接

世纪音频

 

 


Blog信息
blog名称:
日志总数:162
评论数量:312
留言数量:0
访问次数:939697
建立时间:2005年5月17日




[wince study]注册表里的一些技巧
文章收藏

oceanblue 发表于 2008/5/13 15:32:59

一\ 如何实现开机后,还未进入WINCE界面就运行其他程序 假设应用程序为myapp.exe,那先将这个程序放到 SMDK2410\FILES\目录下. 接着在PB中的 PLATFORM.BIB文件中的 FILES目录下添加   myapp.exe   $(_FLATRELEASEDIR)\myapp.exe    NK U  可将该文件打包进NB0中; 再在PLATFORM.REG目录下添加以下内容,注意是90:

阅读全文(1883) | 回复(0) | 编辑 | 精华 | 删除
 


[wince study]USB设备驱动程序导读(9)
文章收藏

oceanblue 发表于 2008/5/12 16:26:04

  以Bot.c文件中的BOT_DataTransfer()函数为例,在这个函数中,读写操作全部是调用了IssueBulkTransfer()函数,这个函数是由USBD提供的接口并且被usbclient.c程序进行了再次封装,它可以完成对物理USB设备的数据存取操作,这就要根据不同的设备来进行了,而且还要区分是命令操作还是数据操作,是命令状态操作还是其他操作等等,需要与设备及USB标准来对应。因为只是学习一个框架,所以有兴趣的话可以深入研究一下。

        到此为止,一个USB设备驱动程序的最基本框架就已经浏览了一遍,很粗糙也很烦杂,到头来废话说了太多,也不知是否能说到关键之处。为了留下一个整体的印象,我们使用下面的图示进行回顾。



     &n


阅读全文(3011) | 回复(0) | 编辑 | 精华 | 删除
 


[wince study]USB设备驱动程序导读(8)
文章收藏

oceanblue 发表于 2008/5/12 16:24:57

  带着上次留下的疑问,我们继续来学习操作系统如何通过USBDISK读写USB设备的。我们先看USB\CLASS\STORAGE\DISK\SCSI2\usbdisk6.def文件。在这个文件中可以看到,该DLL一共导出了14个函数,其中两个是上次内容当中被设备驱动程序调用的UsbDiskAttach和UsbDiskDetach,余下的是一组以DSK开头的流驱动接口,易见,USBDISK是以流驱动的形式向操作系统提供服务的。

        为了清晰起见,以下大量的程序我们并不学习,而只关心设备读写,因此我们来看DISK.C这个程序文件。找到DSK_Read和DSK_Write两个函数,令我们大失所望,因为这两个函数都是形如
UNREFERENCED_PARAMETER(pDevice);
UNREFERENCED_PARAMETER(pBuffer);
UNREFERENCED_PARAMETER(BufferLength);

DEBUGMSG(ZONE_ER

阅读全文(5013) | 回复(0) | 编辑 | 精华 | 删除
 


[wince study]USB设备驱动程序导读(7)
文章收藏

oceanblue 发表于 2008/5/12 16:23:24

我们来看程序的第4行,这里有一个判断语句,它是在判断插入的设备是否是USBMSC_INTERFACE_CLASS类型的,这个常量是在usbmsc.h文件中定义的,也就是说如果设备不是USB存储设备,那么就结束这个函数,也就是此驱动只能处理USB存储设备。

        当发现设备符合此驱动程序的要求后,就通过函数ParseUsbDescriptors()来解析这个设备,这个函数在下面的程序中将被实现,我们可以看一下该函数的函数体,很显然,它是在为设备进行各种配置,这就不多说它了。

        再往下,分配内存,设置标志,从注册表中读取信息。注意,这里读取到的注册表信息是Drivers\\USB\\ClientDrivers\\Mass_Storage_Class和bInterfaceSubClass变量组合成的注册表键下的值,具体可参阅源程序,这个注册表键下放置的内容是
[HKEY_LOCAL_MACHINE

阅读全文(2967) | 回复(0) | 编辑 | 精华 | 删除
 


[wince study]USB设备驱动程序导读(6)
文章收藏

oceanblue 发表于 2008/5/12 16:21:22

在继续向下看,我们发现了USBDeviceAttach()函数,这可是最重要的地方了,当有USB设备插入插口以后,操作系统是如何识别它的呢,如何将其做为一个文件夹加以访问的呢?我们就来解开这里的谜团。
        为了我们方便说明,我将此程序简化如下:

 

         后面的程序将以此行号进行说明。

阅读全文(1486) | 回复(0) | 编辑 | 精华 | 删除
 


[wince study]USB设备驱动程序导读(5)
文章收藏

oceanblue 发表于 2008/5/12 16:19:23

正如所料,接下来我们就进入到DRIVERS\USB\CLASS\STORAGE\CLASS文件夹下,接触USB设备驱动程序。

         我们先来了解两个头文件,分别是STORAGE\INC\usbmsc.h和STORAGE\CLASS\usbmscp.h,其中前者是USB存储设备公用的头文件,后者是需要按照自己的设备更改的头文件。我们先来看前者。

        在usbmsc.h这个头文件中,前边定义了很多常量,包括子类和协议的常量,这是从哪里来的呢?前文我们已经提到过,这些量值是依据USB设备规范得来的,在规范上都作了定义,所以此处的值必须与USB规范中的相一致。再向下的命令块结构体和数据块结构体是用来与USB设备通讯用的,可以通过这两个结构体的实例与USB设备传输数据。 下面的函数原型就不说了,前文提到过,在这里只记得有这几个函数就行了。

   &nbs

阅读全文(1738) | 回复(0) | 编辑 | 精华 | 删除
 


[wince study]USB设备驱动程序导读(4)
文章收藏

oceanblue 发表于 2008/5/12 16:16:33

    在上次了解了所有USBD接口函数以后,我们已经有了很多基础知识了,回顾USB样例的文件夹结构,我们还能记得USB\CLASS\COMMON这个文件夹下是存放所公共部分的源程序,它是微软专门抽象出来的能为大多数USB设备驱动程序服务的一些结构体以及函数的封装,我们这次再来概略的了解一下这里面的源程序。

        这里面包含了三个程序,分别是:
        remlock        usbclient        utils
        下面我们分别来了解一下这三个程序的功能和接口,很显然,USB设备驱动程序肯定是会用到这其中的一部分函数的,因此我们不一定需要读

阅读全文(2810) | 回复(0) | 编辑 | 精华 | 删除
 


[wince study]USB设备驱动程序导读(3)
文章收藏

oceanblue 发表于 2008/5/12 16:09:12

“广告无限,时间有限”,别看广告了,快回来吧。(发现自己是广告天才,不过耳熟的很,好像游戏上面都有类似的话)

        此前,我们共同了解了USB驱动在CE中的位置结构,也了解了样例驱动程序的文件夹结构,接下来,我们就要了解一下USBD为我们提供了哪些接口来实现设备访问以及驱动程序管理的功能。找到USBDI.H,不要告诉我你找不到吧,不管你用什么编辑器,记事本也好,PB也好,VC/EVC或者VS都行,打开它,我们一起来了解一下USBD为我们提供了什么。

        我们首先看到的一个大的结构体就是_USB_DRIVER_SETTINGS,注意这个结构体不是USB规范中的USB设备描述,而是为了CE设备管理器加载USB设备驱动程序方便而建立的。该结构体中对供应商描述、设备描述和Interface的描述是用来匹配注册表中对USB设备驱动的注册表键,当设备管理器发现你设备的这些值与注册表中的这些值相符时,就会加载你的

阅读全文(2268) | 回复(0) | 编辑 | 精华 | 删除
 


USB设备驱动程序导读(2)
文章收藏

oceanblue 发表于 2008/5/12 12:49:52

   接下来,我们就来分析一下CE中的样例程序,我用的是4.2版本的,所以下面的内容是4.2版本中的程序。这里的程序是通过文件夹的形式组织在一起的,所以我们还是像以前学习CE的时候那样,先来了解与此相关的文件夹结构,如下图。



        在USB文件夹下,分成了CLASS,CLIENTS,COMMON,HCD,INC,USBD几个文件夹,其中INC和COMMON里面有一个lock.c的程序,这个程序很明显是将要被其他USB有关的驱动程序所使用的一个锁,代码很简单,只是一个类似临界区的封装体,可以保护多线程对同一内存区域的读写访问,可以先不去管它。CLIENTS文件夹可能最初微软的开发人员是用来放置设备驱动程序的,但是后来没有放,而发布的时候也没有删除,所以遗留了下来,里面是个空的文件夹,所以没用实际用

阅读全文(3362) | 回复(0) | 编辑 | 精华 | 删除
 


[wince study]USB设备驱动程序导读(1)
文章收藏

oceanblue 发表于 2008/5/12 12:28:26

随着USB设备的不断增加,我们这些开发人员也就多了对USB设备进行驱动程序开发的工作。但是对于很多初学者来说,存在以下三个困难:
        一是对WinCE的驱动程序结构了解得太少,没办法得心应手的专注于驱动程序的开发工作;
        二是对WinCE自带的USB驱动程序的例子没有弄懂,看到一大堆文件夹结构和源程序思维混乱;
        三是几乎没有什么中文的参考资料,不知如何下手。

        第三条是很多开发人员都遇到的,我也一样,很多朋友问我有没有什么资料,我也只能说抱歉,因为我也同样有这个问题,一切都靠自己的黑暗中摸索,因此本文不谈第三条。
        第一条是可以找到资料

阅读全文(4866) | 回复(0) | 编辑 | 精华 | 删除
 


« 1 2 3 4 5 6 7 8 9 10 »



站点首页 | 联系我们 | 博客注册 | 博客登陆

Sponsored By W3CHINA
W3CHINA Blog 0.8 Processed in 0.141 second(s), page refreshed 144754587 times.
《全国人大常委会关于维护互联网安全的决定》  《计算机信息网络国际联网安全保护管理办法》
苏ICP备05006046号