-
安装 kernel-header
-
模块代码
helloworld.c
#include <linux/init.h> #include <linux/module.h> //程序入口 static int helloworld_init(void) { printk("%s\n", __func__); return 0; } //程序出口 static void helloworld_exit(void) { printk("%s\n", __func__); } //告诉内核入口和出口 module_init(helloworld_init); module_exit(helloworld_exit); //添加许可声明 MODULE_LICENSE("GPL"); //是个.c都要加
Makefile
obj-m += hello.o hello-objs := helloworld.o ARM_IMX6UL_KERNEL_HOME=/usr/src/linux-headers-$(shell uname -r) KERNEL_HOME=$(ARM_IMX6UL_KERNEL_HOME) all: make -C $(KERNEL_HOME) SUBDIRS=$(PWD) modules clean: make -C $(KERNEL_HOME) SUBDIRS=$(PWD) clean #修改Makefile只需修改原文件名和内核路径
-
加载驱动模块
sudo insmod hello.ko
-
卸载驱动
sudo rmmod hello.ko
-
查看kernel日志
tail -10 /var/log/kern.log Mar 26 17:05:00 alex-ubuntu-pad kernel: [31245.101097] helloworld_init Mar 26 17:05:12 alex-ubuntu-pad kernel: [31257.224917] helloworld_exit
编写PC上的linux驱动模块
最新推荐文章于 2022-01-19 13:55:39 发布