支持调试芯唐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.

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

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

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

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

三、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系列芯片指南相关推荐

  1. IAR Systems全面支持芯驰科技9系列芯片

    2022年6月17日,嵌入式开发软件工具和服务提供商IAR Systems日前于上海宣布:其最新发布的IAR Embedded Workbench for Arm 9.30版本已全面支持芯驰科技9系列 ...

  2. iar升级芯片库_IAR 发布支持ARM Cortex系列的开发工具包

    2009年9月, 瑞典乌普萨拉,IAR Systems正式推出支持Cortex-M系列芯片的IAR Embedded Workbench.IAR Embedded Workbench for Cort ...

  3. 新唐ARM®Cortex™-M0特点总结

    ARM®CortexTM-M0特点: 主频50mhz主频,0.9DMIPS/MHz(相当于8位和16位产品的2-4倍) 小的处理内核,系统和存储器,可以降低器件成本 完善的电源管理(睡眠,深度睡眠和深 ...

  4. 如何使用FT2232H适配器和开源调式工具OpenOCD对ARM Cortex M7系列MCU进行SWD接口调试

    该篇幅介绍如何使用FT2232H适配器和开源调式工具OpenOCD对ARM Cortex M系列MCU进行SWD接口调试? 如何连接FT2232HL Debuger Adapter和目标板的的SWD调 ...

  5. 基于Cortex M0+的STM32L0系列简介

    L0系列是意法半导体于2014年新推出的超低功耗的MCU,基于ARM Cortex M0+内核.目前有STM32L0x1,STM32L0x2,STM32L0x3三个子系列,默认主频为32M,RAM都是 ...

  6. 32位ARM®Cortex®-M0+内核单片机 XL32F003系列MCU

    XL32F003系列微控制器采用高性能的32位ARM®Cortex®-M0+内核,宽电压工作范围的MCU.嵌入高达64 Kbytes flash和8 Kbytes SRAM存储器,最高工作频率32 M ...

  7. 一步一步学FRDM-KE02Z(一):IAR调试平台搭建以及OpenSDA两种工作模式设置

    摘要:FRDM-KE02Z是飞思卡尔公司较为新的微控制器,学习和开发资料较少.从本篇开始会陆续介绍其相关的开发流程,并完成一个小型的工程项目.这是本系列博客的第一篇,主要介绍开发环境IAR for A ...

  8. hardfault常见原因_XMC实验分享之四十八: Cortex M0的Hard Fault发生原因

    凡是在Cortex M系列内核上写过程序的程序员, 没有不知道Hard Fault的. 大多数程序出现问题的表现就是进入Hard Fault. 但是进入Hard Fault的原因是甚么, 为了查明这个 ...

  9. 基于安路FPGA的Cortex M0移植【FPGA】

    基于安路FPGA的Cortex M0移植 这其实是今年上半年参加集创赛安路科技杯时候做的内容,当时忙着考研复习大概做了个框架参赛,没想到还混到一个分赛区二等奖加一次公费旅游,现在保研后闲着写点博客记录 ...

  10. 新塘系列linux_身边的新塘+M0系列总结

    本帖最后由 Ketose 于 2017-4-21 16:55 编辑 NUC1xx系列是32位的内嵌ARM Cortex-M0核的微控制器 ,适用于工业控制和需要丰富的通信接口的应用领域.ARM Cor ...

最新文章

  1. 怎么写shell脚本才能不耍流氓?
  2. nmake构建Geos库
  3. 复杂网络社区结构划分方法
  4. PHP对抗web扫描器的脚本技巧
  5. 不完整类型(partial type)
  6. Android新手之旅(15) Win7下配置遇到的问题
  7. Java并行任务框架Fork/Join
  8. HALCON示例程序rim.hdev轮圈孔检测提取字符
  9. 网构软件-Internetware
  10. linux libasan.so,Address Sanitizer 用法
  11. HDU-一个人的旅行(最短路)
  12. 简单快速部署nexus3私服
  13. VUE 项目如何快速优化?| 原力计划
  14. GitHub:攻击者正在利用被盗 OAuth 令牌攻击数十家组织机构
  15. paip.php调试不能显示局部变量内容w/ xdebug
  16. 虚拟机下安装MSDN简体中文版win98SC_WIN98SE.exe
  17. 数据分析 超市条码_超市卖场管理四要素!走好千里之行的第一步!
  18. C语言实现线性表的链式存储结构
  19. 数学分析教程(第三版)读后感
  20. 彻悟人生555句金玉良言

热门文章

  1. 箱形图、盒须图、盒式图、箱线图
  2. verilog符号 与或非 异或_与非门、或非门、异或门、同或门的逻辑表达式和逻辑符号怎么写...
  3. Mac 移动硬盘没有推出,再插上不显示移动硬盘解决办法
  4. Python常用音频库
  5. 工业相机和镜头基础知识(转载)
  6. com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Table doesn't exist
  7. USB手机数据线充电线电源线出口办理CE认证的流程
  8. Siri 和谷歌竟然暗藏《复联4》彩蛋!
  9. nginx做反向代理网站加载验证码图片不出来
  10. 电脑版的微信怎么打开连接到服务器地址,电脑端浏览器打开微信限制页面的方法...