This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

How to wake up the BeagleBone

Other Parts Discussed in Thread: AM3359, SYSCONFIG

Hello folks!

Three days ago I posted the following question because we are having a problem with a project and we need your help to solve it. Thanks a lot for your help. Javier

Hello all,

We are testing the AM335x in the BeagleBone for the first phase of a project. But we are having a problem which needs to be solved asap. We can sleep the board with a softare code but then we cannot wake it up. We have read that we should change the kernel of our OS (we are working with both Android and Linux) but I also suppose that just configuring the Inputs as interrupts, the microcontroller as any other microcontroller will wake up from Suspend mode. I also think that maybe touching something in the TPS65217B i would being able to wake the system up.

Can anybody help me with it? 

Thanks for your attention and kind regards,

Javier

  •  

     >>We can sleep the board with a softare code but then we cannot wake it up.

    What command are you using, which SW package, and how are you waking up?

    Docs here: http://processors.wiki.ti.com/index.php/AM335x_Power_Management_User_guide#Successful_suspend-resume_cycle

    >>We have read that we should change the kernel of our OS (we are working with both Android and Linux)

    At least with the TI EZSDK, Beaglebone has woken up from the console with the Prebuilt binaries. No kernel change needed

    Just checked on the latest PSP05.06.00.00: http://www.ti.com/tool/linuxezsdk-sitara

     Log below.

     root@am335x-evm:/# echo mem > /sys/power/state

    [   81.322540] PM: Syncing filesystems ... done.

    [   81.330322] Freezing user space processes ... (elapsed 0.01 seconds) done.

    [   81.354705] Freezing remaining freezable tasks ... (elapsed 0.01 seconds) done.

    [   81.374725] Suspending console(s) (use no_console_suspend to debug)

    [   81.502044] PM: suspend of devices complete after 119.964 msecs

    [   81.503601] PM: late suspend of devices complete after 1.495 msecs

    [   84.120788] GFX domain entered low power state

    [   84.120849] Successfully transitioned all domains to low power state

    [   84.329895] PM: early resume of devices complete after 208.587 msecs

    [   84.420227]  gadget: high-speed config #1: Linux File-Backed Storage

    [   84.457244] net eth0: CPSW phy found : id is : 0x7c0f1

    [   84.460296] PM: resume of devices complete after 129.978 msecs

    [   84.509948] Restarting tasks ... done.

    root@am335x-evm:/# [   86.451202] PHY: 0:00 - Link is Up - 100/Full

     

  • Hi!

    I'm working with Javier Herrero (HC Technologies) as software engineer.

    We are working with BeagleBone A6 revision, with Angstrom distribution and Android 4.1 Jelly Bean. We know to enable wake up through GPIO signal, we have to write "enable" on /sys/class/gpio/gpioX/power/wakeup file.

    Anyway, we can sleep the device with the command you told above: "echo mem > /sys/power/state", or even "pm-suspend" command works fine.

    The problem is about the file "wakeup", beacuse it doesn't exist in sysfs in order to activate our GPIO port for waking the device up for both operating systems. Should we configure anything?

    Thanks in advance.

  • Following next links, it is in order to get correct data, ( I am cross referencing with OMAP4 processors behavior or expected behavior to find the information)

    http://beagleboard.org/static/beaglebone/latest/Docs/Hardware/BONE_SRM.pdf

    Used processor is AM3359, and from

    http://www.ti.com/product/am3359

    from User's Guides the TRM

    http://www.ti.com/general/docs/lit/getliterature.tsp?literatureNumber=spruh73g&fileType=pdf

    Check section "25.2 Integration", in this part they explain that it is needed to use a GPIO0 in order to wakeup the device, other GPIOs are not waking up the device. You can check the subsequent sections like "25.3 Functional Description" and others, in these they describe the process and levels for sleep and wakeup.

  • I follow instructions from here: http://processors.wiki.ti.com/index.php/AM335x_Power_Management_User_guide#Successful_suspend-resume_cycle

    But "wakeup" file doesn't exist in "/sys/class/gpio/gpio7/power" nor "/sys/devices/platform/omap/omap_gpio.0/power/" paths.

    What am I doing wrong? Did I miss any step?

    Thanks

  • The other point I forgot in last post is that you need to check as well in pin-muxing that it is correctly marked for wake up, it is indicated in the document's sections.

    Just to mention it.

  • As I read from: http://elinux.org/BeagleBoardPinMux, pinmux configuration is intended to expose the expansion contector's pins. I can read GPIO0_7 from "/sys/class/gpio/gpio7/value" path already. So, if I understood, it is exposed correctly. But, unfortunately, there's no way to set this pin for waking the device up through sysfs.

    Regards

  • In OMAP4, we have some wakeup GPIOs that can be used specifically for the wakeup capability.  You could check your device TRM to see if it is the same.

    Regards,
    Gina 

  • The BeagleBone board has the TI Sitara AM335x ARM Cortex-A8  processor. It is suppoused the first bank, GPIO0, is enabled for that purpouse. But the software doesn't let this possibility.

  • From the elinux link that you shared it is explained how to configure pin muxing from kernel or from u-boot, check that correct configuration is set.

    There are next 2 links, one about pin muxing and other for sleep modes. Pin muxing tool should help to use correct values.

    http://www.ti.com/tool/pinmuxtool

    http://processors.wiki.ti.com/index.php/Optimizing_OMAP35x_and_AM/DM37x_OFF_mode_PAD_configuration

    in this third link it is mentioned that wakeup mode can be disabled too in RTC_Only mode.

    http://processors.wiki.ti.com/index.php/AM35x_To_AM335x_Hardware_Migration_Guide#Power.2C_Reset.2C_and_Clock_Management

  • I am not very knowledgable about power managment.  Check with Kozunobu Shin - Sitara ARM HW Apps power management expert.

    I will walk over and talk to him.  I developed the Sitara ARM Pin Mux Tool.  In OMAP3, style devices like AM35x and AM37x the pad onfig register had a bit to enable use as a wakeup pin.  This could be programmed for each pin - but AM335x does not have that.  In the TRM I see:

    9.3.4 control_sysconfig Register (offset = 10h) [reset = 0h]

    Which does some wakeup related configuration.

    Is the pin configured like this says for a wakeup pin?

    http://processors.wiki.ti.com/index.php/Optimizing_OMAP35x_and_AM/DM37x_OFF_mode_PAD_configuration

    If the signal is being driven low/high by an external component in OFF or standby mode (or needs to be used as a wakeup event or interrupt)

    Configure OFF mode pad configuration to :

    Disable OFF mode configuration

    OFFENABLE=0

    This will leave the active mode configuration intact during OFF mode

    Configure Active standby mode pad configuration to

    Input mode with no pull

    MUXMODE = various setting depending on application

    PULLUDENABLE = 0

    INPUTENABLE = 1

    MichaelT

     

  • As I read, the pin mux utility generates header file to compile the kernel. But, is there any other way to enable the pin for waking up without recompiling?

    I remark that I'm not Linux kernel expert, so I'm not sure if pin mux configuration is possible through config file, such init.rc or whatever.

    Thanks

  • Where or how can I configure the System Control Module? Because the information about this that I have found is an almost empty page: http://processors.wiki.ti.com/index.php/System_Control_Module_%28SYS%29

    Thanks

  • As I read in the TRM and other documentation, our problem seems we must change some registers in order to wake the device up by GPIO0's event. But my question is how can I access to these registers. I mean, wich are the steps to write them? I'm sure the question may sound too obvious for you all, but for a non-experienced in processor programming it isn't clear at all. So, I'm not sure if I have to write into an address, or an API's function would be great.

    Also, I know the pin-muxing tool sets kernel's headers up before kernel compiling, but is there a non-recompiling-kernel solution? As I read that we can write registers from priviliged level, such kernel space, this kind of solution is the most suitable for our purpouse.

    Thanks in advance

  • Did you have any success on enabling the wakeup through GPIO?