H-JTAG
用户使用手册
WWW.HJTAG.COM
H-JTAG
用户使用手册
Copyright © 2009 WWW.HJTAG.COM All Rights Reserved
修改记录
日期
版本
改动
发布第一版本 修改版本
更正了TAP的设置说明 软件更新 软件更新
2007-10-01 A 2007-11-30 B 2008-03-03 C 2009-01-08 D 2009-04-24 E
版权声明
1. 文档中出现的JTAG表述,为IEEE-1149标准,其所有权属于国际电子电气协会;
2. 文档中出现的所有ARM标识和表述,均为ARM公司的注册商标,其所有权属于ARM公司; 3. 文档中提及的任何第三方的注册商标和产品标识,均属于第三方公司所有;
4. 如果文档当中有任何地方侵犯了您的权利和版权,请和我们联系,我们将及时修改; 5. 本文档为开放文档,用户可以在保证文档完整性的前提下,自由分发;
官方主页
HTTP://WWW.HJTAG.COM
技术支持论坛
HTTP://FORUM.HJTAG.COM
USER MANUAL Copyright © 2009 WWW.HJTAG.COM All Rights Reserved I
目 录
前言
第一章
A. 关于本手册………………………………………………………………….…………………IV B. 适合的读者………………………………………………………………….…………………IV C. 意见反馈…………………………………………………………………….…………………IV H-JTAG介绍 1.1 H-JTAG介绍………………………………………………………………………………..1-1 1.2 H-JTAG调试/烧写结构…………………………………………………………………….1-1
第二章 H-JTAG的安装和GUI 2.1 H-JTAG的安装……………………………………………………………………………..2-1
2.2 H-JTAG的卸载……………………………………………………………………………..2-3 2.3 H-JTAG的GUI……………………………………………………………………………..2-3 2.4 H-FLASHER的GUI……………………………………………………………………….2-7
第三章 H-JTAG USB仿真器
3.1 USB仿真器硬件接口…………………...…………………………………………………..3-1 3.2 安装USB仿真器驱动程序………………………………………………………………….3-2
第四章 H-JTAG的使用和配置详解 4.1 检测调试目标………………………………………………………………………………..4-1 4.2 复位调试目标………………………………………………………………………………..4-1 4.3 FLASH自动下载……………………………………………………………………………4-1 4.4 设置初始化脚本……………………………………………………………………………..4-2 4.5 USB/LPT接口选择 ............………………………………………………………………...4-3 4.6 设置JTAG…………………………………………………………………………………...4-3 4.7 设置并口……………………………………………………………………………………..4-6 4.8 设置调试目标………………………………………………………………………………..4-6 4.9 添加芯片ID………………………………………………………………………………….4-6 4.10 TAP设置………………………………………………………………………………….….4-7 4.11 H-JTAG常用选项…………………………………………………………………………..4-8
4.12 TOOLS工具 ……………………………………..…………………………………………4-9
4.13 检查软件更新……………………………………………………………………………..4-10
第五章 H-FLASHER的使用和配置详解 5.1 H-FLASHER工作流程........……………………………………………………………….5-1 5.2 H-FLASHER编程向导…………………………………………………………………….5-2 5.3 常见提示…………………………………………………………………………………….5-5 5.4 烧写实例1-AT91SAM7X256………………………………………………………….....5-6 5.5 烧写实例 2-LPC2210 + SST39VF1601……………………………………………….5-10
USER MANUAL Copyright © 2009 WWW.HJTAG.COM All Rights Reserved II
第六章
初始化脚本
6.1 初始化脚本的定义………………………………………………………………………….6-1 6.2 初始化脚本的编辑………………………………………………………………………….6-3
第七章
调试软件的配置
7.1 AXD的配置………………………………………………………………………………....7-1 7.2 RVDS的配置……………………………………………………………………………….7-4 7.3 IAR的配置………………………………………………………………………………….7-8 7.4 KEIL的配置……………………………………………………………………………….7-12
USER MANUAL Copyright © 2009 WWW.HJTAG.COM All Rights Reserved III
前 言
A. 关于本手册
H-JTAG用户使用手册简单介绍了H-JTAG和H-FLASHER的基本使用和配置,手册同时也提供了一些简单的例子供用户参考。如果用户需要更多的相关信息,请访问H-JTAG主页WWW.HJTAG.COM或技术支持论坛HTTP://FORUM.HJTAG.COM。
B. 适合的读者
如果你是一个初级用户,打算使用H-JTAG进行调试和开发,本手册可作为一个快速入门指南。如果你是高级用户,本手册可以作为参考,用户可以选择性的阅读某些章节。
C. 意见反馈
如果你发现本手册中有不正确的地方,或者有什么好的建议,请发送电子邮件至 twentyone@hjtag.com。
USER MANUAL Copyright © 2009 WWW.HJTAG.COM All Rights Reserved IV
第一章 H-JTAG介绍
1.1 H-JTAG介绍
H-JTAG是一款简单易用的的调试代理软件,功能和流行的MULTI-ICE类似。H-JTAG包括三个工具软件:H-JTAG SERVER,H-FLASHER和H-CONVERTER。其中,H-JTAG SERVER实现调试代理的功能,H-FLASHER实现了FLASH烧写的功能,H-CONVERTER是一个简单的文件格式转换工具,支持常见文件格式的转换。H-JTAG的基本结构如下图所示。
图1-1 H-JTAG软件结构
H-JTAG支持所有基于ARM7, ARM9,XSCALE和CORTEX-M3芯片的调试,并且支持大多数主流的ARM调试软件,如ADS、RVDS、IAR和KEIL。通过灵活的接口配置,H-JTAG可以支持WIGGLER,SDT-JTAG,用户自定义的各种JTAG调试小板和H-JTAG USB仿真器。同时,附带的H-FLASHER烧写软件还支持常用片内片外FLASH的烧写。使用H-JTAG,用户能够方便的搭建一个简单易用的ARM调试开发平台。H-JTAG的功能和特定总结如下:
1. 支持 RDI 1.5.0 以及 1.5.1;
2. 支持 所有ARM7,ARM9,XSCALE及CORTEX-M3芯片; 3. 支持 THUMB 以及ARM 指令;
4. 支持 LITTLE-ENDIAN 以及 BIG-ENDIAN; 5. 支持 SEMIHOSTING; 6. 支持 WIGGLER, SDT-JTAG,自定义JTAG调试板和H-JTAG USB仿真器; 7. 支持 WINDOWS 9.X/NT/2000/XP; 8.支持常用FLASH芯片的编程烧写;
9. 支持LPC2000,AT91SAM,LUMINARY和STM32F系列的片内FLASH自动下载;
1.2 H-JTAG调试/烧写结构
H-JTAG支持ARM公司的RDI接口。通过RDI接口,H-JTAG能够支持大多数主流的ARM调试软件。 调试的结构如图1-2所示。
图1-2 H-JTAG调试结构
USER MANUAL Copyright © 2009 WWW.HJTAG.COM All Rights Reserved 1-1
调试软件(AXD/RVDS/IAR/KEIL)通过RDI接口与H-JTAG SERVER进行交互。H-JTAG SERVER通过并口/USB连接JTAG仿真器。H-JTAG提供了灵活的JTAG接口设置,同时支持并口及USB接口仿真器。通过设置,H-JTAG可以支持不同类型的JTAG调试板,例如流行的WIGGLER,SDT-JTAG,用户也可以根据自己的需要使用自定义的JTAG调试板。 除了调试,用户还可以通过H-FLASHER将程序和数据烧写/下载到FLASH芯片中去。目前,H-FLASHER支持的常见的片内和片外FLASH芯片。随着软件的更新和升级,H-FLASHER支持的芯片类型也会不断的增加。在执行FLASH烧写时,H-FLASHER与H-JTAG SERVER的连接如下图所示:
图1-3 H-FLASHER与H-JTAG SERVER的连接
烧写FLASH时,H-FLASHER与H-JTAG的连接交互和调试的时候十分类似。H-FLASHER通过RDI接口与H-JTAG SERVER进行交互,以访问和控制目标开发板。根据用户提供的配置文件,H-FLASHER最终完成FLASH烧写工作。
USER MANUAL Copyright © 2009 WWW.HJTAG.COM All Rights Reserved 1-2
第二章 H-JTAG的安装和GUI介绍
本章将简单介绍H-JTAG的安装和卸载,以及H-JTAG与H-FLASHER的GUI(图形用户接口)。具体的使用和设置,请参考4-7章节。
2.1 H-JTAG的安装
用户可以从H-JTAG的主页WWW.HJTAG.COM下载最新版本的H-JTAG安装程序。一般情况下,用户下载的是一个压缩文件(RAR/ZIP)。解压后,可以得到H-JTAG的安装文件:H-JTAG.EXE。双击该文件,就可以开始进行安装。
首先,用户会看到一个欢迎页面,如图2-1所示。点击NEXT,就可以进入到安装的下一步。
图2-1 H-JTAG安装步骤1
在第二步,用户会看到H-JTAG的使用协议,如图2-2所示。请仔细阅读该协议。在同意后,请选择“I agree with the above terms and conditions”,表示接受。然后点击NEXT,就可以进入到安装的下一步。
图2-2 H-JTAG安装步骤2
在第三步,用户会看到如图2-3所示的页面。在该页面,用户可以选择H-JTAG的安装目录,或者使用默认的安装目录。选择好目录后,点击NEXT进入安装的下一步。
USER MANUAL Copyright © 2009 WWW.HJTAG.COM All Rights Reserved 2-1
图2-3 H-JTAG安装步骤3
在第四步当中,用户将会看到如图2-4所示的安装进度。该图表示安装正在进行,H-JTAG将自动安装必要的文件和驱动程序。
图2-4 H-JTAG安装步骤4
安装完成后,用户将会看到如图2-5所示的提示,表示安装完成。按照提示,点击FINISH就可以完成最后的安装。
图2-5 H-JTAG安装步骤5
USER MANUAL Copyright © 2009 WWW.HJTAG.COM All Rights Reserved 2-2
安装完成后,H-JTAG会在开始菜单和桌面上创建相应的快捷方式,如图2-6所示。
图2-6 H-JTAG快捷方式
2.2 H-JTAG的卸载
如果用户要卸载H-JTAG,请运行H-JTAG菜单下的UNSTALL程序。该程序将自动卸载H-JTAG,并删除所有的相关文件。卸载过程当中,只需要按照提示操作即可。
2.3 H-JTAG的GUI
H-JTAG运行时,用户主界面如图2-7所示。其中,(1)为H-JTAG菜单;(2)为H-JTAG工具栏;(3)为H-JTAG检测到的目标CPU的类型;(4)为目标CPU的芯片ID;(5)依次显示了当前的调试软件,RDI接口版本,TCK速度和硬件接口。
图2-7 H-JTAG主界面
H-JTAG的菜单包括了H-JTAG的所有操作和设置,而工具栏则包括了大部分常用的操作和设置。当H-JTAG检测到连接的目标开发板后,在主界面的中央部分会显示芯片的类型和其32位芯片ID。如果检测失败,或者芯片无法识别,H-JTAG将会显示UNKNOWN,提示用户H-JTAG无法检测/识别目标开放板。
USER MANUAL Copyright © 2009 WWW.HJTAG.COM All Rights Reserved 2-3
2.3.1 H-JTAG菜单介绍
FILE菜单,如图2-8所示:
图2-8 H-JTAG FILE菜单
EXIT – 退出H-JTAG。
OPERATIONS菜单,如图2-9所示:
图2-9 H-JTAG OPERATIONS菜单
RESET TARGET – 复位调试目标 DETECT TARGET – 检测调试目标 KILL CONNECTION – 断开当前连接
FLASHER菜单,如图2-10所示:
图2-10 H-JTAG FLASHER菜单
START FLASHER – 启动H-FLASHER
AUTO DOWNLOAD – 启用/禁用自动FLASH下载
SCRIPT菜单,如图2-11所示:
图2-11 H-JTAG SCRIPT菜单
INIT SCRIPT – 设置初始化脚本 AUTO INIT – 启用/禁用自动初始化
USER MANUAL Copyright © 2009 WWW.HJTAG.COM All Rights Reserved 2-4
TOOLS菜单,如图2-12所示:
图2-12 H-JTAG TOOLS菜单
UNLOCK DEBUG PORT (LUMINARY) – 解锁LUMINARY 调试接口
SETTINGS菜单,如图2-13所示:
图2-13 H-JTAG SETTINGS菜单
USB/LPT SELECTION – 并口/USB接口选择 USB JTAG SETTING – USB JTAG设置 LPT JTAG SETTING – LPT JTAG 设置 LPT PORT SETTING – 并口设置 TARGET SETTING – 调试目标设置 TARGET MANAGER – 芯片ID管理器 TAP CONFIGURATION – TAP设置
OPTIONS菜单,如图2-14所示:
图2-14 H-JTAG OPTIONS菜单
OPTIONS WINDOW – 打开选项设置主窗口 CONNECT MODE – 连接方式设置 VECTOR CATCH CONFIG – 中断捕获设置 DISABLE SEMIHOSTING – 禁用SEMIHOSTING功能 DISABLE VECTOR CATCH – 禁用中断向量捕获功能 REPORT DATA ABORT – 启用/禁用数据异常报告
USER MANUAL Copyright © 2009 WWW.HJTAG.COM All Rights Reserved 2-5
DISABLE IAR BKPT @ 0x8
HELP菜单,如图2-15所示:
– 启用/禁用IAR在地址0x8设置断点
图2-15 H-JTAG HELP菜单
H-JTAG HOME – 访问H-JTAG主页 CHECK UPDATE – 检查更新 AUTO UPDATE – 禁用/使能自动检查更新 USER MANUAL CN – 打开中文用户手册 USER MANUAL EN – 打开英文用户手册 ABOUT H-JTAG – 关于H-JTAG
2.3.2 H-JTAG工具栏介绍
H-JTAG工具栏包括了菜单中使用频率比较高的大部分操作,方便用户使用。H-JTAG的工具栏如下图所示。
图2-16 H-JTAG工具栏
工具栏上每个按钮的功能定义如下:
复位调试目标
检测调试目标
断开当前连接
启动H-FLASHER
设置初始化脚本
LPT/USB接口选择
调试目标设置
芯片ID管理器
打开选项设置窗口
退出H-JTAG
2.3.3 H-JTAG系统托盘菜单
当H-JTAG最小化的时候,主窗口会自动隐藏来,只在系统托盘上显示H-JTAG的图标。左键单击该图标,可以恢复H-JTAG的主窗口。右键单击该图标,可以显示系统托盘菜单,其中包括了常用的一些操作和设置按钮。系统托盘菜单如图2-17所示:
USER MANUAL Copyright © 2009 WWW.HJTAG.COM All Rights Reserved 2-6
图2-17 H-JTAG系统托盘菜单
H-JTAG系统托盘菜单的功能定义如下:
RESTORE – 恢复主窗口 H-JTAG HOME – 访问主页 ABOUT H-JTAG – 关于H-JTAG OPTIONS – 选项菜单 SCRIPT – 脚本菜单 FLASHER – H-FLASHER菜单 KILL CONNECTION – 断开当前连接 DETECT TARGET – 检测调试目标 RESET TARGET – 复位调试目标 EXIT – 退出H-JTAG
2.4 H-FLASHER的GUI
H-FLASHER运行时,其主窗口如图2-18所示。其中(1)为菜单;(2)为FLASH编程向导区域;(3)为FLASH烧写/配置区域。在FLASH编程向导当中,可以选择不同的步骤。根据当前向导中的选择,配置区域会显示不同的设置。具体请参考第五章。
图2-18 H-FLASHER主界面
USER MANUAL Copyright © 2009 WWW.HJTAG.COM All Rights Reserved 2-7
2.4.1 H-FLASHER的菜单介绍
H-FLASHER的主菜单如图2-19所示:
图2-19 H-FLASHER主菜单
H-FLASHER菜单的具体定义如下: NEW – 创建新的配置文件 LOAD – 装载配置文件 SAVE – 保存当前配置文件 SAVEAS – 将当前的配置文件另存为 OPTIONS – 设置选项
EXIT – 退出H-FLASHER ABOUT – 关于H-FLASHER
2.4.2 H-FLASHER的系统托盘菜单
当H-FLASHER最小化的时候,主窗口会自动隐藏来,只在系统托盘上显示H-FLASHER的图标。左键单击该图标,可以恢复H-FLASHER的主窗口。右键单击该图标,可以显示系统托盘菜单,如图2-20所示:
图2-20 H-FLASHER系统托盘菜单
H-FLASHER系统托盘菜单的具体定义如下:
RESTORE – 恢复主窗口 ABOUT – 关于H-FLASHER EXIT – 退出H-FLASHER
2.4.3 H-FLASHER的编程向导 这个章节将简单介绍H-FLASHER的编程向导,具体的设置请参考后面的章节。编程向导总共包括五个步骤与一个帮助部分。下面我们一起看看每个步骤的设置。
(1)Flash Selection
Flash Selection是编程向导中的第一步,如下图所示。在这一步,用户需要确定烧写的目标芯片是什么。H-FLASHER支持的的所有FLASH芯片都按照生产厂商分类列表。当用户选定一块片子的时候,右边会显示该芯片的基本信息,例如芯片类型,容量和ID等。
USER MANUAL Copyright © 2009 WWW.HJTAG.COM All Rights Reserved 2-8
图2-21 H-FLASHER编程向导-Flash Selection
(2)Configuration
Configuration是编程向导中的第二步,如下图所示。在这一步,用户需要设置基本的信息,例如FLASH芯片的位宽,FLASH的起始地址,RAM/SDRAM的起始地址,外部晶振的频率,初始化TCK和编程TCK等。这些都是必须的信息,H-FLASHER会根据这些信息来完成FLASH烧写。如果这个步骤中的设置框为灰色,说明对于当前选择的FLASH芯片来说,这些信息都是固定的,不需要用户提供。对大部分的片内FLASH而言,这些信息都是固定的,基本不需要用户提供。
图2-22 H-FLASHER编程向导-Configuration
USER MANUAL Copyright © 2009 WWW.HJTAG.COM All Rights Reserved 2-9
(3) Init Script
Init Script是编程向导中的第三步,如下图所示。在这个步骤当中,用户可以输入必要的初始化脚本,用以配置目标系统。在烧写的时候,H-FLASHER首先会执行用户提供的初始化脚本,以初始化目标系统。然后在根据用户提供的存储信息,对目标FLASH进行操作。对于片内FLASH而言,H-FLASHER的驱动当中已经包括了初始化,所以用户不需要提供初始化脚本。此时,脚本编辑功能会自动被禁用掉。
图2-23 H-FLASHER编程向导-Init Script
(4) Program Options Program Options编程向导中的第四步,如下图所示。在这个步骤中,用户可以根据选择的FLASH芯片和自己的需要选择不通的选项。常用的选项包括复位,二次验证和加密等。
图2-24 H-FLASHER编程向导-Program Options
USER MANUAL Copyright © 2009 WWW.HJTAG.COM All Rights Reserved 2-10
(5) Programming
Programming是编程向导中的第五步。在这个步骤当中,用户可以对选定的目标FLASH芯片进行基本的操作:复位,检测、烧写、验证、擦除和检查芯片是否为空等。如果当前没有选择FLASH,用户会看到如图2-25所示的提示;如果当前选择的是NOR FLASH或是ON-CHIP FLASH,用户会看到如图2-26所示的编程界面;如果当前选择的是NAND FLASH,用户会看到如图2-27所示的编程界面。
图2-25 H-FLASHER编程向导-Programming
图2-26 H-FLASHER编程向导-Programming
USER MANUAL Copyright © 2009 WWW.HJTAG.COM All Rights Reserved 2-11
图2-27 H-FLASHER编程向导-Programming
(6) H-Flasher Help 在H-FALSHER的向导,还提供了一些基本的帮助信息,如果下图所示。这些基本的信息可以帮助用户了解每个步骤的设置。
图2-28 H-FLASHER编程向导-Help
USER MANUAL Copyright © 2009 WWW.HJTAG.COM All Rights Reserved 2-12
第三章 H-JTAG USB仿真器
本章将简单介绍H-JTAG USB仿真器的硬件接口和驱动程序的安装.
3.1 USB仿真器硬件接口
H-JTAG USB仿真器是一款采用高速USB2.0接口的高性能ARM仿真器. 仿真器采用USB接口供电, 最高TCK时钟可以达到15M Hz.
H-JTAG USB仿真器的外观如图3-1所示. 左侧为USB接口, 右侧为标准的20针JTAG接口.
图3-1 H-JTAG USB仿真器外观
仿真器上有三个LED指示灯: USB, TGT和ACT. 这三个指示灯的作用如下: A. USB – 标识USB电源, 用来识别USB是否连接;
B. TGT – 标识目标板的参考电压, 可以用来识别目标板连接是否正确; C. ACT – 动作指示灯, 如果闪动表示正在对目标系统进行JTAG操作; H-JTAG USB仿真器的采用标准的20针JTAG接口, 接口信号的定义如下:
图3-2 H-JTG USB仿真器JITAG接口信号定义
注意: H-JTAG USB仿真器只支持高速USB 2.0接口.
USER MANUAL Copyright © 2009 WWW.HJTAG.COM All Rights Reserved 3-1
3.2 安装USB仿真器驱动程序
在安装好H-JTAG程序后, 在H-JTAG的安装目录下会有一个Driver目录, 这个目录包含了H-JTAG USB仿真器的驱动程序. 下面介绍如何安装H-JTAG USB仿真器的驱动程序.
首先, 将H-JTAG USB仿真器通过USB线连到计算机的USB接口上. 计算机随后会提示发现新硬件, 并弹出如下图所示的硬件安装向导.
图3-3 新硬件安装向导
在向导中, 选择Install from a list or specific location, 如下图所示, 然后点击Next.
图3-4 选择从列表安装
USER MANUAL Copyright © 2009 WWW.HJTAG.COM All Rights Reserved 3-2
接下来, 用户会看到如下图所示的搜索路径和选项对话框.在这个对话框中, 选择Search for the best driver in these locations. 取消Search removable media, 选择Include this location in search. 同时点击Browse按钮, 指向H-JTAG安装目录下的Driver文件夹. 然后点击Next.
图3-5 搜索和选项对话框
在经过短暂的搜索后, 会弹出如下图所示的对话框,提示是否为新硬件安装H-JTAG驱动. 在下面的对话框中, 点击Continue Anyway, 继续安装.
图3-6 确认安装对话框
USER MANUAL Copyright © 2009 WWW.HJTAG.COM All Rights Reserved 3-3
接下来, 用户会看到如下图所示的对话框, 提示用户H-JTAG驱动程序已经安装完成. 点击Finish, 完成安装.
图3-7 完成安装
在完成上面的安装后, 用户可以打开硬件管理器. (我的电脑 -> 右键 -> 属性 -> 硬件 -> 设备管理). 如果硬件安装没有问题, 在设备管理里, 应该能看到H-JTAG, 如下图所示:
图3-8 查看设备管理
如果在设备列表里看不到H-JTAG, 请重新安装H-JTAG的驱动程序.
USER MANUAL Copyright © 2009 WWW.HJTAG.COM All Rights Reserved 3-4
第四章 H-JTAG的使用和配置详解
这个章节将详细介绍H-JTAG的使用和配置。在介绍的过程当中,还结合实际提供了简单的例子,以帮助用户更好的理解。
4.1 检测调试目标
在检测前,请将H-JTAG USB仿真器连接到计算机USB接口或将JTAG调试小板连接到计算机并口,并和调试目标连上。在打开H-JTAG的时候,H-JTAG会自动执行检测操作。用户也可以通过H-JTAG的菜单/工具栏进行检测。如果检测成功,H-JTAG主界面将会显示检测到的芯片类型和ID。如果检测失败,请检查H-JTAG设置和硬件连接。
4.2 复位调试目标
用户可用通过H-JTAG对调试目标进行复位。标准的JTAG接口,定义了两个独立的复位信号:系统复位(nSRST)和JTAG复位(nTRST)。通过这两个复位信号,可以分别执行系统复位和JTAG复位。用户可以选择执行系统复位、JTAG复位,或是同时执行。H-JTAG提供了相应的选项供用户选择,具体请参考H-JTAG常用选项。
提示:
因为有些并口JTAG调试板本身没有提供系统复位信号,所以不能通过H-JTAG执行系统复位,只能通过手动进行复位。有些并口JTAG调试板将系统复位和JTAG复位连接在一起,所以复位的时候相当于同时执行了系统复位和JTAG复位。
4.3 FLASH自动下载
有些ARM芯片,片内集成了FLASH和RAM,方便用户开发,省去了扩展外部存储的必要。针对这类芯片,例如LPC2000系列,AT91SAM7系列,LUMINARY CORTEX-M3系列和STM32F系列,H-JTAG提供了FLASH自动下载功能。利用这个功能,调试的时候可以将程序直接烧写到FLASH中进行调试,就象直接装载到RAM/SDRAM里调试一样。要使用自动FLASH下载功能,请用户在H-JTAG里将AUTO DOWNLOAD选项打开(图4-1),并在H-FLASHER里选择正确的目标芯片。设置好后,H-JTAG会自动根据程序下载时的地址信息,区分那些部分需要下载到RAM/SDRAM中去,那些部分需要下载/烧写到FLASH中去。需要烧写到FLASH中去的程序部分,H-JTAG会自动调用H-FLASHER完成烧写。
图4-1 FLASH自动下载设置
提示:
FLASH自动下载一般只支持片内FLASH,例如LPC2000和AT91SAM7,因为这类芯片的存储系统相对来说比较简单和固定。对于支持较复杂存储配置的芯片,例如MMU/REMAP等,建议用户先用H-FLASHER将程序烧写到FLASH中里去,然后在进行调试。
USER MANUAL Copyright © 2009 WWW.HJTAG.COM All Rights Reserved 4-1
4.4 设置初始化脚本
对于一般的系统来说,上电后都需要执行一些必要的初始化操作和配置,然后才能使用某些功能。一个最常见的初始化操作就是存储系统的配置。大部分情况下,FLASH和片内SRAM在上电后都是可以直接访问,但片外SDRAM需要预先配置,才能正确访问。很多新手往往会碰到程序下载不正确的问题,最常见的是:为什么程序下载后看到的是乱码?为什么程序会跑飞?为什么跑不到MAIN函数?很多时候,都是因为没有对存储系统进行必要的初始化造成的。执行系统初始化有两种常用的方法。第一种方法是在FLASH芯片里烧一段初始化程序,上电后自动执行。这样,系统每次上电后目标系统就自动配置好了,可以直接进行调试。第二种方法就是通过初始化脚本来实现。用户根据数据手册编辑好初始化脚本,然后通过执行脚本以对系统进行初始化。有些调试器(DEBUGGER)提供了命令行窗口,用户可以通过命令行执行脚本命令。为了方便用户,H-JTAG也提供了自动初始化的功能。要使用自动初始化功能,用户首先需要在H-JTAG里输入/装载初始化脚本,同时把AUTO INIT选项给打开(图4-3)。这样,每次调试器(DEBUGGER)连接H-JTAG的时候,H-JTAG都会自动执行用户指定的初始化脚本,对系统进行初始化。初始化脚本设置窗口如下图所示:
图4-2 初始化脚本设置
图4-3 自动初始化功能
提示:
如果用户打开了H-JTAG的AUTO INIT选项,就必须指定初始化脚本,这样H-JTAG才知道如何执行初始化。如果打开了该选项,但没有指定初始化脚本,H-JTAG会提示:“Can’t open specified init script”。
提示:
H-JTAG脚本的具体定义,以及脚本的编辑,请参考第六章。
USER MANUAL Copyright © 2009 WWW.HJTAG.COM All Rights Reserved 4-2
4.5 USB/LPT接口选择
H-JTAG支持并口调试板和USB接口H-JTAG仿真器。用户需要根据自己使用的硬件,选择LPT接口或是USB接口,如果图4-4所示。
图4-4 USB/LPT接口选择
4.6 设置JTAG
这个小节简单介绍了JTAG的接口定义,以及JTAG的配置。最后还提供了一个JTAG设置的例子,供用户参考。
4.6.1 JTAG信号
JTAG是由IEEE制定的一个测试标准,其标准号为IEEE-1149,如果用户想详细了解该标准,请参考IEEE的JTAG标准。ARM JTAG调试接口总共定义了7个基本的信号:TMS、TCK、 TDI、 TDO、 RTCK、 nSRST、 nTRST。对于ARM7/9的调试,TMS、 TCK、 TDI和TDO为必选信号,而RTCK、 nSRST、 nTRST为可选信号。
注意:
XSCALE的调试要求JTAG调试板提供nSRST和nTRST信号,并且必须是独立的。否则,无法进行调试。
4.6.2 JTAG连接
H-JTAG通过与并口/USB连接的JTAG控制器来产生JTAG信号,并通过调试目标板的JTAG接口来控制ARM处理器。典型的连接如图4-5所示。其中JTAG接口是定义在ARM目标开发板上的,一般都采用标准的20-PIN或14-PIN的JTAG接口,不需要用户设置。用户可以使用USB接口的H-JTAG仿真器,或是基于并口的JTAG调试板。如果使用并口调试板,用户需要提供并口与JTAG调试板的具体连接。具体设置请参考后面的小节。
图4-5 JTAG连接
USER MANUAL Copyright © 2009 WWW.HJTAG.COM All Rights Reserved 4-3
4.6.3 USB JTAG设置
H-JTAG USB仿真器支持不同的TCK速率(25K – 15M Hz),用户可以在USB JTAG设置对话框里选择合适的TCK速率。除了指定特定的TCK速率,用户也可以选择AUTO TCK。当选择AUTO TCK的时候,H-JTAG会通过测试选择适合目标系统的TCK速率。
图4-6 USB TCK设置
提示:
TCK速率的选择会直接影响调试速度。不同的目标系统支持的最高TCK速率不一样.。另外,TCK频率和目标系统的时钟设置也有很大的关系。用户需要根据目标系统选择合适的TCK速率,否则调试会出错。选择AUTO TCK的时候,H-JTAG有可能会设置过高的TCK速率,如果遇到此类情况,请手动选择低一些的TCK速率。
4.6.4 LPT JTAG设置
简单的并口JTAG调试板并没有固定的电路图,就算是常用的WIGGLER和SDT-JTAG,也没有固定的电路图。例如,有些WIGGLER支持系统复位信号(nSRST),而有些却没有。有些板子的系统复位信号和JTAG复位信号是独立的,有些却是连接在一起的。针对这样的情况,H-JTAG提供了灵活的并口JTAG设置,以支持不同的并口JTAG调试板。用户需要根据自己使用的JTAG调试板进行设置,明确告诉H-JTAG并口与JTAG调试板是如何连接的。
并口提供了8位数据位D0-D7,其方向为输出。我们可以利用这些数据位来输出JTAG控制信号:TMS、 TCK、 TDI、 nSRST、 nTRST。并口还提供了几个状态位,其方向为输入。我们可以利用其中的一位来读取TDO的状态。所以,JTAG的设置就是要告诉H-JTAG,并口与JTAG调试板是如何连接的,并口数据位/状态位与JTAG信号是如何一一对应的。在提供了nSRST/nTRST信号的JTAG调试板上,复位信号有可能是经过反向三极管来产生反向电平的。所以,用户也需要在配置的时候告诉H-JTAG 复位信号是否是反向的。这样H-JTAG才能正确的执行复位操作。
下面我们来看一个例子。假设并口JTAG调试板的电路图如图4-7所示。从图中我们可以发现并口和JTAG接口的连接如下,其中nTRST信号经过了一个反向三极管,而nSRST信号根本没有提供。
TMS TCK TDI TDO nTRST nSRST
并口D1 (PIN3) 并口D2 (PIN4) 并口D3 (PIN5) 并口BUSY (PIN11) 并口D0 (PIN2) 反向没有提供
X
USER MANUAL Copyright © 2009 WWW.HJTAG.COM All Rights Reserved 4-4
图4-7 并口JTAG调试板电路图
根据图4-7所示的JTAG调试板的电路图和上面的分析,JTAG设置可以采用下面的任何一种设置。下面的设置明确的告诉了H-JTAG并口和JTAG调试板是如何连接的。
图4-8 并口JTAG设置实例
上面我们给出了一个并口JTAG配置的实例,供用户参考。在实际应用当中,用户需要根据自己使用的并口JTAG调试板的电路图,进行相应的设置。 在并口JTAG设置中,用户也可以根据需要选择不同的TCK速度,设置窗口如下图所示。因为并口的速度本身比较慢,大部分情况下,用户不需要降低TCK的速度,所以建议用户选择默认设置MAX/1。
图4-9 设置并口TCK速度
USER MANUAL Copyright © 2009 WWW.HJTAG.COM All Rights Reserved 4-5
4.7 设置并口
对于大部分计算机,并口的默认地址都是0x378,但也有些计算机的并口地址不是0x378。H-JTAG提供了并口设置窗口,用户可以根据自己的情况设定并口地址。并口设置窗口如下图所示。在并口设置窗口上还有一个端口测试按钮,用户可以用它对并口做简单的读写测试。
图4-10 并口设置
4.8 设置调试目标
H-JTAG通过JTAG读取芯片的ID,并根据此ID来判断调试目标采用的是什么ARM内核。H-JTAG可以识别常用的大部分芯片。如果H-JTAG不能识别调试目标,用户可以在TARGET SETTINGS里手动指定ARM内核。TARGET SETTINGS的设置窗口如图4-11所示。
一般的ARM芯片,都同时支持大小端(Little Endian/Big Endian)。不同的方式,数据和指令的存储是完全不同的,具体的请参考数据手册。如果大小端设置不正确,调试的时候肯定会出问题。用户需要在TARGET SETTINGS里面指定调试目标的大小端。大小端的选择如下图所示:
图4-11调试目标设置
4.9 添加芯片ID
上面我们提到,H-JTAG根据芯片ID来判断芯片使用的是什么ARM内核。对于不能识别的芯片,用户可以手动指定其类型。同时,用户也可以将新的ID添加到H-JTAG的芯片列表当中去。这样H-JTAG就可以自动检测该芯片。H-JTAG提供了TARGET MANAGER,用户可以利用这个管理器添加新的芯片ID,或删除已经存在的芯片ID。要添加新的芯片ID,用户需要在管理器中输入新ID,并指定该ID对应的ARM内核。完成后,H-JTAG会自动更新芯片列表。H-JTAG的TARGET MANAGER如下图所示:
USER MANUAL Copyright © 2009 WWW.HJTAG.COM All Rights Reserved 4-6
图4-12 调试目标管理器
提示:
根据IEEE 1149标准,芯片ID为32位,并且ID的最低位必须为1。用户可以通过这点来判断芯片ID的有效性。同时,如果用户有H-JTAG不能识别的芯片,欢迎你把芯片ID和型号发给我们,我们会及时更新H-JTAG的芯片列表。
4.10 TAP设置
对大部分的ARM芯片而言,ARM JTAG扫描链是独立的。对于这样的芯片,TAP CONFIGURATION应该采用默认设置,如下图所示。下图表示在ARM扫描链的前面和后面都没有串接别的扫描链。
图4-13 TAP默认设置
有些ARM芯片的JTAG扫描链是和芯片内部集成的其它部件的JTAG扫描链串接在一起的。这样的芯片比较特殊。对于这类特殊的芯片,用户需要在TAP CONFIGURATION里进行相应的设置。例如,ST公司的STR91xF芯片,其内部的JTAG扫描链如图4-14所示。从图中可以看到,STR91xF芯片内部的扫描链包括三部分:TAP#1,TAP#2和TAP#3。其中TAP#2是ARM调试需要访问的扫描链。在ARM扫描链的前面和后面都串接了别的扫描链,他们的指令寄存器的长度分别为5-Bit和8-Bit。对STR91xF芯片而言,TAP CONFIGURATION应该设置成图4-15所示。图4-15的设置告诉H-JTAG,在ARM扫描链之前有一条别的扫描链,指令寄存器的长度为5-Bit,在ARM扫描链的后面也有一条别的扫描链,其指令寄存器的长度为8-Bit。这样,H-JTAG就知道该如何正确访问STR91xF内部的ARM调试扫描链。
USER MANUAL Copyright © 2009 WWW.HJTAG.COM All Rights Reserved 4-7
图4-14 STR91xF扫描链内部结构
图4-15 TAP设置(STR91xF)
4.11 H-JTAG常用选项
H-JTAG提供了一些常用的选项供用户选择。用户可以通过选项设置主窗口进行设置,也可以通过OPTIONS菜单进行快速设置。选项设置主窗口如下图所示。用户可以在左侧窗口选择需要设置的选项,然后在右边窗口进行设置。
图4-16 选项设置主窗口
H-JTAG提供了几个常用选项:
CONNECTION MODE设置
在调试的时候,用户可在CONNECTION MODE里选择不同的连接方式。H-JTAG支持不同的连接模式,以满足用户不同的需求。
USER MANUAL Copyright © 2009 WWW.HJTAG.COM All Rights Reserved 4-8
VECTOR CATCH设置
H-JTAG集中管理VECTOR CATCH,如图4-17所示。在VECTOR CATCH设置里,用户可以选择在调试过程中需要捕获的中断或异常。如果全局DISABLE VECTOR CATCH选项被使能,VECTOR CATCH的设置将被忽略。
图4-17 VECTOR CATCH设置
DISABLE SEMIHOSTING
Semihosting是一种辅助调试机制,用来实现主机与目标开发板的通信。但需要仿真器和目标程序的配合和支持,而且Semihosting只能用在调试上,在实际的产品当中是不能使用的。因为Semihosting会占用断点资源,建议用户在调试的时候禁用掉该功能。
DISABLE VECTOR CATCH
Vector Catch是用来捕获异常的。如果打开了该选项,并在调试软件里做了相应的设置,ARM处理器出现异常的时候,调试软件就会提示用户出现了异常。Vector Catch也会占用断点资源,建议用户在调试的时候,禁用掉该功能。
REPORT DATA ABORT
在调试的过程当中,即使在CPU停止运行的时候,也需要对存储系统进行读写,例如设置/清除断点。在对存储进行读写的时候,有可能会出现数据异常。例如,访问未定义的存储空间,或是访问受保护的存储空间。如果用户打开了REPORT DATA ABORT选项,H-JTAG在检测到数据异常的时候,将会提示用户。否则,H-JTAG只是在内部进行处理,而不会提示用户。用户可以根据自己的需要进行选择。
DISABLE IAR BKPT @ 0x8
用IAR调试的时候,IAR会在地址0x8设置一个断点,这个断点在IAR的断点列表里是看不见的。所以始终会占用一个断点资源。在FLASH内调试的时候,断点资源通常比较紧张。通过这个选项,用可以选择禁止IAR在地址0x8设置断点,从而腾出一个断点资源供调试使用。
4.12 TOOLS工具
TOOLS菜单提供了一些常用的工具。目前,暂时只支持解锁LUMINARY系列的调试端口。以后会根据用户的需求进行扩展。
USER MANUAL Copyright © 2009 WWW.HJTAG.COM All Rights Reserved 4-9
4.13 检查软件更新
通过H-JTAG的CHECK UPDATE菜单,用户可以检查是否有新的版本可以下载。如果有更新的版本,H-JTAG会提示用户下载。用户也可以访问H-JTAG的主页以获得更多的更新信息。
USER MANUAL Copyright © 2009 WWW.HJTAG.COM All Rights Reserved 4-10
第五章 H-FLASHER的使用和配置详解
这个章节详细介绍了H-FLASHER的使用和配置。同时还提供了两个配置实例,供用户参考。
5.1 H-FLASHER工作流程
H-FLASHER的工作原理很简单,其流程如图5-1所示。H-FLASHER的工作流程分为四个主要的步骤:执行初始化脚本、下载FLASH烧写驱动、检查FLASH ID和对FLASH执行用户指定的操作。如果任何一个步骤出错,H-FLASHER都会提示错误,中断当前的操作。
图5-1 H-FLASHRE工作流程
5.1.1 Execute Init Script
如果用户指定了初始化脚本,H-FLASHER首先会执行用户指定的初始化脚本。如果用户没有指定初始化脚本,或是不需要用户提供初始化脚本,H-FLASHER会直接跳过这一步。在初始化的时候,如果脚本有错或执行脚本的时候出错,H-FLASHER会停止当前的操作,并提示错误。如果初始化成功,则准备下载FLASH驱动。
5.1.2 Download Flash Driver 初始化完成后,H-FLASHER会根据用户选择的FLASH型号和位宽,查找相应的驱动。然后把驱动下载到用户指定的SRAM/SDRAM中去。如果下载成功,则进入下一步;否则停止当前的操作,并提示用户:Can’t download driver to specified address。
USER MANUAL Copyright © 2009 WWW.HJTAG.COM All Rights Reserved 5-1
5.1.3 Check Flash ID
FLASH驱动程序下载成功后,H-FLASHER会马上读取FLASH的ID。这样做有两个作用,一是看看在指定的地址上是否能访问FLASH;二是通过ID来判断用户选择的FLASH芯片型号和目标系统上的FLASH芯片是否一致。
5.1.4 Read/ Erase/ Program/ Verify/Check Blank 在前面的步骤都成功执行后,H-FLASHER就会根据用户的请求对FLASH芯片执行相应的操作,例如:读取,擦除,编程, 校验和检查FLASH是否为空。操作完成后,提示用户操作是否成功。
5.2 H-FLASHER编程向导
H-FLASHER提供了编程向导,以方便用户配置和烧写FLASH。用户可以一步一步的按照编程向导提供的五个步骤进行设置。在介绍了H-FLASHER的基本工作流程后,我们一起来看看在编程向导的每个步骤中,该如何进行设置。
5.2.1 Flash Section 在这个步骤当中,用户需要在FLASH列表里选择相应的FLASH芯片型号,并确定H-FLASHER提供的芯片信息和目标系统上的FLASH芯片的信息是一致的。因为不同的FLASH芯片定义了不同的操作命令,所以正确选择FLASH芯片型号很重要。
5.2.2 Configuration 在这个步骤当中,用户需要提供基本的配置信息,包括FLASH的位宽芯片数量,FLASH的起始地址,RAM的起始地址, 外部晶振的频率和不同阶段使用的TCK频率.
(1) 位宽和FLASH芯片数量
有些片外FLASH的读写操作同时支持不同的位宽,例如8-BIT、 16-BIT或 32-BIT。如果FLASH芯片支持不同的读写位宽,需要用户根据实际的硬件连接选择FLASH采用的位宽。因为不同的连接,FLASH工作的位宽不一样,FLASH烧写驱动也有所区别。如果目标FLASH芯片只支持一种读写方式,则不需要指定。另外, 在设计当中, 有时候也会使用2片或多片FLASH组成一个容量更大的存储模块. 对于多芯片的情况, 用户需要正确指定芯片的数量.
(2) FLASH起始地址
H-FLASHER需要知道FLASH的起始地址,才能对FLASH进行正确的操作。所以,用户需要指定FLASH的起始地址。H-FLASHER会根据用户指定的起始地址和FLASH的容量自动计算FLASH的有效地址空间:FLASH START ADDRESS ~ (FLASH START ADDRESS + SIZE – 1)。对FLASH进行写操作的时候,如果烧写目的地址不在这个范围内,H-FLASHER将会提示OUT OF RANGE的错误。大部分情况下,FLASH都可以从地址0X0访问,而不需要特别的初始化。但有些目标系统支持REMAP,可以把FLASH配置到不同的地址。对于这样的系统,用户需要保证设置的FLASH起始地址与提供的初始化脚本是相一致的,以免出错。总之,如果有需要,请提供初始化脚本,对存储系统进行初始化,保证H-FLASHER可以在用户指定的地址访问目标FLASH。
USER MANUAL Copyright © 2009 WWW.HJTAG.COM All Rights Reserved 5-2
(3) RAM起始地址
在烧写的时候,FLASH驱动需要使用4KByte的RAM空间,所以需要用户指定一段>=4KByte的RAM空间。在用户指定RAM开始地址后,H-FLASHER会把FLASH驱动下载到RAM START ADDRESS ~ (RAM START ADDRESS + 4K – 1)的范围内。FLASH驱动可以下载到片内SRAM或是片外SDRAM。如果目标系统有片内SRAM, 建议用户使用片内SRAM,因为片内SRAM的速度比外部SDRAM快。在设置初始化脚本的时候,请提供必需的初始化脚本,对存储系统进行初始化,保证用户指定的RAM空间是可以被正确访问的。
(4) XTAL
对有些芯片而言,H-FLASHER需要知道目标系统外接晶振的频率。FLASH驱动会根据用户指定的XTAL频率对系统时钟进行配置, 以获得更好的烧写速度. 在选定FLASH芯片型号后,如果XTAL对应的编辑框处于禁用状态,则说明不需要用户指定XTAL。
(5) INIT TCK和PGM TCK
INIT TCK和PGM TCK分别指定了初始化期间使用的TCK频率和在烧写过程中使用的TCK频率. 在对目标系统执行初始化之前, 目标系统支持的TCK频率可能比较低. 在对目标系统执行初始化后,(例如配置了系统时钟), 目标系统可以支持更高的TCK频率. 这样用户就可以指在不同阶段使用的TCK频率. 让H-FLASHER在初始化阶段使用较低的INIT TCK, 以顺利完成初始化操作. 在对FLASH进行操作的过程中, 使用较高的PGM TCK, 以达到更好的速度.
注意:
INIT TCK和PGM TCK设置只对H-JTAG USB仿真器有效. 并且只有在同时指定了2个TCK频率的时候生效.
5.2.3 Init Script 在这个步骤当中,用户需要提供初始化脚本,用以对目标系统进行初始化。H-FLASHER专门提供了脚本编辑窗口,用户可以添加和删除脚本,并对脚本进行排序。关于初始化脚本的具体定义和编辑,请参考第六章。
对片内FLASH而言,一般不需要用户提供初始化脚本。而对片外FLASH,一般都需要用户提供初始化脚本。初始化脚本主要有两个作用:一是设置系统时钟,这可以保证ARM处理器的运行速度;二是配置调试目标的存储系统,以保证H-FLASHER可以正确的对FLASH进行操作,同时也保证FLASH驱动可以正确下载到目标系统的SRAM/SDRAM中去。
初始化脚本直接影响到FLASH驱动是否能成功下载。如果H-FLASHER提示错误:Can’t download driver to specified address,大部分情况下都是用户没有提供初始化脚本,或是初始化脚本有问题。要提供正确的初始化脚本,要求用户对目标系统有一定的了解。建议用户仔细阅读目标芯片的数据手册,特别是存储设置部分。
提示:
在使用H-JTAG仿真器的时候, 为了提高性能, 建议用户添加系统时钟配置脚本. 这样可以有效的提高TCK时钟和FLASH烧写速度.
USER MANUAL Copyright © 2009 WWW.HJTAG.COM All Rights Reserved 5-3
5.2.4 Program Options
H-Flasher提供了些常用的选项,例如复位操作,二次验证和加密等。在这个步骤中,用户可以根据自己的需要进行选择。
注意:
这些选项只在非自动下载模式下起作用。在自动下载模式下,H-Flasher将忽略这些选项。
5.2.5 Programming 在这个步骤当中,用户可以对FLASH芯片执行以下的操作:检查FLASH及其目标系统的基本信息、对FLASH进行烧写, 擦除, 校验和检查FLASH是否为空。
(1) Reset
这个操作可以用来对目标系统执行系统复位。前提条件是用户使用的仿真器提供了系统复位信号。
(2) Check
这个操作可以读取目标系统上的FLASH的ID及其处理器的基本信息。用户可以使用Check功能来检查用户的配置是否正确,读取的目标系统的信息是否正确。
(3) Program
H-FLASHER提供了三种烧写方式供用户选择:Auto Flash Download,Intel HEX Format,和Plain Binary Format。在烧写的时候,烧写的数据/程序和目的地址都是必须的。这三种方式的唯一区别在于这些信息由哪里获得。
A - Auto Flash Download
采用这种方式的时候,用户不需要指定源文件和目的地址。要烧写的数据和烧写的目的地址都是由H-JTAG提供给H-FLASHER的。
B - Intel HEX Format
因为HEX文件本身包含了地址信息。所以,选择这种文件格式的时候,用户只需要指定HEX文件的路径,而不需要指定烧写的目的地址。H-FLASHER会自动从HEX文件中提取地址信息。
C - Plain Binary Format
Binary文件本身不包含除了程序/数据外的任何其它信息。所以,选择这种文件格式的时候,用户需要同时指定二进制文件的路径和烧写的目的地址。
(4) Verify
这个操作可以用来验证烧写是否正确. Verify操作会将FLASH的内容读取回来, 然后和用户指定的文件进行比较. 以确定烧写是否成功.
(5) Erase & Check Blank
用户可以对FLASH进行擦除和检查FLASH是否为空。在执行这两个操作的时候,用户可以选择对整块FLASH执行操作,或是通过FROM与TO下拉框选择操作的地址范围。
USER MANUAL Copyright © 2009 WWW.HJTAG.COM All Rights Reserved 5-4
(6) Read
H-Flasher还提供了读取操作,用以读取存储系统的内容。在执行读取操作的时候,用户需要同时指定开始地址和长度。长度的单位是BYTE。
5.3 常见提示
提示-1:
在设置的时候,如果有那个输入框或是下拉框是灰色的或是不可编辑的,说明该选项只有一个选择,不需要用户设定。
提示-2:
在用户配置好各个选项后,用户可以将配置保存为HFC文件。在需要的时候,可以在H-FLASHER里直接装载HFC文件,省去了每次都需要配置的麻烦。
提示-3:
烧写前,H-FLASHER会自动执行必要的擦除操作。所以用户不需要在烧写的时候对FLASH芯片先执行擦除操作。
提示-4:
FLASH擦除操作都是以块(Sector)为最小单位的,一个块的大小通常都是大于一个BYTE。为了避免数据丢失,H-FLASHER提供了自动备份和恢复机制。在执行擦除前,H-FLASHER会备份部分数据,并在烧写的时候自动恢复这部分数据。通过这个机制,可以避免烧写区域外的数据被改写。
提示-5:
烧写的时候,如果用户看到错误提示:Destination flash address is out of range,说明用户指定的目的地址不在FLASH的有效地址范围内,或是HEX文件中提取的地址不在FLASH的有效地址范围内。请用户检查地址设置是否正确,或是HEX文件的地址是否正确。
提示-6:
有些FLASH芯片,随着新版本的推出,其芯片ID有可能会更改。如果发现这种情况,请用户和我们联系,我们会提供新的FLASH驱动程序。
提示-7:
如果对FLASH进行操作的时候出错,请检查配置是否正确。如果配置正确,但还是出现错误,请和我们联系,我们将会分析问题出在那里。必要的时候,我们会提供新的FLASH烧写驱动。
USER MANUAL Copyright © 2009 WWW.HJTAG.COM All Rights Reserved 5-5
5.4 烧写实例1 – AT91SAM7X256
AT91SAM7X256是ATMEL公司的一款基于ARM7的芯片。该芯片带有256KByte的片内FLASH。下面我们将介绍利用H-FLASHER的编程向导如何来配置和烧写AT91SAM7X256。
5.4.1 Flash Selection 在向导的第一步当中,选择芯片型号。在这个例子当中,选择芯片AT91SAM7X256, 如下图所示:
图5-2 选择AT91SAM7X256
5.4.2 Configuration 在向导的第二步中,对存储进行配置。因为烧写的是AT91SAM7X256的片内FLASH,而且这块芯片的位宽、FLASH起始地址和RAM起始地址都是固定的,所以用户不需要进行设置,采用默认的值就可以了。用户也不需要指定外部晶振的频率。设置如下图所示:
图5-3 配置设置
USER MANUAL Copyright © 2009 WWW.HJTAG.COM All Rights Reserved 5-6
5.4.3 Init Script 在向导的第三步中,设置初始化脚本。因为烧写的是AT91SAM7X256的片内FLASH,而且AT91SAM7X256的烧写驱动当中已经包括了初始化部分,所以不需要用户提供初始化脚本。在这种情况下,脚本编辑的按钮全都是禁用的。如下图所示:
图5-4 设置初始化脚本
5.4.4 Program Options 在向导的第四步中,用户可以选择不同的选项。在这里,我们选择了在烧写后执行系统复位,并执行二次验证,如下图所示:
图5-5 编程选项
USER MANUAL Copyright © 2009 WWW.HJTAG.COM All Rights Reserved 5-7
5.4.5 Programming 在配置好后,在编程向导的第五步中,就可以对FLASH执行不同的操作了。首先,可以试一试CHECK操作。通过CHECK操作,用户可以大概判断前面的设置是否正确。在本例中,CHECK的结果如图5-6所示。由图中显示的信息可以看出,前面的配置是正确的。
图5-6 CHECK操作结果
下面尝试烧写一个二进制文件。在本例中,选择文件格式为二进制,源文件为C:\\TEST.bin,烧写的目的地址为0x0,设置如图5-7所示。设置好后,点击PROGRAM按钮开始烧写。烧写过程当中,用户会看到烧写文件的大小,平均烧写速度,当前的进度等信息。烧写完成后,H-FLASHER会提示烧写并验证成功,如果图5-8所示。
图5-7 烧写设置
USER MANUAL Copyright © 2009 WWW.HJTAG.COM All Rights Reserved 5-8
图5-8 烧写完成
5.4.6 保存设置 用户可以将上面的设置保存为HFC配置文件,供以后使用。在以后的使用中,可以直接在H-FLASHER里装载HFC文件,省去了每次都必须进行设置的麻烦。
USER MANUAL Copyright © 2009 WWW.HJTAG.COM All Rights Reserved 5-9
5.5 烧写实例2 - LPC2210 + SST39VF1601
LPC2210是NXP公司(前PHILIPS半导体)的一款ARM7芯片。该芯片有16KB的片内SRAM,但没有片内FLASH。该芯片有4个外部MEMORY BANK,可用用来扩展外部FLASH和外部SDRAM。在本例中,假设BANK0用来扩展外部FLASH,型号为SST39VF1601,BANK0的地址范围为:0x80000000~0x80FFFFFF;BANK1用来扩展外部SDRAM,BANK1的地址范围为:0x81000000~0x81FFFFFF。下面我们将介绍如何对SST39VF1601进行烧写。
5.5.1 Flash Selection 在向导的第一步当中,选择芯片型号。在这个例子当中,我们需要选择芯片SST39VF1601, 如下图所示:
图5-9 选择SST39VF1601
5.5.2 Configuration
在向导的第二步中,对存储进行配置。SST39VF1601只支持16-BIT模式,所以位宽采用默认设置。FLASH是利用BANK0扩展的,而BANK0的起始地址是0x80000000,所以FLASH的起始地址应该是0x80000000。在指定RAM空间的时候,我们可用使用片内SRAM或是片外SDRAM,在本例中,我们选择使用外部SDRAM。外部SDRAM是利用BANK1扩展的,而BANK1的起始地址是0x81000000,所以RAM的起始地址可以设为0x81000000。在这个例子里,用户也不需要指定外部晶振的频率。最终的设置如图5-10所示:
USER MANUAL Copyright © 2009 WWW.HJTAG.COM All Rights Reserved 5-10
图5-10 配置设置
5.5.3 Init Script 根据LPC2210的数据手册,我们需要对三个寄存器进行设置:PINSEL2@0xE002C014,BCFG0 @0xFFE00000和BCFG1@0xFFE00004。其中PINSEL2是管脚选择控制寄存器,用以确定复用管脚的功能,例如地址线和读写控制信号。而BCFGx则是对BANK0和BANK1进行配置,用以设置读写等待周期,数据位宽等。寄存器的具体定义,请参考LPC2210的数据手册。在本例中,我们需要3条初始化脚本,最终的脚本设置如下图所示。
图5-11 设置初始化脚本
USER MANUAL Copyright © 2009 WWW.HJTAG.COM All Rights Reserved 5-11
5.5.4 Program Options 在向导的第四步中,用户可以选择不同的选项。在这里,我们选择了在烧写后执行系统复位,并执行二次验证,如下图所示:
Fig 5-12 编程选项
5.5.5 Programming
在配置好后,在编程向导的第五步中,就可以对FLASH执行不同的操作了。首先,可以试一试CHECK操作。通过CHECK操作,用户可以大概判断前面的设置是否正确。在本例中,CHECK的结果如下图所示。由图中显示的信息可以判断,前面的设置是正确的。
图5-13 CHECK操作结果
USER MANUAL Copyright © 2009 WWW.HJTAG.COM All Rights Reserved 5-12
下面尝试烧写一个二进制文件。在本例中,选择文件格式为二进制,源文件为C:\\TEST.bin,烧写的目的地址为0x80000000,设置如图5-14所示。设置好后,点击PROGRAM按钮开始烧写。烧写过程当中,用户会看到烧写文件的大小,平均烧写速度,当前的进度等信息。烧写完成后,H-FLASHER会提示烧写并验证成功,如果图5-15所示。
图5-14 烧写设置
图5-15 烧写完成
5.5.4 保存设置
如前面的例子一样,用户可以将上面的设置保存为HFC配置文件,供以后使用。在以后的使用中,可以直接在H-FLASHER里装载HFC文件。
USER MANUAL Copyright © 2009 WWW.HJTAG.COM All Rights Reserved 5-13
第六章 初始化脚本
这个章节将简单介绍H-JTAG定义的初始化脚本,并介绍如何利用H-JTAG/H-FLASHER的脚本编辑器编辑初始化脚本。
6.1 初始化脚本的定义
H-JTAG总共定义了4条初始化脚本:Setmem,Getmem, Delay和SoftReset,其作用分别是设置内存的值,读取内存的值, 增加延迟和执行软复位,如表6-1所示。用户可以根据自己的需要,使用任意的脚本组合对系统进行初始化。
表6-1 初始化脚本
初始化脚本 Setmem Getmem Delay SoftReset
提示:
H-JTAG目前只定义了几个简单的脚本命令,这些命令可以满足大部分的需求。但H-JTAG定义的初始化脚本有可能会根据实际的应用的需要而扩充。
下面分别介绍这个几条初始化脚本的格式。
6.1.1 Setmem Setmem是最常用的脚本。利用这个脚本,用户可以设置内存或是寄存器的值,用以完成系统的初始化。Setmem的具体格式是:
Setmem 位宽 目的地址 目标值。
Setmem - 脚本命令; 位宽 - 表示要设置的目标值的位宽,可选的位宽为8-Bit/16-Bit/32-Bit; 目的地址 - 表示的是操作的目的地址,设置的时候请根据选择的位宽保证地址是对齐的; 目标值 - 用户希望写到目的地址的值,设置的时候请根据选择的位宽输入合适的值;
例子:
Setmem 08-Bit 0x0 0x12 - 将地址0x0的值设为0x12,位宽为8-Bit Setmem 16-Bit 0x0 0x1234 - 将地址0x0的值设为0x1234,位宽为16-Bit Setmem 32-Bit 0x0 0x12345678 - 将地址0x0的值设为0x12345678,位宽为32-Bit
USER MANUAL Copyright © 2009 WWW.HJTAG.COM All Rights Reserved 6-1
脚本作用
设置内存/寄存器的值 读取内存的值 添加延迟 执行软复位
6.1.2 Getmem Getmem可以用来读取内存或是寄存器的值. 这个脚本命令主要是用在特定的场合, 例如用户在配置过程中需要读取某个地址的值. Getmem的具体格式是:
Getmem 位宽 目的地址。
Getmem - 脚本命令; 位宽 - 表示读取的目标值的位宽,可选的位宽为8-Bit/16-Bit/32-Bit; 目的地址 - 表示的是操作的目的地址,设置的时候请根据选择的位宽保证地址是对齐的;
例子:
Getmem 08-Bit 0x0 - 读取地址0x0的值,位宽为8-Bit Getmem 16-Bit 0x0 - 读取地址0x0的值,位宽为16-Bit Getmem 32-Bit 0x0 - 读取地址0x0的值,位宽为32-Bit
6.1.3 Delay Delay可以用来添加延迟。在执行初始化的时候,有时候有必要在执行完一条指令后,等待一定的时间,再执行后面的操作。这种情况下,用户可以使用Delay脚本命令。Delay的具体格式是: Delay 延迟值(单位:毫秒)
Delay - 脚本命令
延迟值 - 延迟的时间,单位是毫秒;
例子: Delay 100 - 延迟100毫秒 Delay 5000 - 延迟5000毫秒
6.1.4 SoftReset SoftReset可以用来执行软复位。该操作主要是用来复位CP15控制寄存器,用以关闭CACHE,禁用MMU等。S3C2410是三星的一款基于ARM920T的芯片,支持MMU。在将LINUX烧录到S3C2410后,LINUX会自动配置MMU,进行复杂的REMAP操作。如果用户想重新烧写FLASH,最好在初始化脚本的开头加入SoftReset命令,这样可以关闭CACHE和禁用MMU,保证目标系统的存储是用户所期望的。SoftReset的具体格式是: SoftReset (没有任何参数)
USER MANUAL Copyright © 2009 WWW.HJTAG.COM All Rights Reserved 6-2
6.2 初始化脚本的编辑
H-JTAG和H-FLASHER都提供了脚本编辑器,方便用户编辑脚本。H-JTAG和H-FLASHER的脚本编辑器界面分别如图6-1和图6-2所示。H-JTAG和H-FLASHER的编辑器是一样的,在下面的介绍中,我们将不做区分。
图6-1 H-JTAG脚本编辑器
图6-2 H-FLASHER脚本编辑器
USER MANUAL Copyright © 2009 WWW.HJTAG.COM All Rights Reserved 6-3
6.2.1 脚本编辑按钮 在脚本编辑器中,提供了4个箭头状的按钮,分别用来添加、删除、上移和下移脚本,具体定义如下:
将当前选择的脚本命令向上移动
添加一个新的脚本命令
删除当前选择的脚本命令
将当前选择的脚本命令向下移动
6.2.2 编辑脚本 对每条新脚本,用户需要先选择脚本命令,然后根据定义提供必要的参数。要添加一条新的脚本,在脚本编辑器中,单击右侧的“添加”按钮。添加新脚本后,如下图所示:
图6-3 添加新脚本
点击脚本的Cmd列,用户就可以看到如下图所示的脚本命令列表。用户可以根据需要选择命令。
图6-4 脚本命令列表
USER MANUAL Copyright © 2009 WWW.HJTAG.COM All Rights Reserved 6-4
如果用户选择的是SoftReset命令,根据定义,用户不需要在提供别的参数。SoftReset命令设置完成后,如下图所示:
图6-5 设置SoftReset脚本
如果用户选择了Delay命令,根据Delay命令的定义,用户需要在Value列里输入期望的延迟时间。Delay命令设置完成后,如下图所示:
图6-6 设置Delay脚本
如果用户选择了Setmem命令,根据Setmem命令的定义,用户需要设置位宽,目的地址和目标值。对于Setmem命令,点击Width列,可以选择位宽,如图6-7所示。选择好位宽后,用户需要在Address列和Value列分别填入目的地址和目标值。Setmem命令设置完成后如图6-8所示。
USER MANUAL Copyright © 2009 WWW.HJTAG.COM All Rights Reserved 6-5
图6-7 选择位宽
图6-8 设置Setmem脚本
如果用户选择了Getmem命令,根据Getmem命令的定义,用户需要设置位宽和目的地址。对于Getmem命令,点击Width列,可以选择位宽,如图6-9所示。选择好位宽后,用户需要在Address列填入读操作的目的地址。Getmem命令设置完成后如图6-10所示。
USER MANUAL Copyright © 2009 WWW.HJTAG.COM All Rights Reserved 6-6
图6-9 选择位宽
图6-10 设置Getmem脚本
USER MANUAL Copyright © 2009 WWW.HJTAG.COM All Rights Reserved 6-7
第七章 调试软件的配置
这个章节介绍了如何配置常用的调试软件(Debugger),以使用H-JTAG进行程序调试。本章介绍的调试软件包括:AXD、 RVDS、 IAR和 KEIL。在设置完成后,要确保调试的顺利进行,请正确连接好硬件,打开H-JTAG,并检测到调试目标。调试软件的具体使用,请参考各个软件自带的用户手册。
7.1 AXD的配置
ADS的全称是ARM DEVELOPER SUIT,是ARM公司原厂的IDE,拥有众多的用户。而AXD是ADS自带的调试软件。下面介绍如何配置AXD以配合H-JTAG进行调试。
首先,点击Options -> Configure Target菜单,如图7-1所示。
图7-1 Configure Target菜单
USER MANUAL Copyright © 2009 WWW.HJTAG.COM All Rights Reserved 7-1
接下来,用户会看到如图7-2所示的Choose Target配置窗口。
图7-2 Choose Target配置窗口
在上图所示的配置窗口中,点击Add按钮,用户会看到如图7-3所示的选择DLL文件的对话框。在对话框里选择H-JTAG安装目录下的H-JTAG.DLL,然后点击确定。
图7-3 选择H-JTAG.DLL
USER MANUAL Copyright © 2009 WWW.HJTAG.COM All Rights Reserved 7-2
确定后,用户可以看到H-JTAG已经添加到AXD里去了,如图7-4所示。在下图中,双击H-JTAG或是单击Configure按钮,用户就可以看到如图7-5所示的H-JTAG信息。在图7-4中,点击OK,AXD的配置就全部完成了。
图7-4 配置完成
图7-5 H-JTAG信息
USER MANUAL Copyright © 2009 WWW.HJTAG.COM All Rights Reserved 7-3
7.2 RVDS的配置
RVDS的全称是REALVIEW DEVELOPER SUIT,也是ARM公司原厂的IDE。下面将以RVDS2.0为例,介绍如何配置RVDS以配合H-JTAG进行调试。RVDS2.2的配置稍有不同,但基本一样。
首先,点击RVDS主界面上的“Click to connect a target”,如下图所示:
图7-6 RVDS主窗口
接下来,用户会看到如图7-7所示的Connection Control配置窗口。
图7-7 Connection Control配置窗口
USER MANUAL Copyright © 2009 WWW.HJTAG.COM All Rights Reserved 7-4
在上图的配置窗口中,单击右键,就可以看到如图7-8所示的菜单。
图7-8 添加菜单
在图7-8所示的菜单中,选择Add/Remove/Edit Devices,就可以看到如下图所示的RDI Target List窗口。
图7-9 RDI Target List窗口
USER MANUAL Copyright © 2009 WWW.HJTAG.COM All Rights Reserved 7-5
在图7-9中,选择Add DLL,用户会看到如7-10所示的Select RDI DLL文件的窗口。在这个窗口中,选择H-JTAG安装目录下的H-JTAG.DLL,然后点击确定。
图7-10 选择H-JTAG.DLL
确定后,用户会看到如图7-11所示的Create New RDI Target窗口。在这个窗口中,用户可以输入名字和简单的描述,或是采用默认值。
图7-11 Create New RDI Target窗口
USER MANUAL Copyright © 2009 WWW.HJTAG.COM All Rights Reserved 7-6
确定后,用户可以看到H-JTAG已经添加到RVDS里去了,如图7-12所示。在下图中,单击Configure按钮,用户就可以看到如图7-13所示的H-JTAG信息。在图7-12中,点击Close,RVDS的配置就全部完成了。
图7-12 配置完成
图7-13 H-JTAG信息
USER MANUAL Copyright © 2009 WWW.HJTAG.COM All Rights Reserved 7-7
7.3 IAR的配置
IAR Embedded Workbench是IAR公司出的一款针对ARM处理器的IDE。下面将介绍如何配置IAR以配合H-JTAG进行调试。
首先,在IAR中打开一个项目,然后点击Project->Options菜单,如下图所示:
图7-14 IAR Options菜单
接下来,用户会看到如图7-15所示的Options配置窗口。
图7-15 Options配置窗口
USER MANUAL Copyright © 2009 WWW.HJTAG.COM All Rights Reserved 7-8
在图7-15所示的Options配置窗口中,选择Debugger设置,并在Setup页面中,驱动选项中选择RDI。如下图所示:
图7-16 Debugger设置
然后再选择RDI设置,如下图所示。在这个页面里,用户需要指定RDI驱动的路径。
图7-17 RDI设置
USER MANUAL Copyright © 2009 WWW.HJTAG.COM All Rights Reserved 7-9
在上图中,点击Browse按钮,选择H-JTAG安装目录下的H-JTAG.DLL,如下图所示:
图7-18选择H-JTAG.DLL
在上图中,点击OK按钮,IAR的设置就完成了。设置完成后,IAR的主窗口中多了一个RDI菜单,如图7-19所示。在菜单中点击Configure,就可以看到如图7-20所示的H-JTAG相关信息。
图7-19 IAR设置完成
USER MANUAL Copyright © 2009 WWW.HJTAG.COM All Rights Reserved 7-10
图7-20 H-JTAG信息
提示:
如果用户用IAR调试的时候希望使用FLASH自动下载功能,请在IAR的Options中,请不要打开Verify Download和Use Flash Loader(s)选项。设置如下图所示:
图7-21 Verify Download设置
USER MANUAL Copyright © 2009 WWW.HJTAG.COM All Rights Reserved 7-11
7.4 KEIL的配置
KEIL FOR ARM是KEIL公司开发的IDE。下面将介绍如何配置KEIL FOR ARM以配合H-JTAG进行调试。 从H-JTAG V0.9.2版本起,H-JTAG将使用AGDI接口配合KEIL进行调试,原来的RDI接口在KEIL下已被H-JTAG禁用掉。 首先,需要运行H-JTAG安装目录下的TOOLCONF.EXE程序,对KEIL安装目录下的TOOLS.INI配置文件进行更新。如下图所示。点击Config按钮,对TOOLS.INI进行配置,然后退出。
图7-22 ToolConf For KEIL
接下来,就可以在KEIL下对项目进行配置。 首先,重新运行KEIL,并在KEIL中打开一个项目,然后点击Project -> Options for Target…菜单,如下图所示:
图7-23 Options菜单
USER MANUAL Copyright © 2009 WWW.HJTAG.COM All Rights Reserved 7-12
接下来,用户会看到如图7-24所示的Options配置窗口。
图7-24 Options配置窗口
在图7-24所示的Options配置窗口中,选择Debug设置,如下图所示:
图7-25 Debug设置
USER MANUAL Copyright © 2009 WWW.HJTAG.COM All Rights Reserved 7-13
在Debug设置中,点击下拉按键,就可以看到H-JTAG ARM和H-JTAG CORTEX-M3两个H-JTAG调试驱动。
图7-26 H-JTAG调试驱动
根据调试目标,可以选择使用H-JTAG ARM或是H-JTAG CORTEX-M3调试驱动,如下图所示。
图7-27 H-JTAG ARM
USER MANUAL Copyright © 2009 WWW.HJTAG.COM All Rights Reserved 7-14
图2-28 H-JTAG CORTEX-M3
在上图中,用户点击OK按钮,回到KEIL的主窗口,KEIL的设置就完成了。
USER MANUAL Copyright © 2009 WWW.HJTAG.COM All Rights Reserved 7-15
因篇幅问题不能全部显示,请点此查看更多更全内容