ULINK2_用户指南_中文_使用说明
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
啊实打实大师的ULINK2用户指南
Table Of Contents
1. 概述 (2)
1.1 工具包 (2)
1.2 特性 (3)
1.3 支持的设备 (3)
1.4 支持的协议 (4)
1.5 软件需求 (5)
1.6 局限性 (5)
1.7 技术参数 (5)
2. 硬件描述 (6)
2.1 USB 接口 (6)
2.2 LED 指示灯 (7)
2.3 跳线 (7)
2.4 目标连接器 (8)
2.5 JTAG 接口电路图 (10)
2.6 启动顺序 (12)
2.7 重启顺序 (12)
3. 安装及使用 ULINK2 (13)
3.1 连接 ULINK2 (14)
3.2 安装驱动 (14)
3.3 配置μVision (15)
3.3.1 调试驱动配置 (15)
3.3.2 设置Flash 下载 (18)
3.4 下载到 Flash (27)
3.5 调试程序 (28)
3.6 链接多目标 (28)
4. 实时代理 (30)
4.1 添加实时代理 (30)
4.1.1 给工程添加 RTA 文件 (31)
4.1.2 配置实时代理 (31)
4.1.3 修改 STARTUP.S 文件 (32)
4.1.4 测试实时代理 (33)
4.2 添加 I/O 重定向 (34)
4.2.1 添加 RETARGET.C (34)
4.2.2 配置 RETARGET.C (34)
4.2.3 测试重定向 (36)
4.3 API 函数 (36)
4.4 接口自定义硬件 (37)
5. Addenda (38)
5.1 ULINK2: Configuring the Real-Time Agent (38)
1. 概述
概述
Keil ULINK2 USB-JTAG 适*配器通过USB 端口将*PC机与目标硬件(经JTAG 或 OCDS)连接起来,可以实现:
•下载程序到目标硬件上进行测试;
•对许多设备(See 1.3) 的片上 FLASH 存储器进行编程;
•对许多目标系统的外部 FLASH 存储器进行编程。
ULINK2 适配器
Keil µVisio* IDE/调试器是通过*LINK2 在目标硬件上创建、下载和测试嵌入式应用程*序的前端。
1.1 工具包
工具包
ULINK2 USB-JTAG 适*配器分为两种单独的配置:
•标准产品*
这是 ULINK2 的标准产品。
此产*品包含:
o ULINK2 USB-JTAG 适配器;
o4根目标适配器线(用于ARM 、 µPSD 、 C16x 、 XC16x 和 C8xx 设备);
o一根 USB 线;
o Keil 评估工具 CD-ROM 。
•特定芯片产品
这是ULINK2 的定制产品,它向*许多芯片买主提供评估板。
和标准产品的不同之处在于其缺少附加目标适配器线。
*
1.2 特性
•由USB 接口提供电源和快速 PC 通讯;
•使用片上调试接口进行实时内电路仿真;
•通过片上调试接口对 Flash 进行编程;
•三个 LED 显示 RU*、COM 和 USB 状态。
*
1.3 支持的设备
支持的设备
ULINK2 支持很多公司的设备。
当前列表中的支持的设备都可用。
*
•Analog 设备 (ARM7/ARM9/Cortex-M3 系列)
ADuC7019, ADuC7020, ADuC7021, ADuC7022, ADuC7024, ADuC7025, ADuC7026,
ADuC7027, ADuC7032, ADuC7033, ADuC7128, ADuC7129
•Atmel (ARM7/ARM9/Cortex-M3 系列)
AT91C140, AT91F40416, AT91F40*16, AT91FR40162, AT91FR4042, AT91FR4081,
AT91M40400, AT91M40800, AT91M40807, AT91M42800A, AT91M43300,
AT91M55800A, AT91M63200, AT91R40008, AT91R40807, AT91RM3*00, AT91RM9200, AT91SAM7*1, AT91SAM7A2, AT9*SAM7*3, AT91SAM7S128, AT*1SAM7S256,
AT9*SAM7S32, AT91SAM7S64, AT91SAM7SE256, AT91SAM7SE32,
AT91SAM7SE512, AT91SAM7X128, AT91SAM7X256* AT91SAM7XC128,
AT91SAM7XC256, AT91SAM9260, AT91SAM9261, AT91SAM*263
•Freescale Semiconductor (ARM7/ARM9/Cortex-M3 系列)
MAC7101, MAC7104, M*C7105, MA*7106, MAC7111, MAC7112, *AC7114, MAC7115, MA*7116, MAC7121, MAC7122, MAC7124, MAC7125, MAC7126, MAC7131,
MAC7134, MAC7135, MAC7136, MAC7141, MAC7142, MAC7144
•Infineon (8051 系列)
TLE7809, TLE7810, TLE7824, TLE7826, XC856-13FF, XC856-16FF, XC856-9FF,
XC86*-1FR, XC8*6-2FR, XC866-4FR, XC886-6FF, XC886-8FF, XC886C-6FF,
XC886C*8FF, XC886CLM-6FF* XC886CLM-8FF, XC886CM-6FF, XC886CM-8FF,
XC886LM-6FF, XC886LM-8FF, XC888-6FF, XC888-8FF, XC888C-6FF, XC888C-8FF,
XC888CL*-6FF, XC8*8CLM-8FF, XC888CM-6FF, XC888CM-8FF, XC888LM-6FF,
XC888LM-8FF
•Inf*neon (C16x/ST10/XC16x 系列)
XC16*CJ-1*F, XC161CS-32F, XC164CM-8F, XC164CS-16F, XC164CS-16R,
XC164CS-32F, XC164CS-32R, XC164CS-8F, XC164CS-8R, XC16*D-16F, XC164D-*2F, XC164LM-8F, XC164S-32F, XC164SM-4F, XC164SM-8F, XC164TM-4F, XC164TM-8F, XC167CI-16F, XC167CI-32F
•Luminary Micro (ARM7/ARM9/Cortex-M3 系列)
LM3S101, LM3*102, LM3S301, *M3S310, LM3S315, LM3S316, LM3S317, LM3S*28,
LM3S601, LM3S61*, LM3S611, LM3*612, LM3S613, LM3S6*5, LM3S617, LM3S618, LM3S628, LM3S801, LM3S811, L*3S812, LM3S815, LM3*828
•NXP (由 Ph*lips 建立) (ARM7/ARM9/C*rtex*M3 系列)
LPC2101, LPC2102, LPC2103, LPC2*04, LPC2105, LPC2106, LPC2114, LPC2119,
LPC2124, *PC2129, LPC2131, LP*2132, LPC2134, LPC2136, LPC2138, LPC2141,
LPC2142, LPC*144, LPC2146, LPC21*8, LPC2194, LPC2210, LPC2212, LPC2214,
LPC2220, L*C2290, LPC2292, LPC2294, LPC2364, *PC2366, LPC2368, LPC2378,
LPC2468, LPC2470, LPC2478, L*C288*, LPC2888, LPC*180
•OKI (ARM7/ARM9/Cortex-M3 系列)
ML674000* ML674001, *L674002* *L674003, *L675*01, ML675002, *L675003*
ML67Q4050, ML67Q4051, ML67Q4060, ML67Q4061, ML696201, M*69Q6203•Samsung (ARM7/ARM9/Cortex-M3 系列)
S3C2410A, S3C2440A, S3C44B0X, S3C4510B
•Sharp (ARM7/ARM9/Cortex-M3 系列)
LH75400, LH75401, LH75410, LH75411
•STMicroelectronics (8051 系列)
uPSD3212A, uPSD3212C, uPSD3212CV, uPSD32*3B, uPSD3233BV, uPSD3234A,
uPSD3234BV, uPSD3253B, uPSD3253BV, uPSD3254A, uPSD3254BV, uPSD3312D,
uPSD331*DV, uPSD3333D, uPSD3333DV, uPSD3334D, uPSD3334DV, uPSD3354D,
uPSD3354DV, uPSD3422E, uPSD3422E*, uPSD3433E, uPSD3433EV, uPSD*434E,
uPS*3434*V* uPSD3454E, uPSD3454EV
•STMicroelectronics (ARM7/ARM9/Cortex-M3 系列)
STR710FZ1, STR7*0FZ2, STR711FR0, STR711FR1, STR711FR2, STR712FR0,
STR*12FR1, STR712FR2, STR715FR0, STR730FZ1, STR730FZ2, STR731F*0,
STR731*V1, *TR731FV2, STR735FZ1, STR735FZ2, STR736FV0, STR736FV1,
STR750FL2, STR750FV0, STR750FV1, STR750FV2, STR751FR0, STR751FR1,
STR751FR*, STR752FR0, STR752*R1, STR752FR2, STR755FR0, STR755FR1,
STR755FR2, STR755FV0, STR755FV1, STR755FV2, STR910FM32, STR910FW32,
STR*11FM42, S*R911FM44, STR912FW42, STR912FW44
•TI (ARM7/ARM9/Cortex-M3 系列)
TMS470R1A128, TMS*70R1A256, TMS470R1A288, TMS470R1A384, TMS47*R1A64, TMS470R*B1M, TMS470R1B512, TMS470R1B7*8
1.4 支持的协议
支持的协议
ULINK2 支持多种设备和通讯协议。
•A*M7 和 ARM9 设备
这些设备提供 JTAG 编程和调试信号(称为*嵌入式 ICE),连接到一个20针连接器。
•ARM Cortex-M3 设备
这些设备提供 JTAG 编程和调试信号(称*为嵌入式 ICE),连接到一个20针连接器。
•Infineon C1*x 设备
这些设备(C161U、C165H 和 C165UTAH)提供编程和调试信号(称为 OCDS 或片上
调试系统),连接到一个16针连接器。
•Infineon XC16x 设备
这些设备(XC161、XC164 和 XC167)提供编程和调试信号(称为 OCDS 或片上调试
系统),连接到16针连接器。
•Infineon XC8xx 设备
这些设备(XC866、XC886 和 XC888)提供编程*和调试信号(称为 OCDS 或片上调试系统),连接到16针连接器。
•STMicroelectronics µPSD 设*备
这些设备(µPSD33xx 和 µPSD34xx)提供 JTAG 编程和调试信号,连接到14针连接器。
以上取决于*设备和目标硬件配置,有时要连接适当的线到目标连接器(See 2.4)。
1.5 软件需求
ULINK2 JTAG 适配器需要PC安装如下版本的软件(或更新):
1.6 局限性
局限性
使用 ULINK2 来调试目标程序时会产生一些局限,大部分是由片上调试器而产生的。
•ARM7 和 A*M9 设备
这些设备上的嵌入式ICE在 Flash 存储器上至多支持2个硬件断点。
RAM 上的断点没有限制。
•ARM Cortex-M3 设备
这些设备上的嵌入式ICE在 Flash 存储器上至多支持8个硬件断点。
RAM 上的断点也
没有限制。
1.7 技术参数
参数说明提供电压由 PC 的 US* 总线提供。
XTAL 频率 12 MHz 外围设备 1 × USB 接口
1 × JTAG 接口
3 × LED(RUN、C*M、USB)
轮廓尺寸107mm x 57mm x 25mm (4.25" x 2.25" x 1.0")。
2. 硬件描述
硬件描述
下图显示了ULINK2 适配器的重要接口及硬件组成。
ULINK 适配器(内部结构)
通*常为目标系统配置 ULINK 非常简单。
但需要注意:
•设置 ULINK 配置跳线(See 2.3) 。
•正确连线到目标连接器(See 2.4) 。
2.1 USB 接口
USB 接口
ULINK2 USB 接口使用标准 USB 连接器来连接到PC。
ULINK2 由USB接口提供电源*。
ULINK2 适配器 USB 接口
2.2 LED 指示灯
LED 指示灯
ULINK2 适配器有如下 LED 指示灯。
•RUN LED 显示目标板在执行程序。
•COM *ED 显示在调试器和目标板之间存在有效传输。
•USB LED 显示正在对 ULINK 供电。
ULINK2 适配器- LED (内部结构)
2.3 跳线
跳线
*LINK2 仅有一个跳线设置:VCC。
ULINK2 适配器 - 跳线(内部结构)
VCC跳线决定* JTA* 接口的 VCC 电源来源。
•如果目标硬件为 JTAG 接口提供 VCC,则设置VCC上的跳线到ARM位置。
•如果目标硬件不为 JTAG 接口提供 *CC,则设置VCC上的跳线到3.*V位置。
2.4 目标连接器
目标连接器
在 ULINK2 内部有5个 JTAG 连接器。
这些连接器支持各种接线,以备于通过ULINK调试不同的对象。
这些连接器有:
•一个调试 ARM 的窄的(2.00mm/0.079" 针间距)20-针连接器;
•一个调试ARM 的标准(2.54mm/0.1")20-针连接器;
•一个调试 Infineon OCDS(JTAG)的16-针连接器;
•一个调试 STMicroe*ectr*nics µPS* 的14-针连接器;
•一个调试 ARM 的*10-针连接器。
连接器上的连线都可用于 ULINK2 标准*产品。
换线时确保线上标记与连接器上的第1针相对应。
UL*NK2 适配器连接器(内部结构)
ULINK2 支持 JTAG 和串行模式接口。
查阅 ULINK2 适配器连接器相应的信息,以确保其与目标硬件相匹配。
*TAG 接口
信号连接到...
TMS TMS 针 — 向 VCC 提供 100K 欧上拉电阻。
TDO TDO 针。
RTCK JTAG 返回时钟。
TDI TDI 针 — 向 VCC提供 100K 欧上拉电阻。
TRST TRST/ 针 — 向 VCC提供 100K 欧上拉电阻。
TRST 是可选项,在*一些设备上不可用,可以不连接。
TCLK T*LK 针 — 向 VCC提供 100K 欧上拉电阻。
VCC提供正电压 — 向JTAG 接口驱动器。
*ND数字地。
*ESET RSTIN/ 针 — 连接此针到目标 CPU 的(低)复位输入上。
CPUCLK CPU 时钟(依照 IEEE 标准 1149.1)。
OCDSE有效/无效 OCDS 接口(无穷特定)。
TRAP陷阱状态(无穷特定)。
BRKIN硬件插入(无穷特定)。
BRKOUT硬件突发(无穷特定)。
*JEN J*AG 生效(STMicr*electroni*s 特定)。
TSTAT JTAG ISP 状态(STMicroelectronics 特定)(可选)。
/RST Chip 复位(STMicroel*ctro*ics 特定)。
/TERR JTAG ISP 错误 (STMicroelectronics 特定)(可选)。
注意
•一些Philips LPC2000 设备含有启动 JTAG 接口的*专门针(RTCK / DBGSEL)。
如在 Philips LPC2129 上,在使能JTAG接口时,RTCK信号必须为低。
也可以在硬件上添加跳*线来实现。
串行模式接口
在串行模式中,只有 TCLK 和 TDI 针被使用。
TD* 为一个可选的跟踪数据输出针。
信号连接到...
SWDIO Data I/O 针。
为 VCC提供100K 欧上拉电阻。
SWO可选的跟踪输出针。
SWCLK时钟针。
为 V*C 提供 100K 欧上拉电阻*。
VCC提供正电压*供给 JTAG 接口驱动。
GND数字地。
RESET RSTIN/ 针 — 连接此针到目标 CPU 的(低)复位输入上。
注意
•通过USB 连线给ULINK2提供电源。
•ULINK2 运行时电压为 3.3V 。
JTAG 引脚的最高电压为 5V。
2.5 JTAG 接口电路图
JTAG 接口电路图*
下图显示了 ULINK2 的部分 JTAG 接口电路。
此图可帮助分析目标硬件的内在问题。
信号接口电路图— IC2
信号接口电路图— IC4
信号接口电路图— IC5
信号接口电路图— IC6
2.6 启动顺序
启动顺序
在对目标系统进行调试之前,ULINK2 执行一系列操作。
许多操作都依赖于在
µVision IDE 上的设置。
•如果允许启动时(See 3.3.1.3)重启(See 3.3.1.3), ULINK2 驱动 JTAG输出重启信号(*ARM JTAG 连接器(See 3.1) 上15针,OCDS 和 ST 连接器(See 3.1) 上8针),持续时间低于 50毫秒。
•ULINK2 初始化 JTA* 接口并检测芯片ID。
•如果允许启动时(See 3.3.1.3)即重启(See 3.3.1.3),则 ULINK2 执行*一个重启顺序(See
2.7)。
•ULINK2 停止设备。
•如果允许Project — Options — Debug — Load Application at Startup,则 ULINK2 下载代码到目标上并执行一*个重启顺序(See 2.7)。
•如果Project — Opt*ons — Debug — Initializ*tion File文本框包含初始*化脚本文件,则此脚本文件中的调试命令将被执行。
2.7 重启顺序
重启顺序
ULINK2 的重启顺序是与设备相关的。
对于多数设备,ULINK2发出JTAG 重启的信号(通过ARM JTAG 连接器(See 3.1) 上15针以及OCDS 和 ST 连接器(See 3.1) 上8针来实现),以试图立即停止设备。
一些 ARM 设备不支持在重启命令执行时立即停止,在UNLINK2发出停止命令前还执行指令。
对于这类设备,当ULIN*2获得控制权,*它中止CPU运行,然后通过设置 *CU 程序计数器和栈寄存器来模拟重启后立即停止。
ARM 设备副作用
重启设置 ARM 设备可能会产生意外的副作用。
如下的知识库文章对这些副作用进行了*详细描述:
•ULINK: RESET BEHA VIOUR
•ULINK: SINGLE STEP AT RESET *PPEARS TO FAIL
•ULINK: ARM DEVICE DOES NOT REACT
•U*INK: RECOVER STR71X WHEN JTAG DISABLE
3. 安装及使用 ULINK2
安装及使用 ULINK2
ULINK2 USB-JTAG 适配器易*于使用。
经过简单的配置即可建立编程环境。
•连接 ULINK2(See 3.1)
介绍ULINK2 , PC 机和目标硬件之间的连接。
•安装驱动*程序(See 3.2)
介绍如何在 PC 上安*装 USB 驱动。
•配置 µVision(See 3.3)
介绍怎样为 *Visi*n 配置目标调试和 Flash 编程选项。
配置 ULINK2 之后,即可对Flash 存储器编程和调试程序。
*详细步骤如下:
•下载到 Flash(See 3.4)
介绍如何下载程序到目标系统的 F*ash 存储器。
•调试程序(See 3.5)
介绍如何在目标硬件上调试程序。
•链*接多目标(See 3.6)
介绍如何链接多目标系统到 ULINK2上。
3.1 连接 ULINK2
连接 ULINK2
只需将 ULINK2 JTAG 的一端连接到目标硬件的 JTAG上,带 USB接口的一端连接到到 PC机上。
ULINK2 适配器与目标硬件连接
ULINK2 适配器的电缆线连接到*目标硬件的5个JTAG 接口中的一个上:
•ARM 10-针接口(1.27mm/0.05" 针间距);
•ST 14-针接口;
•OCDS *6-针接口;
•ARM 20-针接口(2.0mm/0.079" 针间*距);
•ARM 20-针接口(2.54mm/0.1" 针间距)。
ULIN*2 适配器目*标连线
有关 JTAG 信号和针分配的信息,请参阅目标连接器(See 2.4) 一节。
3.2 安装驱动
ULINK2 使用标准 Windows USB 驱动。
不需额外的或特定*的 ULINK2 驱动。
3.3 配置μVision
配置 µVision
Keil 集成开发调试环境 µVision 允许使用 ULINK2 进行:
•调试在目标硬件上运行的程序;
•下载到目标硬件上的 Flash 存储器。
必须通过配置µVision ,进而使用 ULINK2 。
•调试驱动配置(See 3.3.1)
要调试运行在目标硬件上的程序,必须配置 µVision 来使用 ULINK2 作为目标调试使用的调试器。
•Flash 下载配置(See 3.3.2)
在目标硬件上进行片上和片外 Flash 存储器编程,必须通过设置µVision 来使用适当的编程算法,这些算法是基于存储图和使用的 Flash 设备*的。
大多片上 Flash 存储器的编程算法都是自动选择的。
3.3.1 调试驱动配置
调试驱动配置
使用Options for Target工具栏按钮,并单击 Debug 选项卡来*打开调试对话框。
µVisi*n 使用目标驱动来连接、控制 Flash 下载和调试。
Use选项中选择目标驱动:
应选择与 In-Circuit Emulator(ICE)或下拉列表*中的目标调试器匹配的驱动。
注意
•ULINK2 适配器使用与 ULINK 适配器相同的驱动,以下或更高*级产品需要此设备驱动。
o MDK-ARM — V3.04
o C16* — V6.06
o C51 — V8*06
当启动调试器时,检查Load
Application at Startup和Run to
main()选项来加载应用程序,并执行
到main()函数。
连接 ULINK2(See 3.1) 适配器到 PC 上,然后点击
Settings按钮来显示目标驱动设置对话框。
Target Driver Setup(目标驱动设置)对话框由三组信息和配置设置组成:•ULINK2 USB-JTAG 适配器(See 3.3.1.1)
•JTAG 设备链(See 3.3.1.2)
•调试(See 3.3.1.3)
3.3.1.1 ULINK2 USB-JTAG 适配器
ULINK2 USB-JTAG Adapter 项显示*了 ULINK2 适配器的驱动、设备和固
件信息。
*erial No:显示了 ULINK2 适配器的序号。
当有多个适配器被连接时,使用下拉列表来选择 ULINK2 适配器。
当选中SWJ时,ULINK2 产生在 JTAG 和 Serial Wire(SW)模式之间切换的顺序。
启用SWJ同时停用SWJ。
在Port下拉列表中选择用于设备通讯的调试接口类型:JTAG或SW(串行线)。
选择SW时,ULINK2 只使*用两针用于通讯,就像目标连接器(See 2.4) - (See 2.4)串行线模式接口(See 2.4)中描述的一样。
SWJ和PORT只在使用ULINK Cortex Debugger时才有效,ULINK Cortex Debugger接口可以调试 Cortex-M1 和 Cortex-M3 设备。
Max JTAG Clock下拉列表设置用于与目标*板通讯的最高 JTAG 时钟速度。
注意:
•ULINK2 支持大多 ARM7 和 ARM9 处理器的Return Clock (RTCK)。
*RTCK 信号适应JTAG 时钟速度以达到可能的最大值。
从Max JTAG Clock下拉列表中选择
RTCK来启用此功能。
•RTCK只在提供 RTCK 针的处理器上使用。
3.3.1.2 JJTAG 设备链
JJTAG 设备链
JTAG Device Chain项显示了连接到 JTAG 接口的目标板。
ULINK2 自动地显示所有检测到的目标 IDCODE、设备名和 IR 长度。
Manual Configuration允许给未检测到的JTAG 设备重新命名。
但必须指定JTAG 设备链中每个设*备指令寄存器的长度(IR len)。
注意
•如果手动设置 ARM 处理器,则Device N*me必须为ARM7或ARM9以便识别芯片核。
有关多重目标配置的详细信息,请参阅目标链(See 3.6)。
3.3.1.3 调试
调试
Debug项控制调试启动时的高速缓存、下载以及设备*重置属性。
Cache Options在目标调试过程中,使用PC内存作为目标设备存储器的cache,从而提高了µVision 调试器的性能。
默认选中选项以达到最高性能。
•Cac*e Co*e 确保下载的程序代码不会改变。
此选项被选中时,µVisi*n 将不从目标系统中读取程序代码。
如果使用自修改代码或怀疑程序代码被重写,就不选此项。
•Cache Memory决定程序*停止时存储器显示是否被更新。
当选中时,调试器将不更新存储器显示,直到下一个单步、程序步或运行命令开始执行。
如果*想查看调试器停止运行时实际的存储器内容(如存储器映射外围数据内容),可不选此项。
Downlo*d Op*ions控制调试器启动时下载代码到目标系统。
•Verify Code Download将目标存储器的内容与装入到调试器中的应用程*序进行比较。
•下载到 Flash下载代码到所有的存储区。
选中时,调试器不下载代码到Flash Do*nload Setup 定义的 Memory Address Ranges。
Misc 选项
•若选中Use Res*t at Star*up,则当调试器启动时将给*目标发出一个重启 CPU 的命令。
若没有选中此选项,则调试器仅仅停止 CPU 到当前执行的命令。
这样将允许调试当前在目标*上执行的程序。
更多信息请查阅启动顺序(See 2.6)。
3.3.2 设置Flash 下载
设置Flash 下载
µVi*ion 使用了目标驱动器控制 Flash 下载。
选择Opti*ns f*r Ta*get — Utilities 对话框中的Use Target Driver for Flash Pr*gramming:
一般必须选择与 In-Circuit Emulator(ICE)或下拉列表中的目标调试器相匹配的驱动。
使用 ULINK 时*,为目标硬件选择适当的ULINK 驱动。
选中U*date Target before Debugging选项以确保只要调试器启动,就对
Fla*h ROM 编程。
单击Settings按钮来显示 Flash Download Setup 对*话框。
其包含三组设置:
•下载功能(See 3.3.2.1)
•RAM 算*法(See 3.3.2.2)
•编程算法(See 3.3.2.3)
3.3.2.1 下载功能
下载功能
Flash Download Setup 对话框中的Download Function项定义了当目标设备下载时(Fl*sh — Download)将发生的 Flash 操作。
必须选择一个Erase功能:
•Erase Full Chip擦除程序*下载前设备上的所有 Flash 存储;
•Erase Sectors只擦除程序下载所使用的部分;
•Do Not Erase不擦除 Flash 。
选择Program功能:
•Program 用当前 µVision 工程程序文件对 Flash ROM编程;
•Verify 将当前 µVision 工程的编程文件与Flash ROM 的内容进行比较;
•Reset and Run在下载和确认完成后,复位目标板并运行程*序。
3.3.2.2 RAM算法
RAM算法
Flash Download Setup 中的RAM for Algorithm项定义了装载执行的编程算
法的地*址空间。
通常它位于片上 RAM。
•Start为 RAM 区域的启动地址;
•Size 为 RAM 区域的长度(字节长)。
3.3.2.3 编程算法
编程算法
Flash 下载设置对话框中Programming Algorithm项包含目标硬件Flash设备的定义和它们的配置参数(大小、地址空间等等)。
µVisi*n 通过设备*配置和编程算法给每个设备执行写入操作。
默认的 µVision中包含片上 Flash 存储器的定义。
可以从列表中选择一个设备来改变它的配置细节。
通过Start和Size可以为 Flash 设备更改地址范围。
可以修改如下数值:
•Flash 设备的 Start地址。
•Flash 设备的 Size。
要添加一个新的设备(和算法),请使用Add按钮。
使用Remove可以从
列表中移除所选的设备。
当添加一个设备时,µVision 打开一个可供选择的可用算法列表。
一旦选择一个新的设备,必须指定所占用的地址空间。
虽然* µVi*ion 提供了许多标准设备,但可以为一个新设备创建新的编程算法(See 3.3.2.5)。
3.3.2.4 提供的算法
提供的算法
本章中的页面列出了*EIL\ARM\FLASH文件夹中*可用的 Flash 编程算法。
算法通过在Project — Options for Target — Utilities — ULINK ARM Debugger — Settings — Add对话框中的Add按钮选中。
Flash 编程算法可用于如下供应商:*
•Analog Devices(See 3.3.2.4.1)
•AMD(See 3.3.2.4.2)
•Atmel(See 3.3.2.4.3)
•Intel(See 3.3.2.4.4)
•Luminary Micro(See 3.3.2.4.5)
•Macronics(See 3.3.2.4.6)
•NXP (由* Phi*ips 建立)(See 3.3.2.4.7)
•OKI(See 3.3.2.4.8)
•SST(See 3.3.2.4.9)
•STMicroelectronics
•Tosh*ba(See 3.3.2.4.11)
•TI(See 3.3.2.4.12)
每个编程算法的源代码存放在子文件夹中,并且可作为新的 Flash 设备的模板(如添加新算*法(See 3.3.2.5)中的所介绍)。
\KEIL\ARM\FLASH\LPC_IAP_256\测试\文件夹包含一个测试工程,它说明了如何测试一个新 Flash 编程算法。
3.3.2.
4.1 Analog 设备
Analog 设备
µVision 提供如下 F*ash 编程算法:
•ADuC702x Flash
Analog 设备 ADuC*000 片上 Flas*。
•ADuC703x xx KB Flas*
Analog 设备 A*uC703x 片上 Flash。
•ADuC712 *lash
Analog 设备 ADuC712x 片上 Flash。
•ADuC7229 Flash
Analog 设备 ADuC7229 片上 Flash。
3.3.2.
4.2 AMD
•AM29F160DB Flash
AMD AM29F160DB 外部, 16-bit Flash,底部启动块处理器。
•AM29F160DT Flash
AMD AM29F160DT 外部, 16-bit Flash,头部启动块处理器。
•AM29F320DB Flash
AMD AM29F320DB / AM29*V320*B / ST M29DW324DB / Samsung K5*3x80YT 外部, 16-bit Flash,底部启动块处*理器。
•AM29F320DB Dual Flash
AMD AM29F320DB / AM29LV320DB / *T M29DW324DB / Samsung K5A3x80YB 外部, 16-bit Flash,底部启动*块和完全32-bit BUS 处理器。
•AM29F320D* Fla*h
AMD AM2*F320*T / AM29LV320DT / ST M29DW324DT / S*msung K5A3x80YT 外部, 16-*it F*ash,头部启动块
处理器。
•AM2*F320DT Dual Flash
AMD AM29F320DT / AM29LV320DT / ST M29DW324DT / Samsung K5A3x80YT 外部, 16-bit Flash,头部启动块*
和完全32-bit BUS 处理器。
•AM29x033 Flash
AM* AM29LV033 或兼容 8-bit, 外部 Flash 处理器。
•AM29x128 Flash
AMD A*29LV*28 或兼容 16-bit, 外部 Flash 处理器。
•AM29x800BB Flash
AMD *M29x*00BB 外部, 16-bit Flash 底部启动块处理器。
•AM29x800B* Dual Flash
two AMD AM29x800BB 外部, 32-bit Flash,底部启动块和完全32-bit BUS 处理器。
•A*29x800BT Flash
AMD AM29x800BT 外部, 16-bit Flash,头部启动块处理器。
•AM29x800BT Dual Flash
two AMD AM29x800BT 外部, 32-bit Flash,头部启动*块和完全32-bit BUS 处理器。
•AM29x800DB Flash
AMD AM29x800DB 外部, 16-bit Flash,底部启动块处理器。
•*M29x800DB Dual Flash
tw* AMD AM29x800DB 外部, 32-bit Flash,底部启动块和完全32-bit BUS 处理器。
3.3.2.
4.3 Atmel
•AT29x1024 Flash
Atmel AT29x1024 外部, 16-bit Flash 处理器。
•AT49xV0*0x Flash
Atmel AT49xV080x 外部, 8-bit Flash 处理器。
•AT49xV162A Flash
At*el AT49xV162A 外部, 16-bit Flash 处理器。
•AT49xV162AT Flash
Atm*l AT*9xV162AT 外部, 16-bit *lash 处理*器。
•AT49xV16x4A Flash
Atmel AT49xV16x4A 外部, 16-bit Flash 处理器。
•AT49xV32x Flash
Atmel AT49xV32x 外部, 16-bit Flash 底部启动块处理器。
•AT49xV32xT Flash
Atmel AT49xV32xT 外部, 16-*it F*ash 头部启动*块处理器。
•AT49xV32xT_2 Dual Flash
two Atmel AT49xV32xT_2 外部, 32-bit Flash 头部启动块和完全32-bit BUS 处理器。
•AT49xV32x_2 Dual Flash
two Atmel AT49xV32x_2 外部, 32-bit Flash 底部启动块和完全*32-b*t BUS 处理器。
•AT49xV6416 Flash
Atmel AT49xV6416 16-bit, 外部 Flash。
•AT*1SAM7A3 Flash
Atmel AT91SAM7A3 片上 Fl*sh。
•AT91SAM7S_32 Flash
Atmel AT91SAM7Sx32, Atmel AT91SAMXx32 片上 Flash。
•AT91SAM7S_64 Flash
Atmel AT91SAM7Sx64, Atmel AT91SAMXx64 片上 Flash。
•AT91SAM*S_12* Flash
Atmel AT91SAM7Sx128, Atmel AT91*AMXx128 片上* Flash。
•AT91SAM7S_256 Flash
Atmel AT91SAM7Sx256, Atmel AT91SAMXx256 片上 Flash。
•AT91SAM7_32 Flash
Atmel AT91SAM7x32 片上 Flash。
•AT91SAM7_64 Flash
Atmel A*91SA*7x64 片上 Flash。
•AT91SAM7_128 Flash
Atmel AT91SAM7x128 片上 Flash。
•AT91SAM7_256 Flash
Atmel AT91SAM7x256 片上 Flash。
3.3.2.
4.4 Intel
•RC28F320J Flash
Intel *C28F*20J,Intel E28F320J 16-bit,片上 Flash。
•RC28F640P30B Flash
Intel TE/JS/PC/RC28F640P30B *6-bi,片上 Flash。
3.3.2.
4.5 Luminary Micro
•LM3Sxxx xxx KB Flash
Luminary Cortex-M3 处理器系列片上 Flash。
3.3.2.
4.6 Macronics
•MX29F400B Flash
Macronix MX29F400B 16-bit, 外部 Flash。
•*X29F400T Flash
Macronix MX29F400T 16-bit, 外部 Flash。
•MX29x800B Flash
Macronix MX29x400B 16-bit, 外部 F*ash。
•MX29x800T Flash
Mac*onix MX29x800T 16-bit, 外部 Flas*。
3.3.2.
4.7 NXP (由 Philips 建立)
NXP (由 Philips 建立)
µVision 提供如下 Flash 编*程算法:
•LPC2000 IAP xxx KB Flash
NXP LPC210x, LPC21*x, L*C212*, LPC219x, LPC221x, LPC222x, LPC229x 片上 Flash。
•LPC2000 IAP2 xxx*B Fl*sh
NXP LPC213x 新的 NXP 算法, LPC214x & new LPC210x 系列片上 Flash。
•LPC2888 1MB Flash
NXP LPC2880 新的 NXP 算法和 LPC2888 系列片上 Flash。
•LPC3180 NAND Fl*sh S*
NXP LPC3180 8-bit, 外部 Flash。
3.3.2.
4.8 OKI
•ML6xxxxx Flash
OKI ML6xxxxx ARM7 和 ARM9 处理器系列片上 Flash。
3.3.2.
4.9 SST
•SST39x*60x *lash
SST39x1601, SST39x*602, SST39x160 连续 16-bit, 外部 Flash。
•SST39x200A Flash
SST39*200A 16-bit, 外部 Flas*。
•SST39x320x Flash
SST39x3201, SST39x3202 连续 16-bit, 外部 Flash。
•SST39x400A Flash
SST39x400A 16*bit, 外部 Flash.
•SST3*x640x Flash
SS*39x6401, SST39x6402 连续 16-bit, 外部 Flash。
•SST39x800A Flash
SST39x800A 16-bit, 外部 Flash。
3.3.2.
4.10 STMicroelectronics
•M28W320CB Flash
STMicroelectronics M28W320CB 16-bit, 外部 Flash。
•STR71X Bank x Flash
STMicroelectronics STR71X Bank 0 和 Bank 1 片上 Flash。
•STR73X Bank x Flash
STMicroelectronics STR7*X 片上 Flash。
•STR75X Bank x Flash
STMicroelectroni*s ST*75X *ank 0 和 Bank * 片上 Flash。
•STR91x F xx2/4 Flash Bank 0
STMicroelectronics STR91xFxx2/4 Bank 0 片上 Flash, 通过 CPU 编程。
•STR91x F xx2/4 Fl*sh Bank 0 ICP
STM*croelectronics STR91xFxx2/4 *ank * 片上 Flash, 通*过 ICP编程。
•STR91x F xxx Flash Bank 1
STMicroelectronics STR91xFxxx Bank 1 片上 Flash, 通过 CPU 编程。
•STR91x F xxx Flash Bank 1 ICP
STMicroelectronics STR91xFxxx B*nk 1 片上 Flash, 通过 *CP编程。
•STR91x OTP ICP
STMicroelectronics STR91X, OTP 区通过 ICP编程。
•*TR91x User Code ICP
STMicroelectronics STR91X, 用户*代码区通过 ICP编程。
•STR91x CFG & Security ICP
STMicroelectronics STR91X, 配置区通过 ICP编程。
3.3.2.
4.11 Toshiba
•TC58FVM5B2A Flash
Toshiba TC58FVM5B2A (4MByte) 16-bit 和 32-bit 外部 *lash。
•TC58FVM6B2A F*ash
Toshiba TC58FVM6B2A (8MB*te) 16-bit, 外部 Flash。
3.3.2.
4.12 TI
µVision 提供如下 *lash 编程算法:
•TMS470xx Flash
TI TMS470 处理器片上 Flash 系列。
3.3.2.5 添加新算法
添加新算法
µVision 环境允许为新的以前不支持的设备定义附加的 Flash 编程算法。
算法将作为一个 µVision 工程被实现,该工程包含擦除和Flash编程的函数。
必须进行额外的特殊编译器和链接器设置。
配置新算法
遵循如下步骤来配置一个新的 Flash 编程算法。
1.在\KEIL\ARM\FLASH\文件夹中创建一个新的、空的子文件夹。
2.将现有的* Flash 算法的内容(如\KEIL\ARM\FLASH\LPC_IAP_256\)复制到此新
文件夹中。
将使用此工程作为新设备的模板*。
3.重新命名工程文件LPC_I*P_25*.UV2来表示新的 Flash ROM 设备名。
例如,
29F400.UV2。
然后用 µVision IDE 打开此新工程。
4.在Project — Options for Target — Output对话框中,替换所有的输*出名(如
LPC_IAP_256)为新的设备名。
5.编辑FLASHPRG.C文件并为EraseChip、EraseBlock和ProgramBlock函数创
建必须的算法代码。
可以根*据需要为算法修改Init和UnInit函*数。
6.在FLASHDEV.C文件中为FlashDevice结构体定义设备参数。
7.建立新的 Flash 编程算法。
带有*.FLX扩展名的输出文件包含新的编程算法。
它由*
工程自动复制到适当的文件夹中。
8.在 µVision 中,使用Configur* Fla*h Download对话框中的Add按钮来为 µVision
工程添加此设备(算法)。
测试*新算法
\KEIL\ARM\FLASH\LPC_IAP_256\TES*\文件夹包含了一个工程,它允许测试新 Flash 编程算法。
3.4 下载到 Flash
下载到 Flash
ULINK2 USB-JTAG 适配器支持在目标板上为 Flash 存储器编程。
首先要在
µ*ision ID*中设置ULINK*为Flash编程工具:
1.通过 USB 线连接(See 3.1) ULINK2 适配器到 PC 上,另一端连接到目*标板的
JTAG 连接器上。
注意红线与 JTAG 连接器的第1针相对*应;
2.启动电源;
3.使用Project — Options for Target —Utilities对话框配置 Flash(See 3.3.2) 存储器;
4.下载应用程序到 Flash 上。
使用Download to Flash 工具栏下载应用程序到目标设备上。
在输出窗
下的 Loading Object Code...栏显示了下载进度。
当下载完成时,下载结果显示在输出窗中。
ULINK2 USB-JTAG 适配器也可用于在目标板的 Flash ROM 或 RAM 中调试(See 3.5)程序代码。
3.5 调试程序
调试程序
按以下步骤使*用 µVision 调试器和 ULINK2 USB-JTAG 适配器来调试程序。
1.通过 USB 线连接(See 3.1) ULINK2 适配器到 PC 上,并连接到目标板的 JTAG 连
接口。
注意红线与 JTAG 连接器第1针相对应;
2.启动电源;
3.在Project — Options for Targ*t — Debug选项卡中配置调试器(See 3.3.2);
4.启动调试器。
使用Start/Stop Debug Session工具栏按钮来启动调试程序。
调试器把程序装载到目标 Flash 存储器。
输出窗下方显示了下载进度。
注意
•有关使用*调试器的详细信息可以参阅 µVision 用户指南的调试一节以及启动用户指南(\*EIL\*RM\H*P\GS*.CHM)的测试程序一节。
3.6 链接多目标
链接多目标
链接多目标或目标链*是指同时将一个 JTAG 总线上的多目*标系统连接到一个单一的 ULINK2 适配*器上。
这样 ULINK2 可对 Flash 存储器进行编程,并单独调试每*个目标系统。
但对目标系统有以下要求:
目标链接需要每个目标设备支持如下项:
•BYPASS 寄存器;
•IDCODE 指令必须紧跟在测试访问端口(TAP)复位之后执行;
•I* Code 的0位为1;
•在 CAPTURE-IR 状态,定值1必须装载到 IR 中。
设立多目标
ULINK2 为每个目标寻找一*个IDCODE(一个设备名)和一个 IR 长度,并自动建立目标。
寻找的结果显示在 ARM 目标驱动的设置对话框(Project — Options for Target — Debug — Settings)中的 JTAG 设备链中。
如果自动设置失败,可以使用Manual Configuration来设置每个设备的属性。
使用手动配置时目标设备必须有 BYPASS寄存器支持。
连接目标
连接多目标:
•通过并行连接控制信号(TMS 和 TCLK)。
•通过串行连接数据信号(*DI 和 TDO)。
在链中目标数据*输出(TDO)应该作为下个目标的输入。
注意
• ULINK2 JTAG 连接器上的 TDI 和 TDO 信号的命名可参照CPU 上信号的名称。
4. 实时代理
实时代理
ULINK2 JTAG 适配器支持 MDK-ARM 开发工具包的实时代理性能。
此特*性扩展了 µVision 调试器的能力。
调试嵌入式应用程序时,一般不能实现挂起*程序来观察或修改存储容量值。
在应用程序中添加实时代理就可以在运行时观察和修改目标存储器,而不必终止程序。
实时代理具有以下功能:
•程序运行时的存储器读写
存储器窗口和观察窗口显示程序运行时的应用程序数据。
如果观察-窗口定期更新被允许,则这些窗口自动更新。
•终端仿真
µVision 中的串行窗口通过ULINK2用户 I/O 支持终端仿真。
•连续调试输出
µVision 中的串行窗口可以用于显示调试输出(通过 RTA_printf 调试函数)。
实时代理由紧凑的C源文件实现,可添加到应用程序中。
可以编译后小于 1*5kB,优化以便最小化使用资源。
4.1 添加实时代理
添加实时代理
实时代理可以很容易添加到应用程序中。
Keil 提供模板文件,可以复制它到工程中并进行配置以满足应用程序。
此节讲述如何添加配置这些文件,从*而利于更好地工作。
共有四步:
1.为工程添加实时代理文件(See 4.1.1)。
2.配置实时代理文件(See 5.1)以满足应用程序*。
3.修改 STARTUP.S 文件(See
4.1.3)来使用外部DAbt处理程序。
4.对应用程序*进行实时代理测试(See 4.1.4)。
4.1.1 给工程添加 RTA 文件
给工程添加* RTA 文件
复制模板文件到工程文件夹中,然后添加它们到工程。
在 Project Wo*kspace 中创建一个新的组,确保这*些文件与应用程序文件相互独立。
复制模板文件到工程中
•复制C:\KEIL\ARM\RV30\RT AGENT\TEMPLATE\RT_AGENT.C 到工程目录中。
•复制*:\KEIL\ARM\RV30\RT AGENT\TEMPLATE\RT_A*ENT.H到工程目录中。
在工程中为*新组添加模板文件
•在 P*ojec* Workspace 中为这些文件创建一个新的组叫做Real-Time Agent。
•在此组中添加RT_Agent.c文件。
•右击组选择Options for Group 'Real-Time Agent'。
在C/C++表下选择Optimization Level 3。
注意在 Real-Time Agent 组文件图标的左边有三个红
点。
这些点表示文件夹选项不是*默认设置。
此时,这
些点表示将改变编译器优化级别为*3。
4.1.2 配置实时代理
配置实时代理
实时代理中包含一个配置向导来帮助开发者轻松完成不
同硬件平台的编译。
通过打开 µVision 中*的RT_AGENT.C文件访问配置向导,并点击配置向导标号来显示如下内容:
点击 Expand All 键来观察并选择如下选项:
选项
说明
Real-T*me Agent 允许或禁止实*时代理。
如果被禁止,则调用它的函数将被stub 函数代替,
这些函数返回 RTA_ERR_DISABLED 错误代码(当调用 RTA_Term 函数
时返回0)。
Hardware Type 选择使*用的硬件类型。
如果硬件不可用*,可以实现自己的硬件(与自定义硬件接口)。
Outpu* Buffer
用于从目标传送实时代理数据到主机的 缓冲的大小。
JTAG 连接较慢或数据丢失时,可增大其空间。
Size (bytes)
Enable Terminal Emu*atio*
允许或禁止终端仿真。
当不需要终端仿真时,禁止保存代码和存储空间。
Input Buffer Size (bytes)
此缓冲器用于输入*终端数据。
Ech* Characters Automatically 如果被允许,
则输入在 µVisio* 连续窗口中的字符将自动地回显。
当使用标*准库函数(如scanf())时需要允许此选项。
Block on Write 如果允许,若没有足够缓冲空间来立即发送字符,则将阻*止调用
RTA_TermPutChar() ,以防止丢失终端数据。
如*果禁止, 若没有足够缓冲空间,则调用 RTA_TermPut*har(* 时将会丢弃数据。
当被禁止时如果终端
数据丢失,可以增加输出缓冲大小来解决此问题。
4.1.3 修改 STARTUP.S 文件
修改 STARTUP.S 文件
按照如下步骤修改 STARTUP.S 文件*:
•
注释掉默认的 SWI 和 DAbt 处理程序; • 添加 EXTERNs 到SWI 和 DAbt 处理程序。