linux下重新加载驱动模块_linux加载模块驱动 - CSDN
  • 加载驱动模块 方法一: 进入SHT21.ko驱动模块文件所在的目录,然后直接 insmod SHT21.ko 即可 方法二: 将SHT21.ko文件拷贝到/lib/module/#uname -r#/目录,这里,#uname -r#意思是,在终端中输入 uname -r...

    假设要加载的驱动程序模块名为SHT21.ko

    加载驱动模块

    方法一:
    进入SHT21.ko驱动模块文件所在的目录,然后直接
    insmod SHT21.ko
    即可

    方法二:
    将SHT21.ko文件拷贝到/lib/module/#uname -r#/目录下,这里,#uname -r#意思是,在终端中输入
    uname -r后显示的内核版本及名称,例如mini2440中#uname -r#就是2.6.32.2-FriendlyARM。

    然后
    depmod(会在/lib/modules/#uname -r#/目录下生成modules.dep和modules.dep.bb文件,表明模块的依赖关系)
    最后
    modprobe SHT21(注意这里无需输入.ko后缀)
    即可

    两种方法的区别:

    modprobe和insmod类似,都是用来动态加载驱动模块的,区别在于modprobe可以解决load module时的依赖关系,它是通过/lib/modules/#uname -r/modules.dep(.bb)文件来查找依赖关系的;而insmod不能解决依赖问题。

    也就是说,如果你确定你要加载的驱动模块不依赖其他驱动模块的话,既可以insmod也可以modprobe,当然insmod可以在任何目录下执行,更方便一些。而如果你要加载的驱动模块还依赖其他ko驱动模块的话,就只能将模块拷贝到上述的特定目录,depmod后再modprobe。

    查看已加载的驱动模块列表

    在任何目录下,
    lsmod
    即可

    卸载驱动模块

    在任何目录下,
    rmmod <module_name>
    即可
    注意其中”module_name”是lsmod显示的模块名称,而不是对应的ko文件名

    参考资料
    .ko内核模块文件以及载入模块命令modprobe insmod

                <link rel="stylesheet" href="http://csdnimg.cn/release/phoenix/production/markdown_views-d4dade9c33.css">
                    </div>
    
    展开全文
  • Linux驱动模块化编译、加载、卸载 2010-8-27 硬件平台:OMAPL-138 软件平台:linux2.6.32 + Ubuntu   步骤:: 1、编写first_driver_hello.c文件,将其放在/linux2.6.32/drivers/char路径: 2、在/...

    Linux驱动模块化编译、加载、卸载

    2010-8-27

    硬件平台:OMAPL-138

    软件平台:linux2.6.32 + Ubuntu

     

    步骤::

    1、编写first_driver_hello.c文件,将其放在/linux2.6.32/drivers/char路径下:

    2、在/linux2.6.32/drivers/cha/Kconfig文件中添加如下语句:

     

    3、在/linux2.6.32/drivers/cha/Makefile文件中添加如下语句:

     

    4、编译模块:

             在控制台中进入到/linux2.6.32目录

             Make  ARCH=arm  CROSS_COMPILE=arm-none-linux-gnueabi- xconfig

             Make  ARCH=arn  CROSS_COMPILE=arm-none-linux-gnueabi- modules

             在/linux2.6.32/drivers/char下就可以看到first_driver_hello.ko文件

    5、将first_driver_hello.ko拷贝到/opt/workspace/SEED-DEC138/nfs/opt(我的NFS挂载处)

     

     

     

     

     

    6、上电在进入linux后,执行

             Insmod  first_driver_hello.ko

     

             Rmmod first_driver_hello.ko

    展开全文
  • 在编写驱动程序的时候有时候会出现这种情况,模块加载之后不能卸载或卸载之后不能在加载,cat /proc/devices 后发现设备还占用着设备号,这种情况,再次加载驱动模块肯定不会成功,必须重新启动才可以解决。...
    在编写驱动程序的时候有时候会出现这种情况,模块加载之后不能卸载或卸载之后不能在加载,cat /proc/devices 后发现设备还占用着设备号,这种情况下,再次加载驱动模块肯定不会成功,必须重新启动才可以解决。最近仔细看书后发现自己在驱动程序的卸载函数中少写了两个函数调用,以至于在加载模块的时候申请或添加的设备没有被释放或删除。

    解决方案:
    第一步、在/lib/modules/目录中建立与当前内核版本号一致的目录 如 uname -r 得到 2.6.31.6则mkdir -p /lib/modules/2.6.31.6 否则会出现“rmmod: chdir(2.6.31.6): No such file or directory”类似的错误,而模块也没有被卸载;

    第二步、在驱动模块卸载函数__exit中的cdev_del(struct cdev *)函数调用后即注销字符设备后调用 unregister_chrdev_region(dev_t devno,  unsigned count)函数释放在驱动加载函数__init中通过register_chrdev_region、alloc_chrdev_region,注册的主设备号。(cdev_del函数、unregister_chrdev_region函数缺一不可);

    经过以上两步操作后,rmmod 模块名称 卸载模块就不会错误了,而且cat /proc/devices也不会再有已经卸载的模块的信息,这样再次加载模块也不会出错了!

    展开全文
  • 假设你的设备驱动程序为:yourdrivername.ko 1 cp yourdrivername.ko /lib/modules/"version"/kernel/drivers/misc 其中,version为linux的版本,默认为:2.6.23.1-42.fc8 2 编辑/lib/modules/"version"/modules....


    假设你的设备驱动程序为:yourdrivername.ko  

    1 cp yourdrivername.ko /lib/modules/"version"/kernel/drivers/misc  

    其中,version为linux的版本,默认为:2.6.23.1-42.fc8  

    2 编辑/lib/modules/"version"/modules.dep,设置驱动程序之间的关联,增加一行:  

    /lib/modules/"version"/kernel/drivers/misc/yourdrivername.ko:  

    如果有关联,在:后面标注关联的驱动程序名称  

    3 编辑/etc/rc.d/rc.local,增加一行  

    /sbin/modprobe yourdrivername


    .模块加载的两种方式


    1)、动态加载
        动态加载是将驱动模块加载到内核中,而不能放入/lib/modules/下。
         在2.4内核中,加载驱动命令为:insmod ,删除模块为:rmmod;
         在2.6以上内核中,除了insmod和rmmod外,加载命令更有modprobe;
         insmod和modprobe不同之处:
         insmod 绝对路径/××.o,而modprobe ××即可,不用加.ko或.o后缀,也不用加路径;最重要的一点是:modprobe同时会加载当前模块所依赖的其他模块;
         lsmod查看当前加载到内核中的所有驱动模块,同时提供其他一些信息,比如其他模块是否在使用另一个模块。



    2)、静态加载
    (一)概念
         在执行make menuconfig命令进行内核设置裁剪时,在窗口中能选择是否编译入内核,还是放入/lib/modules/下相应内核版本目录中,还是不选。
    (二)操作步骤
         linux设备一般分为:字符设备、块设备和网络设备,每种设备在内核原始码目录树drivers/下都有对应的目录,其加载方法类似,以下以字符设备静态加载为例,假设驱动程式原始码名为ledc.c,具体操作步骤如下:
         第一步:将ledc.c源程式放入内核源码drivers/char/下;
         第二步:修改drivers/char/Config.in文件,具体修改如下:
                按照打开文件中的格式添加即可;


    展开全文
  • 驱动操作命令: insmod / modprobe 加载驱动 rmmod 卸载驱动 lsmod 查看系统中所有已经被加载了的所有的模块以及模块间的依赖关系 modinfo 获得模块的信息查看模块
  • 前一段时间开发了一个linux下的PCI数据采集板卡的驱动,在驱动调试时,一直使用insmod 动态的加载驱动模块(ko文件). 现在驱动基本开发结束,要提交给客户,使用insmod加载时,对客户来说不太好,比较麻烦,所以不能...
  • 主机/work/mydrv/目录,已经写好了驱动层的C文件:mydrv.c,应用层的C文件:mytest.c,以及用来把mydrv.c生成驱动模块(.ko文件)的Makefile。 本实验的目的是:把已经写好的LED的驱动程序mydrv.c编译后加载到...
  • 第二种就是将驱动编译成模块(Linux 模块扩展名为.ko),在Linux 内核启动以后使用“insmod”命令加载驱动模块。在调试驱动的时候一般都选择将其编译为模块,这样我们修改驱动以后只需要编译一下驱动代码即可,不...
  • 1. 添加需开机自启动加载驱动模块: 打开vim/etc/modules 添加对应模块名称: ixgbe(注意不要ko后缀) 2. 拷贝驱动模块到对应的目录 将模块放到对应的位置,注意将驱动按类别放,因万兆网卡属于pci设备,因此就...
  • 驱动操作命令:  insmod / modprobe 加载驱动  rmmod 卸载驱动  lsmod 查看系统中所有已经被加载了的所有的模块以及模块间的依赖关系  modinfo 获得模块的信息
  • 我用的是中标麒麟版本,X86架构,内核版本为3.3.4-5.1.nk.i686.PAE,我现在开发了一个PCI设备驱动,我现在想让PC机开机自动加载驱动模块,我应该 怎么做? 在网上搜到一个办法,说是在/etc/sysconfig/modules添加...
  • 摘要: 现在大多数硬件设备的驱动都是作为模块出现的,Linux启动过程中会自动加载这些模块,本文通过内核源码简要说明这个过程。 1 驱动模块本身包含设备商、设备ID号等详细信息 如果想让内核启动过程中自动加载某个...
  • linux 开机自动加载驱动模块 前一段时间开发了一个linux下的PCI数据采集板卡的驱动,在驱动调试时,一直使用insmod 动态的加载驱动模块(ko文件). 现在驱动基本开发结束,要提交给客户,使用insmod加载时,...
  • Linux系统的驱动默认存放目录为: /lib/modules/$(uname -r)/kernel/drivers,因此如果希望系统可以启动时自动加载驱动必须首先把驱动放到该目录下面,执行完此步操作以后,再执行 depmod 命令更新驱动依赖关系文件 ...
  • 于是开始折腾“linux开机自动加载驱动”,百度,谷歌了半天,怎么感觉说的都不清楚:为毛他们说的文件、文件夹我都没有?难道我用的是假的文件系统,假的内核? 唯一靠谱的就是:在 /etc/rcx.d 文件夹添加shell...
  • 在完成驱动调试后,一直使用insmod 动态的加载驱动模块(ko文件).会非常麻烦。找到以下办法: 步骤:1 、打开下面文件  sudo vim /etc/moudles 添加模块名称: *****(注意不要后缀)  2 、将模块放到对应...
1 2 3 4 5 ... 20
收藏数 70,783
精华内容 28,313
关键字:

linux下重新加载驱动模块