Slow debugging with CCES 2.9.1, ICE-2000 and ADSP-21565


I'm trying to debug a custom board with an ADSP-21565 on it using CrossCore ICE-2000 and CCES 2.9.1.

I'm able to connect to the board, load a program, even debug it. Both stepping and breakpoint setting works. Thee problem is, everything is very slow. Stepping over a single assembly line takes around 20 seconds. Stepping over a C++ line takes upwards of 30 seconds. Loading the program also seems to be very slow.

What's interesting, a colleague was able to debug the same board using the same emulator without those problems.

I've tried changing hardware and the emulator. I've reinstalled CCES, deleted the workspace and created the debug configurations from scratch. I've even raised JTAG frequencies, but that didn't have a big effect.

I feel as if I'm overlooking something obvious, but we were unable to find a solution.

Debugging like this is absolutely soul-crushing. This is our most desperate hour. Help me, Analog Devices. You're my only hope.

  • 0
    •  Analog Employees 
    on Jan 8, 2020 9:23 AM
  • 0
    •  Analog Employees 
    on Jan 9, 2020 1:09 PM


    Please ensure whether your PC meets "Systems Requirements" for installing CCES 2.9.1.You can refer the below CrossCore Embedded Studio product page for Systems Requirements:

    The application loading speed may depend upon the application size. Typically we see slow load times due to large, statically defined arrays. When the DXE is being loaded the Emulator allocates an appropriately sized buffer and fills in with zeroes, which can take a very long time. . These large buffers/arrays probably account for the majority of the download time.If your application has any such large arrays Please change application to dynamically allocate and initialize these buffers you should see a significant download performance improvement.

    There are a few things that naturally affect the speed of debugging. First, the speed of debug actions such as stepping is affected by the amount of data that needs to be retrieved from the target at each 'refresh' of the IDDE (after each step).

    Firstly, what debug windows do you have open? E.g. Memory Browser, Disassembly Window, Expressions/Locals window, etc. The more memory you are 'watching' through these - such as watching a large number of variables in the Expressions Window, large Memory Browser windows - the more data needs to be read from the target at each 'step'. This can introduce a delay at each 'step', particularly on slower connections.

    Can you try closing all debug windows except the Disassembly Window and let us know how you gets on. Do you still observe slow stepping?

    Another cause of issue can be a large number of breakpoints, especially conditional ones, as checking conditions, or replacing breakpoints with their code again introduces an overhead. Can you try removing all breakpoints via 'Window: Show View: Breakpoints', and see if the behavior changes or remains the same.

    Typically when we see slowness it is caused by the antivirus, or USB contention, etc.

    To obtain faster load times, Please ensure whether "Verify all writes to target memory" option is disabled in target option.To access target setting, connect to the setup and load the code as usual. Change Target::Settings:Target Options by checking off Verify all writes to target memory.

    When Verify all writes to target memory is disabled, CCES does not perform the extra reads required to verify each write, which increases performance while loading.

    Enable the Verify all writes to target memory option during initial program development. This option provides a means to track down initial build problems, such as attempting to load data into non-existent memory.

    As you mentioned that your colleague was able to debug the same board using the same emulator without those problems, please confirm whether your colleague was debugging your specific project or any other.

    Santha kumari.K