Hi,
I've been having problems with the cache coherency on the i.MX6 SABRE Lite.
As I understand it, providing that I set up the MMU/caches/SCU/SMP bit correctly, I should not have to perform any explicit cache operations in order for the cached memory to be kept coherent between multiple cores.
I writing a custom bootloader, and the issue that I'm having is that sometimes when I power the board (at least once in every 10 runs), the cache coherency seems to not be working properly, but other times it appears to be working fine. In the cases where it is not working, I can attach a debugger and see that the memory is not coherent between the cores.
My boot sequence is as follows (in pseudocode) -
boot_entry_point:
if (core 0) [invalidate whole SCU; Enable SCU]
disable dcache
disable icache
disable mmu
enable SMP (including setting ACTLR.FW bit)
invalidate TLB
invalidate dcache
invalidate icache
enable mmu
enable dcache
enable icache
if (core 0) [GOTO core0_specific]
else [GOTO coreN_specific]
core0_specific:
invalidate l2cache
enable l2cache
start cores 1..N at address boot_entry_point
branch to main
coreN_specific:
branch to main
For the coherent memory areas, I have the MMU Map setup as Shared, Inner and Outer Write Back Write Allocate.
I have also implemented any relevant Errata from the i.MX6 Dual/Quad Chip Errata (e.g. ERR004325), though I believe that the coherency doesn't work too often for it to be down to a chip Errata.
I have a Zynq 7000 board (ARM A9 Dual Core) running very similar code that does not show any problems. Is there any reason why the cache coherency would not work as I expect on the i.MX6 SABRE Lite?
Regards,
Jon
Hello,
Please check design, using the recent Design Checklist in Hardware Development Guide for i.MX 6.
http://cache.nxp.com/assets/documents/data/en/user-guides/IMX6DQ6SDLHDG.pdf
In particular:
- VDD_SOC_IN requires a 66 uF bulk capacitance.
- Minimum 85mohm external ESR is required for VDD_HIGH_CAP.
Refer to EB814 for details.
http://cache.nxp.com/files/32bit/doc/eng_bulletin/EB814.pdf
You may create request (ticket) about some non-published i.MX6 cache implementation details.
Have a great day,
Yuri
------------------------------------------------------------------------------
Note: If this post answers your question, please click the Correct Answer
button. Thank you!