仿真工具

摘要

J-Scope是SEGGER公司推出的,可以在目标MCU运行时,实时分析数据并图形化显示的软件。我们一起来了解一下J-Scope吧。

我们在前四篇的文档中介绍了MCU向调试终端输出信息的方法。今天就介绍一个更炫更酷、可以图形化显示数据的调试法宝—JScope。

J-Scope是SEGGER公司推出的,可以在目标MCU运行时,实时分析数据并图形化显示的软件。它不需要像SWO那样需要MCU上面额外的引脚,而是使用标准的调试接口。J-Link驱动4.90之后的版本都有这个软件哦。

J-Scope可以像示波器一样显示多个变量的值,通过读取一个ELF文件,允许选择一定数量的变量可视化,如图 1所示。你可以简单的将目标MCU连接到J-Link,并启动J-Scope软件。

图 1 J-Scope图形化显示变量

使用J-Scope的同时还可以并行使用调试环境,扩展工程师的IDE的调试经验。更加方便我们分析调试过程中的数据。

J-Scope使用方法也很简单,首先在Segger目录下打开J-Scope.exe,弹出如图 2所示的对话框,选择需要调试的elf文件,单击OK。

图 2 J-Scope配置对话框

然后在如图 3所示的对话框添加变量。注意添加的变量在程序中应该是全局变量。

图 3 添加变量对话框

单击OK,选择运行之后,我们就可以看到J-Scope绘制出来的精美的曲线了。

这个工具支持的MCU内核也非常多,如图 4所示。

图 4 J-Scope支持的内核

可能有的读者好奇了,最多能观察多少个变量,采样率能达到多少呢?其实变量的多少和采样率的大小取决于你的调试工具,如表 1所示。

表 1 变量个数和采样频率

当然,如果你的J-link是从淘宝50元买来的,那么最高采样频率也就是50Hz了。

有了J-Scope很大程度上方便了我们的调试。那么有没有其它的软件在具备J-Scope优点的同时,功能更加强大呢?敬请大家关注下一篇文档。

文章来源: 周立功单片机

(直接点击图片可进入调查页面)

开发板测评图片
围观 583

一、配置问题:

实际烧片时单片机的配置字与仿真的时候是不是一样?烧写时是否配置正确?

二、资源问题:

单片机的ROM、RAM大小与仿真器的ROM、RAM大小是不一样的!

三、驱动能力问题:

通常仿真器的驱动能力比单片机要强;可以分两步检查,一是分别用仿真器与单片机时对应IO口波形进行对比,二是当仿真器与外设连接与不连接时波形的对比;
  
要进行基本要素分析:单片机供电正常?起振没有?复位电路正常?芯片损坏?

单片机上电不运行情况的分析
 
1、单片机是没有运行,还是运行不正确?
  
2、如果是没有运行,检测单片机的基本参数是否已经满足<工作电压要在芯片的引脚处测量><复位引脚的复位曲线如何><晶振是否已经起振><芯片损坏,或者部分功能损坏>。
  
3、如果是运行不正确,检测<用了看门狗,没有处理好,芯片上电后处于不停的复位状态,看起来就象没有没有工作起来><是否进入了ISP状态><对单片机写入对所有的IO口以1秒取反一次的程序进行测试>

单片机调试办法

用LED进行状态指示,用串口进行数据指示,比用其它外设指示更可靠;

加入断点,烧写时是在不同的语句后面加入WHILE(1);

分模块调试,把每个小功能先调试通过,再进行组合。
  
Keil C本身就是编译与仿真一体的,当不要外部数据时很方便,当要外部输入时(比如用定时器作计数器用)它提供几个调试输入用的窗口可用它们来摸拟输入,同时Keil C本身提供一种调试函数用来配置摸拟外部输入的功能,这我在学习时看的一本书上讲过如用定时器作外部事件计数,调试函数由自己根据需要按特定的格式来编辑再按KEIL C的要求调入即可。学习时可用这种方法,做产品时最好是用仿真器调试。下面我给出我以前试过的用定时器作外部事件计数时摸拟外部输入的调试函数,并写出Keil C调用的步骤如下: 

1、编写如下信号函数:

  single void t0_singal(void)
  {
  while(1)
  {
  PORT3|=0x10;//pull INT0(P3.4) high again
  PORT3&=~0x10;//pull INT0(P3.4) low and generate interrupt
  PORT3|=0x10;//pull INT0(P3.4) high again
  twatch(CLOCK);//wait for 1 second
  }
  }
  
2、在DEBUG状态下单击DEBUG菜单在下拉菜单中单击“Function Editor(Open Ini File)... "选项,弹出新屏幕后,将“打开”窗口关闭,这时屏上有Function Edito窗;
  
3、在Function Editor窗中输入上面的函数;
  
4、保存(注意:扩展名为.ini),编译该程序,成功后关闭Function Editor窗口;
  
5、执行用户程序(必须连续执行);
  
6、在屏幕左下脚的命令窗口中,键入t0_singl()后(必须回车)妈可向P3.4源源不断地提供脉冲信号。
 
Keil C调试某系统时积累的一些经验

1、由于Keil C对中文支持不太好,因而会出现显示的光标与光标实际所在不一致的现象,这会对修改中文注释造成影响。在Windows2000下面,我们可以把字体设置为Courier,这样就可以显示正常。
  
2、当使用有片外内存的MCU(如W77E58,它有1K片外内存)的时候,肯定要设置标志位,并且编译方式要选择大模式,否则会出错。
  
3、当使用Keil C跟踪程序运行状态的时候,要把引起Warning的语句屏蔽,否则有可能跟踪语句的时候会出错。
  
4、在调用数组的时候,Keil C是首先把数组Load进内存。如果要在C中使用长数组的时候,我们可以使用code关键字,这样就实现了汇编的DB的功能,Keil C是不会把标志code的数组Load入内存的,它会直接读取Rom。
  
5、当编程涉及到有关通信,时序是很重要的。拉高管脚的执行速度远远比检查管脚电平的要快。
  
6、在等待管脚电平变化的时候,我们需要设置好超时处理,否则程序就会因为一个没有预计的错误而死锁。
  
7、能用C语言实现的地方,尽量不要用汇编,尤其在算法的实现,用汇编是晦涩难懂。
  
8、程序的几个参数数组所占篇幅很大,其中液晶背景数组最长,有四千个Byte,因而把那些初始化数组都放在另外一个C文件,在主文件使用使用关键字extern定义,这样就不会对主文件的编写造成干扰。
  
9、所有函数之间的相关性越低越有利于以后功能的扩展。
  
10、6.20版在编译带code关键字的数组时,编译通过但是单片机运行结果是错误的,改用6.14版后正常。

来源:网络(版权归原著作者所有)

围观 547

页面

订阅 RSS - 仿真工具