最近在学驱动开发,了解了如果在一块板子上安装一个驱动,需要加载一个device.ko和driver.ko的文件,如果device中的name和driver中的id_table数组中的成员匹配,就执行probe函数,在里面新建/dev下的设备.
我有个疑惑,我这样写驱动都是手动加载的device.ko文件和driver.ko文件,如果我linux电脑上突然插了一个新设备,难道电脑会自动给我加载一个device.ko文件和driver.ko文件吗?
我有个疑惑,我这样写驱动都是手动加载的device.ko文件和driver.ko文件,如果我linux电脑上突然插了一个新设备,难道电脑会自动给我加载一个device.ko文件和driver.ko文件吗?
解决方案 »
- python/mysql python连接数据库问题
- 编译时遇到问题:collect2: error: ld terminated with signal 6 [Aborted], core dumped
- gcc的 sysroot
- 虚拟机中的kali 一重启封信就这样 求解!!!!
- suse 如何安装例如libssl-dev 之类一般用 apt-get安装的软件?
- Weblogic12.2.1启动报错<BEA-149205> <Failed to initialize the application "insurance"
- ubuntu 18.04 desktop 如何安装 xrdp?
- 虚拟机连不到网,网上教程怎么试都不行
- 求助在ubuntu18.04中安装slam评估工具evo出现如下图所以错误,请问大家如何解决???
- 求助:Linux下实现网络记事本
- centos7.5环境下keepalived的vip无法ping通
- prometheus+grafana导入json之后没有数据显示
热插拔设备有自己专门的驱动架构,
比如USB热插拔,它有自己的守护进程以及对于的硬件中断去标识对于的接口状态,然后根据具体的接口硬件信息去匹配具体的device结构,进而加载驱动
并没有你说的insmod什么ko ,ko是指内核动态加载驱动的一个窗口,来源于内核编译方式和驱动加载的方式,有没有对驱动不是有绝对有影响的
但是里面对于device_register这些接口的调用以及device_unregister的调用还是有的
其实我也没看过Linux源代码。
不过我还真不信Linux实现即插即用相关功能对应的源代码以前没人研究和写过相关博客或纸质论文或书籍啥的。
你所谓的新设备怎么理解:
1、linux压根没有驱动,这个是设备无法使用的,在总线层面会看到,但也无法使用、
2、linux有驱动,但是之前这个设备没有插入过,现在linux内核里面设备驱动已经相当多了,这种设备得看一般可以直接使用(热插拔),或者重启使用(不支持热插拔)
比如USB,首先是USB的HUB会监测自己下行端口的变化(插拔)
在检测到设备插入后,尝试枚举。(简单地说就是读取设备的VID PID)对应的,USB设备的驱动匹配一般就是根据VID PID来匹配的。probe匹配的执行时机,是在任一设备或者驱动加载时,都会尝试进行匹配。热插拔的基础,是驱动已经被加载了。
如果某一个USB设备,对应的驱动没有加载,那么在插入时,到枚举这一步是可以的。但是驱动不会匹配。后面手动的Insmod对应驱动应该也是可以正常工作的