【问题描述】
UART Log是Targe端Linux kernel透过UART硬件以固定的波特率传输到PC端的一种log方式,这种方式由于在操作过程中的一些lock机制以及硬件传输的限制会在较大程度上影响系统的Performance,严重的时候可能达到20%的程度,甚至可能卡住系统导致重启。
UART Log在USER版本上是默认关闭的,ENG版本则默认打开。由于UART Log对Performance有影响,所以对于一些Performance的测试我们都会要求关闭UART log进行测试对比。在某一些问题上面,UART log对系统的影响也可能导致user版本和eng版本有不同的行为。
【解决方法】
有两种种方法可以在eng版本上临时打开UART log(重启之后失效):
在超级终端窗口按下键盘的任何一个按键就可以让UART log继续吐。此种方式需要UART的TX和RX都要连接好。
通过修改proc参数的方式: adb shell echo 1 > /proc/mtprintk
还有一种方法可以在eng版本上面永久性打开UART Log (重启之后继续有效):
通过修改Property的方式:adb shell setprop persist.uartconsole.enable 1
【问题描述】
UART Log是Targe端Linux kernel透过UART硬件以固定的波特率传输到PC端的一种log方式,这种方式由于在操作过程中的一些lock机制以及硬件传输的限制会在较大程度上影响系统的Performance,严重的时候可能达到20%的程度,甚至可能卡住系统导致重启。
UART Log在USER版本上是默认关闭的,ENG版本则默认打开。由于UART Log对Performance有影响,所以对于一些Performance的测试我们都会要求关闭UART log进行测试对比。在某一些问题上面,UART log对系统的影响也可能导致user版本和eng版本有不同的行为。
【解决方法】
有两种种方法可以在eng版本上临时打开UART log(重启之后失效):
在超级终端窗口按下键盘的任何一个按键就可以让UART log继续吐。此种方式需要UART的TX和RX都要连接好。
通过修改proc参数的方式: adb shell echo 1 > /proc/mtprintk
还有一种方法可以在eng版本上面永久性打开UART Log (重启之后继续有效):
通过修改Property的方式:adb shell setprop persist.uartconsole.enable 1
【终极办法】
文件路径:kernel-4.9/kernel/printk.c
void mt_disable_uart()
{
if(mt_need_uart_console != 1)&&(printk_disable_uart != 2))
printk_disable_uart = 0;//1 modified for uart enable
}
文件路径:kernel-4.9/kernel/printk.c
void mt_disable_uart()
{
if(mt_need_uart_console != 1)&&(printk_disable_uart != 2))
printk_disable_uart = 0;//1 modified for uart enable
}