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.

AM335X Slow Executing measured by profile clock

Hi all,


I have the following setup:

- AM335X (BeagleBoneBlack)

- Attached JTAG Debugger
- CCS 6.1.1

- BareMetal Project based on StarterWare

- I did my best to enable MMU and caches (I took the functions that were provided by StarterWare) and CCS shows in the bottom right corner "MMU On"

- --float_support is VFPv3

- --neon (NEON enabled in compiler flags)

- Optimization level  is off

When I profile a code like the following with the "Profile Clock" inside CCS:

float a=0;

a+=3.1;


The code takes ~300 CPU cycles to execute, can this be correct / is this expected behaviour?

  • Moving this to the Starterware forum.
  • Are you sure all caches are really enabled? And what does you code look like really? Here optimisations (including optimisation of code-sequences for cache-usage) may be the difference - they can boost up an application really dramatically.
  • Hi,

    can you tell me where I can look-up reliably if the Caches are ideed enabled?
    I took a look inside the CP15 Register set, but I would appreciate a second opinion on this.

    The code I took the measurement above is really as I wrote, but my application code is different of course. I understand that it might be not optimized for cache usage. Can you give me a pointer where to find more information about this subject?

    Could it be that the measurement via the "Profile Clock" and during debugging is not "reliable" or right out wrong in this case?
  • A call to

    CacheEnable(CACHE_ALL);

    should enable the caches reliably. When you remove this line and don't see a difference in speed, it does not work for some reason. Influence of cache on the performance is really strong, so this is easy to recognise.