
# 魔法键使用方法
#### 使用场景
系统未输出挂死相关信息，但是无响应时，可以通过魔法键查看中断是否有响应。在中断有响应的情况下，可以通过魔法键查看task信息中 的CPUP（CPU占用率），找到是哪个任务长时间占用CPU导致系统其他任务无响应（一般为比较高优先级任务一直抢占CPU，导致低优先级任务无响应）。
#### 功能说明
在uart中断和usb转虚拟串口中断中，嵌入魔法键检查功能，对特殊按键进行识别，输出相关信息。
#### 使用方法
1. 通过make menuconfig开启魔法键功能。 
   - 该功能依赖于Shell，所以需要先使能Shell。
     ```
     Debug ---> Enable a Debug Version ---> Enable Shell
     ```
     
   
   - 该功能需要配置LOSCFG_ENABLE_MAGICKEY=y，若关闭该选项，则魔法键失效，开启该宏开关的菜单项为：
     ```
     Debug ---> Enable MAGIC KEY
     ```
     ![](https://support.huaweicloud.com/maintenance-LiteOS/public_sys-resources/note_3.0-zh-cn.png)
     可以在menuconfig中光标移动到该选项上，输入"？"，查看帮助信息：
     ```
     Answer Y to enable LiteOS Magic key.
       ctrl + r : Magic key check switch;
       ctrl + z : Show all magic op key;
       ctrl + t : Show task information;
       ctrl + p : System panic;
       ctrl + e : Check system memory pool.
     ```
     
   
   
   
   
2. 输入"ctrl + r " 键，打开或者关闭魔法键检测功能。 
   在连接uart或者usb转虚拟串口的情况下，输入"ctrl + r " 键，打开魔法键检测功能，输出 "Magic key on"；再输入一次后，则关闭魔法键检测功能，输出"Magic key off"。魔法键功能如下：
   - ctrl + z：帮助键，输出相关魔法键简单介绍。
   
   - ctrl + t：输出任务相关信息。
   
   - ctrl + p：系统主动进入panic，输出panic相关信息后，系统会挂住。
   
   - ctrl + e：系统进行简单的内存池完整性检查，检查发现错误则输出相关错误信息，检查正常则输出"system memcheck over, all passed!"。
   
   
   
   
 
#### 注意事项
魔法键检测功能打开情况下，如果需要通过uart或者usb转虚拟串口输入特殊字符需避免与魔法键值重复，否则魔法键会被误触发，而原有设计功能可能出现错误。
