HelloWorld

代码

mini_module.c

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

MODULE_LICENSE("Dual BSD/GPL"); //遵循BSD和GPL开源许可
MODULE_AUTHOR("TAXUE");  //模块作者

static int hello_init(void){
    printk(KERN_EMERG "HELLO World enter!\n"); //KERN_EMERG代表打印的等级
    return 0;
}

static void hello_exit(void){
    printk(KERN_EMERG "HELLO World exit!\n");
}

module_init(hello_init);  //模块入口,加载驱动时执行参数内的函数
module_exit(hello_exit);  //模块出口,卸载模块时执行参数内的函数

Makefile

#!bin/bash
#通知编译器使用哪个脚本语言
obj-m += mini_module.o
#将c文件编译成同名的.o文件
KDIR := /work/kernel/iTop4412_Kernel_3.0
#内核代码的路径
PWD ?= $(shell pwd)

all:
	make -C $(KDIR) M=$(PWD) modules
#执行make命令时,默认来找all选项
#make -C 调用执行的路径,也就是接下来的KDIR变量
#modules表示将驱动编译成模块
clean:
	rm -rf *.o
#all和clean下一行的命令,一定要以【Tab】开头

操作

执行make编译驱动,得到mini_module.ko文件,即是驱动模块,将驱动模块拷贝至板卡上

insmod mini_module.ko
#加载驱动模块
rmmod mini_module.ko
#卸载模块
dmesg
#查看模块加载和卸载时的打印信息
posted @ 2021-08-20 21:38  WuYunTaXue  阅读(39)  评论(0编辑  收藏  举报