[树莓派内核学习]内核模块开发

本文章是通过学习:国嵌内核驱动进阶班-1-4(Linux内核模块开发).avi视频写下的。

环境准备:
交叉编译操作系统: 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

参考内容:



猜你喜欢

转载自blog.csdn.net/u010398378/article/details/39611167