超级搬砖工 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日

悬赏问题

  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 对于相关问题的求解与代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料