问题描述:
有一台MTK 6572平台的手机,Android版本为4.2.2,希望能在其中添加一个新的kernel module。
下面是一个简单的helloworld实例:
1.准备代码:
目录alps/kernel/drivers/下新建一个文件夹,取名为helloworld,在其中添加两个文件
helloworld.c
#include <linux/init.h> #include <linux/kernel.h> #include <linux/module.h> static int hello_init(void) { printk("Hello! This is the helloworld module!\n"); return 0; } static void hello_exit(void) { printk("Module exit! Bye Bye!\n"); return; } module_init(hello_init); module_exit(hello_exit); MODULE_LICENSE("GPL");
obj-m := helloworld.o
2.修改上一级的Makefile
即修改文件alps/kernel/drivers/Makefile
obj-y += helloworld/
3.编译
编译命令:./mk r k kernel/drivers/helloworld/
因为之前已经执行过new命令了,这里省略了项目名称
会在这个目录下生成如下文件,其中,helloworld.ko文件是我们最想要的:
4.打包
首先把这个helloworld.ko文件拷贝到alps/out/target/product/huaqin72_we_b1a_jb3/system/lib/modules/目录下
然后通过snod命令打包生成system.img。
当然也可以直接把这个ko文件push到手机对应的目录下:/system/lib/modules,然后在这个目下用insmod命令安装此module即可:
insmod helloworld.ko
可以通过dmesg命令查看kernel log,我们会在log中看到代码里的信息输出了。这就成功了。
也可以通过rmmod helloworld命令来卸载此module,同样可以看到log输出。
感谢【FAQ07275】