打印
[技术问答]

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

[复制链接]
1399|9
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
侣行天下|  楼主 | 2015-10-13 15:25 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

支持调试芯唐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窗口;在离开调试器运行时,

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


沙发
侣行天下|  楼主 | 2015-10-13 15:26 | 只看该作者

二、调试指南

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

软件:

  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.

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

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



使用特权

评论回复
板凳
侣行天下|  楼主 | 2015-10-13 15:27 | 只看该作者

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

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

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

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


  

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

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、寄存器等这些调试动作了。下图是进入调试模式的窗口:


  

使用特权

评论回复
地板
侣行天下|  楼主 | 2015-10-13 15:28 | 只看该作者

三、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窗口了。

是不是很简单:)



使用特权

评论回复
5
gejigeji521| | 2015-10-13 17:21 | 只看该作者
在Project菜单上点Download and Debug.
不出意料,程序将运行到main停下来,等待用户调试。
最后的图片挂了。

使用特权

评论回复
6
Beckham_Owen| | 2015-10-15 09:15 | 只看该作者
现在的CMSIS-DAP就可以实现串口吧

使用特权

评论回复
7
稳稳の幸福| | 2015-10-15 18:59 | 只看该作者
不知道可以通过U盘下载不可以,现在好多开发板提供U盘下载方式。

使用特权

评论回复
8
DreamofOven| | 2015-10-15 20:39 | 只看该作者
IAR EWARM + Nu-Link调试器组合,除支持基本的程序烧入、调试、断点、寄存器和内存访问等功能

使用特权

评论回复
9
mintspring| | 2015-10-15 22:10 | 只看该作者
只能使用试用版调试,免费版会因为文件大不支持编译的。

使用特权

评论回复
10
quray1985| | 2015-10-16 09:07 | 只看该作者
用Semihosting可以解决这个问题,经semihosting方式的输出函数,在调试器调试时,可以将printf打出的信息显示在IAR的Terminal窗口;在离开调试器运行时,则可以打印到实际的物理设备。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

30

主题

265

帖子

0

粉丝