有项目要求手机接收到串口TX数据指令点亮或关闭屏幕.
接收串口指令关闭屏幕没有问题,而在黑屏休眠状态下接收TX指令有问题,屏幕无法点亮,有时需要循环发送多次TX指令才有响应。
连接USB调试的时候,手机黑屏状态下可以正常接收串口的TX端指令,屏幕可以正常亮。(USB调试时CPU不休眠)
接收TX指令后的亮屏和灭屏方法:
PowerManager pm = (PowerManager) sContext.getSystemService(Context.POWER_SERVICE);
pm.wakeUp(SystemClock.uptimeMillis());//亮屏
接收串口指令关闭屏幕没有问题,而在黑屏休眠状态下接收TX指令有问题,屏幕无法点亮,有时需要循环发送多次TX指令才有响应。
连接USB调试的时候,手机黑屏状态下可以正常接收串口的TX端指令,屏幕可以正常亮。(USB调试时CPU不休眠)
接收TX指令后的亮屏和灭屏方法:
PowerManager pm = (PowerManager) sContext.getSystemService(Context.POWER_SERVICE);
pm.wakeUp(SystemClock.uptimeMillis());//亮屏
pm.goToSleep(SystemClock.uptimeMillis());//灭屏
而后与MTK沟通之后得知Uart唤醒目前不支持,建议外部唤醒用EINT pin。
涉及电路修改,一筹莫展之际突然来了想法,实现黑屏不进休眠状态就可以了啊!
于是修改kernel/kernel/power/autosleep.c 在try_to_suspend 函数开始的时候直接return,测试后成功。
附:开机动画完之后UARTlog停止输出
UART LOG:
ADB Shell:adb shell setprop persist.uartconsole.enable 1
1. 在超级终端窗口按下键盘的任何一个按键就可以让UART log继续吐。此种方式需要UART的TX和RX都要连接好。
2. 通过修改proc参数的方式: adb shell echo 1 > /proc/mtprintk