我是从2015.7.23开始移植这个驱动程序的,经过在网上查找资料,决定利用linux下I2C驱动体系结构来完成驱动移植
整个步骤是根据http://blog.csdn.net/rickbeyond/article/details/7838313这个大神的博客开始的,于是我的苦逼坑死我之路从此开始。。。。
第一天下午就卡在了第三步,即对Android.mk的编译上,刚开始是报如下错误
make: *** No rule to make target `/iic.c‘, needed by `out/target/product/generic/obj/SHARED_LIBRARIES/iic.default_intermediates/iic.o‘. Stop.
大神们的博客都被我翻遍了,没有!麻痹的这错误就我一个人遇到啊!!!!好吧,接着在博客园与csdn论坛发贴,到今天为止没有一个人知道,也许是知道,但是不屑回答我吧。。。不过,终于到下午下班之前自己找了半天发现有一条语句没有(如下),遂加上。还真的就不报这个错误了,
LOCAL_SHARED_LIBRARIES := liblog libcutils
但是!!!!!!!但是换了个错误,说找不到i2c-dev.h头文件,打开该路径,发现好像确实是没得,好吧,那我复制一份好了,也不知道对不对,呵呵
不过最后还真生成了.so文件,哎呀卧槽!这个错误我是碰到了有缘人啊!他也没解决,卡在这里了,呵呵,不过那家伙直接换了条路,去写单独的驱动程序去了,好吧,这坑爹路上又只剩我一个人了。。。。
附上昨天提问的链接:http://q.cnblogs.com/q/74082/
终于到了第二天了。。。也就是7月24日,不得不感叹日子过得真是快啊!
嗯~是的,今天有开始开开心心的写第二部分代码,使用JNI在应用程序框架层添加服务访问接口,又在最后!!!update-api!!!!
卧槽,果不其然,出错了!!!!!!!
1 device/samsung/multimedia/codecs/video/Android.mk:10: device/samsung/multimedia/codecs/video/exynos4/mfc/exynos5/Android.mk: No such file or directory 2 device/samsung/multimedia/utils/csc/Android.mk:10: device/samsung/multimedia/utils/csc/exynos4/exynos5/Android.mk: No such file or directory 3 make: *** No rule to make target `device/samsung/multimedia/utils/csc/exynos4/exynos5/Android.mk‘. Stop.
说没有文件,其实是该路径都没有,好吧,查Android.mk
1 LOCAL_PATH := $(call my-dir) 2 3 include $(CLEAR_VARS) 4 5 ifeq ($(filter-out exynos4,$(TARGET_BOARD_PLATFORM)),) 6 include $(LOCAL_PATH)/exynos4/Android.mk 7 endif 8 9 ifeq ($(filter-out exynos5,$(TARGET_BOARD_PLATFORM)),) 10 include $(LOCAL_PATH)/exynos5/Android.mk 11 endif 12
报错说在第10行,进入(LOCAL_PATH)/exynos5/Android.mk这个里面,按照作者的意思应该是device/samsung/multimedia/codecs/video/exynos5/Android.mk啊!!!
怎么会是device/samsung/multimedia/codecs/video/exynos4/mfc/exynos5/Android.mk呢???!!!!卧槽,于是看了下device/samsung/multimedia/codecs/video/exynos4/Android.mk,说是再进入mfc/Android.mk中,然后没有了,嗯啊!没有了,也就是说当前路径是停留在了device/samsung/multimedia/codecs/video/exynos4/mfc下啊!!!好吧我就想当然的觉得LOCAT_PATH是在这么个属性了!!!
于是!!!我也开始乱来了,把device/samsung/multimedia/codecs/video/Android.mk改成了
1 LOCAL_PATH := $(call my-dir) 2 3 LOCAL_CUR_PATH :=$(LOCAL_PATH) 4 include $(CLEAR_VARS) 5 6 ifeq ($(filter-out exynos4,$(TARGET_BOARD_PLATFORM)),) 7 include $(LOCAL_PATH)/exynos4/Android.mk 8 endif 9 10 ifeq ($(filter-out exynos5,$(TARGET_BOARD_PLATFORM)),) 11 include $(LOCAL_CUR_PATH)/exynos5/Android.mk 12 endif 13
加了一个临时变量保存当前路径,再make update-api,哎呀,居然过了!!!但是!!!卧槽哪有这么多的但是....
1 build/core/base_rules.mk:166: *** device/samsung/multimedia/codecs/video/exynos5/mfc_v4l2: MODULE.TARGET.STATIC_LIBRARIES.libsecmfcapi already defined by device/samsung/multimedia/codecs/video/exynos4/mfc. Stop.
这是什么鬼啊什么鬼啊啊啊啊!!!模块ID要唯一???我靠,我哪个模块ID不唯一了就?好吧,谁让你是大哥,我去找debug..