Finsh是调试的利器,它可以获取系统运行时信息,对任意寄存器和内存地址进行读写操作,还能直接调用系统函数访问系统变量。
要使用这个功能,需要开启
/* SECTION: Finsh, a C-Express shell */
#define RT_USING_FINSH
/* Using symbol table */
#define FINSH_USING_SYMTAB
#define FINSH_USING_DESCRIPTION
并在startup.c 中添加启动函数
#ifdef RT_USING_FINSH
/* initialize Finsh */
Finsh_system_init();
Finsh_set_device(RT_CONSOLE_DEVICE_NAME);
#endif
下面举些例子。
使用list()命令打印出当前注册到Finsh系统的所有shell命令
Finsh>>list()
--Function List:
list_mem -- list memory usage information
version -- show RT-Thread version information
list_thread -- list thread
list_sem -- list semaphone in system
list_event -- list event in system
list_mutex -- list mutex in system
list_mailbox -- list mail box in system
list_msgqueue -- list message queue in system
list_mempool -- list memory pool in system
list_timer -- list timer in system
list_device -- list device in system
list -- list all symbol in system
--Variable List:
dummy -- dummy variable for Finsh
0, 0x00000000
list_thread() ,查看当前系统中运行的所有线程
Finsh>>list_thread()
thread pri status sp stack size max used left tick error
-------- ---- ------- ---------- ---------- ---------- ---------- ---
tshell 0x14 ready 0x00000110 0x00000800 0x000001e8 0x00000008 -04
tidle 0x1f ready 0x000000e0 0x00000400 0x000000e0 0x00000010 000
thread1 0x0b suspend 0x00000100 0x00000400 0x00000100 0x00000005 000
0, 0x00000000