柯老师您好!我是中科大的一名学生,买了一台android手机Nexus S之后,就一直很热衷于对android的开发,曾经自学过android application编程,成功的写过一个照相机的apk,目前我在学习android的内核方面的知识。最近买了您的《Android内核剖析》,拜读之后,受益匪浅。看过之后原来很多晕晕乎乎的问题都得到了解释,感觉这是一本很好很好的关于android的书。前几天我看到了第四部分“编译篇”,学习了对于android源码的知识之后,就想尝试给我的Nexus添加一个驱动程序,经过尝试后,我遇到了一个令我很困惑的问题,现在请允许我将这个问题详细的告诉老师,期望老师能够给我一些帮助,不甚感谢!我想添加一个虚拟驱动程序,取名就叫“hello”吧,在源码目录下的samsung/drivers目录下新建一个名为“hello”的目录,在其中放我的程序hello.c,Makefile,Kconfig三个文件,文件见附件。之后,我修改了如下的几个文件:1. 修改samsung/Makefile文件。将:ARCH ?=$(SUBARCH)
CROSS_COMPILE ?=arm-eabi-
LDFLAGS_BUILD_ID= ………………
修改如下:
ARCH ?=arm
CROSS_COMPILE ?=arm-eabi-
LDFLAGS_BUILD_ID=
2. 修改/drivers/Kconfig文件。
将source “drivers/hello/Kconfig”在menu “Device Drivers” 和 endmenu之中。
3. 将obj-$(CONFIG_HELLO) +=hello/添加到/drivers/Makefile中。
然后在/samsung文件夹下make menuconfig,选择:
Device Drivers -> Hello Driver added by Dong(New)
选择为:“M”。
此时在.config文件中已经多了一行:CONFIG_HELLO = m
此时编译:make。
编译成功之后,在arch/arm/boot/目录下出现zImage文件。
现在刷机,刷机之后通过adb shell查看手机内的文件,没有出现所编写的hello驱动。
老师能告诉我哪里出问题了吗?学生在这里先谢谢老师了。
祝好。
2011.11.22