超级搬砖工 2019-09-27 16:36 采纳率: 100%
浏览 575
已采纳

Hi3518ev300 在HI_MIPI_ENABLE_SENSOR_CLOCK 时失败,报错:__osal_unlocked_ioctl - Input param err,it is null!

初始化代码如下:

static int hal_mipi_init(void)
{
    int fd = open("/dev/hi_mipi", O_RDWR);
    if (fd < 0) {
        ERROR_LOG("open hi_mipi dev fail\n");
        return HLE_RET_EIO;
    }
    int s32Ret;


    lane_divide_mode_t enHsMode = LANE_DIVIDE_MODE_0;
    s32Ret = ioctl(fd, HI_MIPI_SET_HS_MODE, &enHsMode);  //LANE_DIVIDE_MODE_0
    if (HI_SUCCESS != s32Ret)
    {
        ERROR_LOG("HI_MIPI_SET_HS_MODE failed\n");
        return HLE_RET_EIO;
    }


    s32Ret = ioctl(fd, HI_MIPI_ENABLE_MIPI_CLOCK, &mipiDevAttr[sns].devno);
    if (HI_SUCCESS != s32Ret)
    {
        ERROR_LOG("MIPI_ENABLE_CLOCK %d failed\n",mipiDevAttr[sns].devno);
        return HLE_RET_EIO;
    }


    s32Ret = ioctl(fd, HI_MIPI_RESET_MIPI, &mipiDevAttr[sns].devno); //ok
    if (HI_SUCCESS != s32Ret)
    {
        ERROR_LOG("HI_MIPI_RESET_MIPI %d failed\n",mipiDevAttr[sns].devno);
        return HLE_RET_EIO;
    }

    DEBUG_LOG("into mipi pos 001, mipiDevAttr[sns].devno = %d\n",mipiDevAttr[sns].devno);


    s32Ret = ioctl(fd, HI_MIPI_ENABLE_SENSOR_CLOCK, mipiDevAttr[sns].devno);//此处失败
    if (HI_SUCCESS != s32Ret)
    {
        ERROR_LOG("HI_MIPI_ENABLE_SENSOR_CLOCK %d failed\n",mipiDevAttr[sns].devno);
        return HLE_RET_EIO;
    } 



    s32Ret = ioctl(fd, HI_MIPI_RESET_SENSOR, &mipiDevAttr[sns].devno);//ok
    if (HI_SUCCESS != s32Ret)
    {
        ERROR_LOG("HI_MIPI_RESET_SENSOR %d failed\n",mipiDevAttr[sns].devno);
        return HLE_RET_EIO;
    } 

    if (ioctl(fd, HI_MIPI_SET_DEV_ATTR, &mipiDevAttr[sns])) //ok
    {
        ERROR_LOG("set mipi attr fail\n");
        close(fd);
        return HLE_RET_EIO;
    }

    usleep(10000);

    s32Ret = ioctl(fd, HI_MIPI_UNRESET_MIPI, &mipiDevAttr[sns].devno);//ok
    if (HI_SUCCESS != s32Ret)
    {
        ERROR_LOG("HI_MIPI_UNRESET_MIPI %d failed\n",mipiDevAttr[sns].devno);
        return HLE_RET_EIO;
    } 

    s32Ret = ioctl(fd, HI_MIPI_UNRESET_SENSOR, &mipiDevAttr[sns].devno);//ok
    if (HI_SUCCESS != s32Ret)
    {
        ERROR_LOG("HI_MIPI_UNRESET_SENSOR %d failed\n",mipiDevAttr[sns].devno);
        return HLE_RET_EIO;
    } 

    close(fd);

    return HLE_RET_OK;
}

报错截图如下:
图片说明

报错的打印:__osal_unlocked_ioctl - Input param err,it is null! 是SDK库里边打的,

不知道什么原因会这样,包括改sensor I2C地址,都试过了。。。。。。。。。。。

  • 写回答

1条回答 默认 最新

  • zqbnqsdsmd 2019-09-27 19:06
    关注
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 已采纳回答 10月11日

悬赏问题

  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条
  • ¥15 LiBeAs的带隙等于0.997eV,计算阴离子的N和P
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘
  • ¥15 来真人,不要ai!matlab有关常微分方程的问题求解决,
  • ¥15 perl MISA分析p3_in脚本出错
  • ¥15 k8s部署jupyterlab,jupyterlab保存不了文件
  • ¥15 ubuntu虚拟机打包apk错误
  • ¥199 rust编程架构设计的方案 有偿
  • ¥15 回答4f系统的像差计算