2015年2月16日

摘要: 引入: 有时对设备不仅仅是进行一些读写操作,还需要进行一些对设备的控制,比如LED的点燃与熄灭,电机的转速等。那就需要使用到ioctl这个系统调用。先来看看他的函数原型: intioctl(int fd,unsigned int cmd, ...); 参数: fd:字符设备文件的文件描述... 阅读全文

posted @ 2015-02-16 18:23 Bumble_Bee 阅读(180) 评论(0) 推荐(0) 编辑

摘要: 今天来总结一下这几天字符设备驱动的学习吧。 首先要明白这几天的学习是围绕哪些角色展开的。我认为主角有这三个:驱动程序、字符设备文件、用户应用程序。而这些角色的出场顺序应该也是这样:应该先有驱动程序,然后有字符设备文件,最后才有用户应用程序。驱动程序要做的事情有这么几个: 1、初始化好驱动,分... 阅读全文

posted @ 2015-02-16 18:16 Bumble_Bee 阅读(162) 评论(0) 推荐(0) 编辑

摘要: 一、设备描述结构 在任何一种驱动模型中,设备都会用内核中的一种结构来描述,字符设备在内核中使用struct cdev结构体来描述。1 struct cdev {2 struct kobject kobj;3 struct module *owner;4 const stru... 阅读全文

posted @ 2015-02-16 18:13 Bumble_Bee 阅读(310) 评论(0) 推荐(0) 编辑

摘要: 应用程序通过操作字符设备文件来控制字符设备,字符设备文件通过主设备号操作字符设备。 创建字符设备文件 使用mknod命令 mknod /dev/文件名 c 主设备号 次设备号 其中c为char的缩写,意为字符设备。主设备号用cat /proc/devices命令查询,次设备号为0-25... 阅读全文

posted @ 2015-02-16 18:01 Bumble_Bee 阅读(204) 评论(0) 推荐(0) 编辑

摘要: 一、驱动分类 1、常规分类法 a、字符设备 一种以字节为最小访问单位的设备,通常支持open,close,read,write等系统调用。属于这种设备的有led,串口等。 b、块设备 最小访问单位为512字节或512的倍数,flash等。 c、网络接口设备 ... 阅读全文

posted @ 2015-02-16 17:59 Bumble_Bee 阅读(122) 评论(0) 推荐(0) 编辑

摘要: 一、 Linux内核链表为双向循环链表,和数据结构中所学链表类似,具体不再细讲。由于在内核中所实现的函数十分经典,所以移植出来方便后期应用程序中的使用。/*********************************** 文件名:kernel link list of linux.h作者:Bu... 阅读全文

posted @ 2015-02-16 17:54 Bumble_Bee 阅读(648) 评论(0) 推荐(0) 编辑

摘要: 一、Linux内存管理模型 1、虚拟地址与物理地址的映射 2、物理地址的分配二、虚拟地址与物理地址的映射 1、虚拟地址空间分布 32位处理器有32根地址总线,可访问4G的物理空间。其中有0-3G为用户程序空间,剩下3-4G为内核空间。内核空间又分为如下四个部分。 A、直接映射区:3... 阅读全文

posted @ 2015-02-16 17:35 Bumble_Bee 阅读(351) 评论(0) 推荐(0) 编辑

摘要: 前一次讲的三个要素是编写内核模块必不可少的三个信息,今天讲的这些是可选信息,可写可不写。 一、模块申明 MODULE_LICENSE("GPL"); 声明模块遵守的协议 MODULE_AUTHOR("Bumble Bee"); 声明模块编写的作者 MODULE_DESCRIPTI... 阅读全文

posted @ 2015-02-16 17:32 Bumble_Bee 阅读(137) 评论(0) 推荐(0) 编辑

摘要: 一、关于内核模块 如果将所有的组件全部编入内核映像太浪费内存空间。比方说USB驱动,我只需要它运行1分钟,那么在剩余内核运行的59分钟都没有使用到它,但是他却一直占用着系统资源,显然这很不科学,所以就有了今天的题目——内核模块设计。 内核模块特点: 1、不被编译进内核文件 2、在内核... 阅读全文

posted @ 2015-02-16 17:24 Bumble_Bee 阅读(232) 评论(0) 推荐(0) 编辑

摘要: 昨天编译并下载好了内核,但是内核还是无法正常启动,原因就是没有挂载根文件系统。今天讲的就是如何去创建一个根文件系统并将它挂载到内核上。 一、创建根文件系统 1.创建目录 #mkdir rootfs #cd rootfs #mkdir bin dev etc ... 阅读全文

posted @ 2015-02-16 17:14 Bumble_Bee 阅读(450) 评论(0) 推荐(0) 编辑