Q_Shell V1.0使用说明
一.综述
Q_Shell是由酷享科技开发的一个串口调试组件,有了它你可以通过PC上的串口工具很方便的调试程序里的大多数函数(参数不超过四个);查看和赋值程序中的部分变量(支持u8,u16,u32类型的全局变量);读写指定地址处的寄存器值(32位)。其特点如下:
1.使用方便
需要调用的函数或变量只需在本文件中注_册,不需要手动添加任何声明。
2.功能齐全
函数参数支持十进制或十六进制数,字符串,指针。支持读写变量和寄存器。
3.占用资源极少
仅占用2K字节的ROM空间,2字节的全局变量空间,和20字节的栈空间。
4.拆卸容易
更改一个宏的值即可拆卸掉全部组件。
5.使用安全
使用前需要输入验证密码,可防止用户误操作。
二.移植
Q_Shell组件无需操作系统支持,可在裸机上直接进行移植。移植的步骤如下:
1.将Q_Shell.c和Q_Shell.h两个文件加入到工程中。
2.在需要使用Q_Shell功能的C文件中包含Q_Shell.h。
3.将Q_Shell.h中的宏USE_Q_SHELL_FUNCTION置1开启Q_Shell
4.按以下要求写好串口驱动:
(1)需要实现printf函数
(2)在串口工具中输入命令字符串并按下回车后,需要将从上位机接收到的字符串保存在一个字符串数组中,然后将其传至Q_Sh_CmdHandler来执行命令
三.使用举例
1.调用注_册的函数和变量
例如,我们想通过Q_Shell调用在*.c中定义的
全局变量unsigned char var; 以及
函数 unsigned char fun(char *str,unsigned int i,unsigned char j);
我们可以通过以下两个步骤来完成。
第一步: 在*。C中注_册需要调用的函数和变量
...
unsigned char Var;
QSH_VAR_REG(Var,“unsigned char Var”,“u8”);
...
unsigned char Fun(char *str, unsigned int i, char j)
{
...
}
QSH_FUN_REG(Fun,“unsigned char Fun(char *str,unsigned int i, char j)”);
...
其中QSH_VAR_REG的第一个参数填变量名;第二个参数填描述该变量的字符串,可以书写任意的内容;
第三个参数填变量类型描述字符串,根据所注_册的变量类型选填“u8”“u16”“u32”中的一个。
其中QSH_FUN_REG的第一个参数填函数名;第二个参数填描述该函数的字符串,可以书写任意的内容。
第二步:在PC上的串口工具中输入以下命令并按回车
lv() 查看一共注_册了哪些变量
get(Var) 查看变量Var的值。
set(Var,16)或set(Var,0x10) 给变量Var赋值
lf() 查看一共注_册了哪些函数
fun(“123”,0x20001000,1) 调用已注_册的函数fun
2.读写指定地址处的寄存器
例如,我们想读写位于0xE000E004处寄存器
可在PC上的串口工具中输入以下命令
read(0xE000E004) 读出寄存器的值
write(0xE000E004,0xffffffff) 给寄存器赋值
四.版本记录
* Date Author Notes
* 2011-10-5 ChenYu first version
点击此处下载
ourdev_682574M9WONJ.pdf(文件大小:163K) (原文件名:Q_Shell V1.0使用说明.pdf)
点击此处下载
ourdev_682575LLNHMM.rar(文件大小:5K) (原文件名:Q_Shell V1.0源码带注释.rar)
演示了如何调试main.c中注_册的函数和变量以及如何存取寄存器。大伙可以直接拿来试用,并
可以作为一个移植的参考。
main.c中的内容如下:
#include "Uart.h"
#include "Q_Shell.h"
unsigned char Var1;
unsigned short Var2;
unsigned int Var3;
QSH_VAR_REG(Var1,"unsigned char Var1","u8");
QSH_VAR_REG(Var2,"unsigned char Var2","u16");
QSH_VAR_REG(Var3,"unsigned char Var3","u32");
unsigned int Add(unsigned a,unsigned b)
{
return (a+b);
}
QSH_FUN_REG(Add, "unsigned int Add(unsigned a,unsigned b)");
unsigned int PutString(char *Str)
{
if(*Str==' ')
return 0;
printf("%s ",Str);
return 1;
}
QSH_FUN_REG(PutString, "unsigned int PutString(char *Str)");
int main(void)
{
Var1=1;
Var2=2;
Var3=3;
COM1_Init();
while(1);
}
Demo流程:
输入密码123456,密码正确,获得使用Q_Shell的权限;
输入lv(),查看所有注_册变量;
输入lf(),查看所有注_册函数;
输入get(Var1),获得Var1的值;
输入set(Var1),Q_Shell会检查到set的参数个数不为2,故报错;
输入set(Var,99),Q_Shell会检查到Var没有注_册,故报错;
输入set(Var1,99),给Var1赋值99并回显Var1的值;
输入Add(1,2),相当于调用执行Add(1,2),并回显函数返回值;
输入PutString("Happy every day."),相当于调用执行PutString("Happy every day."),并返回函数返回值;
输入read(0xe000e014),读取位于0xe000e014地址处的寄存器的值
输入write(0xe000e014,0xffffeeee),给位于0xe000e014地址处的寄存器的赋值0xffffeeee,并回显
与该Demo流程对应的终端输出截图如下:
(原文件名:调试函数或变量.JPG)
(原文件名:调试寄存器.JPG)
点击此处下载 ourdev_687232VALDA7.rar(文件大小:301K) (原文件名:Q_Shell_Demo.rar)
-----------------------------------------------------------------------
欢迎使用哈!用完更欢迎将您的使用体会和建议告诉我们,我们好在下一个版本中改进之。另外说明一点,这里给出的源代码是在mdk下的,若您使用的是iar可能需要稍稍修改注_册函数和变量的两个宏。
一周热门 更多>