mt2503 如何解决抓取memorydump时“Can't query memroy”问题
时间:10-02
整理:3721RD
点击:
[DESCRIPTION]
在使用catcher抓取memorydump的时候,有时候操作会失败,抓取不到memorydump。并且会弹出一个窗口,窗口上显示的信息为“Can't query memroy”,
[SOLUTION]
遇到这种异常情形,可以从以下几方面去确认:
1. 确认memory dump已经打开
提示:可以透过Catcher Sys trace来确认,如果在异常信息之后若有看到"Caution: To re-dump TST ring
buffer!",表示有成功打开,且系統已进入memory dump流程.
2. Download cable driver较旧,建议更新版本
a.Prolific cable latest driver download address: http://www.prolific.com.tw/eng/downloads.asp?ID=31
b.FTDI cable latest driver download address: http://www.ftdichip.com/Drivers/VCP.htm
3. 若更新驱动仍然不行,可以从PCB上飞线UART的TX,RX再来测试是否可以,这样可以排除UART接口不稳定的情况.
4. 检查LCD driver里面是否有用kal_sleep_task来做delay函数,一般的命名可能在LCD_Delay()里面用到,可靠的方
法是在lcd driver的文件里面搜索kal_sleep_task.如果有使用kal_sleep_task,请改用for循环来做delay.
[这一点可以参考DCC上的文档:MemoryDump_FAQ.pptx]
5. 有可能是异常处理的过程中watch dog timeout。可以disable watch dog再尝试。
[这一点可以参考FAQ04547----- how to disable watchdog]
6.查看连线是否有问题。尝试在cather上advance中选择assert target强制手动assert,看手动assert可以成功。
7.由于串口屏在异常处理的时候SIF会需要多打开一个serial interface用的clock SLCD,
而在lcd_exception_screen_update与lcd_exception_flatten函式內并未去做这个动作所以造成LCD传输资料时会
hang。做如下修改就可以解决这个问题:[这种情形目前只发生在6250平台]
mcu/hal/display/exception/lcd_exception_api_6250.c
找到函式: lcd_exception_flatten里的這行
mm_enable_power(MMPWRMGR_LCD);
加入
#if defined(__SERIAL_LCM__) && defined(MT6250)
mm_enable_power(MMPWRMGR_SLCD);
#endif
然后在结尾return 0之前加入:
mm_disable_power(MMPWRMGR_LCD);
#if defined(__SERIAL_LCM__) && defined(MT6250)
mm_disable_power(MMPWRMGR_SLCD);
#endif
另外一个函式lcd_exception_screen_update里也做一样的修改。
然后m c,r drv_display
附:
FlashTool下载过程中突然中断,长按电源键重新下载
[DESCRIPTION]
在带电池下载过程中,如果突然fail,需要把电池拿下来,再放入电池,否则直接进行下一次Download,连上机器,电脑提示无法识别
[SOLUTION]
针对带电池下载,在FlashTool v1548.02之后,添加长按8S powerkey掉电的功能,具体操作如下:
1、第一次Download失败后,长按8秒 powerkey
2、FlashTool 点击Download,重新进行Download操作,插入cable后,需要再次按一次powerkey触发Download
在使用catcher抓取memorydump的时候,有时候操作会失败,抓取不到memorydump。并且会弹出一个窗口,窗口上显示的信息为“Can't query memroy”,
[SOLUTION]
遇到这种异常情形,可以从以下几方面去确认:
1. 确认memory dump已经打开
提示:可以透过Catcher Sys trace来确认,如果在异常信息之后若有看到"Caution: To re-dump TST ring
buffer!",表示有成功打开,且系統已进入memory dump流程.
2. Download cable driver较旧,建议更新版本
a.Prolific cable latest driver download address: http://www.prolific.com.tw/eng/downloads.asp?ID=31
b.FTDI cable latest driver download address: http://www.ftdichip.com/Drivers/VCP.htm
3. 若更新驱动仍然不行,可以从PCB上飞线UART的TX,RX再来测试是否可以,这样可以排除UART接口不稳定的情况.
4. 检查LCD driver里面是否有用kal_sleep_task来做delay函数,一般的命名可能在LCD_Delay()里面用到,可靠的方
法是在lcd driver的文件里面搜索kal_sleep_task.如果有使用kal_sleep_task,请改用for循环来做delay.
[这一点可以参考DCC上的文档:MemoryDump_FAQ.pptx]
5. 有可能是异常处理的过程中watch dog timeout。可以disable watch dog再尝试。
[这一点可以参考FAQ04547----- how to disable watchdog]
6.查看连线是否有问题。尝试在cather上advance中选择assert target强制手动assert,看手动assert可以成功。
7.由于串口屏在异常处理的时候SIF会需要多打开一个serial interface用的clock SLCD,
而在lcd_exception_screen_update与lcd_exception_flatten函式內并未去做这个动作所以造成LCD传输资料时会
hang。做如下修改就可以解决这个问题:[这种情形目前只发生在6250平台]
mcu/hal/display/exception/lcd_exception_api_6250.c
找到函式: lcd_exception_flatten里的這行
mm_enable_power(MMPWRMGR_LCD);
加入
#if defined(__SERIAL_LCM__) && defined(MT6250)
mm_enable_power(MMPWRMGR_SLCD);
#endif
然后在结尾return 0之前加入:
mm_disable_power(MMPWRMGR_LCD);
#if defined(__SERIAL_LCM__) && defined(MT6250)
mm_disable_power(MMPWRMGR_SLCD);
#endif
另外一个函式lcd_exception_screen_update里也做一样的修改。
然后m c,r drv_display
附:
FlashTool下载过程中突然中断,长按电源键重新下载
[DESCRIPTION]
在带电池下载过程中,如果突然fail,需要把电池拿下来,再放入电池,否则直接进行下一次Download,连上机器,电脑提示无法识别
[SOLUTION]
针对带电池下载,在FlashTool v1548.02之后,添加长按8S powerkey掉电的功能,具体操作如下:
1、第一次Download失败后,长按8秒 powerkey
2、FlashTool 点击Download,重新进行Download操作,插入cable后,需要再次按一次powerkey触发Download
666666
666666
谢谢分享