上一页 1 ··· 32 33 34 35 36 37 38 39 40 ··· 52 下一页
摘要: 该函数是USB驱动中,监视hub状态改变的线程函数。Root hub的监视线程在OTG_Init函数被调用时创建。External Hub的监视线程在External Hub插入到Root Hub时被创建。在线程刚启动的时候(在线程循环体之外),需要进行一些操作。// before we can process port changes, we need// to power all ports// 函数PowerAllHubPorts在CRootHub类中的实现为空。// 在类CExternalHub中,遍历Hub上的所有Port,// 调用函数SetOrClearFeature设置各个Po 阅读全文
posted @ 2011-04-05 22:09 andriod2012 阅读(753) 评论(0) 推荐(0) 编辑
摘要: USB驱动中,设备相关的类及其继承关系如下: CDevice (ADT) / / CFunction CHub (ADT) / / CRootHub CExternalHub父类CDevice中包含一个虚函数成员EnterOperationalState。各个子类中,根据需要,对该函数有不同的实现。各个子类的EnterOperationalState函数被调用的地方也不相同。其中,CRootHub的该函数,在函数CEhcd::DeviceInitializ... 阅读全文
posted @ 2011-04-02 17:06 andriod2012 阅读(271) 评论(0) 推荐(0) 编辑
摘要: 前面有篇文章说到如何获取U盘描述符,最终我们读取描述符的时候是通过以下语句实现的: lpudd[i] = m_ppCDeviceOnPort[i]->m_deviceInfo.Descriptor; 将驱动中保存的Desctiptor信息,赋值到传入的buffer中。因此,引出来一个问题,驱动中保存的Descriptor信息是什么时候产生的?宏观上来讲,应该是USB Device插入的时候,驱动从USB Device读取相关信息,并最终生成Descriptor。但具体是怎么实现的呢?今天就来分析一下这个过程。 首要的工作当然还是顺藤摸瓜,一步步找到入口。一步步跟踪下来,发现最初的启动点上 阅读全文
posted @ 2011-04-01 18:19 andriod2012 阅读(569) 评论(0) 推荐(0) 编辑
摘要: 前面有篇文章,说到了如何获取USB设备的Descriptor。其中有一个步,通过调用CHcd类的成员变量m_pCRootHub(CRootHub)的GetDeviceList函数,来获取Root Hub上设备列表。此处的Root Hub是在什么地方被初始化的呢?1、搜索代码发现,类CHcd中有一个成员函数SetRootHub,会给m_pCRootHub赋值。2、类CEhcd的成员函数DeviceInitialize,会创建一个CRootHub类的对象,并将该对象作为参数,调用函数SetRootHub。 SetRootHub( new CRootHub( deviceInfo, FALSE,T. 阅读全文
posted @ 2011-03-31 17:20 andriod2012 阅读(240) 评论(0) 推荐(0) 编辑
摘要: 古老的unix提出了一切皆文件的思想,近代的OO提出了一切皆对象的理论,在unix的年代,人们迫切需要的是如何操作计算机而不是如何设计软件,毕竟那个时候软件设计其实比现在简单,就那么几种,关键是没有人会操作计算机,而OO年代,软件成了一种工业产品,此时不管是追求利润也好,XX也罢,人们的计算机操作水平被windows拉到了一个很高的层次--如此复杂菜单加菜单的方式。使用软件成了人们日常生活的一部分,因此问题就成了如何快速开发出软件,因此也就有了OO,甚至更新的面向YY编程。windows正好出现在unix年代和OO年代交替的时期,因此注定成为了一个很成功的操作系统,我不关心windows的应用 阅读全文
posted @ 2011-03-31 16:07 andriod2012 阅读(166) 评论(0) 推荐(0) 编辑
摘要: 最近由于项目需求,需要获取U盘的描述符。而现有的usb otg驱动中没有提供这样的接口。没有办法,只能自己动手来修改了。本人刚开始接触USB 驱动,在代码的海洋中还比较迷茫。以下代码的实现是公司内一位大牛所作,本人只是借来学习一用。也算对USB驱动有个初步的了解。先罗嗦两句。刚开始看到文件夹usbotg,还有点不太理解是什么意思。当时在想,usb驱动为什么不直接放在usb文件夹下,而是放在usbotg文件夹下?otg是嘛意思?资料当然也很好找,usb家族里面,对该成员有详细介绍(http://www.usb.org/developers/onthego)。原来otg就是On The Go。传统 阅读全文
posted @ 2011-03-31 15:32 andriod2012 阅读(516) 评论(0) 推荐(0) 编辑
摘要: 大家都过来csdn吧。。。 阅读全文
posted @ 2011-03-29 17:37 andriod2012 阅读(99) 评论(0) 推荐(0) 编辑
摘要: 为了让vidalia启动tor和polipo,而不是让他们自己作为服务运行,我了解了一番有关ubuntu 的启动级别,google了一番,读了点English,再#ubuntu-cn请教了一番,写下自己的心得,希望对大家有帮助,更希望大牛给斧正。下面进入正文: 在linux的世界里,所有的linux操作系统都有一个启动级别的概念,启动级别控制着系统启动后所加载的各种功能的不同,实质是在启动后运行各种服务(servcie||daemon)。这里的服务是和windows里的服务的概念相似的,是一种在系统后台独立运行的程序,也就是说他一般不予用户进行交互。 一般的linux分8个级别... 阅读全文
posted @ 2011-03-22 14:55 andriod2012 阅读(179) 评论(0) 推荐(0) 编辑
摘要: 外国wince学习论坛收集http://www.archivum.info/microsoft.public.windowsce.platbuilder/——更新很快,资料很多,搜索功能很强的老外wince论坛(SD......SPI ,and so on.)http://www.tech-archive.net/Archive/WindowsCE/——很牛的一个网站,PB,EVC,EVB等都有很多例子。有Bruce Eitman等高人回答,是学习英语的好地方http://www.pocketpcjunkies.com/Uwe/Forums.aspx/wince-vc/200905/1——这个 阅读全文
posted @ 2011-03-21 17:26 andriod2012 阅读(129) 评论(0) 推荐(0) 编辑
摘要: Kernel Startup SequenceStartup() KernelStartup() ArmInit() OEMInitDebugSerial() OEMInit() KernelInit() HeapInit() InitMemoryPool() ProcInit() SchedInit() FirstSchedule() SystemStartupFunc() IOCTL_HAL_POSTINIT上表是基于ARM 的wince内核启动顺序.粗体字表示OEM 需要定制的部分.1. Startup() -> Startup.s位于%_WINCEROO... 阅读全文
posted @ 2011-03-21 16:06 andriod2012 阅读(199) 评论(0) 推荐(0) 编辑
上一页 1 ··· 32 33 34 35 36 37 38 39 40 ··· 52 下一页