LDD3 阅读理解问题

时间:2021-09-01 04:01:51
对于设备驱动而言:
insmod ***.ko 表示将驱动加载进内核=======类似于c++中类
mknod /dev/*** 表示添加设备=============类似于c++中对象(/dev/***只是name无实际意义,只要设备号对的就可以 )

请问这样理解可以吗?

5 个解决方案

#1



对于设备驱动而言:
 insmod ***.ko 表示将驱动加载进内核
类似中应用程序中的 .so 动态库,只是 .ko被加载内核空间,而 .so被加载到用户态。
 mknod /dev/*** 表示添加设备
表示添加设备文件,设备文件名不能随意,要跟驱动程序一致。

#2


似乎还不能完全这样理解。可以看一下设备模型。
另外,LDD里面的驱动相对是比较单纯的。只示例一“类”设备,你可以这样理解。

实际的驱动程序会比示例麻烦的多。比如一个网卡,是网络设备的同时也会是PCI设备。在prob的时候首先是PCI来执行,然后判断由哪个驱动(或者模块)来处理他。

建议理解一下Linux的设备模型,会有更深的理解。

#3


kobj模型比较深入,建议楼主慢慢来。

#4


.....
没那么复杂

ko模块就像定义好的类
一旦一个对应主设备号的/dev设备文件打开,就使用这个ko模块创建一个实例

仅仅是 类 实例化成 对象 的含义

#5


总结一下楼上各位说法:
     对于一些比较简单的字符设备驱动(比如LDD3里面scull)和使用设备,可以看作类似于“类和对象”的关系。
    而/dev/下大量驱动却是混合体,可能包含几种设备驱动(比如 /net)这时候就不能简单理解为上面模式

#1



对于设备驱动而言:
 insmod ***.ko 表示将驱动加载进内核
类似中应用程序中的 .so 动态库,只是 .ko被加载内核空间,而 .so被加载到用户态。
 mknod /dev/*** 表示添加设备
表示添加设备文件,设备文件名不能随意,要跟驱动程序一致。

#2


似乎还不能完全这样理解。可以看一下设备模型。
另外,LDD里面的驱动相对是比较单纯的。只示例一“类”设备,你可以这样理解。

实际的驱动程序会比示例麻烦的多。比如一个网卡,是网络设备的同时也会是PCI设备。在prob的时候首先是PCI来执行,然后判断由哪个驱动(或者模块)来处理他。

建议理解一下Linux的设备模型,会有更深的理解。

#3


kobj模型比较深入,建议楼主慢慢来。

#4


.....
没那么复杂

ko模块就像定义好的类
一旦一个对应主设备号的/dev设备文件打开,就使用这个ko模块创建一个实例

仅仅是 类 实例化成 对象 的含义

#5


总结一下楼上各位说法:
     对于一些比较简单的字符设备驱动(比如LDD3里面scull)和使用设备,可以看作类似于“类和对象”的关系。
    而/dev/下大量驱动却是混合体,可能包含几种设备驱动(比如 /net)这时候就不能简单理解为上面模式