像我儿子一样永远保持好奇和梦想

【草稿】主次设备的定义和规划实现

上一篇 / 下一篇  2013-05-24 09:13:29 / 个人分类:linux

ET创芯网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台Gs(O [`

前言:在开发linuxdvb的时候,遇到一个问题,那就是linuxdvb的设备节点编排有严格的定义,而现有的老版本的linuxdvb是在linux kernel2.6.1*下建立的ET创芯网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台/e%{E DFuD)aS#O

ET创芯网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台{oda!`2G&m

于是遇到一个瓶颈,在现有的项目期限下,是更新新的linuxdvb到新的版本呢还是直接更新最新的次设备建立的方法接口:ET创芯网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台+K$z9}/TI8q

ET创芯网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台y+c;B8Zh

 

$K])iE:i0

e:_ | l]z0


ET创芯网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台9g9R#n`re#B${

w'p_rmG$_01 自动创建设备文件结点的基本思路和过程

;_ z[ M\$@I0ET创芯网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台g?/oI h

我们在刚开始写Linux设备驱动程序的时候,很多时候都是利用mknod命令手动创建设备节点,这样往往在启动脚本增加了很多工作量,显然不适合客户黑盒的原则。实际上Linux内核为我们提供了一组函数,可以用来在模块加载的时候自动在/dev目录下创建相应设备节点,并在卸载模块时删除该节点,当然前提条件是用户空间移植了udev
Y7D^j`0F0内核中定义了struct class结构体,顾名思义,一个struct class结构体类型变量对应一个类,内核同时提供了class_create(…)函数,可以用它来创建一个类,这个类存放于sysfs下面,一旦创建好了这个类,再调用device_create(…)函数来在/dev目录下创建相应的设备节点。这样,加载模块的时候,用户空间中的udev会自动响应device_create(…)函数,去/sysfs下寻找对应的类从而创建设备节点。ET创芯网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台[6yb C-K
注意,在2.6较早的内核版本中,device_create(…)函数名称不同,是class_device_create(…),所以在新的内核中编译以前的模块程序有时会报错,就是因为函数名称不同,而且里面的参数设置也有一些变化。ET创芯网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台n%y\1G$G5N
struct class和device_create(…) 以及device_create(…)都定义在/include/linux/device.h中,使用的时候一定要包含这个头文件,否则编译器会报错。
4Y*H^t-T0在2.6.26.6内核版本中,struct class定义在头文件include/linux/device.h

8s7\ ID&v#i4X0

)\{8W7dB1e1\4z.f#e0 

}^l hS0ET创芯网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台[*A/cw9q.P:~7| U

 ET创芯网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台|Dxv V0A

A` sQ;U#l-HC0 

JfMu IC&i0ET创芯网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台8p7l jF&?X'Y

 

z,S9S;|az9VZ)F_t0ET创芯网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台~A-~LP Hmd

 ET创芯网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台 ]+QFG3wS'V#~*A*~

*s'B0A4g5[ W0 

w7v7V/[#_3NB0

tH7qF Vo:pj0 ET创芯网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台!SA;QMXA0_9d8E|

-gy9Z}T3Z$_1p0 ET创芯网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台Hm9_Av zCw

ET创芯网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台6`k}S,lU+Au3Ti;|

 ET创芯网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台mqzH2?8dr

ET创芯网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台*eKC+b&~C`

 

7Xa)O m;VzU0

w jx;qq0 ET创芯网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台"u#u)[y/n1B7K

r+~`w KTM0


?N:q^r8S0ET创芯网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台(~h.j-D:c@7Z7u I

 ET创芯网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台Y9E^5S7_ a2Z

ET创芯网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台VT xd5aGU.{H

ref:

}0wE W:zz!lo2p0ET创芯网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台!^i.VdQ,j

1 自动创建节点的方法

b u#HP#U0

a{&hB#d9p0http://blog.csdn.net/engerled/article/details/6205722

4BrVqVM&P AT$W0

&vxe&iq&~0 

4Qj-moAW0ET创芯网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台,T$~9K4` w

 

M{ot/\$J$|)M0ET创芯网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台 W7}*W3@+P+Kh

 

4}%A3s+lrlO&Y*V;j0ET创芯网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台 P'I CX2@T#U

 ET创芯网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台*sz m]/K

ET创芯网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台:Us7KK0e(I

 

I3@-c0|M @Y QE(gD0ET创芯网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台DD)L+m/T)L {W

 ET创芯网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台l m"Qq`9|TH LJ

ET创芯网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台)g a*_F"R6g9^

 

#c/O.M^5f!p1[G0

TAG: 设备

 

评分:0

我来说两句

显示全部

:loveliness: :handshake :victory: :funk: :time: :kiss: :call: :hug: :lol :'( :Q :L ;P :$ :P :o :@ :D :( :)

Open Toolbar