美文网首页
linux最简单驱动编写(基于itop4412)

linux最简单驱动编写(基于itop4412)

作者: 嵌入式工作 | 来源:发表于2018-08-02 18:52 被阅读0次

    一、.c文件的编写

    要点

    1.头文件的包含

    #include <linux/module.h>
    #include <linux/init.h>
    

    2.GPL 协议的遵守和作者的声明

    MODULE_LICENSE("Dual BSD/GPL");
    MODULE_AUTHOR("kerwin");
    

    3.insmod和rmmode调用函数的赋值

    module_init(hello_init);
    module_exit(hello_exit);
    

    3.insmod和rmmode中函数的实现

    static int hello_init(void)
    {
        printk(KERN_EMERG "hello world enter\n");
        printk(KERN_EMERG "HELLO WORLD enter222!\n");
        return 0;
    }
    
    static void hello_exit(void)
    {
        printk(KERN_EMERG "hello world exit\n");
    
    }
    

    二、makefile文件的编写

    #!/bin/bash
    #通知编译器我们要编译模块的哪些源码
    #这里是编译itop4412_hello.c这个文件编译成中间文件itop4412_hello.o
    obj-m += mini_linux_module.o 
    
    #源码目录变量,这里用户需要根据实际情况选择路径
    #作者是将Linux的源码拷贝到目录/home/topeet/android4.0下并解压的
    KDIR := /home/topeet/android4.0/iTop4412_Kernel_3.0
    
    #当前目录变量
    PWD ?= $(shell pwd)
    
    #make命名默认寻找第一个目标
    #make -C就是指调用执行的路径
    #$(KDIR)Linux源码目录,作者这里指的是/home/topeet/android4.0/iTop4412_Kernel_3.0
    #$(PWD)当前目录变量
    #modules要执行的操作
    all:
        make -C $(KDIR) M=$(PWD) modules
            
    #make clean执行的操作是删除后缀为o的文件
    clean:
        rm -rf *.o
    
    

    三、ko文件的生成

    1.把.c文件和makefile文件cp到一个目录下面(编译内核的linux电脑里面的同一个目录下面)

    2.执行makefile

    3.生产.ko文件

    4.cp ko文件到开发板

    5.加载和去掉驱动

    
    [root@iTOP-4412]# insmod hello_driver.ko 
    [  751.851622] hello world enter
    [  751.853110] HELLO WORLD enter222!
    [root@iTOP-4412]# lsmod 
    hello_driver 761 0 - Live 0xbf008000
    [root@iTOP-4412]# rmmod hello_driver
    [  759.540131] hello world exit
    [root@iTOP-4412]# 
    
    
    

    相关文章

      网友评论

          本文标题:linux最简单驱动编写(基于itop4412)

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