博客
关于我
4.【linux驱动】hello_world
阅读量:680 次
发布时间:2019-03-17

本文共 854 字,大约阅读时间需要 2 分钟。

hello_world模块开发指南

模块开发

我们需要将一个简单的内核模块开发出来,模块名称为hello_world。以下是实现步骤:

  • 创建与模块相关的C文件
  • 包含必要的头文件
  • 定义模块的初始化和卸载函数
  • 使用 printk输出日志信息
  • 代码示例如下:

    #include 
    #include
    #include
    MODULE_LICENSE("GPL");static int __init hello_init(void) { printk("hello init\n"); return 0;}static void __exit hello_exit(void) { printk("hello exit\n");}module_init(hello_init);module_exit(hello_exit);

    Makefile编译

    这部分将介绍如何使用Makefile来编译内核模块。我们将使用Kconfig机制来进行配置。

  • 打开终端,进入内核源码目录
  • 执行编译命令:
  • make -C /home/minicoco/Dev/Dev/nanopi/kernel/linux-3.4.y M=`pwd`
    1. Makefile中添加以下配置:
    2. hello: make -C ${KERNEL_DIR} M=`pwd` hello_world.oclean: make -C ${KERNEL_DIR} M=`pwd` cleanobj-m += hello_world.o

      这样模块将会在当前目录输出。

      加载与卸载测试

      在完成编译后,我们需要测试模块的加载与卸载过程。

    3. 使用以下命令加载模块:
    4. insmod hello_world.ko
      1. 模块加载成功后,查看日志以确认是否成功加载:
      2. dmesg | tail
        1. 卸载模块使用以下命令:
        2. rmmod hello_world

          在卸载后,再次查看日志以确认模块是否成功卸载。

    转载地址:http://ypzhz.baihongyu.com/

    你可能感兴趣的文章
    Open×××有线网络时使用正常,无线网络时使用报错的解决方案
    查看>>
    Operation not supported on read-only collection 的解决方法 - [Windows Phone开发技巧系列1]
    查看>>
    Operations Manager 2007 R2系列之仪表板(多)视图
    查看>>
    operator new 与 operator delete
    查看>>
    operator() error
    查看>>
    OPPO K3在哪里打开USB调试模式的完美方法
    查看>>
    Optional类:避免NullPointerException
    查看>>
    ORA-00932: inconsistent datatypes: expected - got NCLOB【ORA-00932: 数据类型不一致: 应为 -, 但却获得 NCLOB 】【解决办法】
    查看>>
    ORA-00942 表或视图不存在
    查看>>
    ORA-01795: 列表中的最大表达式数为 1000
    查看>>
    ORA-06575: 程序包或函数 NO_VM_DROP_PROC 处于无效状态
    查看>>
    ORA-08102的错误
    查看>>
    ora-12541:tns:no listener
    查看>>
    【docker知识】联合文件系统(unionFS)原理
    查看>>
    ORACEL学习--理解over()函数
    查看>>
    oracle 10g crs命令,Oracle 10g CRS安装问题解决一例
    查看>>
    oracle 10g的安装配置
    查看>>
    Oracle 11.2.0.4 x64 RAC修改public/private/vip/scan地址
    查看>>
    Oracle 11G INDEX FULL SCAN 和 INDEX FAST FULL SCAN 对比分析
    查看>>
    Oracle 11g 使用RMAN备份数据库
    查看>>