常用命令

  • lsmod: list module,将模块列表显示),功能是打印出当前内核中已经安装的模块列表
  • insmod: install module,安装模块,功能是向当前内核中去安装一个模块,用法是insmod xxx.ko
  • modinfo: module information,模块信息,功能是打印出一个内核模块的自带信息。,用法是modinfo xxx.ko
  • rmmod: remove module,卸载模块,功能是从当前内核中卸载一个已经安装了的模块,用法是rmmod xxx(注意卸载模块时只需要输入模块名即可,不需加.ko后缀)
  • mknod: 创建一个节点
  • modprobe、depmod等

常用宏

  • MODULE_LICENSE: 模块的许可证. 一般声明为GPL许可证, 而且最好不要少, 否则可能会出现莫名其妙的错误(譬如一些明显存在的函数提升找不到).
  • MODULE_AUTHOR: 声明模块作者, 可通过modinfo中查看
  • MODULE_DESCRIPTION: 模块描述, 可通过modinfo中查看
  • MODULE_ALIAS: 模块别名

驱动函数修饰符

  • __init: 本质上是个宏定义,在内核源代码中就有#define __init xxxx. 这个__init的作用就是将被他修饰的函数放入.init.text段中去(本来默认情况下函数是被放入.text段中), 整个内核中的所有的这类函数都会被链接器链接放入.init.text段中,所以所有的内核模块的__init修饰的函数其实是被统一放在一起的。内核启动时统一会加载.init.text段中的这些模块安装函数,加载完后就会把这个段给释放掉以节省内存
  • __exit: 类似于__init, 将函数链接进指定的段

调试信息

  • printk(): 内核编程中使用printk()来打印信息. printk是linux内核源代码中自己封装出来的一个打印函数, 只能在内核源码范围内使用, 不能在应用编程中使用. 可设定0-7个打印级别, 一般默认为4, 通过dmesg命令来查看.
  • /proc/devices: 可查看到系统当前挂载的模块

Linux驱动开发基础知识的更多相关文章

  1. 嵌入式linux驱动开发之点亮led(驱动编程思想之初体验)

    这节我们就开始开始进行实战啦!这里顺便说一下啊,出来做开发的基础很重要啊,基础不好,迟早是要恶补的.个人深刻觉得像这种嵌入式的开发对C语言和微机接口与原理是非常依赖的,必须要有深厚的基础才能hold的 ...

  2. 【转】linux驱动开发的经典书籍

    原文网址:http://www.cnblogs.com/xmphoenix/archive/2012/03/27/2420044.html Linux驱动学习的最大困惑在于书籍的缺乏,市面上最常见的书 ...

  3. Linux驱动开发学习的一些必要步骤

      1. 学会写简单的makefile 2. 编一应用程序,可以用makefile跑起来 3. 学会写驱动的makefile 4. 写一简单char驱动,makefile编译通过,可以insmod, ...

  4. 驱动编程思想之初体验 --------------- 嵌入式linux驱动开发之点亮LED

    这节我们就开始开始进行实战啦!这里顺便说一下啊,出来做开发的基础很重要啊,基础不好,迟早是要恶补的.个人深刻觉得像这种嵌入式的开发对C语言和微机接口与原理是非常依赖的,必须要有深厚的基础才能hold的 ...

  5. Linux 驱动开发

    linux驱动开发总结(一) 基础性总结 1, linux驱动一般分为3大类: * 字符设备 * 块设备 * 网络设备 2, 开发环境构建: * 交叉工具链构建 * NFS和tftp服务器安装 3, ...

  6. [No0000138]软件开发基础知识

    1. 本文目的 本文目的在于,介绍软件开发的各种基础知识 以实现,看了之后,对于软件开发的很多领域的基础知识有所了解 如此在进行后续的真正的软件开发时,遇到各种细节知识,才会明白由来和背景知识 第 1 ...

  7. linux驱动开发的经典书籍

    转载于:http://www.cnblogs.com/xmphoenix/archive/2012/03/27/2420044.html 参加实习也近一个月了,严重感觉知识不够,真是后悔学校里浪费那么 ...

  8. 转:linux驱动开发的经典书籍

    源地址:http://www.cnblogs.com/xmphoenix/archive/2012/03/27/2420044.html Linux驱动学习的最大困惑在于书籍的缺乏,市面上最常见的书为 ...

  9. Linux驱动开发必看详解神秘内核(完全转载)

    Linux驱动开发必看详解神秘内核 完全转载-链接:http://blog.chinaunix.net/uid-21356596-id-1827434.html   IT168 技术文档]在开始步入L ...

随机推荐

  1. play的过滤类怎么实现继承问题

    原文: Example: public class Secure extends Controller {          @Before     static void checkAuthenti ...

  2. VS2013 The Debugger Resource DLL is out of date

    折磨了我一天的问题,亲们,记住,下载vs2013 update5 ,别的方法不用试了,完全没用!

  3. 《深入理解mybatis原理7》 MyBatis的二级缓存的设计原理

    <深入理解mybatis原理> MyBatis的二级缓存的设计原理 MyBatis的二级缓存是Application级别的缓存,它可以提高对数据库查询的效率,以提高应用的性能.本文将全面分 ...

  4. python:使用itchat实现手机控制电脑

    1.准备材料 首先电脑上需要安装了python,安装了opencv更好(非必需) 如果安装了opencv的话,在opencv的python目录下找到cv2.pyd,将该文件放到python的库搜索路径 ...

  5. Fiddler进行模拟Post提交json数据,总为null解决方式(转)

    原文链接:http://www.cnblogs.com/jys509/p/3550598.html Request Headers: User-Agent: FiddlerHost: localhos ...

  6. PHPStorm 使用正则批量查询替换并自动转换大小写的方法

    PHPStorm 的项目查询替换功能那是非常非常强大的, 速度也很快, 配合正则更加灵活强大. 一般的正则查询替换没什么太多好说的, 这里主要说说比较少用的 大小写自动转换的问题, 也是比较少用但很有 ...

  7. 现代前端技术解析:Web前端技术基础

    ​ 最近几年,越来越多的人投入到前端大军中:时至至今,前端工程师的数量仍然不能满足企业的发展需求:与此同时,互联网应用场景的复杂化提高了对前端工程师能力的要求,一部分初期前端工程师并不能胜任企业的工作 ...

  8. Premake 生成 Makefile 的缺省配置

    Premake 生成 Makefile 的缺省配置(金庆的专栏 2017.7)premake5.exe --os=linux gmake生成的 Makefile 中有个 config, 用 make ...

  9. UE4 引擎基础类说明

    本文章由cartzhang编写,转载请注明出处. 所有权利保留. 文章链接:http://blog.csdn.net/cartzhang/article/details/76048437 作者:car ...

  10. cocoapods导入第三方库后,xcode上import不提示,找不到第三方库的解决办法

    选择你的工程tagets, -> Build Settings -> Search Paths -> User Header Search Paths 双击User Header S ...