随笔分类 - Linux驱动
摘要:今天在写一个简单的内核测试模块的时候出现了一个挺奇怪的问题,网上查了一下也没人解决,自己试了好久终于解决了,所以分享出来供大家参考,先贴出源码: /********************************************** *文 件 名:hello.c *文件描述:给模块传参 *创 建 人:Wang.J,2013.10.26 *版 本 号:0.1 *修改记录:**********...
阅读全文
摘要:原文章地址:http://blog.csdn.net/pzhsunxu/article/details/6998310 系统中能够随机(不需要按顺序)访问固定大小数据片(chunks)的设备被称作块设备,这些数据片就称作块。最常见的块设备是硬盘,除此以外,还有软盘驱动器、CD-ROM驱动器和闪存等等许多其他块设备。注意,它们都是以安装文件系统的方式使用的——这也是块设备的一般访问方式。 另一种...
阅读全文
摘要:ifeq ($(KERNELRELEASE),)KERNELDIR ?= /lib/modules/$(shell uname -r)/buildPWD := $(shell pwd)TEST = testmodules: $(MAKE) -C $(KERNELDIR) M=$(PWD)clean: rm -rvf *.ko *.o *.mod.c Module* module*test: gcc $(TEST).c -o $(TEST)mknod: sudo mknod /dev/my_hello c 365 0insmod: sudo insmod my_he...
阅读全文
摘要:代码中,我添加了很多注释,应该不难理解,有错误大家可以指出来,我再改正 #include #include #include #include #include #include #include #define I2C_MAJOR 365 //主设备号#define I2C_MINOR 0 //从设备号#define I2C_COUNT ...
阅读全文
摘要:字符设备驱动框架结构体 下面来分析这段代码: struct cdev { struct kobject kobj; struct module *owner; const struct file_operations *ops; struct list_head list; dev_t dev; unsigned int count; }; 这实际上是通过C语言的结构体来模拟面向对象的封装特性...
阅读全文
摘要:字符设备驱动 块设备驱动 网络设备驱动 驱动的开发基本上是遵循Linux提供的框架实现的,使用框架开发的主要目的是为了向上为应用层提供统一的用户接口,这样就可以实现将硬件透明的展示在开发人员的面前,实现不同设备同样接口,屏蔽实现,高内聚、低耦合。Linux内核的实现是面向对象思想的,所以我们可以将它看做这个框架就是一个父类,我们实现的代码不过是继承这个“框架父类”并实现从父类继承而来的方法,...
阅读全文
摘要:准备:1、英语-是工具2、电路原理图-补充“数电”的知识3、阅读内核代码的能力linux:vi+ctags+cscopewindows:source insight驱动开发的步骤I、编辑模块的组成:1、许可证的声明,许可证通常使用GPL协议,如果不声明许可证内核会产生“抱怨”信息,同时内核中的一些遵循GPL协议的功能函数将会无法使用,造成驱动功能受限。2、加载函数,初始化模块,在使用insmod加载驱动模块时自动调用,该函数必须声明为int init_module(void),insmod调用时会自动加载这个函数。3、卸载函数,恢复函数,在使用rmmod卸载驱动模块时会自动调用,函数必须声明为
阅读全文

浙公网安备 33010602011771号