微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 手机设计讨论 > MTK手机平台交流 > MTK6577+android4.1修改后置摄像头配置后,编译出错

MTK6577+android4.1修改后置摄像头配置后,编译出错

时间:10-02 整理:3721RD 点击:
在ProjectConfig.mk中,把
CUSTOM_HAL_IMGsensor,CUSTOM_HAL_MAIN_IMGSENSOR 及
CUSTOM_KERNEL_IMGSENSOR, CUSTOM_KERNEL_MAIN_IMGSENSOR
主摄像头配置为imx105_mipi_raw后(原始值是mt9p017_raw),
HAL一直编译不通过,报错如下:
/home/MT6577/alps/prebuilts/gcc/linux-x86/ARM/arm-linux-androideabi-4.6/bin/../lib/gcc/arm-linux-androideabi/4.6.x-google/../../../../arm-linux-androideabi/bin/ld: out/target/product/hSIMobile77_jb/obj/SHARED_LIBRARIES/libCAMERAcustom_intermediates/common/hal/imgsensor/sensorlist.o: in function vtable for NSFeature::RAWSensorInfo<261u>:sensorlist.cpp(.data.rel.ro._ZTVN9NSFeature13RAWSensorInfoILj261EEE+0x1c): error: undefined reference to 'NSFeature::RAWSensorInfo<261u>::impGetDefaultData(CAMERA_DATA_TYPE_ENUM, void*, unsigned int) const'
在 sensorlist.cpp 文件中,
#if defined(IMX105_MIPI_RAW)
    RAW_INFO(IMX105_SENSOR_ID, SENSOR_DRVNAME_IMX105_MIPI_RAW, NULL),
#endif
#if defined(MT9P017_RAW)
    RAW_INFO(MT9P017_SENSOR_ID, SENSOR_DRVNAME_MT9P017_RAW, NULL),
#endif
#if defined(MT9P017_MIPI_RAW)
    RAW_INFO(MT9P017MIPI_SENSOR_ID, SENSOR_DRVNAME_MT9P017_MIPI_RAW, NULL),
#endif
而在 camera_custom_sensor.h 文件中,在class RAWSensorInfo 中是有
virtual MUINT32 impGetDefaultData(CAMERA_DATA_TYPE_ENUM const CameraDataType, MVOID*const pDataBuf, MUINT32 const size) const;
定义的,
为什么会链接找不到呢?
谢谢

问题解决。犯了一个低级错误。
camera_custom_sensor.h 文件只是声明。

?android4.1的,是JB版本吗?我这边遇到问题是,配置前摄进去,打开相机就黑乎乎的了,

是JB版本,我这边配置后,虽然可以编译过了,但是打开相机就报错,说没找到相机。

这个问题我解决了,

请问你是怎么解决的?
麻烦告诉我一下可以吗?非常感谢!

sensorlist.cpp  kd_imgsensor.h  两个文件的那个数组里面定义的设备队列数要相匹配的。

您好,我是77平台,sensorlist.cpp中有个MSDK_SENSOR_INIT_FUNCTION_STRUCT SensorList[] =
数组,但是由于宏定义的作用,里面只能有hi253,im105以及表示end的{0},三个数组元素。
kd_imgsensor.h中,没有相关的数组定义,但是在 kd_sensorlist.h中有ACDK_KD_SENSOR_INIT_FUNCTION_STRUCT kdSensorList[MAX_NUM_OF_SUPPORT_SENSOR+1] =数组,但是根据宏定义,也同样是只有三个数组元么。
谢谢

大哥在吗?能给我发一份MTK 源码吗?我想学习编译android ,有个android手机想自己编一个android系统,我邮箱675952640@qq.com  QQ  675952640

"有个android手机想自己编一个android系统"
要看你手机是什么平台的,不是MTK的,有MTK的源码也没有用。


我的是匹配的还是报错

ACDK_KD_SENSOR_INIT_FUNCTION_STRUCT kdSensorList[MAX_NUM_OF_SUPPORT_SENSOR+1] =
{
#if defined(OV8830_RAW)
    {OV8830_SENSOR_ID, SENSOR_DRVNAME_OV8830_RAW, OV8830SensorInit},
#endif
#if defined(IMX073_MIPI_RAW)
    {IMX073_SENSOR_ID, SENSOR_DRVNAME_IMX073_MIPI_RAW, IMX073_MIPI_RAW_SensorInit},
#endif
#if defined(IMX073_MIPI_RAW)
这个在第二
MSDK_SENSOR_INIT_FUNCTION_STRUCT SensorList[] =
{
  #if defined(OV8830_RAW)
    RAW_INFO(OV8830_SENSOR_ID, SENSOR_DRVNAME_OV8830_RAW, NULL),
  #endif
#if defined(OV9726_RAW)
    RAW_INFO(OV9726_SENSOR_ID, SENSOR_DRVNAME_0V9726_RAW,NULL),
#endif
#if defined(IMX073_MIPI_RAW)
    RAW_INFO(IMX073_SENSOR_ID, SENSOR_DRVNAME_IMX073_MIPI_RAW,EEPROMGetCalData),
#endif
但是在sensorlist.cpp里面却是第三,index一定要一致,也就是说ke_sensorlist.h和sensorlist.cpp里面不是有就可以,两边顺序一定匹配,否则会出问题。

我过会验证一下试试。
不过从代码上分析不通啊。
由于OV8830_RAW,OV9726_RAW这两个宏都没定义,所以SensorList[]中的第一个(数组下标为0的那个)就应该是RAW_INFO(IMX073_SENSOR_ID, SENSOR_DRVNAME_IMX073_MIPI_RAW,EEPROMGetCalData),
同样,在kdSensorList数组中,IMX073也是第一个啊,这样的话,顺序是匹配的呀

我试验了一下,还是不行,从uart log看,是一直找不到sensorID。

你看了MTK配置camera文档没有,如果是新增的camera 驱动的话,要修改三个文件的,分别加入ID号,设备名,之类的

你用的是那两颗 canera?

Hi253 和 imx105,但是板子硬件上暂时还没有接imx105.
谢谢!

请问是哪三个文件?
多谢!

汗死,你主板上不接camera 还调什么啊,肯定是显示不能连接camera的啊
kd_sensorlist.h和sensorlist.cpp、kd_imgsensor.h

这两颗摄头 MTK平台默认支持的啊


没接后置,只接了前置的hi235.
我修改了kd_sensorlist.h,kd_sensorlist.c后,不报错说“链接不到相机”了,但是屏幕一直是黑的,还需要调整。
非常感谢你的解答。

这个问题最后怎么解决了,我现在也遇到了

找到了,上层的效果参数路经放到了mt目录,没有放到具体项目下面去

学习Lo

你好,请问你解决这个问题了吗,error: undefined reference to 'NSFeature::RAWSensorInfo<22160u>::impGetDefaultData,
我现在也遇到这个问题了,请问要怎么解决呢

你路径放错了吧,没放错的话删了关于camera的全部动态库再编

我直接把原文件备份好,然后把两个文件里面的无关定义删除,大概剩下下面的相关定义
vendor/mediatek/proprietary/custom/common/kernel/imgsensor/inc/kd_imgsensor.h
/********************************************************************************/
/* SENSOR CHIP VERSION */
#define OV5648MIPI_SENSOR_ID                    0x5648
/* CAMERA DRIVER NAME */
#define CAMERA_HW_DEVNAME                       "kd_camera_hw"
/* SENSOR DEVICE DRIVER NAME */
#define SENSOR_DRVNAME_OV5648_MIPI_RAW          "ov5648mipi"


./vendor/mediatek/proprietary/custom/mt6735/hal/D1/imgsensor_src/sensorlist.cpp
./vendor/mediatek/proprietary/custom/mt6735/hal/D2/imgsensor_src/sensorlist.cpp
/********************************************************************************/
MSDK_SENSOR_INIT_FUNCTION_STRUCT SensorList[] =
{
#if defined(OV5648_MIPI_RAW)
    RAW_INFO(OV5648MIPI_SENSOR_ID, SENSOR_DRVNAME_OV5648_MIPI_RAW, NULL),
#endif
/*  ADD sensor driver before this line */
    {0,{0},NULL, NULL, NULL}//end of list
};

你关于imgsensor的文件是放到了vendor/mediatek/properity/custom/mt**/下面,具体项目那放了吗了vendor/mediatek/properity/custom/project/

昨晚仔细看了这个帖子,xuyang123的回复很给力。
就是camera的参数文件要放两个地方,路径分别是:
\vendor\mediatek\proprietary\custom\mt6735\hal\D1\imgsensor\*
\vendor\mediatek\proprietary\custom\wisky8735_tb_l1\hal\imgsensor\*
我之前就是因为第一个路径没有放,导致一直出错,哭晕。

这几天我也遇到了,顺序不一致,导致后置camera自动对焦有问题(不显示对焦的那个框)

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top