搜索
bottom↓
回复: 111

调试助手--Q_Shell V1.0 发布(公布源码)

  [复制链接]

出0入17汤圆

发表于 2011-10-5 17:09:34 | 显示全部楼层 |阅读模式
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)

阿莫论坛20周年了!感谢大家的支持与爱护!!

一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。

出0入17汤圆

 楼主| 发表于 2011-10-22 05:06:09 | 显示全部楼层
应大伙的要求,我做了一个Q_Shell的Demo工程(stm32f103VE,MDK4.x,串口1,超级终端,波特率115200),
演示了如何调试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=='\0')
                return 0;
        printf("%s\r\n",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)

出0入17汤圆

 楼主| 发表于 2011-11-9 10:56:35 | 显示全部楼层
回复【49楼】zhaiyingxin
回复【48楼】zhaiyingxin  
回复【45楼】zhaiyingxin   
请问,我在iar下,如何修改环境变量的定义呢?   
能否给出个实例?!谢谢!  
-----------------------------------------------------------------------  
在线等楼主,希望能予以回复,不过看了楼主的帖子,我了解点了shell的工作过程!
-----------------------------------------------------------------------
楼主请多指教啊!?
-----------------------------------------------------------------------

回复【57楼】zhaiyingxin
期待楼主有时间弄个iar的demo程序
-----------------------------------------------------------------------

同时支持IAR和MDK的Demo已完成,久等了。另外计划给这个Q-Shell增加单元测试功能,具体的方案在构思中,大致思路是使Q-Shell可以解析用文本形式保存的测试用例。关于这个单元测试功能的方案欢迎大伙多给意见哈。
点击此处下载 ourdev_693319OT0T9F.rar(文件大小:285K) (原文件名:Q_Shell(MDK&IAR).rar)

出0入17汤圆

 楼主| 发表于 2013-5-24 11:31:56 | 显示全部楼层
修改一处bug: USART2_IRQHandler中断函数中的定义static char Idx=0;改为static u32 Idx=0;

出0入0汤圆

发表于 2011-10-5 17:28:05 | 显示全部楼层
顶一下,看起来不错

出30入0汤圆

发表于 2011-10-5 18:36:08 | 显示全部楼层
顶一个!看看能不能用上!

出0入17汤圆

 楼主| 发表于 2011-10-5 19:02:17 | 显示全部楼层
回复【2楼】linquan315  
-----------------------------------------------------------------------
欢迎使用哈!用完更欢迎将您的使用体会和建议告诉我们,我们好在下一个版本中改进之。另外说明一点,这里给出的源代码是在mdk下的,若您使用的是iar可能需要稍稍修改注_册函数和变量的两个宏。

出0入0汤圆

发表于 2011-10-5 19:33:47 | 显示全部楼层
顶一下 谢谢

出0入0汤圆

发表于 2011-10-5 19:43:19 | 显示全部楼层
不错

出0入0汤圆

发表于 2011-10-5 23:30:50 | 显示全部楼层
回复【3楼】ilovepp
回复【2楼】linquan315   
-----------------------------------------------------------------------
欢迎使用哈!用完更欢迎将您的使用体会和建议告诉我们,我们好在下一个版本中改进之。另外说明一点,这里给出的源代码是在mdk下的,若您使用的是iar可能需要稍稍修改注_册函数和变量的两个宏。
-----------------------------------------------------------------------

源码能否多加上些必要的注释呢,以便大家尽快地理解您的编程思路,这样才好提出改进建议呀!

出0入134汤圆

发表于 2011-10-5 23:45:11 | 显示全部楼层
有时间试试

出0入0汤圆

发表于 2011-10-6 00:06:21 | 显示全部楼层
顶一下,看起来不错

出0入0汤圆

发表于 2011-10-6 00:08:10 | 显示全部楼层
顶.

出15入9汤圆

发表于 2011-10-6 00:11:08 | 显示全部楼层
支持,能否说下最小资源需求?

出0入0汤圆

发表于 2011-10-6 00:13:19 | 显示全部楼层
不错

出0入17汤圆

 楼主| 发表于 2011-10-6 00:21:55 | 显示全部楼层
回复【10楼】pcwhy
-----------------------------------------------------------------------
资源需求不大的。只需2KB的FLASH和20字节的RAM。

出0入0汤圆

发表于 2011-10-6 00:48:22 | 显示全部楼层
回复【6楼】hadio  领航电子
源码能否多加上些必要的注释呢,以便大家尽快地理解您的编程思路,这样才好提出改进建议呀!
-----------------------------------------------------------------------
创建一个section,然后把函数名称,描述信息及入口地址保存在里面.
再根据输入去搜索执行对应的函数.

与 RT-Thread 的 finsh 方法一样.
不过finsh还可以编译.

出0入17汤圆

 楼主| 发表于 2011-10-6 01:14:40 | 显示全部楼层
回复【13楼】aozima
-----------------------------------------------------------------------

finsh相当于一个小型的编译器+虚拟机,功能强大,但它的实现也需要代价,比较占用资源,适合在资源宽裕的系统中使用。
Q_Shell的优势是小巧,只占用2K字节的FLASH和20字节的RAM,适合在资源紧张的系统中使用。

出0入0汤圆

发表于 2011-10-6 07:03:58 | 显示全部楼层
有时间看看

出0入17汤圆

 楼主| 发表于 2011-10-6 10:56:29 | 显示全部楼层
回复【6楼】hadio 领航电子
回复【3楼】ilovepp  
回复【2楼】linquan315   
-----------------------------------------------------------------------  
欢迎使用哈!用完更欢迎将您的使用体会和建议告诉我们,我们好在下一个版本中改进之。另外说明一点,这里给出的源代码是在mdk下的,若您使用的是iar可能需要稍稍修改注_册函数和变量的两个宏。
-----------------------------------------------------------------------
源码能否多加上些必要的注释呢,以便大家尽快地理解您的编程思路,这样才好提出改进建议呀!
-----------------------------------------------------------------------
注释已经加上了,感谢支持。

出50入0汤圆

发表于 2011-10-6 11:26:01 | 显示全部楼层
mark

出0入476汤圆

发表于 2011-10-6 11:36:15 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-10-6 12:48:25 | 显示全部楼层
楼主好人
学习一下

出0入0汤圆

发表于 2011-10-6 12:53:18 | 显示全部楼层
MARK

出0入17汤圆

 楼主| 发表于 2011-10-7 13:20:55 | 显示全部楼层
自己顶一下。下一个版本打算加入观察和赋值数组和结构体的命令,等有时间了还想再加入对脚本文件的支持。欢迎大伙给出宝贵意见啊。

出10入0汤圆

发表于 2011-10-7 15:15:55 | 显示全部楼层
强有力的支持!!!

之前某个串口调试也试了一下,感觉不实用.

出0入0汤圆

发表于 2011-10-7 16:02:55 | 显示全部楼层
mark

出0入17汤圆

 楼主| 发表于 2011-10-7 19:16:06 | 显示全部楼层
回复【22楼】huike  
强有力的支持!!!
之前某个串口调试也试了一下,感觉不实用.
-----------------------------------------------------------------------
呵呵,谢谢。你用了之后就知道Q_Shell使用的方便了,注_册一个函数或变量只需一行语句。

出0入0汤圆

发表于 2011-10-8 07:04:56 | 显示全部楼层
印记

出0入0汤圆

发表于 2011-10-19 10:58:21 | 显示全部楼层
出现了一些问题
请求LZ帮助
Warning: L6330W: Undefined symbol qShellFunTab$$Base (referred from q_shell.o). Unused section has been removed.
Warning: L6330W: Undefined symbol qShellFunTab$$Limit (referred from q_shell.o). Unused section has been removed.
Warning: L6330W: Undefined symbol qShellVarTab$$Base (referred from q_shell.o). Unused section has been removed.
Warning: L6330W: Undefined symbol qShellVarTab$$Limit (referred from q_shell.o). Unused section has been removed.

出0入0汤圆

发表于 2011-10-19 11:56:13 | 显示全部楼层
MDK里面,链接时要对符号表加上Keep参数,不然未使用的符号就自动不链接进来.

出0入0汤圆

发表于 2011-10-19 21:15:10 | 显示全部楼层
回复【27楼】aozima
mdk里面,链接时要对符号表加上keep参数,不然未使用的符号就自动不链接进来.
-----------------------------------------------------------------------

是不是在MDK的Linker页面中的Misc controls 中写入
--keep qsh_fun_* --keep qsh_var_*
因为在Q_shell.h中有这样的定义
#define QSH_VAR_REG(name, desc,typedesc)                                                           \
static const   char  qsh_var_##name##_name[] = #name;                                           \
static const   char  qsh_var_##name##_desc[] = desc;                                           \
static const   char  qsh_var_##name##_typedesc[] = typedesc;                                   \
QSH_RECORD qsh_var_##name##_record  __attribute__((section("qShellVarTab"))) = \
{                                                                                                           \
        qsh_var_##name##_name,                                                           \
        qsh_var_##name##_desc,                                                           \
        (void *)&name,                                                                       \
        qsh_var_##name##_typedesc                                                                                               \
}


我参照“RT-Thread”的finsh例程,但是还是不行。

加上
--keep qsh_fun_* --keep qsh_var_*
之后就会出现

Warning: L6320W: Ignoring --keep command. Cannot find argument 'qsh_fun_*'.
Warning: L6320W: Ignoring --keep command. Cannot find argument 'qsh_var_*'.
Warning: L6330W: Undefined symbol qShellFunTab$$Base (referred from q_shell.o). Unused section has been removed.
Warning: L6330W: Undefined symbol qShellFunTab$$Limit (referred from q_shell.o). Unused section has been removed.
Warning: L6330W: Undefined symbol qShellVarTab$$Base (referred from q_shell.o). Unused section has been removed.
Warning: L6330W: Undefined symbol qShellVarTab$$Limit (referred from q_shell.o). Unused section has been removed.

已经焦头烂额了

出30入0汤圆

发表于 2011-10-19 22:16:45 | 显示全部楼层
你这里为什么不给出一个测试的完整版本呢,一个TXT文件的程序包挂在那里,对于没有开发板的人来说就是一堆废物,吊大家的胃口。我在你的网站里看到了有很多例程,却不愿意稍微分享一下,在STM32中实现Printf(“---%d---”,%s,%s)等等函数还是比较麻烦的意见事情,楼上的兄弟们谁实现了这几个函数,能够挂出来。
大家时间都是有限的,稍微有限的一点资源共享,世界才会变得美好。

出0入0汤圆

发表于 2011-10-20 08:34:02 | 显示全部楼层
LZ现身,开坛讲经吧。

出0入17汤圆

 楼主| 发表于 2011-10-20 08:46:31 | 显示全部楼层
回复【26楼】yinglively  
出现了一些问题
请求lz帮助
warning: l6330w: undefined symbol qshellfuntab$$base (referred from q_shell.o). unused section has been removed.
warning: l6330w: undefined symbol qshellfuntab$$limit (referred from q_shell.o). unused section has been removed.
warning: l6330w: undefined symbol qshellvartab$$base (referred from q_shell.o). unused section has been removed.
warning: l6330w: undefined symbol qshellvarta......
-----------------------------------------------------------------------
呵呵,久等了。解决这个问题最最简单的方法是用QSH_FUN_REG和QSH_VAR_REG注_册一个函数和一个变量就可以消除掉段未使用的警告了。

出0入0汤圆

发表于 2011-10-20 08:52:06 | 显示全部楼层
好东西啊!~

出0入0汤圆

发表于 2011-10-20 09:06:03 | 显示全部楼层
mark

出0入17汤圆

 楼主| 发表于 2011-10-20 09:19:35 | 显示全部楼层
回复【29楼】linquan315  
你这里为什么不给出一个测试的完整版本呢,一个txt文件的程序包挂在那里,对于没有开发板的人来说就是一堆废物,吊大家的胃口。我在你的网站里看到了有很多例程,却不愿意稍微分享一下,在stm32中实现printf(“---%d---”,%s,%s)等等函数还是比较麻烦的意见事情,楼上的兄弟们谁实现了这几个函数,能够挂出来。
大家时间都是有限的,稍微有限的一点资源共享,世界才会变得美好。
-----------------------------------------------------------------------
恩,谢谢支持。qshell的定位是中间件。可以移植性到如51,avr,stm32等等平台上,而且每个目标板所使用的串口也不一样。所以我在pdf文件中对它的移植方法有比较详细的介绍,我认为移植还是很容易的。是的,看来我有必要针对stm32搞一个Demo。我弄好后立马就传上来跟大伙分享。

出0入0汤圆

发表于 2011-10-20 09:57:43 | 显示全部楼层
LZ
我的问题还没有解决呢
为何会出现错误?
能否给个简单的工程文件??

出0入17汤圆

 楼主| 发表于 2011-10-20 10:09:34 | 显示全部楼层
回复【35楼】yinglively  
lz
我的问题还没有解决呢
为何会出现错误?
能否给个简单的工程文件??
-----------------------------------------------------------------------

回复【35楼】yinglively  
lz
我的问题还没有解决呢
为何会出现错误?
能否给个简单的工程文件??
-----------------------------------------------------------------------
我在31楼给你回复了,可能你没看到,呵呵。

出0入0汤圆

发表于 2011-10-20 20:39:50 | 显示全部楼层
能否实现类似 uboot 的菜单界面?
   
同时包括:
    1、全用户界面的命令行(uboot)  方便用户使用
    2、全开发者界面的shell   方便开发者调试

出0入17汤圆

 楼主| 发表于 2011-10-20 21:46:23 | 显示全部楼层
回复【37楼】ljt80158015  

    能否实现类似 uboot 的菜单界面?
   
同时包括:
    1、全用户界面的命令行(uboot)  方便用户使用
    2、全开发者界面的shell   方便开发者调试

-----------------------------------------------------------------------
Q_Shell是一个串口调试的中间件,不会加入命令行,否则将影响架构和可移植性。软件的功能不是越多越好,架构更加重要,架构搭好了,功能可以随意加的。不过以后还想弄个Q_Boot,在这里面可能会加上类似uboot的菜单界面,呵呵,谢谢关注。

出0入0汤圆

发表于 2011-10-20 22:01:07 | 显示全部楼层
让我想起alu

出0入0汤圆

发表于 2011-10-23 21:05:25 | 显示全部楼层
多谢LZ了
参考移植

这个必须要顶

出0入0汤圆

发表于 2011-10-24 01:34:59 | 显示全部楼层
看起来不错。

出0入0汤圆

发表于 2011-10-24 13:53:03 | 显示全部楼层
顶一下,这个和RT-THREAD系统中带的一个shell功能很类似。

出0入0汤圆

发表于 2011-10-26 10:06:25 | 显示全部楼层
请教一下:
1 Q_Shell.c和Q_Shell.h,printf函数也写好了,串口中断也写了。但开机没有出现密码输入提示?
2,除了加入两个文件夹,还有其他注意的吗?
3,有没有移植LPC2368或LPC1768的例子。
4,或者有C51的也可以。

谢谢。

出0入0汤圆

发表于 2011-10-26 11:03:59 | 显示全部楼层
请问,我在IAR下,如何修改环境变量的定义呢?
能否给出个实例?!谢谢!

出0入17汤圆

 楼主| 发表于 2011-10-26 14:07:57 | 显示全部楼层
回复 【44楼】 Excellence 精益求精
请教一下:
1 Q_Shell.c和Q_Shell.h,printf函数也写好了,串口中断也写了。但开机没有出现密码输入提示?
2,除了加入两个文件夹,还有其他注意的吗?
3,有没有移植LPC2368或LPC1768的例子。
4,或者有C51的也可以。
谢谢。
------------------------------------------------------------------------
1.系统上电后是不会自动出现密码输入提示的。密码输入提示出现的时机是在上电后第一次输入任意字符并按回车后。
2.需要注意的地方在pdf中的移植部分里都提到了。核心部分可参照demo中串口中断中的代码。
3.目前还没有51和LPC上的移植模板

出0入0汤圆

发表于 2011-10-27 12:50:48 | 显示全部楼层
留下备用

出0入0汤圆

发表于 2011-10-28 14:24:46 | 显示全部楼层
回复【45楼】zhaiyingxin
请问,我在iar下,如何修改环境变量的定义呢?
能否给出个实例?!谢谢!
-----------------------------------------------------------------------

在线等楼主,希望能予以回复,不过看了楼主的帖子,我了解点了SHELL的工作过程!

出0入0汤圆

发表于 2011-10-31 16:04:35 | 显示全部楼层
回复【48楼】zhaiyingxin
回复【45楼】zhaiyingxin  
请问,我在iar下,如何修改环境变量的定义呢?  
能否给出个实例?!谢谢!
-----------------------------------------------------------------------
在线等楼主,希望能予以回复,不过看了楼主的帖子,我了解点了shell的工作过程!
-----------------------------------------------------------------------

楼主请多指教啊!?

出0入17汤圆

 楼主| 发表于 2011-10-31 17:23:44 | 显示全部楼层
回复【49楼】zhaiyingxin  
-----------------------------------------------------------------------
你可以参考下RTT的finsh中注_册函数的代码。等我有时间了再弄个IAR下的实例放上来。不好意思,久等啦:)

出0入0汤圆

发表于 2011-10-31 17:48:17 | 显示全部楼层
MARK

出0入0汤圆

发表于 2011-10-31 22:06:38 | 显示全部楼层
楼主很牛,使用哪个IDE?

出0入17汤圆

 楼主| 发表于 2011-10-31 22:42:14 | 显示全部楼层
回复【52楼】funv
楼主很牛,使用哪个ide?
-----------------------------------------------------------------------
使用的是MDK。

出0入0汤圆

发表于 2011-10-31 22:59:07 | 显示全部楼层
有用过 C-Free 做编辑功能吗?
现在年纪大了,记性不好,KEIL 的 IDE 又没有长进;
使用 C-Free 编辑单个文件时的意义又不大,如能把 MDK 工程文件转化成 C-Free 的工程
这样写程序才是种响受,有方法可以转化吗?

出0入17汤圆

 楼主| 发表于 2011-10-31 23:12:04 | 显示全部楼层
回复【54楼】funv
有用过 c-free 做编辑功能吗?
现在年纪大了,记性不好,keil 的 ide 又没有长进;
使用 c-free 编辑单个文件时的意义又不大,如能把 mdk 工程文件转化成 c-free 的工程
这样写程序才是种响受,有方法可以转化吗?
-----------------------------------------------------------------------
C-Free没有用过啊。

出0入0汤圆

发表于 2011-10-31 23:52:04 | 显示全部楼层
mark!!

出0入0汤圆

发表于 2011-11-4 09:17:17 | 显示全部楼层
期待楼主有时间弄个IAR的demo程序

出0入0汤圆

发表于 2011-11-9 12:07:53 | 显示全部楼层
谢谢楼主,楼主辛苦!

出0入0汤圆

发表于 2011-11-9 12:13:41 | 显示全部楼层
楼主想的,正是我试用后要做的!
Q-Shell可以解析用文本形式保存的测试用例,具体方案愿意与楼主交流!

出0入0汤圆

发表于 2011-11-9 12:21:41 | 显示全部楼层
我所接触到的有个澳大利亚的数据采集器的例子(DT50),
他是带电初始化成功后发送个字符串,表示系统启动成功了,然后就是串口等待上位机的文本指令,
类似于单片机里面的主循环没有任何的程序,所有的工作方式,都是由上位机的文本文件指令控制的。有两种工作方式,一种是RAM调试,掉电不保存,一种是FLASH调试,掉电保存。如果文本设置有不正确的地方,导致无法接受上位机的文本指令,他会提供个类似软盘的东东,重做系统,估计是有个类似BOOTLOADER的东东。
他的硬件是8051+6264,希望能给楼主些灵感!
具体方案的东西,是需要创意的,估计我的能力不足,帮不到楼主了,不过现在flash和SD的读写技术很成熟了,应该难不倒楼主!

出0入0汤圆

发表于 2011-11-9 12:33:55 | 显示全部楼层
看LZ的fun函数只有两个参数,如果要传4个参数怎么办。

出0入17汤圆

 楼主| 发表于 2011-11-9 12:42:00 | 显示全部楼层
回复【60楼】zhaiyingxin
楼主想的,正是我试用后要做的!
q-shell可以解析用文本形式保存的测试用例,具体方案愿意与楼主交流!
-----------------------------------------------------------------------
好啊,加我好友吧,我企鹅是409262796。

出0入0汤圆

发表于 2011-11-9 12:45:49 | 显示全部楼层
MARK

出0入17汤圆

 楼主| 发表于 2011-11-9 12:55:41 | 显示全部楼层
回复【62楼】gliet_su
看lz的fun函数只有两个参数,如果要传4个参数怎么办。
-----------------------------------------------------------------------
一样的使用,目前最多支持四个参数。因为根据AAPCS规范,R0-R3这四个寄存器是专门留作传递参数用的,无论此函数有无参数都是如此。

出0入17汤圆

 楼主| 发表于 2011-11-9 13:09:02 | 显示全部楼层
回复【62楼】gliet_su
看lz的fun函数只有两个参数,如果要传4个参数怎么办。
-----------------------------------------------------------------------

typedef unsigned int (*QSH_FUNC_TYPE)();//统一的shell函数类型支持不同个数的参数
QSH_FUNC_TYPE这种类型的函数可以接收不同个数的参数同时保证编译器不会出警告。

出0入0汤圆

发表于 2011-11-10 01:28:50 | 显示全部楼层
MARK

出0入17汤圆

 楼主| 发表于 2011-11-11 12:58:39 | 显示全部楼层
继续上传一个MSP430f168平台上的Demo,开发环境是IAR for MSP430 5.30.这个Demo的发布还得感谢zhaiyingxin提供的帮助。
点击此处下载 ourdev_694147JEAQFP.rar(文件大小:77K) (原文件名:Q-Shell(IAR for MSP430).rar)

出0入0汤圆

发表于 2011-11-11 14:17:33 | 显示全部楼层
感谢ilovepp 的帮忙@—@

出0入4汤圆

发表于 2011-11-11 14:20:47 | 显示全部楼层
mark, q_shell,谢谢!

出0入0汤圆

发表于 2012-1-22 11:54:13 | 显示全部楼层
mark...

出0入0汤圆

发表于 2012-1-27 12:42:01 | 显示全部楼层
MARK 等下研究

出0入0汤圆

发表于 2012-1-29 07:56:55 | 显示全部楼层
记个号

出0入0汤圆

发表于 2012-1-29 15:59:45 | 显示全部楼层
mark

出0入0汤圆

发表于 2012-2-2 14:32:42 | 显示全部楼层
顶一下

出0入0汤圆

发表于 2012-3-8 13:08:55 | 显示全部楼层
找到酷系统的根源贴了~

出0入0汤圆

发表于 2013-3-20 10:37:33 | 显示全部楼层
代码少些进去之后,无任何反应啊!还有你的使用安全是什么意思?使用前还要输入密码,怎么输入啊!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入17汤圆

 楼主| 发表于 2013-3-20 10:57:56 | 显示全部楼层
下的是59楼的工程么。在串口提示输入密码时输入:123456回车。说明书里有介绍的。

出0入0汤圆

发表于 2013-3-20 11:24:05 | 显示全部楼层
mark, 顶

出0入0汤圆

发表于 2013-3-20 12:43:17 | 显示全部楼层
mark!!!!

出0入0汤圆

发表于 2013-3-20 12:50:48 | 显示全部楼层
aozima 发表于 2011-10-6 00:48
回复【6楼】hadio  领航电子
源码能否多加上些必要的注释呢,以便大家尽快地理解您的编程思路,这样才好提 ...

finsh才是“前辈”,呵呵

出0入17汤圆

 楼主| 发表于 2013-3-20 12:56:43 | 显示全部楼层
Baldwin 发表于 2013-3-20 12:50
finsh才是“前辈”,呵呵

是的,呵呵。

出0入0汤圆

发表于 2013-3-20 15:12:20 | 显示全部楼层
楼主,你的是如何关闭shell功能的,能说明下吗?

出0入17汤圆

 楼主| 发表于 2013-3-20 15:28:03 | 显示全部楼层
qzxy0927 发表于 2013-3-20 15:12
楼主,你的是如何关闭shell功能的,能说明下吗?

#define USE_Q_SHELL_FUNCTION 0

出0入0汤圆

发表于 2013-3-20 15:32:03 | 显示全部楼层
ilovepp 发表于 2011-10-22 05:06
应大伙的要求,我做了一个Q_Shell的Demo工程(stm32f103VE,MDK4.x,串口1,超级终端,波特率115200),
演示了 ...

楼主,我想问下,我把你的工程下载进去之后,if()这个命令怎么提示我没有啊,其他都可以的呀!

出0入17汤圆

 楼主| 发表于 2013-3-20 15:54:56 | 显示全部楼层
qzxy0927 发表于 2013-3-20 15:32
楼主,我想问下,我把你的工程下载进去之后,if()这个命令怎么提示我没有啊,其他都可以的呀! ...

不是if()是lf() list functions的缩写

出0入0汤圆

发表于 2013-3-20 16:43:22 | 显示全部楼层
ilovepp 发表于 2013-3-20 15:54
不是if()是lf() list functions的缩写

非常感谢,虽然问题有点笨,但是楼主还是慢慢的给我讲,非常感谢!

出0入0汤圆

发表于 2013-3-21 13:15:02 | 显示全部楼层
顶一下,看起来不错

出0入0汤圆

发表于 2013-6-20 14:22:37 | 显示全部楼层
我也顶一次,很有用的东西

出0入0汤圆

发表于 2013-7-5 18:07:44 | 显示全部楼层
好东西啊!

出0入0汤圆

发表于 2013-7-5 22:37:30 | 显示全部楼层
很好啊~

出0入0汤圆

发表于 2013-7-5 22:45:17 | 显示全部楼层
不错的东东,有空试试

出0入0汤圆

发表于 2013-7-16 10:13:16 | 显示全部楼层
看了下。里面的Q_Sh_Str2Num为何不用标准的sprintf函数?

出0入0汤圆

发表于 2013-7-16 17:31:48 | 显示全部楼层
                        if(((unsigned short *)CmdStr)[0]==0x445b)
                        {}
                        else if(((unsigned short *)CmdStr)[0]==0x435b)
                        {}

啥意思?

出0入0汤圆

发表于 2013-7-16 19:57:46 | 显示全部楼层
R:\prj\STM32F407.axf: Warning: L6330W: Undefined symbol qShellFunTab$$Base (referred from q_shell.o). Unused section has been removed.
老是出现这个错误。。到处查了。设置啊什么的。没看到有什么特别啊?

出0入0汤圆

发表于 2013-7-16 22:44:08 | 显示全部楼层
兄台。。能不能把finsh分离出来移植到ucos-ii或者iii过来……    造福全人类啊。

出0入0汤圆

发表于 2013-7-16 23:04:11 | 显示全部楼层
搞定了。 在半中腰下了一个lz的工程。
非要加上--keep *.o(qShellVarTab)
--keep *.o(qShellFunTab) 才可以。 即时定义了QSH_FUN_REG  QSH_VAR_REG。 可能是keil的版本问题。各种优化设置都试了一遍。

现在stm32f4系列够猛了 估计也会更便宜。。建议lz 移植下finsh,结合这个东东。。。

出0入0汤圆

发表于 2013-7-16 23:32:36 | 显示全部楼层
学习一下。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-19 00:35

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表