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.

FVID_dequeue and FVID_exchange failure

I've inherited a project that is (supposed to be) near completion and I'm finding the FVID_dequeue function returns -10 on every call.

The FVID_create and FVID_allocBuffer function as expected and the first frame is displayed when it is queued. No subsequent frames are displayed when queued and the dequeue fails.

I suspect there may be a problem / conflict with interrupt handler assignment or the interrupt enables preventing the frame buffer from being turned over at the end of the field.

Has anyone seen & solved a problem like this? Where might I find details on the driver interrupt configuration?

- Steve

  • Which device are you using? I assume this is DM6437 or DM648?

    Steve McDowell said:
    Has anyone seen & solved a problem like this?

    Not with the display drivers out of the box, I assume the drivers are modified and being run on custom hardware?

    Steve McDowell said:
    Where might I find details on the driver interrupt configuration?

    Depending on your device the driver documentation may be in a bit of a different place but for the DM6437 display driver as an example the driver documentation can be found within C:\dvsdk_1_11_00_00\pspdrivers_1_10_00\packages\ti\sdo\pspdrivers\drivers\vpbe\docs. However if your driver has been modified these may not be of as much help.

    This could certainly happen if interrupts were disabled or the frame completion interrupt did not happen for some reason, you may want to check your interrupt register settings or add some of the driver code to your project (you can just drag and drop in the C files into your project and than set breakpoints) to see where it is getting to, in particular you may want to see if it is getting into the ISR.

  • Good pointers.

    The call to FVID_create for the encoder was commented out. Apparently there is not encoder parameter setup for 640x480 progressive, so the original author left it out and directly set up the VENC registers. Without creating the VENC channel, apparently the interrupts are not enabled? The result is one frame buffer that can be used but updates have to be written directly to the active frame buffer.

    This is a 6437 btw. Recommendations / guidelines on the best way to set up an encoder configuration? The PSP_VPBE_DISPLAY_NTSC_PROGRESSIVE_COMPONENT doesn't match the LCD timing.

    I tried to build the driver but get "Cannot find file" notifications for ...dm6437\xdcconfig\cfg.c and ...dm6437\xdcconfig\linker.cmd. This is dvsdk_1_11_00_00_DM648 installation. I'm stuck.

    Steve

  • pealse do it like this:

       1\   use  HD525P  mode ,it can work well 640*480  60HZ,VGA mode

      2\   you must  manger   queue and  dequeue  in  BFISR  yourself;  mini driver   have not it deafult;

       3\ eaxmple code:

          case PSP_VPBE_DISPLAY_VGA:
                case PSP_VPBE_DISPLAY_NTSC_PROGRESSIVE_COMPONENT:
                case PSP_VPBE_DISPLAY_PAL_PROGRESSIVE_COMPONENT:
                case PSP_VPBE_DISPLAY_YCC16_DIGITAL_480P:
                {
                    DDC_VPBEUpdateFreeQueue(PSP_VPBE_VIDEO_0);
                    DDC_VPBEUpdateFreeQueue(PSP_VPBE_VIDEO_1);
                    DDC_VPBEUpdateFreeQueue(PSP_VPBE_OSD_0);
                    DDC_VPBEUpdateFreeQueue(PSP_VPBE_OSD_1);
                    DDC_VPBEUpdateFbAdress(PSP_VPBE_VIDEO_0);
                    DDC_VPBEUpdateFbAdress(PSP_VPBE_VIDEO_1);
                    DDC_VPBEUpdateFbAdress(PSP_VPBE_OSD_0);
                    DDC_VPBEUpdateFbAdress(PSP_VPBE_OSD_1);
                }
                break;
                default:
                {
                    /* Not Supported Currently */
                }
                break;
            }
            /*Call the Application callback function */
            DDC_VPBE_AppCallbackFunction(PSP_VPBE_VIDEO_0,currentFieldVBI);
            DDC_VPBE_AppCallbackFunction(PSP_VPBE_VIDEO_1,currentFieldVBI);
            DDC_VPBE_AppCallbackFunction(PSP_VPBE_OSD_0,currentFieldVBI);
            DDC_VPBE_AppCallbackFunction(PSP_VPBE_OSD_1,currentFieldVBI);