We are running a survey to help us improve the experience for all of our members. If you see the survey appear, please take the time to tell us about your experience if you can.
Hello, I am using the STR912 for a small project. I noticed that the execution speed of my program is not as fast as expected. For testing purpose I execute a number of NOPs. When I put the code in internal RAM the code is executed with 0 WS at full speed (96MHz CPU-Clock). The same code executed from Flash show the same result.
My "real" code consist of 48 Opcodes and 3 Jumps to a nonlinear address. This code is executed from Flash at appr. 1/2 speed compared the execution from RAM.
Is there something that can cause this behaviour, or can this be a normal behavior?
Does your ARM have any flash memory accelerator feature that you need to turn on.
I don't know about the STR912, but flash memory is slower than RAM memory, and unless the chip has some form of cache logic or supports two-bank accesses your chip will normally retrieve a number of bytes (probably 8-16) at a time from the flash, and then process them before locking up while waiting for a new read of 8-16 bytes. Thumbs mode will in this case run faster (as long as the instructions are suitable) since they are half-the-size so each flash read will allow twice as many instructions before next flash read.
If you don't have any flash acceleration logic in your chip, I would recommend that you run the critical loops in RAM and the rest in flash.