如题,看到老罗的blog中的这篇文章,决定要实践一下,结果碰到一些问题,特此记录而已。
老罗文章的地址:http://blog.csdn.net/luoshengyang/article/details/6568411
我的环境:Ubuntu 10.0.4 MTK 6572平台代码 Android 4.2.2
首先,我在alps/kernel/drivers目录下创建了一个文件夹hello,里面只有三个文件:
hello.h hello.c Makefile, 没有些Kconfig文件。
h文件和c文件与博客中的一模一样,Makefile文件做了修改,只有这一句
obj-m := hello.o
另外修改了alps/kernel/drivers目录下的Makefile,在最后加了一句:
obj-y += hello/
用./mk r k kernel/drivers/hello/编译
第一个错误:‘init_MUTEX’ [-Werror=implicit-function-declaration]
参考http://blog.csdn.net/ce123_zhouwei/article/details/7776989这篇文章,解决方法是把
//init_MUTEX(&(dev->sem));
sema_init(&dev->sem,1);
第二个错误:error: 'struct proc_dir_entry' has no member named 'owner'
参考http://blog.csdn.net/brantyou/article/details/8651252这篇文章,解决方法是修改MTK release的源代码
alps/kernel/include/linux/proc_fs.h
在结构体struct proc_dir_entry中最后添加:
struct module *owner;
第三个错误:flexible array member not at end of struct
参考http://blog.sina.com.cn/s/blog_734603a20100so2l.html
原来是我修改第二个错误时引起的,原来的struct proc_dir_entry中最后是char name[];
我把我添加的struct module *owner;放到char name[];之前就好了。
后面的操作已在http://blog.csdn.net/snail_coder/article/details/19697271中说明。
磕磕碰碰地终于能看到老罗所说的效果了,但是其中的太多东西都不明白,路还很长啊!