07-09-2015 01:44 PM
I'm trying to put Zynq in a sleep mode to conserve battery and it sort of works, but...
1. For a test I built a very basic hw design - Zynq(667MHz) with Ethernet, SDcard and couple UART and I2C enabled.
2. No PL clock enabled, no IP added.
2. Very basic Petalinux with 3.17 kernel.
3. I'm using Avnet Microzed board powered thru USB port.
4. I'm measuring current using USB current meter.
So, after boot I'm measuring current of ~320mA. If I go to sleep using "echo mem > /sys/power/state" command - current drops by 100mA to ~220mA and stay stable for hours.
After wakeup - current goes back to 320mA and in a log it saying that it only suspended "non-boot CPU's" - CPU1.
[ 432.037357] PM: Syncing filesystems ... done. [ 432.042375] Freezing user space processes ... (elapsed 0.003 seconds) done. [ 432.052439] Freezing remaining freezable tasks ... (elapsed 0.001 seconds) done. [ 432.060852] Suspending console(s) (use no_console_suspend to debug) [ 432.069380] PM: suspend of devices complete after 1.965 msecs [ 432.069748] PM: late suspend of devices complete after 0.359 msecs [ 432.070231] PM: noirq suspend of devices complete after 0.475 msecs [ 432.070284] PLL: shutdown [ 432.070319] Disabling non-boot CPUs ... [ 432.070970] CPU1: shutdown [ 432.071555] Enabling non-boot CPUs ... [ 432.072303] CPU1: Booted secondary processor [ 432.072518] CPU1 is up [ 432.072603] PLL: enable [ 432.072946] PM: noirq resume of devices complete after 0.242 msecs [ 432.073417] PM: early resume of devices complete after 0.268 msecs [ 432.136823] PM: resume of devices complete after 63.393 msecs [ 432.193257] Restarting tasks ... done.
So, my question is why? And how to go to full sleep? 220mA no really acceptable to me.
Any suggestions or ideas?
07-09-2015 02:04 PM
The problem is that all those transistors in Zynq are there, and none are disconnected. So the static value is what it is, regardless of the options.
By adding external control, you could turn off the programmable logic side, while operating the processor system in a sleep mode. Powering back on Vccint, VccBRAM, Vccaux, and Vcco for the PL section, then bringing the PS out of sleep, and reloading the configuration brings all back. The time to wake-up is longer as the configuration must be re-loaded, and all prior state information in the PL is lost.
07-09-2015 02:11 PM
Thank you for a reply!
So, 220mA (1W) is a typical value for a sleep? Sounds too much.
And again, I'm not sure I actually get deep sleep mode at the moment. Looks like Linux was able to put a sleep only 1 core. How to do it for both?
Hibernate or Suspend to disk function not available to me right now. I did try to enable it in kernel config, but it failed to compile. Everybody experience such problem or it just me?
07-09-2015 02:15 PM
I would not know how hard this is to do as most if not all thet I do requires 24x7 operation (nothing is allowed to sleep, or hibernate at all).
09-14-2016 12:27 PM
How you measured the current (220mA)? I came across the below blog/question...he tells typical power consumption is 100mW during sleep mode.