《Linux内核修炼之道》精华分享与讨论(6)——分析内核源码如何入手?(上)
作者 佚名技术
来源 Linux系统
浏览
发布时间 2012-04-23
for all USB device drivers that do not fit 54 into any of the above categories. 这个README文件描述了前边使用ls命令列出的那10个文件夹的用途.那么什么是USB Core?Linux内核开发者们,专门写了一些代码,负责实现一些核心的功能,为别的设备驱动程序提供服务,比如申请内存,比如实现一些所有的设备都会需要的公共的函数,并美其名曰USB Core. 时代总在发展,当年胖杨贵妃照样迷死唐明皇,而如今人们欣赏的则是林志玲这样的魔鬼身材.同样,早期的Linux内核,其结构并不是如今天这般有层次感,远不像今天这般错落有致,那时候drivers/usb/这个目录下边放了很多很多文件,USB Core与其他各种设备的驱动程序的代码都堆砌在这里,后来,怎奈世间万千的变幻,总爱把有情的人分两端.于是在drivers/usb/目录下面出来了一个core目录,就专门放一些核心的代码,比如初始化整个USB系统,初始化Root Hub,初始化主机控制器的代码,再后来甚至把主机控制器相关的代码也单独建了一个目录,叫host目录,这是USB主机控制器随着时代的发展,也开始有了好几种,不再像刚开始那样只有一种,呢,设计者们把一些主机控制器公共的代码仍然留在core目录下,而一些各主机控制器单独的代码则移到host目录下面让负责各种主机控制器的人去维护. 那么USB gadget那?gadget白了说就是配件的意思,主要就是一些内部运行Linux的嵌入式设备,比如PDA,设备本身有USB设备控制器(USB Device Controller),可以将PC,也就是我们的主机作为master端,将这样的设备作为slave端和主机通过USB进行通信.从主机的观点来看,主机系统的USB驱动程序控制插入其中的USB设备,而USB gadget的驱动程序控制外围设备如何作为一个USB设备和主机通信.比如,我们的嵌入式板子上支持SD卡,如果我们希望在将板子通过USB连接到PC之后,这个SD卡被模拟成U盘,那么就要通过USB gadget架构的驱动. 剩下的几个目录分门别类的放了各种USB设备的驱动,比如U盘的驱动在storage目录下,触摸屏和USB键盘鼠标的驱动在input目录下,等等. 我们响应了README的热情呼唤,它便给予了我们想要的,通过它我们了解了USB目录里的那些文件夹都有着什么样的角色.到现在为止,就只剩下内核的地图——Kconfig与Makefile两个文件了.有地图在手,对于在内核中游荡的我们来说,是件很愉悦的事情,不过,我们的目的是研究内核对USB子系统的实现,而不是特定设备或host controller的驱动,这里的定位很明显,USB Core就是我们需要关注的对象,那么接下来就是要对core目录中的内容进行定位了. 分析Kconfig和Makefile 进入到drivers/usb/core目录,执行命令ls,结果显示如下: Kconfig Makefile buffer.c config.c devices.c devio.c driver.c endpoint.c file.c generic.c hcd-pci.c hcd.c hcd.h hub.c hub.h inode.c message.c notify.c otg_whitelist.h quirks.c sysfs.c urb.c usb.c usb.h 然后执行wc命令,如下所示. # wc –l ./* 148 buffer.c 607 config.c 706 devices.c 1677 devio.c 1569 driver.c 357 endpoint.c 248 file.c 238 generic.c 1759 hcd.c 458 hcd.h 433 hcd-pci.c 3046 hub.c 195 hub.h 758 inode.c 144 Kconfig 21 Makefile 1732 message.c 68 notify.c 112 otg_whitelist.h 161 quirks.c 710 sysfs.c 589 urb.c 984 usb.c 160 usb.h 16880 total drivers/usb/core目录共包括24个文件,16880行代码.core不愧是core,为大家默默的做这么多事.不过这么多文件里不一定都是我们所需要关注的,先拿咱们的地图来看看接下来该怎么走.先看看Kconfig文件,可以看到下面的 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |
你可能对下面的文章感兴趣
关于《Linux内核修炼之道》精华分享与讨论(6)——分析内核源码如何入手?(上)的所有评论