1,区别块设备和字符设备:块设备是系统中能随机访问固定大小的数据片的硬件。,扇区是所有块设备物理上的最小可寻址单位,通常大小为512Byte,块是文件系统的最小寻址单位,大小是扇区的整数倍,同时不能超过一个页的大小~操作块设备的时候需要在内存中有一个对应的缓冲区,用struct buffer_hea...
分类:
系统相关 时间:
2015-01-20 22:07:31
阅读次数:
202
1,在/proc文件系统下创建节点的APIhttp://www.cnblogs.com/ziziwu/archive/2011/10/20/2218975.html struct proc_dir_entry *create_proc_entry (const char *name, mode_t ...
分类:
系统相关 时间:
2015-01-20 22:04:51
阅读次数:
247
一,内核模块的概念经常在内核驱动代码看到类似fs_init()等驱动初始化函数,那么这个和module_init()函数的差别在哪里,宏定义__define_initcall(level,fn)对于内核的初始化很重要,他指示编译器在编译的时候,将一系列初始化函数的起始地址值按照一定的顺序放在一个se...
分类:
系统相关 时间:
2015-01-20 22:02:55
阅读次数:
245
一,请求处理块设备的处理函数里没有read write等函数,所有对块设备的请求如读取 写入等都是通过request函数处理的。request函数的原型是void request(request_queue_t *queue);request函数的处理是异步的。每一个设备都有一个请求队列,当请求队列...
分类:
系统相关 时间:
2015-01-20 21:59:46
阅读次数:
215
一,ioctl使用实例ioctl使用实例驱动程序.h文件 memdev.h[cpp]view plaincopy/*定义幻数*/#defineMEMDEV_IOC_MAGIC'k'/*定义命令*/#defineMEMDEV_IOCPRINT_IO(MEMDEV_IOC_MAGIC,1)#define...
分类:
系统相关 时间:
2015-01-20 21:58:51
阅读次数:
194
1,以下为示例代码:[cpp]view plaincopy#include#include#include#include#includeMODULE_LICENSE("DualBSD/GPL");staticchar*Version="2.0.1";staticintmy_match(struct...
分类:
系统相关 时间:
2015-01-20 21:56:07
阅读次数:
155
一,注册字符设备[cpp]view plaincopy#defineGLOBALMEM_MAJOR256#defineGLOBALMEM_SIZE0X1000//4kstaticintchar_major=GLOBALMEM_MAJOR;//主设备号structchartest_dev{struct...
分类:
系统相关 时间:
2015-01-20 21:53:32
阅读次数:
224
1,gendisk结构体在linux内核中,使用gendisk结构体来表示一个实际的磁盘设备的抽象,结构体定义如下所示:[cpp]view plaincopystructgendisk{intmajor;//主设备号intfirst_minor;//次设备号intminors;//最大次设备数,如果...
分类:
系统相关 时间:
2015-01-20 21:52:15
阅读次数:
209
一,中断处理函数中断处理函数运行在中断上下文,不可抢占、调度。中断上下文编程需要注意以下几点: 不能睡眠或调用 schedule 放弃CPU 不能调用任何可能睡眠的函数,例如:获取信号量 不能访问用户空间数据,例如:copy_from_user,因为它不是在进程上下文中执行的。 执行时间尽可能短in...
分类:
系统相关 时间:
2015-01-20 21:51:44
阅读次数:
207
块设备是Linux最复杂的设备之一,但是作为固执于知其然的Geek,我们总会把代码翻个遍,把道理弄个透。当然了,快速地学习一种新的东西,方法是最重要的,个人觉得: 内核当中 MMC/SD 卡驱动程序构架是学习EMMC 驱动程序的重点,只有理解了它才能真正理解该块设备驱动程序,同时才能真正理解 LINUX 块设备驱动程序。...
分类:
其他好文 时间:
2015-01-18 22:45:30
阅读次数:
634