介绍:
Linux 驱动有两种运行方式,第一种就是将驱动编译进 Linux 内核中,这样当 Linux 内核启动的时候就会自动运行驱动程序。第二种就是将驱动编译成模块(Linux 下模块扩展名为.ko),在Linux 内核启动以后使用“insmod”命令加载驱动模块。在调试驱动的时候一般都选择将其编译为模块,这样我们修改驱动以后只需要编译一下驱动代码即可,不需要编译整个 Linux 代码。而且在调试的时候只需要加载或者卸载驱动模块即可,不需要重启整个系统。总之,将驱动编译为模块最大的好处就是方便开发,当驱动开发完成,确定没有问题以后就可以将驱动编译进Linux 内核中,当然也可以不编译进 Linux 内核中,具体看自己的需求。

在SDX12系统中,音频是分为很多模块然后以模块加载的形式来,跟MDM9X07架构区别很大,所以要注意boot和system要用同一目录生成的文件,否则会出现boot和system不匹配的现象,造成audio模块加载失败。因为模块的地址变了

查看系统已经加载了哪些模块?
lsmod

/ # lsmod
lsmod
Module                  Size  Used by
machine_dlkm           36864  0
snd_soc_nau8810        32768  0
snd_soc_rt5616         40960  0
snd_soc_rl6231         16384  1 snd_soc_rt5616
wsa881x_dlkm           45056  0
wcd9335_dlkm          290816  0
swr_ctrl_dlkm          24576  1 wcd9335_dlkm
wcd9xxx_dlkm           49152  1 wcd9335_dlkm
mbhc_dlkm              36864  1 wcd9335_dlkm
wcd_core_dlkm         118784  4 wcd9xxx_dlkm,machine_dlkm,wsa881x_dlkm,wcd9335_dlkm
stub_dlkm              16384  1
swr_dlkm               24576  2 swr_ctrl_dlkm,wsa881x_dlkm
platform_dlkm        1339392  21
r8168                 196608  0
r8125                 131072  0
q6_dlkm               741376  6 wcd9xxx_dlkm,machine_dlkm,platform_dlkm,swr_ctrl_dlkm
adsp_loader_dlkm       16384  0
apr_dlkm              131072  4 q6_dlkm,platform_dlkm,adsp_loader_dlkm,wcd9335_dlkm
snd_event_dlkm         16384  4 q6_dlkm,machine_dlkm,apr_dlkm,wcd9335_dlkm
q6_notifier_dlkm       16384  1 apr_dlkm
wlan_sdio            4612096  0
rmnet_core            159744  1

查看本地有哪些模块
find -name *.ko

/ # find -name *.ko
find -name *.ko
./usr/lib/modules/3.18.120-perf/kernel/net/key/af_key.ko
./usr/lib/modules/3.18.120-perf/kernel/net/netfilter/xt_physdev.ko
./usr/lib/modules/3.18.120-perf/kernel/block/test-iosched.ko
./usr/lib/modules/3.18.120-perf/kernel/crypto/ansi_cprng.ko
./usr/lib/modules/3.18.120-perf/kernel/drivers/mmc/card/mmc_test.ko
./usr/lib/modules/3.18.120-perf/kernel/drivers/mmc/card/mmc_block_test.ko
./usr/lib/modules/3.18.120-perf/kernel/drivers/net/phy/at803x.ko
./usr/lib/modules/3.18.120-perf/kernel/drivers/net/phy/qca8337.ko
./usr/lib/modules/3.18.120-perf/kernel/drivers/net/phy/bcm898xx.ko
./usr/lib/modules/3.18.120-perf/kernel/drivers/net/ethernet/qualcomm/emac/qcom_emac.ko
./usr/lib/modules/3.18.120-perf/kernel/drivers/net/nf_conntrack_rtsp.ko
./usr/lib/modules/3.18.120-perf/kernel/drivers/net/nf_nat_rtsp.ko
./usr/lib/modules/3.18.120-perf/kernel/drivers/spi/spi-multi-chn.ko
./usr/lib/modules/3.18.120-perf/kernel/drivers/spi/spidev.ko/ # insmod ./usr/lib/modules/3.18.120-perf/kernel/drivers/spi/spi-multi-chn.ko
insmod ./usr/lib/modules/3.18.120-perf/kernel/drivers/spi/spi-multi-chn.ko

加载模块

insmod drv.ko

insmod 命令不能解决模块的依赖关系,比如 drv.ko 依赖 first.ko 这个模块,就必须先使用insmod 命令加载 first.ko 这个模块,然后再加载 drv.ko 这个模块。但是 modprobe 就不会存在这个问题, modprobe 会分析模块的依赖关系,然后会将所有的依赖模块都加载到内核中,因此modprobe 命令相比 insmod 要智能一些。 modprobe 命令主要智能在提供了模块的依赖性分析、错误检查、错误报告等功能,推荐使用 modprobe 命令来加载驱动。

modprobe -r drv.ko

卸载模块

rmmod drv

linux系统把驱动编译成.ko模块 insmod动态加载相关推荐

  1. Linux 2.6内核的编译步骤及模块的动态加载

    本文是基于2.6的内核,也建议各位可以先看一下<Linux内核设计与实现(第二版)>作为一个基础知识的铺垫.当然,从实践角度来看,只要按着以下的步骤去做也应该可以实现成功编译内核及加载模块 ...

  2. linux ko模块插入自加载方法

    在1804上验证成功 主要是usb无线网卡等希望插上去能自动加载驱动. 方法很简单: 将编译好的(驱动)ko 拷到 /lib/modules/<your kernel version>/k ...

  3. android 模块自动加载,Android 之ko模块的自动加载

    最近在做一个触摸式遥控器,以控制Android TV,供应商提供了触摸板驱动的source code,我将其编译生成一个适合我们平台的ko模块.但是有个问题,每次用时,必须手动insmod进去,很麻烦 ...

  4. linux系统css样式加载不出,Linux系统虚拟主机网站访问页面css样式文件加载失败或图片无法显示的分析解决...

    问题场景:客户使用Linux系统虚拟主机,网站程序上传之后访问发现页面排版有问题,css样式文件加载失败,部分图片显示不出来,以织梦CMS程序为例,如下图所所示: 问题原因: 1.Linux系统虚拟主 ...

  5. Linux系统下iso文件的制作和解压以及加载

    linux下iso文件的制做和解压 1. 制作ISO镜像文件 切换为root账户,执行命令 1 cp /dev/cdrom XXXXX.iso XXXXX.iso即为需要命名的ISO文件名.执行之后, ...

  6. Extjs创建多个application实现多模块MVC动态加载。。

    这几天用extjs4.1做项目,有很多功能模块,使用mvc开发,系统有很多功能模块.如果用一个application进行开发,那么所有功能模块的js都得全部加载....很恐怖.. 例如: 图片 Ext ...

  7. Linux系统 安装飞桨PaddleHub+LAC实现词法分析 实现加载自定义词典分词 (解决Lac服务启动报错问题、解决自定义词典空格无法分词问题)

    1.先上链接:飞桨PaddlePaddle-源于产业实践的开源深度学习平台 2.LAC模型简介:Lexical Analysis of Chinese,简称 LAC,是一个联合的词法分析模型,能整体性 ...

  8. 【游戏逆向】FPS游戏自瞄透视模块动态加载分析

    用OD附加游戏进程, 进入OD主界面以后,我们CTRL+G 跳转到地址00401000(系统默认通常游戏领空的起始地址)的时候发现了错误. 也就是说代码段不在这了, 那跑哪去了? 为什么会有这样的错误 ...

  9. react 动态修改路由_升级到 React Router 4 并实现动态加载和模块热替换

    这篇文章是升级到Webpack2坑--模块热替换失效页面不自动刷新?的后续.那篇文章主要说明了,升级到 Webpack 2 之后,通过升级webpack-dev-server和react-hot-lo ...

最新文章

  1. 安卓webview子线程网络请求,怎么获得结果?
  2. 十三、开多线程,咱们一起来斗图
  3. iPhone Safari下iframe不显示滚动条无法滚动的解决方法
  4. Java黑皮书课后题第7章:*7.1(指定等级)编写一个程序读入学生成绩,得到最高分best,然后根据下面的规则给出等级值。程序提示用户输入学生总数,然后提示用户输入所有的分数,最后显示等级给出结论
  5. xshell链接kali
  6. UGUI 下拉滚动框
  7. 跟计算机断层扫描相关的技术,计算机断层扫描技术(简称PET)
  8. python菱形画法解释_用Python画棱形
  9. 鸿蒙有安卓内核吗,华为鸿蒙2.0可以替代安卓吗,华为鸿蒙2.0优势在哪
  10. jest 单元测试模拟模块设置动态值
  11. JavaScript学习笔记之DOM篇,带你全面了解什么是DOM
  12. 分布式一致性算法2PC和3PC
  13. python怎么调用函数的返回值_python函数的返回值是什么
  14. Qt QImage实现频谱图绘制
  15. 《操作系统真象还原》第十三章 ---- 编写硬盘驱动软件 行百里者半九十终成时喜悦溢于言表
  16. Typora+smms+picGo(app) 图床使用办法
  17. Android N 截图曝光,手机也能同屏多任务了!
  18. mysql 主从复制 error 1677
  19. php足疗预约,足浴养生管理系统轻松实现各种线上预约功能?
  20. 2017年做微商如何赚钱

热门文章

  1. ResultTransformer deprecated 替代方案及HQL无法使用子查询解决
  2. 微信小程序+.NET(十四) 悦听小说小程序(待续)
  3. 云管升级助力海格通信创新之路提速-嘉为案例
  4. MySQL连接数据库url的参数characterEncoding=UTF-8
  5. 读《人体使用手册》(吴清忠 著)有感
  6. igrimaceV8.0.0 IG 一键新机 陌陌 Uber优步打针 平安易贷 滴滴 一号专车 饿了么 ios8 V8 ZTN(插件安装方式)
  7. TextView行间距设置
  8. pikachu靶场暴力破解专题
  9. c语言fscanf读取结构体变量,怎样用fscanf读入结构体变量
  10. 基于PLC数控钻床控制系统设计(说明书+开题报告+CAD 接线图 梯形图 原理图)