linux 下开机自动加载驱动模块

本文详细介绍了在Ubuntu 10.10环境下,如何手动配置系统自动加载PCI数据采集板卡驱动,并通过编辑/etc/modules文件和正确放置模块文件至指定目录实现驱动在系统启动时的自动加载。

呼呼,好久不见

前一段时间开发了一个linux下的PCI数据采集板卡的驱动,在驱动调试时,一直使用insmod 动态的加载驱动模块(ko文件).

现在驱动基本开发结束,要提交给客户,使用insmod加载时,对客户来说不太好,比较麻烦,所以不能采用这种方法。由于

刚开始做驱动,还不知道如何在linux启动时自动加载自己的驱动模块,就对自动加载模块这方面深入了一下。最终通过与

COT(一个做驱动的家伙,带着眼镜,不知最近瘦了没)交流,通过各种途径,最后通过下列的方法加载成功,呵呵......

环境:ubuntu10.10

模块名:pciAdDrv.ko

步骤:1 打开下面文件

         vi /etc/moudles     添加模块名称:  pciAdDrv(注意不要后缀)

          2 下来就是将模块放到对应的位置,注意将驱动按类别放,我的属于pci就将它放在了drivers下的pci下。

         /lib/modules/2.6.35-22-generic/kernel/drivers/pci/

验证:以上操作完成后重启机器,在终端通过命令lsmod 就可以看到已经加载的模块了

 

 

(注:执行make modules 然后再执行make modules_install会把ko模块复制到/lib/modules下对应的目录中)

Linux系统中,断电重启后出现USB驱动加载的问题可能由多种因素引起,包括内核模块未能正确加载、设备初始化失败、硬件通信异常或系统电源管理配置不当。以下是一些排查与解决方法: ### 1. 检查USB设备是否被系统识别 使用 `lsusb` 命令查看系统是否识别到了USB设备。若设备未列出,可能设备未正确初始化或存在硬件连接问题。 ### 2. 检查内核日志以获取错误信息 通过 `dmesg | grep usb` 查看内核日志中的USB相关输出,识别是否存在驱动加载失败、设备无法枚举或端点配置错误等信息。例如,可能提示“device not accepting address”或“device descriptor read/64, error -71”等错误[^2]。 ### 3. 手动加载USB驱动模块 某些情况下,USB驱动模块可能未自动加载。可以尝试手动加载相关模块,如 `usbcore`、`ehci_hcd`、`xhci_hcd` 等: ```bash modprobe ehci_hcd modprobe xhci_hcd modprobe usbcore ``` 加载后再次检查设备是否被识别。 ### 4. 使用 `usbreset` 或 `uhubctl` 工具重置USB设备 如果设备已被识别但功能异常,可尝试通过工具重置USB设备。例如使用 `usbreset`: ```bash usbreset "Bus 001 Device 004" ``` 或者使用 `uhubctl` 控制USB集线器的电源状态以实现热插拔效果: ```bash uhubctl -l 1-0 -p 2 -a cycle ``` 此方法模拟了物理拔插操作,有助于恢复设备通信[^3]。 ### 5. 检查并更新设备树配置(适用于嵌入式平台) 对于嵌入式Linux系统(如使用A40i核心板),需检查设备树中USB控制器的配置是否正确,尤其是与TWI、GPIO、电源管理相关的引脚配置。错误的信号走线或电源控制逻辑可能导致设备在重启后无法正常初始化[^2]。 ### 6. 调整内核启动参数以延迟USB初始化 有时USB设备在系统启动时未能及时完成初始化,可在内核启动参数中添加 `usbcore.wait_for_disks=1` 或 `rootdelay=10` 以延迟USB设备的探测过程,确保设备有足够时间上电稳定。 ### 7. 确保电源管理配置合理 断电重启后,某些USB设备可能因电源管理策略(如 autosuspend)未能正确恢复。可尝试禁用相关功能: ```bash echo -1 > /sys/module/usbcore/parameters/autosuspend ``` ### 8. 更新内核和驱动 若问题持续存在,建议升级到最新的稳定版Linux内核,并确保使用厂商提供的专用驱动或补丁,以修复已知的兼容性问题。 ### 9. 检查硬件连接与供电 对于嵌入式系统或定制硬件平台,应检查USB接口的物理连接、供电稳定性及信号完整性,特别是高速信号线(如D+、D-)的布线是否符合规范。 ### 10. 自定义驱动加载脚本 可在系统启动脚本中添加自定义命令,确保特定USB驱动在系统启动后自动加载,并执行必要的初始化操作。例如,在 `/etc/rc.local` 中添加: ```bash modprobe usbserial vendor=0xXXXX product=0xXXXX ``` ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值