美文网首页
从0学Linux驱动 模块化编程4

从0学Linux驱动 模块化编程4

作者: LongHuang | 来源:发表于2021-10-03 14:46 被阅读0次

    从0学Linux驱动 模块化编程-4

    作者网站:https://blog.csdn.net/daocaokafei/article/details/108513929


    内核驱动代码示例

    内核代码是运行在内核空间的。内核空间是一个非常大的一个应用程序。所有的代码都运行在一起。为了让如此大量的内核可以有效组织在一起。代码开发要遵守内核的开发协议。

    1. 需要加载头文件
    #include<linux/init.h>
    #include<linux/moudle.h>
    
    1. 遵守GPL协议
    2. 模块加载,模块卸载程序
    module_init(functionName);
    module_exit(functionName);
    

    注意事项:
    对于C语音中static和Java中static中作用不一致
    staic function 表示该函数仅该文件可见例如该文件为helloModule.c 中定义了static void hello_init(void)可以在wordModuld.c中同样定义static void hello_init(void)。如果不使用static则无法编译通过。

    c语言中static关键字用法详解

    其中参数的void是不允许省略的。因为在C语音编译的时候参数也是参与编译。
    printk 与printf功能相同,printf是在用户态代码执行的。printk是在内核态使用的。为啥会有这个区别,我现在也说不清楚。先记住就好了。

    命令

    代码编译使用make命令。

    lsmod 显示模块


    lsmod dmesg

    使用printk打印的Log,可以通过dmesg查看

    心得:make过程非常糟心。编译不过。注意事项,文件夹中不要用空格,中文等字符。后面把作者的代码全Copy后才编译过。编译这块远远没有Android Studio编译兼容性好。


    图片.png

    insmod/rmmod
    使用dmesg查看

    图片.png

    代码地址:https://github.com/jiahengcen/LinuxCode/tree/master/code1

    相关文章

      网友评论

          本文标题:从0学Linux驱动 模块化编程4

          本文链接:https://www.haomeiwen.com/subject/qcjmnltx.html