Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • Home
  • SEARCH
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 7709621
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: June 1, 20262026-06-01T00:54:29+00:00 2026-06-01T00:54:29+00:00

The reference manual is inconsistent when talking about low power modes on the iMX27.

  • 0

The reference manual is inconsistent when talking about low power modes on the iMX27. I would like to have two functions: doze() and sleep() that configure the CPU and clocks to properly enter these low power modes but the examples in the manual don’t seem to work. I looked at the Linux kernel code and that was some help, but I thought I would ask here if anyone has any code (arm assembly is best) for these functions already.

DOZE:
Doze mode is defined as when the ARM9 executes a wait for an interrupt instruction, after which the buffered clock supply to the MCU is turned off.
The sequence of operation to set the system to Doze mode is as follows:

  1. Enable desired interrupts for wake-up from Doze mode.
  2. Disable watchdog timer interrupt.
  3. Execute wait-for-interrupt instruction.

SLEEP:

Sleep mode is defined as when all the DPLLs clock outputs are disabled. A sequence of operations and criteria must be satisfied before the system turns off the MPLL and SPLL. The Sleep mode sequence is initiated when the MPEN bit in the CSCR register is cleared disabling the MPLL. This action also automatically turns off the SPLL.
The sequence to put the system into Sleep mode is as follows:

  1. Disable AHB peripherals from bus accesses.
  2. Enable desired interrupts to be used for system wake-up.
  3. Disable watchdog timer interrupt.
  4. Set the required value to the SD_CNT (CSCR register) for shutdown countdown.
  5. Disable the MPLL by clearing the MPEN bit (CSCR register).
  6. Execute wait-for-interrupt instruction.

Thanks

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-06-01T00:54:30+00:00Added an answer on June 1, 2026 at 12:54 am

    There really isn’t much to going into Doze mode (in C surround this code with asm ( );):

          " MCR p15, 0, r1, c7, c0, 4 \n"
    

    will do the trick for you. You will need to setup all the required interrupts first.

    For sleep mode, here is some assembly

             " MOV R0,#+268435456 \n"
             " ORR R0,R0,#0x27000 \n"
             " LDR r1, [r0, #0x0] \n"
             " ORR r1, r1, #0x01000000 \n"
             " STR r1, [r0, #0x0] \n"
             " BIC r1, r1, #0x00000001 \n"
             " STR r1, [r0, #0x0] \n"
            " MCR p15, 0, r1, c7, c0, 4 \n"
    

    where #+268435456 is the address for CSCR register. This code will set SD_CNT to 1, disable the MPLL, and then go into a WFI. Again, you will need to configure the interrupts first, as well as disabling all the peripherals.

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

I would like to know if there is a Reference manual somewhere for Dashcode
I have set about learning the gtk. And when I was browsing the reference
The Quartz display services reference manual lists several functions as deprecated, (for example CGDisplayCurrentMode
I was looking in the javascript reference manual on the indexOf page at developer.mozilla.org
Trying the ggplot2 examples in the online reference manual, and particularly in this page
I read the section in the SQL*Loader reference manual and it's a bit over
I wasn't able to find out (googling, reading mysql reference manual) how to get
For reference, the code is for the motorola 68008. Say I have code such
The ARM reference manual doesn't go into too much detail into the individual instructions
what's the difference between the Consolidated Ada Reference Manual 2005 Edition (ISO/IEC 8652:2007(E), Ed.

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.