摘要:
试着总结一下,学习一下,至少现在的我对于设备模型这个概念,几乎完全不懂。 Linux设备模型中三个很重要的概念就是总线、设备和驱动,即bus、device、driver,而实际上内核中也定义了这么一些数据结构,分别为struct bus_type,struct device,struct device_driver,原型定义均在include/linux/device.h中。而struct bus_type结构中两个非常重要的成员就是kset和kobject这两个结构体。于是乎,Linux设备模型概念中重要的5个概念都引出来了,即设备模型在具体实现方面分两个层次:一是底层数据结构来实现基本对象 阅读全文
摘要:
1.简单概念 学习U盘驱动,不仅仅是去关注drivers/usb/storage目录下那相关的3000行代码。毕竟,作为U盘,她需要与usb core打交道,需要与scsi core打交道,需要与内存管理单元打交道,还有内核中许多其它模块打交道。什么是usb core?她负责实现一些核心的功能,为别的设备驱动程序提供服务,比如申请内存,比如实现一些所以的设备都会需要的一些公函数。还有就是host controller和root hub的概念,现实中经常是让一个usb控制器和一个hub绑定在一起,专业一点说是集成,而这个hub被称为root hub,换言之,和usb控制器绑定在一起的hub就是系 阅读全文
摘要:
参考一下这个:http://blogold.chinaunix.net/u3/111072/showart_2298170.htmlprintk是内核态信息打印函数,功能和比准C库的printf类似。printk还有信息打印级别。函数原型:int printk(const char *fmt, ...需要的头文件:#include<linux/kernel.h消息打印级别:fmt----消息级别:#defineKERN_EMERG"<0>"#defineKERN_ALERT"<1>"#defineKERN_CRIT" 阅读全文
摘要:
1.启程 重头开始看《Linux的那些事儿——我是U盘》,首先是下了书中用的Linux2.6.10内核版本,以前看这书都是用Linux2.6.33.7的版本,不过细细一看发现两者的差距还是蛮大的,统一一下版本对以后的学习应该备有好处的,必须的。既然是专门学习U盘的驱动,那么非U盘驱动一概忽略也是必须的,通过Kconfig可以得知只有config USB_STORAGE才是需要看的,不免压力很小,代码量瞬间减少很多。 //Kconfig config USB_STORAGE tristate "USB Mass Storage support" ... 阅读全文