This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

DM8168,M3异常



程序运行显示一帧图像,然后画面就没了,打印信息:

请问是不是MpSclr引起的?

  • Chu Hi,

    你是1600x1200到1920x1080,水平方向放大,垂直方向缩小,默认的Mpsclar只做缩小的。

    1600x1200是4:3的,1920x1080是16:9的,你确认要这样不等比缩放么?

  • 谢谢你的回复,我如果换成2048*2048,还是报错了:

     [m3vpss ]  131577:Utils_memFrameGetSize:dataFormat[1]w[1920]h[1080]pitch0[3840]pitch1[0]
     [m3vpss ]  131577:Utils_memFrameGetSize:dataFormat[1]w[1920]h[1080]pitch0[3840]pitch1[0]size[4147200]
     [m3vpss ]  UTILS: MEM: Alloc'ing from FRAME BUF. (required size = 4147200 B, free space = 190192512 B)
     [m3vpss ]  UTILS: MEM: FRAME ALLOC, addr = 0xb345e480, size = 4147200 bytes
     [m3vpss ]  131599:Utils_memFrameGetSize:dataFormat[1]w[1920]h[1080]pitch0[3840]pitch1[0]
     [m3vpss ]  131600:Utils_memFrameGetSize:dataFormat[1]w[1920]h[1080]pitch0[3840]pitch1[0]size[4147200]
     [m3vpss ]  UTILS: MEM: Alloc'ing from FRAME BUF. (required size = 4147200 B, free space = 186045312 B)
     [m3vpss ]  UTILS: MEM: FRAME ALLOC, addr = 0xb3852c80, size = 4147200 bytes
     [m3vpss ]  131621:Utils_memFrameGetSize:dataFormat[1]w[1920]h[1080]pitch0[3840]pitch1[0]
     [m3vpss ]  131621:Utils_memFrameGetSize:dataFormat[1]w[1920]h[1080]pitch0[3840]pitch1[0]size[4147200]
     [m3vpss ]  UTILS: MEM: Alloc'ing from FRAME BUF. (required size = 4147200 B, free space = 181898112 B)
     [m3vpss ]  UTILS: MEM: FRAME ALLOC, addr = 0xb3c47480, size = 4147200 bytes
     [m3vpss ]  131643:Utils_memFrameGetSize:dataFormat[1]w[1920]h[1080]pitch0[3840]pitch1[0]
     [m3vpss ]  131643:Utils_memFrameGetSize:dataFormat[1]w[1920]h[1080]pitch0[3840]pitch1[0]size[4147200]
     [m3vpss ]  UTILS: MEM: Alloc'ing from FRAME BUF. (required size = 4147200 B, free space = 177750912 B)
     [m3vpss ]  UTILS: MEM: FRAME ALLOC, addr = 0xb403bc80, size = 4147200 bytes
     [m3vpss ]  131665:Utils_memFrameGetSize:dataFormat[1]w[1920]h[1080]pitch0[3840]pitch1[0]
     [m3vpss ]  131666:Utils_memFrameGetSize:dataFormat[1]w[1920]h[1080]pitch0[3840]pitch1[0]size[4147200]
     [m3vpss ]  UTILS: MEM: Alloc'ing from FRAME BUF. (required size = 4147200 B, free space = 173603712 B)
     [m3vpss ]  UTILS: MEM: FRAME ALLOC, addr = 0xb4430480, size = 4147200 bytes
     [m3vpss ]  131687:Utils_memFrameGetSize:dataFormat[1]w[1920]h[1080]pitch0[3840]pitch1[0]
     [m3vpss ]  131687:Utils_memFrameGetSize:dataFormat[1]w[1920]h[1080]pitch0[3840]pitch1[0]size[4147200]
     [m3vpss ]  UTILS: MEM: Alloc'ing from FRAME BUF. (required size = 4147200 B, free space = 169456512 B)
     [m3vpss ]  UTILS: MEM: FRAME ALLOC, addr = 0xb4824c80, size = 4147200 bytes
     [m3vpss ]  131708: MP_SCLR: - Input Resolution Changed, updating...
     [m3vpss ]  131709: MP_SCLR: - Input Resolution Updated
     [m3vpss ]  131709: MP_SCLR:w[2048]h[2048]inFmt.width[2048]inFmt.height[2048]outFmt.width[1920]outFmt.height[1080]numPixelsPerLine[1776]w3[1920]
     [c6xdsp ]  DSP   BGR_Img=9dc1af4c
     [m3vpss ]  DUP   ReRGB_Img=1
    Receive num=646
    send over size=645
    recvfrom......
     [c6xdsp ]  114874: SYSTEM: Opening MsgQ [HOST_MSGQ] ...
     [m3vpss ]  SWMS: *** UPDATING RT Params ***
     [m3vpss ]  131753: SWMS    : ******* Configuring clock 30 secs...
     [m3vpss ]  131753: SWMS1    : Loading Vertical Co-effs (UPSCALE)x ...
     [m3vpss ]  131753: SWMS1    : Loading Horizontal Co-effs (UPSCALE)x ...
     [m3vpss ]  131753: SWMS    : Co-effs Loading ... DONE !!!
     [m3vpss ]  131753: SWMS1    : Loading Vertical Co-effs (UPSCALE)x ...
     [m3vpss ]  131753: SWMS1    : Loading Horizontal Co-effs (UPSCALE)x ...
     [m3vpss ]  131753: SWMS    : Co-effs Loading ... DONE !!!
     [m3vpss ] 
     [m3vpss ]  *** [SWMS1] Mosaic Parameters ***
     [m3vpss ] 
     [m3vpss ]  Output FPS: 30
     [m3vpss ] 
     [m3vpss ]  Win | Ch  | Input      | Input          | Input         | Input       | Output     |  Output         | Output        | Output      | Scan        | Low Cost | SWMS | Data  | Blank |
     [m3vpss ]  Num | Num | Start X, Y | Width x Height | Pitch Y / C   | Memory Type | Start X, Y |  Width x Height | Pitch Y / C   | Memory Type | Fmt         | ON / OFF | Inst | Format| Frame |
     [m3vpss ]  ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
     [m3vpss ]    0 |   0 |    0,    0 |  1920 x   1080 |  3840 /     0 | NON-TILED   |    0,    0 |  1920 x   1080 |  3840 /      0 | NON-TILED   | PROGRESSIVE |      OFF |    0 |  422I  |   OFF |
     [m3vpss ] 
     [m3vpss ]  SWMS: *** UPDATING RT Params ***
     [m3vpss ]  131759: SWMS    : ******* Configuring clock 30 secs...
     [m3vpss ]  131759: SWMS0    : Loading Vertical Co-effs (10/16)x ...
     [m3vpss ]  131759: SWMS0    : Loading Horizontal Co-effs (4/16)x ...
     [m3vpss ]  131760: SWMS    : Co-effs Loading ... DONE !!!
     [m3vpss ]  131760: SWMS0    : Loading Vertical Co-effs (10/16)x ...
     [m3vpss ]  131760: SWMS0    : Loading Horizontal Co-effs (4/16)x ...
     [m3vpss ]  131760: SWMS    : Co-effs Loading ... DONE !!!
     [m3vpss ] 
     [m3vpss ]  *** [SWMS0] Mosaic Parameters ***
     [m3vpss ] 
     [m3vpss ]  Output FPS: 30
     [m3vpss ] 
     [m3vpss ]  Win | Ch  | Input      | Input          | Input         | Input       | Output     |  Output         | Output        | Output      | Scan        | Low Cost | SWMS | Data  | Blank |
     [m3vpss ]  Num | Num | Start X, Y | Width x Height | Pitch Y / C   | Memory Type | Start X, Y |  Width x Height | Pitch Y / C   | Memory Type | Fmt         | ON / OFF | Inst | Format| Frame |
     [m3vpss ]  ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
     [m3vpss ]    0 |   0 |    0,    0 |  1920 x    540 |  7680 /     0 | NON-TILED   |  200,   40 |   576 x    346 |  3840 /      0 | NON-TILED   | PROGRESSIVE |       ON |    0 |  422I  |   OFF |
     [m3vpss ]    1 | 255 |    0,    0 |   352 x    264 |   704 /   704 | NON-TILED   |  776,   40 |   576 x    346 |  3840 /      0 | NON-TILED   | INTERLACE   |       ON |    1 |  422I  |    ON |
     [m3vpss ]    2 | 255 |    0,    0 |   352 x    264 |   704 /   704 | NON-TILED   | 1352,   40 |   576 x    346 |  3840 /      0 | NON-TILED   | INTERLACE   |       ON |    1 |  422I  |    ON |

    decodeSwitchDone == TRUE
     [m3vpss ]    3 | 255 |    0,    0 |   352 x    264 |   704 /   704 | NON-TILED   |  200,  386 |   576 x    346 |  3840 /      0 | NON-TILED   | INTERLACE   |       ON |    1 |  422I  |    ON |
     [m3vpss ]    4 | 255 |    0,    0 |   352 x    264 |   704 /   704 | NON-TILED   |  776,  386 |   576 x    346 |  3840 /      0 | NON-TILED   | INTERLACE   |       ON |    1 |  422I  |    ON |
     [m3vpss ]    5 | 255 |    0,    0 |   352 x    264 |   704 /   704 | NON-TILED   | 1352,  386 |   576 x    346 |  3840 /      0 | NON-TILED   | INTERLACE   |       ON |    1 |  422I  |    ON |
     [m3vpss ]    6 | 255 |    0,    0 |   352 x    264 |   704 /   704 | NON-TILED   |  200,  732 |   576 x    346 |  3840 /      0 | NON-TILED   | INTERLACE   |       ON |    1 |  422I  |    ON |
     [m3vpss ]    7 | 255 |    0,    0 |   352 x    264 |   704 /   704 | NON-TILED   |  776,  732 |   576 x    346 |  3840 /      0 | NON-TILED   | INTERLACE   |       ON |    1 |  422I  |    ON |
     [m3vpss ]    8 | 255 |    0,    0 |   352 x    264 |   704 /   704 | NON-TILED   | 1352,  732 |   576 x    346 |  3840 /      0 | NON-TILED   | INTERLACE   |       ON |    1 |  422I  |    ON |
     [m3vpss ] 
     [m3vpss ] SWMS:Restoring blank frame params for winId:1
     [m3vpss ] SWMS:Restoring blank frame params for winId:2
     [m3vpss ] SWMS:Restoring blank frame params for winId:3
     [m3vpss ] SWMS:Restoring blank frame params for winId:4
     [m3vpss ] SWMS:Restoring blank frame params for winId:5
     [m3vpss ] SWMS:Restoring blank frame params for winId:6
     [m3vpss ] SWMS:Restoring blank frame params for winId:7
     [m3vpss ] SWMS:Restoring blank frame params for winId:8
     [m3vpss ] Unhandled Exception:
     [m3vpss ] Exception occurred in ThreadType_Task
     [m3vpss ] handle: 0x3fab5870.
     [m3vpss ] stack base: 0x3f9e4440.
     [m3vpss ] stack size: 0x8000.
     [m3vpss ] R0 = 0xb385ac78  R8  = 0x9dc18b3c
     [m3vpss ] R1 = 0x00004000  R9  = 0x9dc18f3c
     [m3vpss ] R2 = 0x9dc1873c  R10 = 0x00000085
     [m3vpss ] R3 = 0x0000008c  R11 = 0x00000009
     [m3vpss ] R4 = 0x00000009  R12 = 0x00000000
     [m3vpss ] R5 = 0x00004001  SP(R13) = 0x3f9ec358
     [m3vpss ] R6 = 0x9dc1b4ec  LR(R14) = 0x9dc1933c
     [m3vpss ] R7 = 0x00003ff9  PC(R15) = 0x0043c098
     [m3vpss ] PSR = 0xa1000000
     [m3vpss ] ICSR = 0x0440f803
     [m3vpss ] MMFSR = 0x00
     [m3vpss ] BFSR = 0x82
     [m3vpss ] UFSR = 0x0000
     [m3vpss ] HFSR = 0x40000000
     [m3vpss ] DFSR = 0x00000000
     [m3vpss ] MMAR = 0x00004001
     [m3vpss ] BFAR = 0x00004001
     [m3vpss ] AFSR = 0x00000000
     [m3vpss ] Terminating Execution...

  • Chu Hi,

    你测试的使用mpsclar缩小2048*2048到1920x1080,对么?如果是,你能否调整一下MP_SCLR_LINK_MAX_VERTICAL_SLICE_SIZE的大小,看是否有改善?

    最好是在mpsclara驱动里面再打印一下,看看分片,分片的缩放比例设置是否正确。

  • Chris Hi,

    谢谢回复,是2048*2048到1920*1080,MP_SCLR_LINK_MAX_VERTICAL_SLICE_SIZE现在是1900,要改成2048?

  • Chu Hi,

    SC的限制是输入输出不能大于1920x1080,MP_SCLR_LINK_MAX_VERTICAL_SLICE_SIZE是用来定义从什么地方输入图片分割为两个或者多个,然后分别输入SC处理,这就是MPsclar的原理。

    所以MP_SCLR_LINK_MAX_VERTICAL_SLICE_SIZE不能大于1920,先可以尝试一下1824。

  • Chris Hi,

    有段错误啊,这个该怎么调试,不知道错误在哪

  • 在8168怎么用gdb调试呢

  • hl chu 说:

    Chris Hi,

    有段错误啊,这个该怎么调试,不知道错误在哪

    如果这个段错误是由于Mpsclar导致的,我建议你先尝试修改一下我提供的这个参数。

    如果你的板子上有JTAG口,你也有仿真器,你可以连上vpss M3 (不要加载gel), 然后把出现Exception时候的各个寄存器的值在CCS里面填回去,就可以恢复到出现exception前的那个状态。具体请参考:http://processors.wiki.ti.com/index.php/SYS/BIOS_FAQs#4_Exception_Dump_Decoding_Using_the_CCS_Register_View

  • Chris Hi,

    仿真器连接好了,配置了configure file,test connection成功,但是找不到VPSS_M3.

  • Chu Hi,

    请在CCS里面选择TI816x。

  • Chris Hi,

    能麻烦你看一下打印的日志吗?日志在附件。看一下图片中这一类数据是否有不正常的地方,谢谢。异常是在mpSclr以后dup处理数据函数DupLink_drvProcessFrames里。

  • hl chu 说:
    异常是在mpSclr以后dup处理数据函数DupLink_drvProcessFrames里。

    你能否在duplink里面设置断点,看看具体什么导致的错误?

  • Chris Hi,

    编码有异常,videoM3改成debug模式,编译失败,这个该怎么改?

  • Chu Hi,

    打印提示错误是OCMC的memory不够用了,因为debug版本的代码比较大。

    解决方法就是修改cmd文件,调整代码存放的位置,放到其他地方去。

  • Chris Hi,

    我把代码放到LINUX_MEM里,编译可以通过,这样行不行?

    连接CCS调试的时候,输入异常寄存器地址,没跳到出错的地方,

    我在rdk里没找到图里的函数,这个函数在哪

  • Chu hl,

    hl chu 说:
    我把代码放到LINUX_MEM里,编译可以通过,这样行不行?

    应该不可以啊,M3的代码是和Linux一起运行的。

    hl chu 说:
    连接CCS调试的时候,输入异常寄存器地址,没跳到出错的地方,

    这个测试需要先运行这个debug版本的代码,然后记录下exception时候的R0~R15的值。接下来连上CCS,在M3上load 这个debug版本的代码,然后填入R0~R15的值。运行和load的两个代码必须完全一致。

  • Chris Hi,

    那请问可以往哪里放代码呢?

    CCS调试的时候load的就是生成的debug版本的代码。

  • Chris Hi,

    代码放到SR2可以吗

  • Chu Hl,

    任何已经分配使用的memory都不建议重复使用。

    建议你修改cfg文件,可以把SR2的大小变小一点,把M3的memory段加大相应大小,例如VIDEO_M3_BSS_SIZE,然后把相应section指定到VIDEO_M3_BSS这个段。

  • Chris Hi,

    我把SR1减小了一点,把VIDEO_M3_CODE_SIZE增大了,能编译过,这样可以吧:

    输入R0-R15没有到出错的地方,在rdk里找文件和函数结果是这个:

    我是按照http://www.deyisupport.com/question_answer/dsp_arm/davinci_digital_media_processors/f/39/t/58216.aspx里面
    如何使用CCS v5调试DM81XX的M3代码.pdf做的,前面调VPSSm3是可以的。

  • hl chu 说:
    输入R0-R15没有到出错的地方,

    你是如何得出这个结论的?

    请问你的编码异常具体现象是什么?有报错么?根据你提供的信息,像是挂死在process call里面了?

    你使用的编码器的版本是多少?你具体的静态,动态参数是如何配置的?

  • Chris Hi,

    1)得出结论原因是,出入R0-R15后,结果就是:

    然后再rdk里查找结果就是上一条回复里的几个图。

    2)编码异常是刚开始编码就报错,错误是数据不够。

    我加了打印,2048*2048缩放这一路,dataFormat是YUV422I,inputChromaFormat是XDM_YUV_422IBE,

    但是图里最下面的判断要求格式不是IVIDEO_MJPEG时,inputChromaFormat是XDM_YUV_420SP。我的格式是IVIDEO_H264HP,应该是数据格式问题导致的吧,不支持422i的编码吗?

  • Chu Hi,

    填寄存器的方法适用月exception情况。

    是的,h264enc只支持YUV420sp的输入格式,请参考编码的datasheet和user guide。

  • Chris Hi,

    解码后是YUV420SP,MpSclr里面写的默认输出YUV422I,不应该被改变。

    这个格式不能改成YUV420SP吗?

  • Chu Hl,

    Mpsclar使用SC5,只能输出YUV422I。如果你要输出YUV420SP,要使用其他的SC。

  • Chris Hi,

    怎么换其他的SC呢

  • Chris Hi,

    我改一下看看

  • Chris Hi,

    创建link链路的时候有设置,以前用的是SC4:

    #if defined(TI_814X_BUILD) || defined(TI_8107_BUILD)
    mpSclrPrm.pathId = MP_SCLR_LINK_SEC0_SC3_VIP0;
    #else
    mpSclrPrm.pathId = MP_SCLR_LINK_SEC1_SC4_VIP1;
    #endif

    我把MP_SCLR_LINK_SEC1_SC4_VIP1改成MP_SCLR_LINK_SEC0_SC3_VIP0或者MP_SCLR_LINK_SC5,

    把MP_SCLR_LINK_OUT_DATATYPE改成SYSTEM_DF_YUV420SP_UV,编译通过,运行时下图492行有警告:

  • 程序运行到警告就卡了,MpSclr都创建不成功

  • Chu HL,

    请参考下面的帖子:

    https://www.deyisupport.com/question_answer/dsp_arm/davinci_digital_media_processors/f/39/p/104897/315186.aspx

  • Chris Hi,

    MpSclr和swMs等里面,pObj->fvidHandle = FVID2_create(FVID2_VPS_M2M_SC_DRV,
                                        drvInstId,
                                        &pObj->scCreateParams,
                                        &pObj->scCreateStatus, &cbParams);

    这个函数执行的时候会使用VPSS M3里面哪段空间?

  • Chu Hl,

    建议你看一下相关的map文件,例如:dvr_rdk\build\dvr_rdk\bin\ti816x-evm\dvr_rdk_m3vpss_release_1024M_256M.xem3.map

  • Chris Hi,

    我看nsflink输入是yuv422i,输出是yuv420sp,所以dec-mpsclr-dup之后,我把要编码这一分支dup后加了nsf,然后去videoM3编码:

    1)初始化的时候把长宽设置为2048*2048,编译通过。

    摄像头分辨率是2048*2048,本地显示和网页点播都正常;

    摄像头分辨率是1920*1080,本地显示正常,网页点播是左右两个重复的画面,颜色也不对;

    2)初始化的时候把长宽设置为1920*1080,编译失败,NsfLink_drvCreate里报错:

  • 第二个是运行的时候报错

  • hl chu 说:
    摄像头分辨率是1920*1080,本地显示正常,网页点播是左右两个重复的画面,颜色也不对;

    h264编码后的数据在电脑上回放也是类似现象么?如果是,请问你送给编码的buffer pitch是多少?请确保正确。

  • Chris Hi,

    1)初始化的时候把长宽设置为2048*2048,摄像头分辨率是2048*2048,进入nsf的时候,pitch是3840。

    初始化的时候把长宽设置为1920*1080,摄像头分辨率是1920*1080,进入nsf的时候,pitch是2048。

    2)前面说的pObj->fvidHandleNsf = FVID2_create执行不成功,是因为要求输入dataformat是1,也就是422i,我在FVID2_create前面根据pitch是2048把dataformat设置为1,后面NsfLink_drvDoNsfFilter中根据pitch不对数据做处理,把传进来的数据给输出队列,这样200万的也可以网页点播。

    3)200万,400万的单独都可以了。所以我又试了2路都是400万是可以的,2路200万的话第二路刚开始有画面。

    我在nsf里加了打印,NsfLink_drvProcessData里面2个通道一直有接收到数据,但是第二通道接收6次数据后申请不到空间了,就把frame释放了。后面NsfLink_drvDoNsfFilter中第二通道只接受到6次数据,numBufsPerCh是6。我的做法会导致bufffer没释放?