美文网首页
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