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.

使用videowindow1 会引起视频偏移

Other Parts Discussed in Thread: TVP5146, TVP5151, TVP5158

1、根据spraap3a.zip,在video_preview工程上叠加video widow1,会引起视频偏移。

2、叠加osdwin0时  FVID_create( )返回值一直是NULL

beinitParams.id = PSP_VPBE_OSD_0;
beinitParams.params = (PSP_VPBEOsdConfigParams*)&winParams;
osd0Handle = FVID_create( "/VPBE0", IOM_INOUT, NULL, &beinitParams,
&gioAttrs );
if ( NULL == osd0Handle ) {
return -1;
}

是psp驱动原因么?who can help me,thanks very much!

  • 你好,

    是DM6437的问题么?提问题的时候,最好能说明使用的硬件平台。

    问题1看起来像是DDR带宽的问题。请问是否运动时候才有偏移? 请问你使用的工程里面是否有大量数据copy?如果有,建议可以传递指针的,就传递指针。还有把DDR的PBBPR配置为0x50试试,看是否有改善?

  • 你好,

    是DM6437,硬件是公司的产品。偏移是一直都有的,源文件里没有数据的copy。我尝试配置Pbbpr,但是效果还是一样。是不是psp驱动没有用好。谢谢!

  • 你好 按照你说的,修改了pbbpr,效果没有改变,是哪里出了问题呢

  • 你好,

    我下载了spraap3a.zip,我只看到VPFE_tvp5146_example和VPBE_example两个demo,没有看到你说的video_preview工程。

    在VPBE_example的demo里面,2个OSD video window都是有使能的,你运行这个demo有问题么?

  • 你好,

    thanks for your help

    demo里的例程运行时没有问题的,但是当移植到video_preview例程里,就是只加入了vidwin1。

    配置videowindow1

    #include <std.h>
    #include <gio.h>
    #include <mem.h>
    #include <string.h>
    #include <log.h>
    #include <psp_vpbe.h>
    #include "FVID.h"
    //Global Variable Defined
    extern Int DDR2;
    //extern unsigned char BRIDGE30f[1382400];
    extern LOG_Obj trace;
    // valid data is in 146*3=438 bytes per row and 146 rows
    // make it 448 to per row so that 32 byte aligned
    extern unsigned char TIDSP146x146RGB888[65408]; // 448*146
    extern GIO_Handle vid1Handle;
    extern FVID_Frame *vid1AllocFB;
    extern PSP_VPBEOsdConfigParams winParams;
    //extern PSP_VPBEOsdConfigParams winParams;

    // make vid1 window display RGB888 data
    Int configVidWin1() {


    PSP_VPBEChannelParams beinitParams;
    GIO_Attrs gioAttrs = GIO_ATTRS;

    // configure parameters

    winParams.ffMode = FVID_FRAME_MODE; // ffmode is interlaced
    // PSP_VPSS_FIELD_MODE; // ffmode is progressive

    // RGB888 format, each pix is 24 bits;
    winParams.bitsPerPixel = FVID_BPP_BITS24; // bitsPerPixel
    winParams.colorFormat = FVID_RGB_888_INTERLEAVED;

    // valid input data is 146*3= 438 bytes per row
    // make it 448 to be 32 byte aligned
    winParams.pitch = 448;

    // set window position
    winParams.leftMargin = 100; // do not know why it has to be left adjusted
    winParams.topMargin = 20;

    // set window size
    // image size is 146x146
    winParams.width = 146;
    winParams.height = 146;
    winParams.hScaling = PSP_VPBE_ZOOM_IDENTITY;
    winParams.vScaling = PSP_VPBE_ZOOM_IDENTITY;

    // allocate frame buffer on DDR2
    winParams.segId = DDR2;

    // extend VGA (640x480) to NTSC D1 to display on TV
    // not applicable for this LCD display
    winParams.hExpansion = PSP_VPBE_EXP_IDENTITY;
    //= PSP_VPBE_EXP_NINE_BY_EIGHT;

    // extend 480 height to 576 height for displaying NTSC D1 or VGA on TV
    // not applicable for this LCD display
    winParams.vExpansion = PSP_VPBE_EXP_IDENTITY;
    // PSP_VPBE_EXP_SIX_BY_FIVE

    // do not register callback routine
    winParams.appCallback = NULL;

    // rest of the parameters are not applicable to vid0 window
    winParams.blending = PSP_VPBE_BLEND0;
    winParams.transparency = TRUE;
    winParams.transparencyColor = 0xFFFF;
    winParams.CLUTSource = PSP_VPBE_CLUTSOURCE_ROM;
    // create Vid1 window channel
    beinitParams.id = PSP_VPBE_VIDEO_1;
    beinitParams.params = (PSP_VPBEOsdConfigParams*)&winParams;
    vid1Handle = FVID_create( "/VPBE0", IOM_INOUT, NULL, &beinitParams,
    &gioAttrs );

    if ( NULL == vid1Handle ) {
    LOG_printf(&trace,"error -1");
    return -1;
    }

    // allocate frame buffer for vid1 window
    if ( IOM_COMPLETED != FVID_allocBuffer( vid1Handle, &vid1AllocFB ) ) {
    LOG_printf(&trace,"error -2");
    return -2;
    }

    vid1AllocFB->frame.frameBufferPtr = TIDSP146x146RGB888;

    return 0;
    }

    video_preview如下

    /* runtime include files */
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #include <stdarg.h>

    /* CSL include files */
    #include <soc.h>
    #include <cslr_sysctl.h>

    /* BIOS include files */
    #include <std.h>
    #include <log.h>
    #include <gio.h>
    #include <tsk.h>
    #include <trc.h>
    #include <clk.h>
    /* BSP include files */
    #include "fi1206.h"
    #include "fi1206_gpio.h"

    /* PSP include files */
    #include <psp_i2c.h>
    #include <psp_vpfe.h>
    #include <psp_vpbe.h>
    #include <fvid.h>
    #include <psp_tvp5151_extVidDecoder.h>
    //#include <cslr_osd.h>
    /* Video Params Defines */
    #include "vid_params_tvp5151.h"

    /* This example supports either PAL or NTSC depending on position of JP1 */
    #define STANDARD_PAL 0
    #define STANDARD_NTSC 1

    #define FRAME_BUFF_CNT 6
    extern Int DDR2;
    extern LOG_Obj trace;
    extern int configVidWin1 ( );
    extern int configOsdWin0 (int i);

    extern BCACHE_wbInv();
    static CSL_SysctlRegsOvly sysModuleRegs = (CSL_SysctlRegsOvly )CSL_SYS_0_REGS;
    GIO_Handle vid1Handle = NULL;
    FVID_Frame *vid1AllocFB = NULL;
    GIO_Handle osd0Handle = NULL;
    FVID_Frame *osd0AllocFB = NULL;
    PSP_VPBEOsdConfigParams winParams;
    /*
    * ======== main ========
    */
    void main() {

    printf("Video Preview Application\n");
    fflush(stdout);

    /* VPSS PinMuxing */
    /* CI10SEL - No CI[1:0] */
    /* CI32SEL - No CI[3:2] */
    /* CI54SEL - No CI[5:4] */
    /* CI76SEL - No CI[7:6] */
    /* CFLDSEL - No C_FIELD */
    /* CWENSEL - No C_WEN */
    /* HDVSEL - CCDC HD and VD enabled */
    /* CCDCSEL - CCDC PCLK, YI[7:0] enabled */
    /* AEAW - EMIFA full address mode */
    /* VPBECKEN - VPBECLK enabled */
    /* RGBSEL - No digital outputs */
    /* CS3SEL - LCD_OE/EM_CS3 disabled */
    /* CS4SEL - CS4/VSYNC enabled */
    /* CS5SEL - CS5/HSYNC enabled */
    /* VENCSEL - VCLK,YOUT[7:0],COUT[7:0] enabled */
    /* AEM - 8bEMIF + 8bCCDC + 8 to 16bVENC */
    sysModuleRegs -> PINMUX0 &= (0x005482A3u);
    sysModuleRegs -> PINMUX0 |= (0x005482A3u);

    /* PCIEN = 0: PINMUX1 - Bit 0 */
    sysModuleRegs -> PINMUX1 &= (0xFFFFFFFEu);
    sysModuleRegs -> VPSSCLKCTL = (0x18u);

    // Reset TVP5151
    FI1206_GPIO_init();
    FI1206_GPIO_setDir(GPIO03,0);
    FI1206_GPIO_setOutput(GPIO03,0);
    _waitusec( 800000 );
    FI1206_GPIO_setOutput(GPIO03,1);
    _waitusec( 800000 );

    return;
    }

    /*
    * ======== video_preview ========
    */
    void video_preview(void) {

    FVID_Frame *frameBuffTable[FRAME_BUFF_CNT];
    FVID_Frame *frameBuffPtr;

    GIO_Handle hGioVpfeCcdc;
    GIO_Handle hGioVpbeVid0;
    GIO_Handle hGioVpbeVenc;
    int status = 0;
    int result;
    int i;
    int standard;
    int width;
    int height;
    /* Set video display/capture driver params to defaults */
    PSP_VPFE_TVP5151_ConfigParams tvp5151Params = VID_PARAMS_TVP5151_DEFAULT;
    PSP_VPFECcdcConfigParams vpfeCcdcConfigParams= VID_PARAMS_CCDC_DEFAULT_D1;
    PSP_VPBEOsdConfigParams vpbeOsdConfigParams = VID_PARAMS_OSD_DEFAULT_D1;
    PSP_VPBEVencConfigParams vpbeVencConfigParams;

    standard = STANDARD_NTSC;

    /* Update display/capture params based on video standard (PAL/NTSC) */
    if (standard == STANDARD_PAL) {
    width = 720;
    height = 576;
    vpbeVencConfigParams.displayStandard = PSP_VPBE_DISPLAY_PAL_INTERLACED_COMPOSITE;
    }
    else {
    width = 720;
    height = 480;
    vpbeVencConfigParams.displayStandard = PSP_VPBE_DISPLAY_NTSC_INTERLACED_COMPOSITE;
    }
    vpfeCcdcConfigParams.height = vpbeOsdConfigParams.height = height;
    vpfeCcdcConfigParams.width = vpbeOsdConfigParams.width = width;
    vpfeCcdcConfigParams.pitch = vpbeOsdConfigParams.pitch = width * 2;

    /* init the frame buffer table */
    for (i=0; i<FRAME_BUFF_CNT; i++) {
    frameBuffTable[i] = NULL;
    }

    /* create video input channel */
    if (status == 0) {
    PSP_VPFEChannelParams vpfeChannelParams;
    vpfeChannelParams.id = PSP_VPFE_CCDC;
    vpfeChannelParams.params = (PSP_VPFECcdcConfigParams*)&vpfeCcdcConfigParams;
    hGioVpfeCcdc = FVID_create("/VPFE0",IOM_INOUT,NULL,&vpfeChannelParams,NULL);
    status = (hGioVpfeCcdc == NULL ? -1 : 0);
    }

    /* create video output channel, plane 0 */
    if (status == 0) {
    PSP_VPBEChannelParams vpbeChannelParams;
    vpbeChannelParams.id = PSP_VPBE_VIDEO_0;
    vpbeChannelParams.params = (PSP_VPBEOsdConfigParams*)&vpbeOsdConfigParams;
    hGioVpbeVid0 = FVID_create("/VPBE0",IOM_INOUT,NULL,&vpbeChannelParams,NULL);
    status = (hGioVpbeVid0 == NULL ? -1 : 0);
    }
    /* allocate some frame buffers */
    if (status == 0) {
    for (i=0; i<FRAME_BUFF_CNT && status == 0; i++) {
    result = FVID_allocBuffer(hGioVpfeCcdc, &frameBuffTable[i]);
    status = (result == IOM_COMPLETED && frameBuffTable[i] != NULL ? 0 : -1);
    }
    }

    /* prime up the video capture channel */
    if (status == 0) {
    FVID_queue(hGioVpfeCcdc, frameBuffTable[0]);
    FVID_queue(hGioVpfeCcdc, frameBuffTable[1]);
    FVID_queue(hGioVpfeCcdc, frameBuffTable[2]);
    }


    /* prime up the video display channel */
    if (status == 0) {
    FVID_queue(hGioVpbeVid0, frameBuffTable[3]);
    FVID_queue(hGioVpbeVid0, frameBuffTable[4]);
    FVID_queue(hGioVpbeVid0, frameBuffTable[5]);
    }


    // configure vid1 window
    if ( configVidWin1() ) {
    return;
    }

    if ( IOM_COMPLETED != FVID_queue( vid1Handle, vid1AllocFB ) ) {
    return ;
    }
    /*
    // configure osd0 window
    if ( configOsdWin0 ( 2 ) ) {
    return;
    }

    // enqueue osd0 frame buffer to driver
    if ( IOM_COMPLETED != FVID_queue( osd0Handle, osd0AllocFB ) ) {
    return;
    }
    */
    /* create video output channel, venc */
    if (status == 0) {
    PSP_VPBEChannelParams vpbeChannelParams;
    vpbeChannelParams.id = PSP_VPBE_VENC;
    vpbeChannelParams.params = (PSP_VPBEVencConfigParams *)&vpbeVencConfigParams;
    hGioVpbeVenc = FVID_create("/VPBE0",IOM_INOUT,NULL,&vpbeChannelParams,NULL);
    status = (hGioVpbeVenc == NULL ? -1 : 0);
    }

    /* configure the TVP5158 video decoder */
    if (status == 0) {
    result = FVID_control(hGioVpfeCcdc, VPFE_ExtVD_BASE+PSP_VPSS_EXT_VIDEO_DECODER_CONFIG, &tvp5151Params);
    status = (result == IOM_COMPLETED ? 0 : -1);
    }


    /* grab first buffer from input queue */
    if (status == 0) {
    FVID_dequeue(hGioVpfeCcdc, &frameBuffPtr);
    }

    /* loop forever performing video capture and display */
    while ( status == 0 ) {

    /* grab a fresh video input frame */

    FVID_exchange(hGioVpfeCcdc, &frameBuffPtr);
    BCACHE_wbInv(frameBuffPtr->frame.frameBufferPtr ,(720*480*2),1);
    BCACHE_wbInv(vid1AllocFB->frame.frameBufferPtr ,(720*480*2),1);

    FVID_exchange(hGioVpbeVid0, &frameBuffPtr);

    }

    }

  • 你好,video_preview工程是基于dm6437evm带的工程修改的。附件是video_preview工程。

  • 你好,

    能否先只显示固定图像不采集?

    “FVID_exchange(hGioVpbeVid0, &frameBuffPtr);”就可以显示video window0和video window1了么?

    DM6437的驱动和DM36x的差别还是满大的,你还是把OSD相关的寄存器打印一下,我看看。请把video win0/1的buffer地址也打印一下。

  • 你好,固定图像可以显示。上个回复有个附件,是我正在调试的工程,能否运行一下?

    #define VPBE_OSD_BASE 0x01C72600
    #define VPBE_OSD_MODE *( volatile Uint32* )( VPBE_OSD_BASE + 0x00 )
    #define VPBE_OSD_VIDWINMD *( volatile Uint32* )( VPBE_OSD_BASE + 0x04 )
    #define VPBE_OSD_OSDWIN0MD *( volatile Uint32* )( VPBE_OSD_BASE + 0x08 )
    #define VPBE_OSD_OSDWIN1MD *( volatile Uint32* )( VPBE_OSD_BASE + 0x0C )
    #define VPBE_OSD_RECTCUR *( volatile Uint32* )( VPBE_OSD_BASE + 0x10 )
    #define VPBE_OSD_VIDWIN0OFST *( volatile Uint32* )( VPBE_OSD_BASE + 0x18 )
    #define VPBE_OSD_VIDWIN1OFST *( volatile Uint32* )( VPBE_OSD_BASE + 0x1C )
    #define VPBE_OSD_OSDWIN0OFST *( volatile Uint32* )( VPBE_OSD_BASE + 0x20 )
    #define VPBE_OSD_OSDWIN1OFST *( volatile Uint32* )( VPBE_OSD_BASE + 0x24 )
    #define VPBE_OSD_VIDWIN0ADR *( volatile Uint32* )( VPBE_OSD_BASE + 0x2C )
    #define VPBE_OSD_VIDWIN1ADR *( volatile Uint32* )( VPBE_OSD_BASE + 0x30 )
    #define VPBE_OSD_OSDWIN0ADR *( volatile Uint32* )( VPBE_OSD_BASE + 0x38 )
    #define VPBE_OSD_OSDWIN1ADR *( volatile Uint32* )( VPBE_OSD_BASE + 0x3C )
    #define VPBE_OSD_BASEPX *( volatile Uint32* )( VPBE_OSD_BASE + 0x40 )
    #define VPBE_OSD_BASEPY *( volatile Uint32* )( VPBE_OSD_BASE + 0x44 )
    #define VPBE_OSD_VIDWIN0XP *( volatile Uint32* )( VPBE_OSD_BASE + 0x48 )
    #define VPBE_OSD_VIDWIN0YP *( volatile Uint32* )( VPBE_OSD_BASE + 0x4C )
    #define VPBE_OSD_VIDWIN0XL *( volatile Uint32* )( VPBE_OSD_BASE + 0x50 )
    #define VPBE_OSD_VIDWIN0YL *( volatile Uint32* )( VPBE_OSD_BASE + 0x54 )
    #define VPBE_OSD_VIDWIN1XP *( volatile Uint32* )( VPBE_OSD_BASE + 0x58 )
    #define VPBE_OSD_VIDWIN1YP *( volatile Uint32* )( VPBE_OSD_BASE + 0x5C )
    #define VPBE_OSD_VIDWIN1XL *( volatile Uint32* )( VPBE_OSD_BASE + 0x60 )
    #define VPBE_OSD_VIDWIN1YL *( volatile Uint32* )( VPBE_OSD_BASE + 0x64 )
    #define VPBE_OSD_OSDWIN0XP *( volatile Uint32* )( VPBE_OSD_BASE + 0x68 )
    #define VPBE_OSD_OSDWIN0YP *( volatile Uint32* )( VPBE_OSD_BASE + 0x6C )
    #define VPBE_OSD_OSDWIN0XL *( volatile Uint32* )( VPBE_OSD_BASE + 0x70 )
    #define VPBE_OSD_OSDWIN0YL *( volatile Uint32* )( VPBE_OSD_BASE + 0x74 )
    #define VPBE_OSD_OSDWIN1XP *( volatile Uint32* )( VPBE_OSD_BASE + 0x78 )
    #define VPBE_OSD_OSDWIN1YP *( volatile Uint32* )( VPBE_OSD_BASE + 0x7C )
    #define VPBE_OSD_OSDWIN1XL *( volatile Uint32* )( VPBE_OSD_BASE + 0x80 )
    #define VPBE_OSD_OSDWIN1YL *( volatile Uint32* )( VPBE_OSD_BASE + 0x84 )
    #define VPBE_OSD_CURXP *( volatile Uint32* )( VPBE_OSD_BASE + 0x88 )
    #define VPBE_OSD_CURYP *( volatile Uint32* )( VPBE_OSD_BASE + 0x8C )
    #define VPBE_OSD_CURXL *( volatile Uint32* )( VPBE_OSD_BASE + 0x90 )
    #define VPBE_OSD_CURYL *( volatile Uint32* )( VPBE_OSD_BASE + 0x94 )

    #define VPBE_OSD_W0BMP01 *( volatile Uint32* )( VPBE_OSD_BASE + 0xA0 )
    #define VPBE_OSD_W0BMP23 *( volatile Uint32* )( VPBE_OSD_BASE + 0xA4 )
    #define VPBE_OSD_W0BMP45 *( volatile Uint32* )( VPBE_OSD_BASE + 0xA8 )
    #define VPBE_OSD_W0BMP67 *( volatile Uint32* )( VPBE_OSD_BASE + 0xAC )
    #define VPBE_OSD_W0BMP89 *( volatile Uint32* )( VPBE_OSD_BASE + 0xB0 )
    #define VPBE_OSD_W0BMPAB *( volatile Uint32* )( VPBE_OSD_BASE + 0xB4 )
    #define VPBE_OSD_W0BMPCD *( volatile Uint32* )( VPBE_OSD_BASE + 0xB8 )
    #define VPBE_OSD_W0BMPEF *( volatile Uint32* )( VPBE_OSD_BASE + 0xBC )
    #define VPBE_OSD_W1BMP01 *( volatile Uint32* )( VPBE_OSD_BASE + 0xC0 )
    #define VPBE_OSD_W1BMP23 *( volatile Uint32* )( VPBE_OSD_BASE + 0xC4 )
    #define VPBE_OSD_W1BMP45 *( volatile Uint32* )( VPBE_OSD_BASE + 0xC8 )
    #define VPBE_OSD_W1BMP67 *( volatile Uint32* )( VPBE_OSD_BASE + 0xCC )
    #define VPBE_OSD_W1BMP89 *( volatile Uint32* )( VPBE_OSD_BASE + 0xD0 )
    #define VPBE_OSD_W1BMPAB *( volatile Uint32* )( VPBE_OSD_BASE + 0xD4 )
    #define VPBE_OSD_W1BMPCD *( volatile Uint32* )( VPBE_OSD_BASE + 0xD8 )
    #define VPBE_OSD_W1BMPEF *( volatile Uint32* )( VPBE_OSD_BASE + 0xDC )
    #define VPBE_OSD_TI_TEST *( volatile Uint32* )( VPBE_OSD_BASE + 0xE0 )
    #define VPBE_OSD_MISCCTL *( volatile Uint32* )( VPBE_OSD_BASE + 0xE8 )
    #define VPBE_OSD_CLUTRAMYCB *( volatile Uint32* )( VPBE_OSD_BASE + 0xEC )
    #define VPBE_OSD_CLUTRAMCR *( volatile Uint32* )( VPBE_OSD_BASE + 0xF0 )
    #define VPBE_OSD_TRANSPVAL *( volatile Uint32* )( VPBE_OSD_BASE + 0xF0 )
    #define VPBE_OSD_PPVWIN0ADR *( volatile Uint32* )( VPBE_OSD_BASE + 0xFC )

     

    videoWIndow0的两个buffer地址为:0x801FA840;0x801FA800

    videoWIndow1的一个buffer地址是:0x803F4DA0

    谢谢

  • 你好,
    是exchange的问题么?FVID_exchange(hGioVpbeVid0, &frameBuffPtr);

    但exchange确实可以显示video window0/1。我调试的应该是视频叠加出现了问题。谢谢

  • 你好,

    抱歉,我手上没有DM6437的板子,我对DM6437的软件也不是很熟悉。你能否把OSD的寄存器的值,不是地址,打印出来,我可以看看是否能发现问题。

    对了,你使用的videoWIndow0的两个buffer地址为:0x801FA840;0x801FA800,为什么只有0x40这么点间隔?你的显示在video widow0上的图像有多大?

  • 你好,

    osd寄存器值如下图:希望可以看得清

    缓冲地址有 FVID_allocBuffer()分配,是循环缓冲区,不同时使用,应该不会有影响。

    显示在video window0的图像是160*160,yuv422.  谢谢!

  • 你好,

    从寄存器配置来看video win0应该是720x240, 你图像160x160是如何显示的,是win1的图是160x160的吧。我之前提到的,你使用的videoWIndow0的两个buffer地址为:0x801FA840;0x801FA800,为什么只有0x40这么点间隔?720x240 YUV422的图像不应该只有这么少。寄存器看到的地址不一样,你能否再打印看看?

    你贴子里的图是e2e上找的吧,你自己的显示输出到底是什么样子的? 请问你的显示输出是CVBS NTSC格式么?

    你测试例子里面只有采集和显示么?是否DSP有做其他的运算?

    下面是从寄存器上看到的配置:

      offset x position y position x-size Y-size address
    video win0 720 0 0 720 240 0x800A8F00
    video win1 160 100 50 160 80 0x8034C200
    base x, y (122, 18)

  • 你好,下图是video window0 和video window1的配置参数

    video window0是720*480 video window 1 是160*160的,视频制式是NTSC。

    osd寄存器值和video window 0 buffer地址如下:

    video window0 端的缓冲区是循环buffer,一个使用完了回收,另外一个才开始填充,这不影响吧,不过不知道是否是仿真器的问题。如果不叠加video window 1例程是没有问题的,所以缓冲区的地址应该不是个问题吧。

    图片是ti英文论坛上看到了,他做的和我是一样的,遇到的问题也是相同,所以自己没拍,就拿来用了。

    例程里只有采集和显示 没有其他算法了。谢谢

  • 你好,

    如果在CCS里面停下来,也就是buffer不切换显示就是ok么?

    如果手动在CCS里面修改寄存器切换OSD vid win0的buffer地址,会有问题么?

  • 你好,我也用的DM6437的板子,我的问题是直接看不到图像,光盘里其他的例程都可以,就是采集图像显示的不行,只显示图像的也是可以的,你的问题解决了吗?我们可以交流下QQ:993806033.