MTK平台串口log抓取
作为一名驱动工程师,有时候必须要抓取uart log来分析故障,查找及验证后,发现一下方法确认能够稳定及正常抓取MTK平台uart log。
1.preloader 中配置串口号
bootable/bootloader/preloader/custom/aus6753_65u_l1/cust_bldr.mak
如:
CFG_UART_LOG :=UART1
CFG_UART_META :=UART1
改为:(修改成需要的串口号码,并在PCB上将对应串口Tx引出)
CFG_UART_LOG :=UART3
CFG_UART_META :=UART3
2.lk中设置cmdline里不去关串口
bootable/bootloader/lk/app/mt_boot/mt_boot.c
int boot_linux_fdt(void *kernel, unsigned *tags,
char *cmdline, unsigned machtype,
void *ramdisk, unsigned ramdisk_size)
{ ......
#ifdef USER_BUILD
//sprintf(cmdline,"%s%s",cmdline," printk.disable_uart=1"); //默认是这句配置,关闭uart
sprintf(cmdline,"%s%s",cmdline," printk.disable_uart=0"); //default open uart log by zhangliang
#else
sprintf(cmdline,"%s%s",cmdline," printk.disable_uart=0 ddebug_query=\"file *mediatek* +p ; file *gpu* =_\"");
#endif
......
}
3.让kernel中到console后不去关闭串口log
kernel-3.10/kernel/printk.c
inline void mt_disable_uart(void)
{
if (mt_need_uart_console == 0) {
printk("<< printk console disable >>\n");
printk_disable_uart = 1; //0: uart log always on,改为0 即串口log常开
} else {
printk("<< printk console can't be disabled >>\n");
}
}
MTK 平台添加开机震动功能
在bootable\bootloader\lk\platform\mt6735\platform.c中的 platform_init()函数里面添加下面代码。
vibr_Enable_HW();
mdelay(300);
vibr_Disable_HW();
开机能够振动。但关机后再开机不会振动,原因在于开启了快速开机(IPO)功能。
解决方案:上层修改,将快速开机功能默认关闭,底层在LK中添加开机震动代码。
MTK 平台添加 8 秒重启功能
在
main/kernel-3.10/drivers/misc/mediatek/mach/mt6735/len6753_66t_vo/keypad/mtk_kpd.h文件中,修成如下代码:
//#define ONEKEY_REBOOT_NORMAL_MODE
//#define TWOKEY_REBOOT_NORMAL_MODE
#define ONEKEY_REBOOT_OTHER_MODE
//#define TWOKEY_REBOOT_OTHER_MODE
/* KPD_PMIC_RSTKEY_MAP is defined in cust_kpd.h */
#define KPD_PMIC_LPRST_TD 1 /* timeout period. 0: 8sec; 1: 11sec; 2: 14sec; 3: 5sec */