在Ubuntu上为Android系统编写Linux内核驱动程序--实践中碰到的问题

如题,看到老罗的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中说明。


磕磕碰碰地终于能看到老罗所说的效果了,但是其中的太多东西都不明白,路还很长啊!

你可能感兴趣的:(ubuntu,Android)