How to switch off 2nd core for Cortex-A9

I am using dual-core Cortex-A9 in a project where 1 core is enough.

How to switch off another unused core?

Parents
  • It depends on exactly what you mean by switching it off.

    The different cores are in different power domains.  So you could entirely remove power from the core(s), or never apply it in the first place.  This would be controlled by the SoC's power management controller (or whatever that silicon vendor calls it).  Meaning you'll have to refer to the SoC's documentations.

    If you just wanted to put the core(s) to sleep in software during development, you could use a simple software loop.  Something like:

      MRC   p15, 0, r0, c0, c0, 5  ; Read MPIDR
      ANDS  r0, r0, #3             ; Mask to leave CPU ID
    loop
      WFINE                        ; If not CPU 0, go into WFI in an endless loop
      BNE   loop
    
Reply
  • It depends on exactly what you mean by switching it off.

    The different cores are in different power domains.  So you could entirely remove power from the core(s), or never apply it in the first place.  This would be controlled by the SoC's power management controller (or whatever that silicon vendor calls it).  Meaning you'll have to refer to the SoC's documentations.

    If you just wanted to put the core(s) to sleep in software during development, you could use a simple software loop.  Something like:

      MRC   p15, 0, r0, c0, c0, 5  ; Read MPIDR
      ANDS  r0, r0, #3             ; Mask to leave CPU ID
    loop
      WFINE                        ; If not CPU 0, go into WFI in an endless loop
      BNE   loop
    
Children
No data
More questions in this forum