I have a baremetal os which I run on Raspberry Pi 2 and 3 in AARCH32. It has had daily and heavy use for years. Mostly it runs on core 0, but I have a small bit running on core 1. I am trying to add another routine to run on core 1 and I have found that core 1 runs too slow for the code to work. I wrote a little speed test (decrementing 0x500000 down to zero) and found that it takes about 0x1111 microseconds on core 0 and from 0x170000 to 0x1f0000 microseconds on the other three cores. I set the ARM clock to its maximum value (1.2 ghz) and assumed this applied to all 4 cores. I have failed to find anything else about the speed on the other 3 cores. When I query the the clock speeds through the mailbox, it tells me the ARM speed is 0x47868c00 and the core speed 0x0ee6b280. I tried sending the request from core 1 and got the same response. Why do cores 1, 2 and 3 run so much slower than core 0?
Asked
Active
Viewed 41 times
0
-
Enable the caches for the other cores. – joan Nov 01 '23 at 09:02
-
The solution to this is enabling the instruction cache and branch prediction for the other cores, which is done through a coprocessor register, which is usually done while enabling the MMU. – Kelvin Nov 01 '23 at 21:53
-
Welcome to the site Kelvin. Pleas take the [tour] and read the [help], especially [ask] and [answer]. This should be posted as an answer, not a comment. – wovano Nov 02 '23 at 07:10