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.

Full speed execution in CCS?

I'm using CCS 5.2.0.69 with a XDS100v2 JTAG interface to a custom board that has a DM8148.  I'm using CCS to test performance of various DDR3 DRAM parameters with the A8 core in the DM8148.  I use scripts in a GEL file to initialize the DRAM hardware. I then load a simple C program into memory that reads and writes a large chunk of memory; I time its execution to see the performance effects of the DRAM parameters.  However, the test program runs much more slowly (like 100 times slower) inside CCS than if I just run it on Linux on the same hardware without CCS.  Is CCS doing emulation or something else that causes a huge reduction in performance?  Can I get CSS to just let my program run freely at full speed to termination?  I've tried the "Free Run" button on the CCS's Run menu instead of the "Resume" button, but it doesn't seem to do anything useful.  Thanks!

- Dave Beal

 

  • If the realtime debugger options are set to not halt the target while the target is running (this is the default), I wouldn't have expected the debugger to have any impact on the measured performance. Could you check the "Realtime Options" under Tools -> Debugger Options -> Generic debugger options to make sure the "halt target before ..." and "perform preemptive accesses ..." options are turned off.

  • Hi AndyW -

    Thanks for your quick response.  Yes, both "Halt target before any debugger access" and "Perform pre-emptive accesses" are UNchecked.

    - Dave

     

  • Dave,

    The debugger should not be radically changing the execution performance of your program with those options off. While the target is running, the debugger would not be accessing the CPU's hardware.  I'm wondering if there is another difference between how the program is being run in the two cases. For example, when you run the program under Linux, I would assume the kernel has configured the caches to achieve maximum performance and you are running the program in a virtual memory space. When you run the program under CCS, are you running on "bare metal" with the caches turned on and without the MMU?

  • Hi Andy -

    Thanks again.  Sorry I haven't replied; I've been out of the office for a few days.  I have run my performance test program in CCS both with the caches enabled and disabled, but always with the MMU disabled (according to the checkboxes in CCS).  It does run faster with the caches enabled, but still much more slowly than in Linux.

    I don't understand the slowness in CCS, but I've think I've gone as far as I can there.  I will move the DDR parameter changes into U-Boot on the target board and see what happens.

    - Dave

  • Thanks for the update Dave. Let us know if you need anything else.