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.

Can't halt IPU1_C0 during debugging

Hello,

I'm running Vision SDK 2.10 and met IPU problem. Something went wrong in IPU1_C0 and I couldn't halt it in CCS. No problems in halting other cores.

And IPU's registers(IPU1_UNICACHE_CFG, IPU1_UNICACHE_SCTM, IPU1_UNICACHE_MMU, ..) were not visible in A15. ("Power down .." message appeared.)

Why this happens? And how can I debug IPU in this case?

Below is brief of my current configurations.

- Cores in USE : A15, IPU1_C0, EVE1, DSP1, DSP2

- links in IPU1_C0 : Decode, Dup, Merge, Sync, modified ObjectDrawLink in ObjectDetction 

Best regards,

Wilson. 

  • Hello Wilson,

    I have asked Vision SDK experts for help. They will comment here.

    thanks,
    Alex
  • Hello Wilson,

    What address you are using from A15 to access IPU MMU registers? MMU config register address from IPU(0x4000 0800) is different from A15(0x5888 0800)

    There can be multiple reasons for IPU crashing and not able to halt in CCS.

    If you running your application with SBL along with app file in SD card, i would suggest using CCS to load application files. This way u can step through the IPU code and find point where it crashes. VSDK has scripts to load/run application from CCS.

    If this is not possible then you can add some"while(flag==1);" at the beginning of IPU application and connect CCS to clear this flag and step through.

  • Hello Prasad,
    I loaded by CCS and accessed IPU register from A15's register windows after lock-up.
    Lock-up is very random. When I step each instruction or set break points, it doesn't happen. It only happens in free run(no break-point).
    And when lock-up happens, I can't halt M4 and M4's register access is no available via A15's register windows. ( I tried with memory view window with L3 address of M4 register. All values are zero. Looks like read fail).
    I want a way to connect M4(IPU1_0) and see registers value to get a clue.
    Best regards,
    WIlson.
  • Hi Wilson,
    May be worth to verify the IPU clock is running upon lock-up.

    Regards,
    Stan
  • Hello Wilson,

    Let us know if you were able to root cause this issue.

  • Hello Prasad,
    Root cause is not clear but looks like code making problem was identified.
    I replaced Cache_wb() for big memory bock by Cache_wbAll(). After that lock-up disappeared.
    I'm guessing Cache_wb() blocked interrupt for too long time and caused some problem.
    I referenced Cache_wb() code from ObjectDraw Alogrithm Link. It looks not good.
    Best regards,
    Wilson.
  • Hello Wilson,

    If issue is due to the interrupt blocking then changing Cache_wb with wbAll should not fix it as it would take more time for wbAll.
    I guess issue is gone because earlier Cache_wb might not be writing the block which IPU uses later.
    Ideally you should do cache_wbInv so the fresh data is read from memory.

    Are you using any VSDK application? Is cache used for data or code?
  • Prasad,

    Memory size of WB target is very big. It's HD image and at least 920KB. Much larger than M4's cache. In this case cache_WB_all() is faster than operating cache WB for each segment. And write back target is image data, so there will be no affect on execution.

    Below is chain of use case.

    // Capture
    AvbRx (A15) -> Decode -> Dup_capture -> Alg_SvObjectDraw
    
    // feature
    Dup_capture -> Alg_SvFeature(EVE1) -> Dup_feature
    
    // PD
    Dup_feature -> Alg_SvPd(DSP1) -> Alg_SvObjectDraw
    
    // VD
    Dup_feature -> Alg_SvVd(DSP2) -> Alg_SvObjectDraw
    
    // Drawing and Display
    Alg_SvObjectDraw -> Display_Video
    
    // Grpahics Display
    GrpxSrc -> Display_Grpx

    I made SvObjectDraw by customizing source code of objectDraw Alg link.

    Best regards,

    Wilson

  • Wilson,

    As your issue is resolved can you please mark this query as closed?