文章分类 - linux驱动
摘要:这篇文章的前半部分是转载的,后面是我的个人笔记对于一个简单的驱动模块,以下为Makefile的经典构成://------------Makefile---------------------- obj-m := hello.o KERNELDIR :=/lib/modules/$(shell uname -r)/build PWD := $(shell pwd) modules: $(MAKE)-C $(KERNELDIR) M=$(PWD) modules #注意前面必须为tab modules_install: $(MAKE)-C $(KERNELDIR) M=$(PWD)...
阅读全文
摘要:分类:Linux设备驱动2011-09-08 16:183153人阅读评论(1)收藏举报linuxclassliststructlinux内核nulllinux MISC 驱动模型分析 阅读led驱动程序的代码的时候,没有发现ldd3中提到的各种字符设备注册函数,而是发现了一个misc_register函数,这说明led设备是作为杂项设备出现在内核中的,在内核中,misc杂项设备驱动接口是对一些字符设备的简单封装,他们共享一个主设备号,有不同的次设备号,共享一个open调用,其他的操作函数在打开后运用linux驱动程序的方法重载进行装载。1. 主要数据结构 内核维护一个misc_l...
阅读全文
摘要://此文档主要是分析我们在内核驱动中经常打交道的module_init和module_exit函数调用。//编写人:lihaiping-2013-08-08驱动编写的时候,我们在很多编写驱动的文件中会看到和用到module_init()和module_exit()函数,那么经过这两个函数封装的函数以后,它是怎么样被系统调用的呢?在系统中,我们一起来探索一下内核源码中对这两个函数的定义。在3.0.8kernel中,我自己查询了一下源码,它的整个定义过程如下:#definemodule_init(x) __initcall(x);然后#define__initcall(fn)device_init
阅读全文
摘要:i2c-adapter的注册过程:原文出处:http://www.cnblogs.com/armlinux/archive/2011/01/18/2396860.htmli2c-s3c2410.c======================module_init(12c_adap_s2c_init)module_init申明函数static int __init i2c_adap_s3c_init(void){int ret;ret = platform_driver_register(&s3c2410_i2c_driver);if (ret == 0) { ret = platfor
阅读全文
摘要:LINUX中的platform机制:原文出处:http://www.cnblogs.com/armlinux/archive/2010/11/26/2396887.html最近研究了一下Linux驱动的platform机制。从Linux2.6起,引入了一套新的驱动管理和注册机制:Platform_device和Platform_driver。Linux中大部分的设备驱动,都可以使用这套机制,设备用platform_device表示,驱动用platform_driver进行注册。Linuxplatformdriver机制和传统的device_driver机制相比,一个十分明显的优势在于platf
阅读全文
摘要:原文出处:http://www.cnblogs.com/armlinux/archive/2010/07/28/2396959.html通过Platform机制开发发底层驱动的大致流程为:定义platform_device---注册platform_device---定义platform_driver-----注册platform_driver。1.Platform_device定义于kernel/include/linux/platform_device.h中,structplatform_device{constchar*name;u32id;structdevicedev;u32num_
阅读全文
摘要:原文地址:LCD驱动分析(一):时序的分析作者:huabinbin00第一次调试lcd驱动的话是不是对下面的结构有点陌生,不知道那些值是如何得来的,当然我就属于其中的一个点击(此处)折叠或打开1staticstructs3cfb_lcdlte480wv={2.width=1024,//800,3.height=600,//480,4.bpp=24,//24,//32,5.freq=45,//45,//6067.timing={//这里主要会影响图像在LCD上显示的位置,偏移啥的8.h_fp=160,//210,//8,9.h_bp=160,//46,//13,10.h_sw=16,//311.
阅读全文