公司要用Android做个项目,送出打的板已经回来,可板子上除了arm,电源管理, nand,uart外就没有什么其它东西管用,现在让我先想办法将系统启动起来,调其它模块,看是什么地方出了错。经过努力系统已经能跑,但现有个问题,就是Android启动以后为了节省电力,总是运行几十秒就会suspend,现在我想将Android的suspend功能关掉应该怎么办,是从Android着手,还是从Linux上着手。
以下是抓的信息
request_suspend_state: mem (0->3) at 76849934440 (1970-01-01 00:01:21.803858688 UTC)PM: Syncing filesystems ... done.Freezing user space processes ... (elapsed 0.01 seconds) done.Freezing remaining freezable tasks ... (elapsed 0.01 seconds) done.Suspending console(s) (use no_console_suspend to debug)(suspend console的问题已经解决,但系统还是会进入suspend状态)
我尝试了配Linux内核电源管理模块,但配过以后,就编译不过了。
以下是我的Linux中跟suspend相关的配置
CONFIG_SUSPEND_NVS=y
CONFIG_SUSPEND=y
CONFIG_SUSPEND_FREEZER=y
CONFIG_HAS_EARLYSUSPEND=y
CONFIG_EARLYSUSPEND=y
# CONFIG_CONSOLE_EARLYSUSPEND is not set
CONFIG_FB_EARLYSUSPEND=y
CONFIG_ARCH_SUSPEND_POSSIBLE=y
CONFIG_USB_SUSPEND=y通过配置信息,我感觉CONFIG_ARCH_SUSPEND_POSSIBLE=y这个可能会有用,但在Linux内核配置中怎么也找不到关这一项的选项。
以下是抓的信息
request_suspend_state: mem (0->3) at 76849934440 (1970-01-01 00:01:21.803858688 UTC)PM: Syncing filesystems ... done.Freezing user space processes ... (elapsed 0.01 seconds) done.Freezing remaining freezable tasks ... (elapsed 0.01 seconds) done.Suspending console(s) (use no_console_suspend to debug)(suspend console的问题已经解决,但系统还是会进入suspend状态)
我尝试了配Linux内核电源管理模块,但配过以后,就编译不过了。
以下是我的Linux中跟suspend相关的配置
CONFIG_SUSPEND_NVS=y
CONFIG_SUSPEND=y
CONFIG_SUSPEND_FREEZER=y
CONFIG_HAS_EARLYSUSPEND=y
CONFIG_EARLYSUSPEND=y
# CONFIG_CONSOLE_EARLYSUSPEND is not set
CONFIG_FB_EARLYSUSPEND=y
CONFIG_ARCH_SUSPEND_POSSIBLE=y
CONFIG_USB_SUSPEND=y通过配置信息,我感觉CONFIG_ARCH_SUSPEND_POSSIBLE=y这个可能会有用,但在Linux内核配置中怎么也找不到关这一项的选项。
可以设不自动刮起的 ,不用编内核
你的意思是,你确定你种情况的suspend的命令发起人是Android 系统框架层么
我刚才想了一下,应该是Android框架发起,Linux中一般只管操作,不管策略。我刚才又找了一下,总算找到了。
kernel_imx\arch\arm\Kconfig...........
config ARCH_SUSPEND_POSSIBLE
def_bool y
............因为这里默认设成了y,所以在make menuconfig一直没找到。
如果你关掉CONFIG_ARCH_SUSPEND_POSSIBLE,还能编译过去么?
我觉得应该关掉的是ARCH对Android SYSPEND信号的响应,直接修改pm_suspend
这样内核能编过 Android可过?它从平台读不到suspend数据了
我也只是确定make kernel没问题 但是m后 板子跑起来 不确定是不是会 unexpected ...force shut down
把我解决suspend console的方法也发上来吧,注意这个不是错误,属于正常操作。在boot cmdline中增加no_console_suspend.就可以了。
有可能需要选上Always use the default kernel command string
我这是要选的。
可以考虑在/kernel/kernel/power/main.c中,将state_store改给为do{}while(0),这样内核就不会理会上层提出的睡眠要求了