This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

Cortex-A9 MMU configuration - TEX [2] bit

We use a system based on OpenAmp with Linux running on CPU0 (L1+L2 cache) and FreeRTOS on CPU1 (only L1 cache).

I'm a bit in doubt regarding MMU table configuration on CPU1.

The shared bit enables cache coherency between L1 caches and L2 cache. We don't use this.

We see the DDR as single point of truth for shared data (small volume, preprocessed on CPU1 side or provided via IP cores / DMA) and notify the other system after flushing the cache.

Are these setting correct to have CPU1 isolated from all coherency mechanisms?

Tex 2:0    C   B

000           0   0   - Strongly ordered (peripherals)

001           0   0  - Non cached memory

100          c1 b1 -  Cached  memory (L1 cache only)

Parents
  • In this case, you might not set ACTLR.SMP bit.

    SMP

    Signals if the Cortex-A9 processor is taking part in coherency or not.

    In uniprocessor configurations, if this bit is set, then Inner Cacheable Shared is treated as Cacheable. The reset value is zero.

    If the SMP bit is not set for the CPU, then the CPU would not take part in coherency.

    and since linux kernel is running on one CPU only, you might set CONFIG_SMP =n

Reply
  • In this case, you might not set ACTLR.SMP bit.

    SMP

    Signals if the Cortex-A9 processor is taking part in coherency or not.

    In uniprocessor configurations, if this bit is set, then Inner Cacheable Shared is treated as Cacheable. The reset value is zero.

    If the SMP bit is not set for the CPU, then the CPU would not take part in coherency.

    and since linux kernel is running on one CPU only, you might set CONFIG_SMP =n

Children
No data