none
Windows CE hibernation RRS feed

  • Question

  • Hi,

    I am trying to implement hibernation in WinCE.

    Below is the procedure followed,

    1. Save all ARM register contents(Also may need to save interrupt control register, which are saved during suspend operation).

    2. Save entire RAM area.

    3. Create snapshot.bin file (RAM contents + register contents)

    4. Flash snapshot image on to NAND falsh (flash size is 2GB)

    5. Modify diagnostics code to copy snapshot image on to RAM.

    6. Reload the ARM register (reload PC)

    May be minimal hardware initialization needed after step 4.

    Please give me your valuable inputs on this. Is it possible to achieve hibernation with this method.

    Thanks,

    JK

    Friday, February 11, 2011 5:42 AM

All replies

  • It seems problematic at best, without support from the OS.  You are saving the state of the system while the system is running, so your snapshot won't be consistent. When you reload and jump to it, you're likely to have problems.

    If this is not a general purpose device, maybe you can arrange to have your applications save their state, then reload that state at boot?


    Dean Ramsier eMVP BSQUARE Corporation
    • Proposed as answer by Michael Koster Friday, February 11, 2011 4:03 PM
    Friday, February 11, 2011 3:24 PM
  • Actually I am implementing hibernation to reduce the bootup time. So I am not worried about the state of application.

    I included one stream driver to capture and save the RAM snapshot on to SD Card.Captured snapshot is flashed to Nand flash.

    Diagnostics reads the snapshot from flash and dumps on to RAM physical address.Then registers(pc, sp, etc) reloaded.

     

    In Windows Auto seems to be having small bootup time. Since Windows Auto uses WINCE as backbone, whether is it possible to achieve similar functionality in WinCE.

    http://msdn.microsoft.com/en-us/library/ms858380.aspx

     

    Thanks,

    Saturday, February 12, 2011 9:17 AM
  • It is possible to reduce boot time.  I have seen CE boot in 5 seconds and that was without using the modified busenum that allows you to hold off starting some drivers until after the desktop shows up.

    Your idea to hibernate is interesting.  You will need to avoid the problems that Dean points out by making sure that the system is single threaded when you save the state.   I would use the power manager, and probably implement this in OEMPowerOff as if the system is suspending.   You will need to implement a method to resume the system in your bootloader (I think).


    Bruce Eitman (eMVP)
    Senior Engineer
    Bruce.Eitman AT Eurotech DOT com
    My BLOG http://geekswithblogs.net/bruceeitman

    Eurotech Inc.
    www.Eurotech.com
    Sunday, February 13, 2011 4:10 AM
    Moderator
  • Hi JK,


    Weather you implemented hibernation in WinCE?

    If yes please provide the details. how you have achieved it?

    I am trying to do the same.

    Your information will be very helpful for me.

    With Thanks

    nadini


    Monday, May 14, 2012 11:06 AM
  • Hi

    Hibernation should be possible, you need to suspend the system directly befor hibernation so you have a defined status.

    But mabye this is not required, Toradex did some optimizations so Windows Embedded Compact 7 can do a normal cold boot in less than 0.5 Seconds!

    Here a video running on Toradex Colibri T20 with the Nvidia Tegra 2 chip.

    http://www.youtube.com/watch?v=b3NbOK7yEIs

    See also:

    http://www.toradex.com/Products/Colibri_Modules

    Friday, May 25, 2012 11:53 PM