本文章是通过学习:国嵌内核驱动进阶班-1-4(Linux内核模块开发).avi视频写下的。
环境准备:
交叉编译操作系统: linux_x86虚拟机
内核模块交叉编译环境:已经成功的编译的kernel内核源代码。(确定已经成功的加载到树莓派中)
首先创建两个文件:(文件内容完全参照视频)
hello.c
Makefile
执行make
最后将生成的hello.ko复制到树莓派中。
执行加载内核模块:
通过dmesg查看内核输出
卸载内核模块:
查看现有内核模块:
加载modprobe:
参考内容:
环境准备:
交叉编译操作系统: linux_x86虚拟机
内核模块交叉编译环境:已经成功的编译的kernel内核源代码。(确定已经成功的加载到树莓派中)
首先创建两个文件:(文件内容完全参照视频)
hello.c
#include <linux/init.h>
#include <linux/module.h>
#include <linux/moduleparam.h>
MODULE_LICENSE("Dual BSD/GPL");
static int hello_init(void)
{
printk(KERN_ALERT"Hello, world\n");
return 0;
}
static void hello_exit(void)
{
printk(KERN_ALERT"Goodbye, cruel world\n");
}
module_init(hello_init);
module_exit(hello_exit);
Makefile
ifneq ($(KERNELRELEASE),)
obj-m := hello.o
else
KDIR := /home/debian/raspberrypi/kernel/linux-rpi-3.12.y
all:
make -C $(KDIR) M=$(PWD) modules ARCH=arm CROSS_COMPILE=/home/debian/raspberrypi/git/tools/arm-bcm2708/arm-bcm2708hardfp-linux-gnueabi/bin/arm-bcm2708hardfp-linux-gnueabi-
clean:
rm -f *.ko *.o *.mod.o *.mod.c *.symvers modul*
endif
执行make
最后将生成的hello.ko复制到树莓派中。
执行加载内核模块:
$ sudo insmod hello.ko
通过dmesg查看内核输出
卸载内核模块:
$ sudo rmsmod hello
查看现有内核模块:
$ sudo ismod
加载modprobe:
$ sudo modprobe hello
参考内容: