MTK Nucleus平台软件log抓取方法
0赞MTK以Nucleus Plus OS为kernel的产品,包括featurephone(6260,6261),M2M(6261),Wearable(2501,2502),软件在开机过程经历了bootrom,bootloader,Nucleus kernel init,kernel schedule这些阶段,每个阶段抓取log的方式也不一样,如有需要某个阶段的log,请按以下说明抓取,如若在使用catcher进行抓取log时候也遇到死机,建议将dump一并抓取分析。
[SOLUTION]
1、brom log和bootloader log抓取方法一致:
只能使用uart连接PC,使用Putty或者超级终端等串口工具,设定好对应com口,波特率为115200.如若抓取的log里面有 bye bye bootloader,说明bootloader已经顺利走完。
2、Nucleus Kernel init log:
工程makefile中将 KAL_RECORD_BOOTUP_LOG 设为TRUE,make new只能使用uart连接PC,使用catcher连接抓取,波特率设置为921600.
3、Kernel scheduler后:
只能使用Catcher进行抓取log这个阶段的log可以自行设置为uart(包括波特率)或者usb,TST-PS config和TST-L1 config设定要一致,并与PS config不一致,如若设置为uart,建议波特率设置为921600,太慢会丢更多的
log,设置方法有3种如下:
1)拨号*#3646633#进入工模,Device->Set Uart->Uart Setting
2)连接meta设定NVRAM,Other LID->NVRAM_EF_PORT_SETTING_LID->1
可将tst_port_ps和tst_port_l1设置为0, 1, 4, 5,分别代表UART1,UART2,USB1,USB2 tst_baudrate_ps和tst_baudrate_l1设定为921600。此时port_ps就不能设置与上述设定一致,如若关闭可设为99
3)以上两种设定都是将修改值保存在nvram中,如若有格式化fs区域,设定就会失效,可以修改代码,使用默认配置,这一般使用在遇到开机死机无法进行上述的操作时候采用,并且格式化后依然有效。
在custom\common\hal\nvram\nvram_data_items.c定位到NVRAM_EF_PORT_SETTING_DEFAULT结构,修
改成员tst_port_ps、tst_baudrate_ps、tst_port_l1、tst_baudrate_l1,如若ps_port设定有一致,也请修改这个结构的原形定义在:interface\hal\peripheral\dcl_uart.h
typedef struct
{
kal_uint16 tst_port_ps;
kal_uint16 ps_port;
UART_baudrate tst_baudrate_ps;
UART_baudrate ps_baudrate;
kal_bool High_Speed_SIM_Enabled;
kal_uint8 swdbg;
kal_uint8 uart_power_setting; /* For DCM, Start [Set UART POWER], CTI */
kal_uint8 cti_uart_port;
UART_baudrate cti_baudrate;
kal_uint8 tst_port_l1;
UART_baudrate tst_baudrate_l1;
kal_uint8 tst_output_mode;
kal_uint8 usb_logging_mode;
kal_uint16 tst_port_dsp;
UART_baudrate tst_baud_rate_dsp;
kal_uint8 usb_cdrom_config;
} port_setting_struct;
这里面好多宏控制着好几个分支,不清楚自己的工程是在哪个分支,可以对文件做一个备份,然后把每一个分支都改成一样,修改后执行编译命令,make remake_dep custom\common\hal\nvram\nvram_data_items.c
format&download
文章转自一牛网论坛
一牛网旗下拥有一牛网论坛、一牛网元器件商城、一牛网技术众包平台等一系列服务于广大工程师的平台,让研发更快、更便捷!