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.

Found jerky image issue on DM365

Hi All,

I have found the jerky image issue on DM365 with the OV9715 sensor when set to VGA mode, it worked well when we use 720P mode, any comments about this?

I guess something wrong with the VDINT0 value, it use 799 by default.

I have tried set VDINT0 to 479 under VGA mode, still have the same issue.

We have meet the similar issue when use OV7740 sensor, and we fixed this by update the VDINT0 value, copy the link as below:

http://e2e.ti.com/support/embedded/multimedia_software_codecs/f/356/p/62281/224693.aspx

Attached a picture for reference:

  • Can you tell if IPIPE is in DDR input mode or ISIF input mode ?

    If IPIPIE reads data from DDR, what is the size of data in DDR, is it 480 lines ?

    Can you check what happens if you redice the VDINT0 to say 440 lines.

    I want to make sure VDINT0 setting is taking some effect ?


    regards
    Kedar

  • Hi Kedar,

    Thanks for you update.

    1. We use ISIF mode, not DDR mode.

    2. I'm sure the VDINT0 can take some effect, we have tried 479/470/500, we can find we can got best result when use 470, but the jerky image issue still exist.

  • Can you capture a video or H264 stream of the same and share ?

    For this mode how many blanking lines are present in the sensor output after last active data line ?

    Can you share ISIF register dump ?

  • Hi Kedar,

    1. Here are the video stream for reference:

    0336.jerky_image.mp4

    2. Could you tell me how to dump the ISIF register out?

    Thanks in advance!

  • Hi Tracy,

    You can refer the AVServer_DesignGuide_IPNC_DM36x.pdf(page 34~35) to use the regrw.out command that locates under filesystem/opt/ipnc to dump the VPSS registers.

    Usage :

    # ./regrw.out
     VPSS Register read/write utility,
     WRITE REG, ./regrw.out: -w <regPhysAddrInHex> <regValueInHex>
     READ  REG, ./regrw.out: <regPhysAddrInHex> <numRegsInDec> -c <numCols>
     Example,
     WRITE REG, ./regrw.out -w 1c7001c 1234abcd
     READ  REG, ./regrw.out 1c70000 16
     READ  REG, ./regrw.out 1c70000 16 -c 1
     DM36X Register Base Addresses,
     ISP5    : 0x01c70000
     VPSS    : 0x01c70200
     RSZ     : 0x01c70400
     IPIPE   : 0x01c70800
     ISIF    : 0x01c71000
     IPIPEIF : 0x01c71200
     H3A     : 0x01c71400
     LDC     : 0x01c71600
     FACE.D  : 0x01c71800

    B.R.

    OC

  • Hi OC,

    Thanks for you update.

    Here are the register value for reference:

     /mnt/ramdisk/root # regrw.out 01c71000  129 -c 1

      0x01c71000: 00000001

      0x01c71004: 00000000

      0x01c71008: 00000000

      0x01c7100c: 00000000

      0x01c71010: 00000000

      0x01c71014: 00000001

      0x01c71018: 00000140

      0x01c7101c: 0000027f

      0x01c71020: 00000079

      0x01c71024: 00000079

      0x01c71028: 000001e1

      0x01c7102c: 0000ffff

      0x01c71030: 000000ff

      0x01c71034: 00000028

      0x01c71038: 00000000

      0x01c7103c: 00000428

      0x01c71040: 00009e00

      0x01c71044: 00000000

      0x01c71048: 00000000

      0x01c7104c: 0000b1b1

      0x01c71050: 00000180

      0x01c71054: 00000180

      0x01c71058: 00000180

      0x01c7105c: 00000180

      0x01c71060: 00000000

      0x01c71064: 00000000

      0x01c71068: 00000000  0x01c7106c: 00000000  0x01c71070: 000001e3  0x01c71074: 000001e3  0x01c71078: 000001e3  0x01c7107c: 00000000  0x01c71080: 0000770c  0x01c71084: 00000000  0x01c71088: 00000900  0x01c7108c: 00000000  0x01c71090: 00000000  0x01c71094: 00000000  0x01c71098: 00000000  0x01c7109c: 00000000  0x01c710a0: 00000000  0x01c710a4: 00000000  0x01c710a8: 00000000  0x01c710ac: 00000000  0x01c710b0: 00000000  0x01c710b4: 00000000  0x01c710b8: 0000001f  0x01c710bc: 00000000  0x01c710c0: 00000000  0x01c710c4: 00000000  0x01c710c8: 00000000  0x01c710cc: 00000000  0x01c710d0: 00000000  0x01c710d4: 00001fff  0x01c710d8: 00000140  0x01c710dc: 00000001  0x01c710e0: 00000000  0x01c710e4: 00000000  0x01c710e8: 00006600  0x01c710ec: 00000000  0x01c710f0: 00000000  0x01c710f4: 00008510  0x01c710f8: 0000c000  0x01c710fc: 00000000  0x01c71100: 00008512  0x01c71104: 00004000  0x01c71108: 00000000  0x01c7110c: 00000000  0x01c71110: 00000000  0x01c71114: 00000000  0x01c71118: 00000000  0x01c7111c: 00000000  0x01c71120: 00000000  0x01c71124: 00000000  0x01c71128: 00000000  0x01c7112c: 00000000  0x01c71130: 00000000  0x01c71134: 00000000  0x01c71138: 00000000  0x01c7113c: 00000000  0x01c71140: 00000000  0x01c71144: 00000000  0x01c71148: 00000000  0x01c7114c: 00000000  0x01c71150: 00000000  0x01c71154: 00000000  0x01c71158: 00000000  0x01c7115c: 00000000  0x01c71160: 00000000  0x01c71164: 00000000  0x01c71168: 00000000  0x01c7116c: 00000000  0x01c71170: 00000000  0x01c71174: 00000000  0x01c71178: 00000000  0x01c7117c: 00000000  0x01c71180: 00000000  0x01c71184: 00000000  0x01c71188: 00000000  0x01c7118c: 00000000  0x01c71190: 00000000  0x01c71194: 00000000  0x01c71198: 00000000  0x01c7119c: 00000000  0x01c711a0: 00000000  0x01c711a4: 00000000  0x01c711a8: 00000000  0x01c711ac: 00000000  0x01c711b0: 00000000  0x01c711b4: 00000000  0x01c711b8: 00000000  0x01c711bc: 00000000  0x01c711c0: 00000000  0x01c711c4: 00000000  0x01c711c8: 00000000  0x01c711cc: 00000000  0x01c711d0: 00000000  0x01c711d4: 00000000  0x01c711d8: 00000000  0x01c711dc: 00000000  0x01c711e0: 00000000  0x01c711e4: 00000000  0x01c711e8: 00000000  0x01c711ec: 00000000  0x01c711f0: 00000000  0x01c711f4: 00000000  0x01c711f8: 00000000  0x01c711fc: 00000000  0x01c71200: 00000000

     

  • hi Tracy,

    I reviewed the logs.

    Looks like for this sensor the active video start line at at line no 0x79 (line 121)

    0x01c71020: 00000079 

    Number of active video lines is0x1e1 or 481 lines

    0x01c71028: 000001e1 

    Now VDINT should be set as (active video start line + Number of active video lines) - few lines

    Current value of VDINT is 0x1e3 (483)

    0x01c71070: 000001e3

    You need to increase this to say 121+481-10 = 582

    This should solve your problem.

    In your earlier sensor most likely "active video start line" was a low value like 0 or 1 maybe, thats why earlier sensor was fine and this sensor gives this issue.

    Let me know if this helps.

    regards
    Kedar

  • Hi Kedar,

    Thanks for you update.

    We have tried use 582 and the jerky image issue still exist, please let me know if you need more information.

  • Can you send em the IPIPEIF, IPIPE, RSZ settings as well ?

    Please also send new ISIF settings.

    0x01C7:1200 IPIPEIF

    0x01C7:0800 IPIPE

    0x01C7:0400 RSZ

  • Hi Kedar,

    You can got the register value from the attached files:

    2727.IPIPE.txt

    1134.IPIPEIF.txt

    3806.ISIF.txt

    1781.RSZ.txt 

    Thanks for you help, please let me know if you need more information.

  • hi Tracy,

    Are these registers after apply the change of VDINT that I asked ?

    I still see the same value for VDINT as below

    0x01c71070: 000001e3
     0x01c71074: 000001e3
     0x01c71078: 000001e3

    1e3 = 483 lines, can you make the change I mentioned and dump the ISIF registers and make sure this value is set correctly.

    regards
    Kedar


     

  • hi Tracy,

    I reviewed the other register and they look fine.

    Once again I strongly think this issue is because VDINT register needs to be (0x79 + 0x1e1 - 20) = (602-20) = 582 (0x246)

    Please try again and make sure below register show this new value (0x246) after system is running.

    0x01c71070
     0x01c71074
     0x01c71078

    regards
    Kedar

  • Hi Kedar,

    Thanks for you update, sorry about late response.

    We have noticed that the register value have not been changed when we change the VDINT0, but we have tried use the tools to update the register value directly, is this way okay?

    We have tried 4 group value (572(0x23c) , 578(0x242) , 582(0x246) , 588(0x24c)) with the following step, but the issue still exist:

    /mnt/ramdisk/root # regrw.out -w 1c71070 24c  //write  vdint0 value to related registers    

    REG ORG 0x01c71070: 242  REG NEW 0x01c71070: 24c  

    /mnt/ramdisk/root # regrw.out -w 1c71074 24c  //write  vdint0 value to related registers    

    REG ORG 0x01c71074: 242  

    REG NEW 0x01c71074: 24c  

    /mnt/ramdisk/root # regrw.out -w 1c71078 24c  //write  vdint0 value to related registers    

    REG ORG 0x01c71078: 242  REG NEW 0x01c71078: 24c  

    /mnt/ramdisk/root # regrw.out  1c71070 16 -c 1  //check if set values working     

    0x01c71070: 0000024c  0x01c71074: 0000024c  0x01c71078: 0000024c  0x01c7107c: 00000000  0x01c71080: 0000770c  0x01c71084: 00000000  0x01c71088: 00000900  0x01c7108c: 00000000  0x01c71090: 00000000  0x01c71094: 00000000  0x01c71098: 00000000  0x01c7109c: 00000000  0x01c710a0: 00000000  0x01c710a4: 00000000  0x01c710a8: 00000000  0x01c710ac: 00000000

    We will try more case if you confirmed this way is okay.

    BTW, I'm pretty sure we have update the VDINIT0 to the right value in driver, but I don't know why it can't work, any suggestion about this?

  • hi Tracy,

    I am not sure what is going on, writing through regrw.out should be OK, my only worry is that hopefully the value writing does not get overwritten by SW.

    If this doesnt happen, then it should be fine.

    Do you see any effect of change in this register ?

    regards
    Kedar