天空

天空

0个粉丝

2

问答

0

专栏

0

资料

天空  发布于  2021-07-19 17:50:47
采纳率 0%
2个问答
3241

hi3516DV300开发板编译的vio代码不能出图

直接运行你们提供的sample_vio_mipi0,可以出图。
我把Demo Code\03. Seneor\GC2035里面的代码拷贝到SDK开发环境里面编译,编译完成在板上运行,报错。是不是还有别的修改过的文件没提供?
makefile.param文件里面已经改了如下
SENSOR0_TYPE ?= GALAXYCORE_GC2053_MIPI_2M_30FPS_10BIT

运行出错:
/mnt # ./sample_vio 0
[SAMPLE_COMM_VI_SetMipiAttr]-2461: ============= MipiDev 1, SetMimipi_set_mipi_dev_attr(531): piAttr enWDRMode: 0
invalid combo dev num after set hs mode!
mipi_set_combo_dev_attr(664): mipi set mipi attr failed!
mipi_rx_ioctl(889): mipi set combo_dev attr failed!
[SAMPLE_COMM_VI_SetMipiAttr]-2467: MIPI_SET_DEV_ATTR failed
[SAMPLE_COMM_VI_StartMIPI]-2559: SAMPLE_COMM_VI_SetMipiAttr failed!
[SAMPLE_COMM_VI_StartVi]-4073: SAMPLE_COMM_VI_StartMIPI failed!
[SAMPLE_VIO_ViOnlineVpssOnlineRoute]-173: start vi failed.s32Ret:0xffffffff !

我来回答
回答4个
时间排序
认可量排序

横贯八方

4个粉丝

34

问答

0

专栏

3

资料

横贯八方 2021-09-18 09:56:29
认可0

mipi参数那里就已经设置错误了吧

张晨

0个粉丝

0

问答

0

专栏

0

资料

张晨 2021-12-22 10:46:42
认可0

我遇到和【天空】同样的问题。然后我把sample_vio.c文件SAMPLE_VIO_ViOnlineVpssOnlineRoute函数中做了修改。

if 1

//mipi0
stViConfig.s32WorkingViNum                                   = s32ViCnt;
stViConfig.as32WorkingViId[0]                                = 0;
stViConfig.astViInfo[s32WorkSnsId].stSnsInfo.MipiDev         = ViDev;
stViConfig.astViInfo[s32WorkSnsId].stSnsInfo.s32BusId        = 0;
stViConfig.astViInfo[s32WorkSnsId].stDevInfo.ViDev           = ViDev;
stViConfig.astViInfo[s32WorkSnsId].stDevInfo.enWDRMode       = enWDRMode;
stViConfig.astViInfo[s32WorkSnsId].stPipeInfo.enMastPipeMode = enMastPipeMode;
stViConfig.astViInfo[s32WorkSnsId].stPipeInfo.aPipe[0]       = ViPipe;
stViConfig.astViInfo[s32WorkSnsId].stPipeInfo.aPipe[1]       = -1;
stViConfig.astViInfo[s32WorkSnsId].stPipeInfo.aPipe[2]       = -1;
stViConfig.astViInfo[s32WorkSnsId].stPipeInfo.aPipe[3]       = -1;
stViConfig.astViInfo[s32WorkSnsId].stChnInfo.ViChn           = ViChn;
stViConfig.astViInfo[s32WorkSnsId].stChnInfo.enPixFormat     = enPixFormat;
stViConfig.astViInfo[s32WorkSnsId].stChnInfo.enDynamicRange  = enDynamicRange;
stViConfig.astViInfo[s32WorkSnsId].stChnInfo.enVideoFormat   = enVideoFormat;
stViConfig.astViInfo[s32WorkSnsId].stChnInfo.enCompressMode  = enCompressMode;

else

s32ViCnt = 2;
stViConfig.s32WorkingViNum                                   = s32ViCnt;
for (i = 0; i < s32ViCnt; i++)
{
//i = 0;
ViDev = i;
ViPipe = i;
s32WorkSnsId   = i;
//stViConfig.s32WorkingViNum                                   = s32ViCnt;
//stViConfig.as32WorkingViId[0]                                = 0;
stViConfig.as32WorkingViId[0]                                = i;
stViConfig.astViInfo[s32WorkSnsId].stSnsInfo.MipiDev         = ViDev;
stViConfig.astViInfo[s32WorkSnsId].stSnsInfo.s32BusId        = i;
stViConfig.astViInfo[s32WorkSnsId].stDevInfo.ViDev           = ViDev;
stViConfig.astViInfo[s32WorkSnsId].stDevInfo.enWDRMode       = enWDRMode;
stViConfig.astViInfo[s32WorkSnsId].stPipeInfo.enMastPipeMode = enMastPipeMode;
stViConfig.astViInfo[s32WorkSnsId].stPipeInfo.aPipe[0]       = i==0 ? ViPipe : -1;
stViConfig.astViInfo[s32WorkSnsId].stPipeInfo.aPipe[1]       = i==1 ? ViPipe : -1;
stViConfig.astViInfo[s32WorkSnsId].stPipeInfo.aPipe[2]       = -1;
stViConfig.astViInfo[s32WorkSnsId].stPipeInfo.aPipe[3]       = -1;
stViConfig.astViInfo[s32WorkSnsId].stChnInfo.ViChn           = ViChn;
stViConfig.astViInfo[s32WorkSnsId].stChnInfo.enPixFormat     = enPixFormat;
stViConfig.astViInfo[s32WorkSnsId].stChnInfo.enDynamicRange  = enDynamicRange;
stViConfig.astViInfo[s32WorkSnsId].stChnInfo.enVideoFormat   = enVideoFormat;
stViConfig.astViInfo[s32WorkSnsId].stChnInfo.enCompressMode  = enCompressMode;

}

endif

可以加载GC2053驱动。
运行打印信息如下,但是没有视频显示。
/mnt/zhangchen # ./sample_vio 0
SENSOR0_TYPE: 25
[SAMPLE_COMM_VI_SetMipiAttr]-2461: ============= MipiDev 0, SetMipiAttr enWDRMode: 0
SAMPLE_COMM_ISP_GetSnsObj enSnsType: 25
SAMPLE_COMM_ISP_GetSnsObj enSnsType: 25
GC2053_SENSOR_1080P_30FPS_LINEAR_MODE
=== Galaxycore GC2053_1080P_30FPS_10BIT_LINE_Init_OK!===
GC2053 init succuss!
[SAMPLE_COMM_ISP_Thread]-540: ISP Dev 0 running !
[SAMPLE_COMM_VO_StartChn]-544: u32Width:1920, u32Height:1080, u32Square:1
———————-press Enter key to exit!———————-

zhttp

0个粉丝

3

问答

0

专栏

0

资料

zhttp 2022-06-19 01:34:16
认可0

看了看代码和mipi驱动源码,自带代码应该是lane_divide_mode这个参数有问题
1 在sample_vio.c这个文件中的HI_S32 SAMPLE_COMM_VI_StartMIPI(SAMPLE_VI_CONFIG_S pstViConfig)函数,在前几行中调用了SAMPLE_COMM_VI_GetMipiLaneDivideMode这个函数,点进去可以看到如果使用GC2053这个sensor,那么返回值应该是0,也就是lane_divide_mode=0;
2 接下来调用了SAMPLE_COMM_VI_SetMipiHsMode这个函数,点进去实际就是把lane_divide_mode通过ioctl系统调用对sensor进行了设置,用到的指令关键字为HI_MIPI_SET_HS_MODE
3 在smp/a7_linux/drv/interdrv/mipi_rx目录下可以找到驱动源码,在mipi_rx.c中的mipi_rx_ioctl函数(也就是ioctl系统调用最终会调用到的地方)找到HI_MIPI_SET_HS_MODE这个指令,实际调用了mipi_set_hs_mode这个函数,其中最终调用了mipi_set_hs_mode,通过判断传入的参数是0还是1,将g_stMipirxDevCtx.dev_valid进行了设置,g_stMipirxDevCtx.dev_valid是长度为2的数组,参数为0时,仅第一个设为1,为1时,将两个都设为1
4 通过错误信息可以找到出错的位置,即通过ioctl系统调用使用HI_MIPI_SET_DEV_ATTR指令,同样在mipi_rx.c中的mipi_rx_ioctl函数中,HI_MIPI_SET_DEV_ATTR指令最终执行了mipi_is_dev_valid这一函数,其功能正是检查g_stMipirxDevCtx.dev_valid对应的值是否为1,若不则报错,
5 因此,需要将步骤1中的lane_divide_mode修改为1,这样g_stMipirxDevCtx.dev_valid[2]的两个值都会设为1,在之后的设置中才可以顺利完成,这里可以手动在SAMPLE_COMM_VI_GetMipiLaneDivideMode函数后面加上lane_divide_mode=1;也可以进入SAMPLE_COMM_VI_GetMipiLaneDivideMode函数,在f ((SONY_IMX327_2L_MIPI_2M_30FPS_12BIT == pstViConfig->astViInfo[0].stSnsInfo.enSnsType)|| (SONY_IMX327_2L_MIPI_2M_30FPS_12BIT_WDR2TO1 == pstViConfig->astViInfo[0].stSnsInfo.enSnsType))里面加入 || (GALAXYCORE_GC2053_MIPI_2M_30FPS_10BIT == pstViConfig->astViInfo[0].stSnsInfo.enSnsType)
6 之后编译下载到开发板中并执行,打印如下
/mnt/udisk # ./sample_vio 0 [SAMPLE_COMM_VI_SetMipiAttr]-2482: ============= MipiDev 0, SetMipiAttr enWDRMode: 0 [SAMPLE_COMM_VI_SetMipiAttr]-2482: ============= MipiDev 1, SetMipiAttr enWDRMode: 0 GC2053_SENSOR_1080P_30FPS_LINEAR_MODE === Galaxycore GC2053_1080P_30FPS_10BIT_LINE_Init_OK!=== GC2053 init succuss! [SAMPLE_COMM_ISP_Thread]-526: ISP Dev 0 running ! GC2053_SENSOR_1080P_30FPS_LINEAR_MODE === Galaxycore GC2053_1080P_30FPS_10BIT_LINE_Init_OK!=== GC2053 init succuss! [SAMPLE_COMM_ISP_Thread]-526: ISP Dev 1 running ! [SAMPLE_COMM_VO_StartChn]-544: u32Width:1920, u32Height:1080, u32Square:1 ---------------press Enter key to exit!---------------
对比自带可执行文件执行结果
`/mnt/udisk # ./sample_vio 0
lane_divide_mode = 1
WorkingViNum = 2
s32Vinum = 1
s32Vinum = 0
[SAMPLE_COMM_VI_SetMipiAttr]-2502: ============= MipiDev 1, SetMipiAttr enWDRMode: 0
[SAMPLE_COMM_VI_SetMipiAttr]-2502: ============= MipiDev 0, SetMipiAttr enWDRMode: 0
i = 0 s32ViNum=1 ViPipe=-1
pstViInfo->stPipeInfo.bMultiPipe = 0
i = 1 s32ViNum=0 ViPipe=0
pstViInfo->stPipeInfo.bMultiPipe = 0
StartIsp i = 0
StartIsp i = 1
stPubAttr.enWDRMode=0 ViPipe=1 u32SnsId=1
GC2053_SENSOR_1080P_30FPS_LINEAR_MODE
**GC2053: /dev/i2c-1**
=== Galaxycore GC2053_1080P_30FPS_10BIT_LINE_Init_OK!===
GC2053 init succuss!
StartIsp i = 2
StartIsp i = 3
StartIsp i = 0
stPubAttr.enWDRMode=0 ViPipe=0 u32SnsId=0
[SAMPLE_COMM_ISP_Thread]-536: ISP Dev 1 running !
GC2053_SENSOR_1080P_30FPS_LINEAR_MODE
**GC2053: /dev/i2c-0*

=== Galaxycore GC2053_1080P_30FPS_10BIT_LINE_Init_OK!===
GC2053 init succuss!
StartIsp i = 1
StartIsp i = 2
StartIsp i = 3
[SAMPLE_COMM_ISP_Thread]-536: ISP Dev 0 running !
[SAMPLE_COMM_VO_StartChn]-544: u32Width:1920, u32Height:1080, u32Square:1
———————-press Enter key to exit!———————-
`
除了少了一些调试信息,其它完全相同,由于我没有屏幕,无法验证实际是否正确,所以以上内容仅供参考。

zhttp

0个粉丝

3

问答

0

专栏

0

资料

zhttp 2022-06-20 22:27:01
认可0

我sample_vio中加入venc将码流保存成文件来验证正确性,发现只有一个vi有数据,通过对比/proc/umap/mipi的输出,发现是mipi配置有问题,具体内容在sample_comm_vi.c中,找到combo_dev_attr_t MIPI_2lane_CHN0_SENSOR_GC2053_10BIT_2M_NOWDR_ATTR结构体,将其复制粘贴并重命名为combo_dev_attr_t MIPI_2lane_CHN1_SENSOR_GC2053_10BIT_2M_NOWDR_ATTR,分别将两个结构体中的mipi_attr中的四位数组修改为:chn0:{0, 2, -1, -1},chn1:{1, 3, -1, -1},然后在SAMPLE_COMM_VI_GetComboAttrBySns函数中找到GC2053的选项,修改代码根据MipiDev的值复制不同的结构体,修改之后编译运行,两个vi均有数据。这些设置有什么作用暂时还没有研究清楚。

或将文件直接拖到这里
悬赏:
E币
网盘
* 网盘链接:
* 提取码:
悬赏:
E币

Markdown 语法

  • 加粗**内容**
  • 斜体*内容*
  • 删除线~~内容~~
  • 引用> 引用内容
  • 代码`代码`
  • 代码块```编程语言↵代码```
  • 链接[链接标题](url)
  • 无序列表- 内容
  • 有序列表1. 内容
  • 缩进内容
  • 图片![alt](url)
+ 添加网盘链接/附件

Markdown 语法

  • 加粗**内容**
  • 斜体*内容*
  • 删除线~~内容~~
  • 引用> 引用内容
  • 代码`代码`
  • 代码块```编程语言↵代码```
  • 链接[链接标题](url)
  • 无序列表- 内容
  • 有序列表1. 内容
  • 缩进内容
  • 图片![alt](url)
举报反馈

举报类型

  • 内容涉黄/赌/毒
  • 内容侵权/抄袭
  • 政治相关
  • 涉嫌广告
  • 侮辱谩骂
  • 其他

详细说明

易百纳技术社区