Nano之HelloWorld驱动(学习如何单独编译.ko模块)1、准备下⾯两个⽂件:
Makefile
nano_hello_module.c
nano_hello_module.c
#include<linux/kernel.h>
#include<linux/module.h>
static int __init nano_hello_module_init(void)
{
printk("Hello yfw, Nano module is installed !\n");
return0;
}
static void __exit nano_hello_module_cleanup(void)
{
printk("Good-bye yfw, Nano module was removed!\n");
}
module_init(nano_hello_module_init);
module_exit(nano_hello_module_cleanup);
MODULE_LICENSE("GPL");
Makefile
把下⾯3个参数改成你⾃⼰的:
obj-m (.o⽂件)
KERNELDIR  (内核⽬录全路径)
CROSS_ARCH  (架构及其编译器)
#set KERNELDIR and CROSS_COMPILE path yourself
#
ifneq  ($(KERNELRELEASE),)
obj-m  :=  nano_hello_module.o
else
makefile phonyKERNELDIR  :=/home/yang/yfw_nano/linux5.2/linux-nano-5.2-tf
PWD  :=  $(shell pwd)
CROSS_ARCH := ARCH=arm CROSS_COMPILE=arm-linux-gnueabi-
default:
$(MAKE) $(CROSS_ARCH)-C  $(KERNELDIR)  M=$(PWD)  modules
install:
$(MAKE)  $(CROSS_ARCH)-C  $(KERNELDIR)  M=$(PWD)  modules_install
clean:
rm  -rf  *.o  *~  core  .depend  .*.cmd  *.ko  *.mod.c  .tmp_versions *.symvers *.d *.markers *.order
.PHONY:  modules  modules_install  clean  main
endif
2、编译,运⾏
make
把nano_hello_module.ko 拷贝到⽬标板运⾏(运⾏结果如下)
# ls
nano_hello_module.ko
# insmod nano_hello_module.ko
[8329.180768] nano_hello_module: loading out-of-tree module taints kernel. [8329.200683] Hello yfw, Nano module is installed !
# rmmod nano_hello_module
[8358.476347] Good-bye yfw, Nano module was removed!

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。