20150226 IMX257 总线设备驱动模型编程之驱动篇
2015-02-26 13:06
337 查看
[b]20150226 IMX257 总线设备驱动模型编程之驱动篇 [/b]
2015-02-26 11:42 李海沿
前面我们已经实现了 总线和设备 的驱动程序,接下来我们的任务就是 实现 驱动 了
地址:/article/6314233.html
/article/6314232.html
在实现驱动程序之前,我们来想两个问题:
[b]一、问题分析 [/b]
1.什么时候驱动程序会在总线上找它可以处理的设备?
在driver_register(&my_driver),驱动注册时,驱动程序会在总线上找它可以处理的设备。
2.为什么说这个驱动可以处理相应的设备?
总线来判断这个驱动是否可以处理相应的设备,在总线中有.match = my_match ,当驱动在总线上找到了设备时,.match 函数就是用来判断这个驱动是否可以处理设备,判断的原则就是,判断设备的dev->bus_id和驱动的driver->name 是否相等,如果相等,则表明这个驱动是可以处理这个设备的。 此时就说明驱动找到了设备,接着,驱动程序就会调用probe这个函数,这就是我们所说的总线设备驱动模型,三者工作作用。
加载总线之后,不管是先加载驱动或者先加载设备都可以,如果先加载驱动的话,在注册设备时就会在总线上寻找驱动,如果先加载设备时,当注册驱动程序时,驱动程序会在总线中寻找有没有相应的设备。
[b]二、程序分析 [/b]
[b]1.包含总线 [/b]
和前面的设备程序一样,先包含总线
View Code
好啦,至此,我们的总线-设备-驱动 模型已经实现了,但是并不能说我们已经懂了,这里再次废话一下,很多原理知识虽然乏味,还是要看,光会写程序是没用的,还需要懂为什么。
我也是处于学习阶段,这些都是我的一些简单的经验,能帮助大家快速入门,剩下的还是。。。入门了就会相对跟简单了。
很多人说学习linux驱动很难,那是因为对未知的恐惧,说简单点,就是那么几个结构体,算法和API的使用罢了,不说了,说多了就是欠揍的下场,
任重而道远,加油吧!!!
下面我们的任务就是实现 平台设备驱动程序 platform 的学习了。敬请期待。。。
2015-02-26 11:42 李海沿
前面我们已经实现了 总线和设备 的驱动程序,接下来我们的任务就是 实现 驱动 了
地址:/article/6314233.html
/article/6314232.html
在实现驱动程序之前,我们来想两个问题:
[b]一、问题分析 [/b]
1.什么时候驱动程序会在总线上找它可以处理的设备?
在driver_register(&my_driver),驱动注册时,驱动程序会在总线上找它可以处理的设备。
2.为什么说这个驱动可以处理相应的设备?
总线来判断这个驱动是否可以处理相应的设备,在总线中有.match = my_match ,当驱动在总线上找到了设备时,.match 函数就是用来判断这个驱动是否可以处理设备,判断的原则就是,判断设备的dev->bus_id和驱动的driver->name 是否相等,如果相等,则表明这个驱动是可以处理这个设备的。 此时就说明驱动找到了设备,接着,驱动程序就会调用probe这个函数,这就是我们所说的总线设备驱动模型,三者工作作用。
加载总线之后,不管是先加载驱动或者先加载设备都可以,如果先加载驱动的话,在注册设备时就会在总线上寻找驱动,如果先加载设备时,当注册驱动程序时,驱动程序会在总线中寻找有没有相应的设备。
[b]二、程序分析 [/b]
[b]1.包含总线 [/b]
和前面的设备程序一样,先包含总线
ifeq ($(KERNELRELEASE),) KERNELDIR ?= /home/study/system/linux-2.6.31 PWD := $(shell pwd) modules: $(MAKE) -C $(KERNELDIR) M=$(PWD) modules modules_install: $(MAKE) -C $(KERNELDIR) M=$(PWD) modules_install clean: rm -rf *.o *~ core .depend *.cmd *.ko *.mod.c .tmp_versions *.markers *.order *.symvers else obj-m := mybus.o mydev.o mydrv.o endif
View Code
好啦,至此,我们的总线-设备-驱动 模型已经实现了,但是并不能说我们已经懂了,这里再次废话一下,很多原理知识虽然乏味,还是要看,光会写程序是没用的,还需要懂为什么。
我也是处于学习阶段,这些都是我的一些简单的经验,能帮助大家快速入门,剩下的还是。。。入门了就会相对跟简单了。
很多人说学习linux驱动很难,那是因为对未知的恐惧,说简单点,就是那么几个结构体,算法和API的使用罢了,不说了,说多了就是欠揍的下场,
任重而道远,加油吧!!!
下面我们的任务就是实现 平台设备驱动程序 platform 的学习了。敬请期待。。。
相关文章推荐
- 20150226 IMX257 总线设备驱动模型编程之设备篇
- 20150226 IMX257 总线设备驱动模型编程之总线篇(二)
- 20150226 IMX257 总线设备驱动模型编程之平台总线设备platform
- 20150225 IMX257 总线设备驱动模型编程之总线篇
- 总线设备驱动模型----驱动篇
- 20150225 IMX257 设备驱动模型之sysfs文件系统知识点整合(二)
- 总线设备驱动模型——驱动篇
- 20150225 IMX257 设备驱动模型之Kobject(三)
- 总线设备驱动模型----驱动篇
- 20150223 IMX257 设备驱动模型之Kobject(一)
- Linux 设备模型 --- 总线设备驱动模型 --- 总线
- [快速上手Linux设备驱动]之我看Linux设备模型(总线篇)
- Linux设备驱动程式学习(13)-Linux设备模型(总线、设备、驱动程式和类)
- 平台总线设备驱动模型——基础知识
- ok6410学习笔记(15.platform平台总线驱动模型之混杂设备驱动led)
- 木其工作室(专业程序代写服务)[原]ok6410学习笔记(15.platform平台总线驱动模型之混杂设备驱动led)
- linux设备总线驱动模型 之 platform总线驱动
- 总线驱动模型中注册 字符类设备
- 设备驱动基础1:设备模型之总线,驱动,设备
- Linux设备模型(总线、设备、驱动程序和类)之三:device_driver && 多厂家驱动自动识别