MTK摄像头的驱动包含有kernel部分和hal层2个部分,在Android版本升级之后,内核版本也进行了升级,在旧版本往新版本移植的过程中,要注意以下几个部分:
公共部分的修改:
1、 注释掉log 输出的头文件,在kernel的驱动中找到:
- #include <linux/xlog.h>
改为:
- //#include <linux/xlog.h>
2、 删除只定义而没有使用的变量,新版本的gcc对定义未使用的变量会报错,导致编译失败。
3、 修正log中打印的参数个数和格式输出不匹配,新版本的gcc会检查此部分内容。
4、 删除值定义而未使用的函数, 若函数只是定义了,而没有其他地方调用,请注释或删除掉。
5、 函数的形参不能会空,若函数没有带入形参,请设定为void 。
6、 修正log 中打印的参数和格式输出的类型不匹配,如:定义的变量为longlong 型,则输出格式也要设定为longlong 型,使用"%lld"表示。
以上部分为新版本的kernel进行驱动移植时候都会遇到的问题,下面是MTK平台的一些修改:
Kernel部分:
1、 上电文件的位置更改,driver中包含的上电文件头文件需要修改:
- #include "kd_camera_hw.h"
改为:
- #include "kd_camera_typedef.h"
上电文件位置变更为:M0\kernel-3.10\drivers\misc\mediatek\imgsensor\src\$flatform\camera_hw
2、 kd_imgsensor.h 头文件的位置新增了:M0\device\mediatek\common\kernel-headers\kd_imgsensor.h
3、 log 输出函数修改,kernel 中的log输出不使用printk 函数时,可以修改定义成如下:
原有的:
- #define LOG_INF(format, args...) xlog_printk(ANDROID_LOG_INFO, PFX, "[%s] " format, __FUNCTION__, ##args)
改为:
- #define LOG_INF(format, args...) pr_debug(PFX "[%s] " format, __func__, ##args)
HAL部分:
1、 tuning 参数部分没有变化,可以直接使用原来的tuning 参数。
2、 camera_flicker_para_xxxxx_raw.cpp文件修改打印部分的宏和打印信息,具体如下:
修改:
- #include <cutils/xlog.h>
为:
- //#include <cutils/xlog.h>
注释掉所有:XLOGD的打印信息。
3、 修改feature table config.ftbl.xxx.h 文件,将:FTABLE_CONFIG_AS_TYPE_OF_USER 的 ITEM_AS_DEFAULT_ 的("30000,30000"), 修改为:("5000,30000"),防止固定30fps导致的预览亮度不足。
通过上述的部分修改,早期的摄像头驱动,也可以在新系统上正常使用。
新添加请参考:MTK平台新增摄像头指南
版权所有丨如未注明,均为原创,转载请注明转自:https://whonee.net/mtk-senser-driver-for-android-update-instruction.html
文章不错非常喜欢