Linux模块相关命令 Linux驱动模块的编写与挂载

嵌入式技术

1343人已加入

描述

1.Linux模块相关命令

  • lsmod
    • 展示内核中module的状态
    • lsmod命令是cat /proc/modules文件的格式化输出
    • lsmod | grep 模块名
      驱动模块
      lsmod命令
  • insmod/rmmod
  • 插入/卸载module
  • modprobe xxx(推荐使用此方式完成module的插入/卸载,它可以维护依赖关系)
  • 添加module到内核(modeprobe -a)
  • 删除module(modeprobe -r)
  • modinfo
  • 显示module的信息
  • depmod
  • 生成modules.dep文件
  • 描述module之间的依赖关系

2.编写驱动模块hello.ko

  • (1).对应内核版本的头文件
    • 以ubuntu系统为例,安装内核版本头文件:sudo apt-get install linux-headers-$(uname -r)
    • 检查内核版本头文件是否安装成功:dpkg query -s linux-headers-$(uname -r)
    • 内核版本的头文件位置:/lib/modules/${uname -r}/build/

驱动模块

内核版本头文件

  • (2).编写hello驱动模块源码
#include < linux/module.h >
#include < linux/kernel.h >
#include < linux/init.h >


MODULE_LICENSE("GPL");
MODULE_AUTHOR("CurryCoder");
MODULE_DESCRIPTION("hello module");
MODULE_VERSION("V1");




static int __init hello_start(void)
{
    printk(KERN_INFO "loading hello modulen");
    printk(KERN_INFO "hello worldn");
    return 0;
}


static void __exit hello_end(void) 
{
    printk(KERN_INFO "exit module");
}


// 模块加载时使用的钩子函数
module_init(hello_start);
// 模块卸载时使用的钩子函数
module_exit(hello_end);
  • (3).编写Makefile文件
.PHONY: all clean
obj-m=hello.o


all:
  make -C /lib/modules/${shell uname -r}/build/ M=${shell pwd} modules
clean:
  make -C /lib/modules/${shell uname -r}/build/ M=${shell pwd} clean


# -C参数表示进入到/lib/modules/${shell uname -r}/build/目录下并找到此目录下的Makefile文件
# -M参数表示构建模块的位置

驱动模块

modprobe命令加载/卸载模块

驱动模块

hello驱动模块插入与卸载

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分