用IAR调试芯唐Cortex-M0系列芯片指南
支持调试芯唐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系列芯片指南相关推荐
- IAR Systems全面支持芯驰科技9系列芯片
2022年6月17日,嵌入式开发软件工具和服务提供商IAR Systems日前于上海宣布:其最新发布的IAR Embedded Workbench for Arm 9.30版本已全面支持芯驰科技9系列 ...
- iar升级芯片库_IAR 发布支持ARM Cortex系列的开发工具包
2009年9月, 瑞典乌普萨拉,IAR Systems正式推出支持Cortex-M系列芯片的IAR Embedded Workbench.IAR Embedded Workbench for Cort ...
- 新唐ARM®Cortex™-M0特点总结
ARM®CortexTM-M0特点: 主频50mhz主频,0.9DMIPS/MHz(相当于8位和16位产品的2-4倍) 小的处理内核,系统和存储器,可以降低器件成本 完善的电源管理(睡眠,深度睡眠和深 ...
- 如何使用FT2232H适配器和开源调式工具OpenOCD对ARM Cortex M7系列MCU进行SWD接口调试
该篇幅介绍如何使用FT2232H适配器和开源调式工具OpenOCD对ARM Cortex M系列MCU进行SWD接口调试? 如何连接FT2232HL Debuger Adapter和目标板的的SWD调 ...
- 基于Cortex M0+的STM32L0系列简介
L0系列是意法半导体于2014年新推出的超低功耗的MCU,基于ARM Cortex M0+内核.目前有STM32L0x1,STM32L0x2,STM32L0x3三个子系列,默认主频为32M,RAM都是 ...
- 32位ARM®Cortex®-M0+内核单片机 XL32F003系列MCU
XL32F003系列微控制器采用高性能的32位ARM®Cortex®-M0+内核,宽电压工作范围的MCU.嵌入高达64 Kbytes flash和8 Kbytes SRAM存储器,最高工作频率32 M ...
- 一步一步学FRDM-KE02Z(一):IAR调试平台搭建以及OpenSDA两种工作模式设置
摘要:FRDM-KE02Z是飞思卡尔公司较为新的微控制器,学习和开发资料较少.从本篇开始会陆续介绍其相关的开发流程,并完成一个小型的工程项目.这是本系列博客的第一篇,主要介绍开发环境IAR for A ...
- hardfault常见原因_XMC实验分享之四十八: Cortex M0的Hard Fault发生原因
凡是在Cortex M系列内核上写过程序的程序员, 没有不知道Hard Fault的. 大多数程序出现问题的表现就是进入Hard Fault. 但是进入Hard Fault的原因是甚么, 为了查明这个 ...
- 基于安路FPGA的Cortex M0移植【FPGA】
基于安路FPGA的Cortex M0移植 这其实是今年上半年参加集创赛安路科技杯时候做的内容,当时忙着考研复习大概做了个框架参赛,没想到还混到一个分赛区二等奖加一次公费旅游,现在保研后闲着写点博客记录 ...
- 新塘系列linux_身边的新塘+M0系列总结
本帖最后由 Ketose 于 2017-4-21 16:55 编辑 NUC1xx系列是32位的内嵌ARM Cortex-M0核的微控制器 ,适用于工业控制和需要丰富的通信接口的应用领域.ARM Cor ...
最新文章
- 怎么写shell脚本才能不耍流氓?
- nmake构建Geos库
- 复杂网络社区结构划分方法
- PHP对抗web扫描器的脚本技巧
- 不完整类型(partial type)
- Android新手之旅(15) Win7下配置遇到的问题
- Java并行任务框架Fork/Join
- HALCON示例程序rim.hdev轮圈孔检测提取字符
- 网构软件-Internetware
- linux libasan.so,Address Sanitizer 用法
- HDU-一个人的旅行(最短路)
- 简单快速部署nexus3私服
- VUE 项目如何快速优化?| 原力计划
- GitHub:攻击者正在利用被盗 OAuth 令牌攻击数十家组织机构
- paip.php调试不能显示局部变量内容w/ xdebug
- 虚拟机下安装MSDN简体中文版win98SC_WIN98SE.exe
- 数据分析 超市条码_超市卖场管理四要素!走好千里之行的第一步!
- C语言实现线性表的链式存储结构
- 数学分析教程(第三版)读后感
- 彻悟人生555句金玉良言
热门文章
- 箱形图、盒须图、盒式图、箱线图
- verilog符号 与或非 异或_与非门、或非门、异或门、同或门的逻辑表达式和逻辑符号怎么写...
- Mac 移动硬盘没有推出,再插上不显示移动硬盘解决办法
- Python常用音频库
- 工业相机和镜头基础知识(转载)
- com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Table doesn't exist
- USB手机数据线充电线电源线出口办理CE认证的流程
- Siri 和谷歌竟然暗藏《复联4》彩蛋!
- nginx做反向代理网站加载验证码图片不出来
- 电脑版的微信怎么打开连接到服务器地址,电脑端浏览器打开微信限制页面的方法...