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.

TDA4VM: DSS writeback issues 2

Part Number: TDA4VM


Can https://e2e.ti.com/support/processors-group/processors/f/processors-forum/936461/tda4vm-dss-writeback-issues be reopened since it wasn't answered. I am still having the issue.

"Could you please make sure that when you restart, wait for the next vsync and then expect the frame to start capturing? "

I am doing it over jtag so I waited seconds and hours before trying again. 

Main issues are

1) After using single capture mode it won't capture another frame.

2) disabling while capture is still running causes random memory corruption. It is like the gobit doesn't actually do anything and there are no shadow registers.

  • Hi Ryan,

    Let me check on the first question.

    For the second question, since there is no change in the buffer address, why would it cause memory corruption? Even if WB is continue to write the data, it would write to the same buffer, so should not cause random memory corruption? Could you help me understand what is memory corruption here?

    Regards,

    Brijesh

  • I don't know why it writes to random memory addresses but it is completely random from what I can tell. The only register that I write to is enable/disable bit and then eventually random parts of my ddr memory get corrupted and the OSPI address was written which corrupted my boot image.

  • Hi Ryan,

    Any further update on this issue? Are you still seeing memory corruption? When this happens, can you please check the buffer configured in the DSS WB registers (DSS_WB_0(0x04AF0028) and DSS_WB_UV_0(0x04AF0030))?

    I am trying to recreate the first issue on EVM and will keep you updated.

    Regards,

    Brijesh

  • No updates. I am still seeing both problems. 

    The DSS_WB*_0* and _1* are all valid. The corruption only occurs if I disable it in the WB_ATTRIBUTES register. 

  • Any specific memory region where you see this corruption?

    Also what is the output format and resolution that you are using? Could you please some more information?

    Regards,

    Brijesh

  • I have only tried 32bit ddr addresses. Here is a register dump. Did you reproduce issue 1) with singlecapture.

    The output format is yuv420 dual plane. The output is then used for h264 encoding.

    Here is a register dump.

    // DSS_WB
    // DSS0_WB
    PER.Set.simple ANSD:0x4AF0000 %Long 0x20000
    PER.Set.simple ANSD:0x4AF0004 %Long 0x0
    PER.Set.simple ANSD:0x4AF0008 %Long 0x20000
    PER.Set.simple ANSD:0x4AF000C %Long 0x0
    PER.Set.simple ANSD:0x4AF0010 %Long 0x20000
    PER.Set.simple ANSD:0x4AF0014 %Long 0x0
    PER.Set.simple ANSD:0x4AF0018 %Long 0x20000
    PER.Set.simple ANSD:0x4AF001C %Long 0x0
    PER.Set.simple ANSD:0x4AF0020 %Long 0x32009FB
    PER.Set.simple ANSD:0x4AF0024 %Long 0x3C000000
    PER.Set.simple ANSD:0x4AF0028 %Long 0x93C45000
    PER.Set.simple ANSD:0x4AF002C %Long 0x93C45000
    PER.Set.simple ANSD:0x4AF0030 %Long 0x93E7F000
    PER.Set.simple ANSD:0x4AF0034 %Long 0x93E7F000
    // PER.Set.simple ANSD:0x4AF0038 %Long 0x1000
    PER.Set.simple ANSD:0x4AF003C %Long 0x80000
    PER.Set.simple ANSD:0x4AF0040 %Long 0x810042
    PER.Set.simple ANSD:0x4AF0044 %Long 0x700019
    PER.Set.simple ANSD:0x4AF0048 %Long 0x7EF07A3
    PER.Set.simple ANSD:0x4AF004C %Long 0x7B707DB
    PER.Set.simple ANSD:0x4AF0050 %Long 0x70
    PER.Set.simple ANSD:0x4AF0054 %Long 0x0
    PER.Set.simple ANSD:0x4AF0058 %Long 0x8000000
    PER.Set.simple ANSD:0x4AF005C %Long 0x200000
    PER.Set.simple ANSD:0x4AF0060 %Long 0x400000
    PER.Set.simple ANSD:0x4AF0064 %Long 0x200000
    PER.Set.simple ANSD:0x4AF0068 %Long 0x400000
    PER.Set.simple ANSD:0x4AF006C %Long 0x0
    PER.Set.simple ANSD:0x4AF0070 %Long 0x200
    PER.Set.simple ANSD:0x4AF0074 %Long 0x0
    PER.Set.simple ANSD:0x4AF0078 %Long 0x0
    PER.Set.simple ANSD:0x4AF007C %Long 0x0
    PER.Set.simple ANSD:0x4AF0080 %Long 0x0
    PER.Set.simple ANSD:0x4AF0084 %Long 0x0
    PER.Set.simple ANSD:0x4AF0088 %Long 0x0
    PER.Set.simple ANSD:0x4AF008C %Long 0x0
    PER.Set.simple ANSD:0x4AF0090 %Long 0x0
    PER.Set.simple ANSD:0x4AF0094 %Long 0x100
    PER.Set.simple ANSD:0x4AF0098 %Long 0x0
    PER.Set.simple ANSD:0x4AF009C %Long 0x0
    PER.Set.simple ANSD:0x4AF00A0 %Long 0x0
    PER.Set.simple ANSD:0x4AF00A4 %Long 0x0
    PER.Set.simple ANSD:0x4AF00A8 %Long 0x0
    PER.Set.simple ANSD:0x4AF00AC %Long 0x0
    PER.Set.simple ANSD:0x4AF00B0 %Long 0x0
    PER.Set.simple ANSD:0x4AF00B4 %Long 0x0
    PER.Set.simple ANSD:0x4AF00B8 %Long 0x0
    PER.Set.simple ANSD:0x4AF00BC %Long 0x0
    PER.Set.simple ANSD:0x4AF00C0 %Long 0x0
    PER.Set.simple ANSD:0x4AF00C4 %Long 0x0
    PER.Set.simple ANSD:0x4AF00C8 %Long 0x0
    PER.Set.simple ANSD:0x4AF00CC %Long 0x0
    PER.Set.simple ANSD:0x4AF00D0 %Long 0x0
    PER.Set.simple ANSD:0x4AF00D4 %Long 0x0
    PER.Set.simple ANSD:0x4AF00D8 %Long 0x0
    PER.Set.simple ANSD:0x4AF00DC %Long 0x0
    PER.Set.simple ANSD:0x4AF00E0 %Long 0x0
    PER.Set.simple ANSD:0x4AF00E4 %Long 0x0
    PER.Set.simple ANSD:0x4AF00E8 %Long 0x0
    PER.Set.simple ANSD:0x4AF00EC %Long 0x0
    PER.Set.simple ANSD:0x4AF00F0 %Long 0x0
    PER.Set.simple ANSD:0x4AF00F4 %Long 0x0
    PER.Set.simple ANSD:0x4AF00F8 %Long 0x40000
    PER.Set.simple ANSD:0x4AF00FC %Long 0x0
    PER.Set.simple ANSD:0x4AF0100 %Long 0x0
    PER.Set.simple ANSD:0x4AF0104 %Long 0x0
    PER.Set.simple ANSD:0x4AF0108 %Long 0x0
    PER.Set.simple ANSD:0x4AF010C %Long 0x0
    PER.Set.simple ANSD:0x4AF0110 %Long 0x0
    PER.Set.simple ANSD:0x4AF0114 %Long 0x0
    PER.Set.simple ANSD:0x4AF0118 %Long 0x0
    PER.Set.simple ANSD:0x4AF011C %Long 0x0
    PER.Set.simple ANSD:0x4AF0120 %Long 0x0
    PER.Set.simple ANSD:0x4AF0124 %Long 0x0
    PER.Set.simple ANSD:0x4AF0128 %Long 0x0
    PER.Set.simple ANSD:0x4AF012C %Long 0x0
    PER.Set.simple ANSD:0x4AF0130 %Long 0x0
    PER.Set.simple ANSD:0x4AF0134 %Long 0x0
    PER.Set.simple ANSD:0x4AF0138 %Long 0x200
    PER.Set.simple ANSD:0x4AF013C %Long 0x0
    PER.Set.simple ANSD:0x4AF0140 %Long 0x0
    PER.Set.simple ANSD:0x4AF0144 %Long 0x0
    PER.Set.simple ANSD:0x4AF0148 %Long 0x0
    PER.Set.simple ANSD:0x4AF014C %Long 0x0
    PER.Set.simple ANSD:0x4AF0150 %Long 0x0
    PER.Set.simple ANSD:0x4AF0154 %Long 0x0
    PER.Set.simple ANSD:0x4AF0158 %Long 0x0
    PER.Set.simple ANSD:0x4AF015C %Long 0x100
    PER.Set.simple ANSD:0x4AF0160 %Long 0x0
    PER.Set.simple ANSD:0x4AF0164 %Long 0x0
    PER.Set.simple ANSD:0x4AF0168 %Long 0x0
    PER.Set.simple ANSD:0x4AF016C %Long 0x0
    PER.Set.simple ANSD:0x4AF0170 %Long 0x0
    PER.Set.simple ANSD:0x4AF0174 %Long 0x0
    PER.Set.simple ANSD:0x4AF0178 %Long 0x0
    PER.Set.simple ANSD:0x4AF017C %Long 0x0
    PER.Set.simple ANSD:0x4AF0180 %Long 0x0
    PER.Set.simple ANSD:0x4AF0184 %Long 0x0
    PER.Set.simple ANSD:0x4AF0188 %Long 0x0
    PER.Set.simple ANSD:0x4AF018C %Long 0x0
    PER.Set.simple ANSD:0x4AF0190 %Long 0x0
    PER.Set.simple ANSD:0x4AF0194 %Long 0x0
    PER.Set.simple ANSD:0x4AF0198 %Long 0x0
    PER.Set.simple ANSD:0x4AF019C %Long 0x0
    PER.Set.simple ANSD:0x4AF01A0 %Long 0x0
    PER.Set.simple ANSD:0x4AF01A4 %Long 0x0
    PER.Set.simple ANSD:0x4AF01A8 %Long 0x0
    PER.Set.simple ANSD:0x4AF01AC %Long 0x0
    PER.Set.simple ANSD:0x4AF01B0 %Long 0x0
    PER.Set.simple ANSD:0x4AF01B4 %Long 0x0
    PER.Set.simple ANSD:0x4AF01B8 %Long 0x0
    PER.Set.simple ANSD:0x4AF01BC %Long 0x0
    PER.Set.simple ANSD:0x4AF01C0 %Long 0x40000
    PER.Set.simple ANSD:0x4AF01C4 %Long 0x0
    PER.Set.simple ANSD:0x4AF01C8 %Long 0x0
    PER.Set.simple ANSD:0x4AF01CC %Long 0x0
    PER.Set.simple ANSD:0x4AF01D0 %Long 0x0
    PER.Set.simple ANSD:0x4AF01D4 %Long 0x0
    PER.Set.simple ANSD:0x4AF01D8 %Long 0x0
    PER.Set.simple ANSD:0x4AF01DC %Long 0x0
    PER.Set.simple ANSD:0x4AF01E0 %Long 0x0
    PER.Set.simple ANSD:0x4AF01E4 %Long 0x0
    PER.Set.simple ANSD:0x4AF01E8 %Long 0x0
    PER.Set.simple ANSD:0x4AF01EC %Long 0x0
    PER.Set.simple ANSD:0x4AF01F0 %Long 0x0
    PER.Set.simple ANSD:0x4AF01F4 %Long 0x0
    PER.Set.simple ANSD:0x4AF01F8 %Long 0x0
    PER.Set.simple ANSD:0x4AF0204 %Long 0x0
    PER.Set.simple ANSD:0x4AF0208 %Long 0x4AF077F
    PER.Set.simple ANSD:0x4AF0210 %Long 0x4AF077F
    PER.Set.simple ANSD:0x4AF0214 %Long 0x0
    PER.Set.simple ANSD:0x4AF021C %Long 0x40004000
    PER.Set.simple ANSD:0x4AF0224 %Long 0x1
    PER.Set.simple ANSD:0x4AF0228 %Long 0x1
    PER.Set.simple ANSD:0x4AF022C %Long 0x0
    PER.Set.simple ANSD:0x4AF0230 %Long 0x0
    PER.Set.simple ANSD:0x4AF0234 %Long 0x0
    PER.Set.simple ANSD:0x4AF0238 %Long 0x0
    PER.Set.simple ANSD:0x4AF0248 %Long 0x0

  • Hi,

    Can you try small change? 

    Can you change

    from

    PER.Set.simple ANSD:0x4AF0020 %Long 0x32009FB

    to 

    PER.Set.simple ANSD:0x4AF0020 %Long 0x02009FB

    Regards,

    Brijesh

  • Setting capture mode to 0 also has the corruption issue. Its easier to reproduce in that mode since I believe the issue occurs when disabling while it is writing data. I haven't found a good way to figure out what random address it is writing to. Instead of looking for corruption you can watch the LCD. When togging the enable on and off with jtag the LCD will eventually flicker. In the past when it flickered was also when it did the corruption.

    Did you reproduce issue 1?

  • I did a simple test to capture the corruption. The wb should be writing to address 0x8000_0000.

    1) I set cptracer to  only record anything past that range. 

    2) in trace32 just double click the dss0_wb_attributes->enable bit

    3) after a few hundred clicks some random address will eventually get written and cptracer will record it. Address <0x8000_0000 also get written sometimes but I don't have a good way of recording it. For example I have seen my qspi nor get corrupted so 0x5800_0000was written.

    here are 3 examples of it writing to 0xda246000, 0xf8108700, and 0xed2e8f00.

  • Hi,

    As such we have enabled WB path, but in memory to memory. We have not seen this issue in memory to memory mode. 

    I will try capture mode and try to recreate this issue on EVM. 

    Regards,

    Brijesh

  • Hi Ryan,

    Not yet, i will update as soon as i get something. 

    Regards,

    Brijesh

  • Have you been able to reproduce the issue?