现在的位置: 首页 > 综合 > 正文

用IAR调试芯唐Cortex-M0系列芯片指南

2018年01月29日 ⁄ 综合 ⁄ 共 2469字 ⁄ 字号 评论关闭

支持调试芯唐Cortex-M0芯片的工具很多,例如在Keil环境下,可搭配Ulink2或芯唐的Nu-Link调试器进行调试;

而在IAR EWARM集成环境下,则可以搭配万利的Mlink,或搭配芯唐的Nu-Link调试器进行调试。

本文将基于IAR EWARM + Nu-Link的组合,介绍用IAR调试Cortex-M0芯片的办法。

 

一、功能介绍:

在调试之前,首先让我们先了解一下Nu-Link的功能。

Nu-Link是即插即用的调试器,USB接口,无需外接电源,即可进行调试,

并全面兼容WinXP, Vista, Win7。

IAR EWARM + Nu-Link调试器组合,除支持基本的程序烧入、调试、断点、寄存器和内存访问等功能之外,

还有其他一些有趣的功能:

1. 支持无限数量Flash断点

   Cortex-M0的硬件断点数量较少,导致运行在flash中的程序,最多只支持4个断点。

   很多情况下,仅4个断点是不够的。Nu-Link支持的Flash断点功能,采用快速修改Flash内容的方式,

   完全突破了4个断点的限制,让用户可以使用任意多的断点数。同时,对Flash断点采用Cache机制

   和LRU算法控制断点换出,最大程度的减少了更改Flash断点的次数。让用户在使用Flash断点时,

   几乎感觉不到调试速度变慢。

2. Semihosting输出功能

   在调试时,用户希望打出一些调试信息。然而,很多情况下嵌入式系统甚至连串口都没连接,

   更别说打印信息了。利用Semihosting可以解决这个问题,经semihosting方式的输出函数,

   在调试器调试时,可以将printf打出的信息显示在IAR的Terminal窗口;在离开调试器运行时,

   则可以打印到实际的物理设备。

   (如果您用Keil,在芯唐Cortex-M0上使用semihosting,可以参考此文:http://my.chinaunix.net/space-23480430-do-blog-id-1016.html)

 

二、调试指南

步入正题,笔者进行调试时,软硬件环境如下:

软件:

  1. Windows Vista操作系统

  2. IAR EWARM KS 5.5评估版(可以在IAR网站上下载)

  3. Nu-Link for IAR驱动:Nu-Link_IAR_Driver 1.02.exe

硬件:

  1. Nu-Link 调试器

  2. NUC140开发板

 

上述2,3的软件安装时,都按照默认路径安装。

安装完成后,在Nu-Link的安装目录下有一个例子工程目录:

C:\Program Files\Nuvoton Tools\Nu-Link_IAR\Samples

我们拿其中的PWM工程做演示。

由于Vista下面该目录不能随意写,先将该工程复制到另外可写的目录,

于是我们复制到 W:\Nuvoton\PWM 下使用。

 

第一步,双击打开工程 W:\Nuvoton\PWM\PWM.eww

这时候IAR程序将启动,显示找不到调试器驱动

用IAR调试芯唐Cortex-M0系列芯片指南(转载) - kimzz - ghx-1的博客
 

先不用管它,点击一系列“确定”后,工程最终被装载进IAR.

紧接着,我们开始检查工程的配置,点击菜单的Project => Options,或者用快捷键(Alt F7),

 

将进入工程的配置对话框:

用IAR调试芯唐Cortex-M0系列芯片指南(转载) - kimzz - ghx-1的博客
 

这个配置对话框里,有一项需要修改:

点左侧的Third-Party Driver, 右侧的IAR debugger driver, 需要重新设定,

改成Nu-Link实际的安装路径 

   C:\Program Files\Nuvoton Tools\Nu-Link_IAR\Nu-Link_IAR.dll

用IAR调试芯唐Cortex-M0系列芯片指南(转载) - kimzz - ghx-1的博客
 

另有有几项需要特别留意,检查是否设定正确。

1. 点左侧的Debugger, 在右侧出现的Setup标签页里,下面的Driver要选"Third-Party Driver"

3. 点左侧的General Options, 在右侧出现的Target标签页里,下面的Device选 Nuvoton NUC140xE

4. 点左侧的Linker,右侧的出现的Config标签页里,勾上Override default, 选择flash烧写程序的路径,

   这个例子里我们使用 $PROJ_DIR$\config\NUC140_Flash.icf

最后点击"OK", 保存项目配置。

 

X-Hawk觉得IAR配置更新做的不太好呢,保险起见,保存完配置,

最好将IAR完全关掉,重新打开一下当前这个工程。

 

第二步,重新编译项目,在Project菜单上点Rebuild All即可,很简单。

 

第三步,确保硬件已经连接好:

Nu-Link调试器一头连在开发板上,USB一头连在电脑上。开发板上电。

 

第四部,开始调试。在Project菜单上点Download and Debug.

不出意料,程序将运行到main停下来,等待用户调试。

至此,您就可以尝试单步运行、访问memory、寄存器等这些调试动作了。下图是进入调试模式的窗口:

用IAR调试芯唐Cortex-M0系列芯片指南(转载) - kimzz - ghx-1的博客
 

三、semihosting输出

接下来,我们将程序稍微修改一下,演示下如何将调试信息打印到IAR集成环境的窗口里。

我们将main程序改成简单的输出:

int main(void)

{

  int i = 0;

  while(1)

    printf("Hello world, %d\n", i++);

}

然后重新编译(在Project菜单上点击Make 或 Rebuild All),

编译完在Project菜单上点击Download and debug运行.

开始运行进入main后,先点击菜单View 下的 Terminal I/O项,

这时候会出现一个Terminal I/O的窗口。

然后按下F5继续运行程序,您会发现printf打印的字符串,统统显示在这个Terminal I/O窗口了。

是不是很简单:)

用IAR调试芯唐Cortex-M0系列芯片指南(转载) - kimzz - ghx-1的博客
--------------------------------------------------------------------------------------------------------------------------------------

抱歉!评论已关闭.