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 版权声明 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 检查软件更新………………………………………………………………………………..4-9 第五章 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接口版本和硬件接口。 图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 SETTINGS菜单,如图2-12所示: 图2-12 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-13所示: 图2-13 H-JTAG OPTIONS菜单 OPTIONS WINDOW – 打开选项设置主窗口 VECTOR CATCH CONFIG – 中断捕获设置 DISABLE SEMIHOSTING – 禁用SEMIHOSTING功能 DISABLE VECTOR CATCH – 禁用中断向量捕获功能 AUTO SYSTEM RESET – 启用/禁用自动系统复位 AUTO SOFTWARE RESET – 启用/禁用自动软件复位 REPORT DATA ABORT – 启用/禁用数据异常报告 HELP菜单,如图2-14所示: 图2-14 H-JTAG HELP菜单 USER MANUAL Copyright © 2009 WWW.HJTAG.COM All Rights Reserved 2-5 H-JTAG HOME – 访问H-JTAG主页 CHECK UPDATE – 检查更新 ABOUT H-JTAG – 关于H-JTAG 2.3.2 H-JTAG工具栏介绍 H-JTAG工具栏包括了菜单中使用频率比较高的大部分操作,方便用户使用。H-JTAG的工具栏如下图所示。 图2-15 H-JTAG工具栏 工具栏上每个按钮的功能定义如下: 复位调试目标 检测调试目标 断开当前连接 启动H-FLASHER 设置初始化脚本 LPT/USB接口选择 调试目标设置 芯片ID管理器 打开选项设置窗口 退出H-JTAG 2.3.3 H-JTAG系统托盘菜单 当H-JTAG最小化的时候,主窗口会自动隐藏来,只在系统托盘上显示H-JTAG的图标。左键单击该图标,可以恢复H-JTAG的主窗口。右键单击该图标,可以显示系统托盘菜单,其中包括了常用的一些操作和设置按钮。系统托盘菜单如图2-16所示: 图2-16 H-JTAG系统托盘菜单 H-JTAG系统托盘菜单的功能定义如下: RESTORE – 恢复主窗口 H-JTAG HOME – 访问主页 USER MANUAL Copyright © 2009 WWW.HJTAG.COM All Rights Reserved 2-6 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-17所示。其中(1)为菜单;(2)为FLASH编程向导区域;(3)为FLASH烧写/配置区域。在FLASH编程向导当中,可以选择不同的步骤。根据当前向导中的选择,配置区域会显示不同的设置。具体请参考第五章。 图2-17 H-FLASHER主界面 2.4.1 H-FLASHER的菜单介绍 H-FLASHER的主菜单如图2-18所示: 图2-18 H-FLASHER主菜单 H-FLASHER菜单的具体定义如下: NEW – 创建新的配置文件 LOAD – 装载配置文件 SAVE – 保存当前配置文件 SAVEAS – 将当前的配置文件另存为 OPTIONS – 设置选项 USER MANUAL Copyright © 2009 WWW.HJTAG.COM All Rights Reserved 2-7 EXIT ABOUT – 退出H-FLASHER – 关于H-FLASHER 2.4.2 H-FLASHER的系统托盘菜单 当H-FLASHER最小化的时候,主窗口会自动隐藏来,只在系统托盘上显示H-FLASHER的图标。左键单击该图标,可以恢复H-FLASHER的主窗口。右键单击该图标,可以显示系统托盘菜单,如图2-19所示: 图2-19 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等。 图2-20 H-FLASHER编程向导-Flash Selection USER MANUAL Copyright © 2009 WWW.HJTAG.COM All Rights Reserved 2-8 (2)Configuration Configuration是编程向导中的第二步,如下图所示。在这一步,用户需要设置基本的信息,例如FLASH芯片的位宽,FLASH的起始地址,RAM/SDRAM的起始地址,外部晶振的频率,初始化TCK和编程TCK等。这些都是必须的信息,H-FLASHER会根据这些信息来完成FLASH烧写。如果这个步骤中的设置框为灰色,说明对于当前选择的FLASH芯片来说,这些信息都是固定的,不需要用户提供。对大部分的片内FLASH而言,这些信息都是固定的,基本不需要用户提供。 图2-21 H-FLASHER编程向导-Configuration (3) Init Script Init Script是编程向导中的第三步,如下图所示。在这个步骤当中,用户可以输入必要的初始化脚本,用以配置目标系统。在烧写的时候,H-FLASHER首先会执行用户提供的初始化脚本,以初始化目标系统。然后在根据用户提供的存储信息,对目标FLASH进行操作。对于片内FLASH而言,H-FLASHER的驱动当中已经包括了初始化,所以用户不需要提供初始化脚本。此时,脚本编辑功能会自动被禁用掉。 图2-22 H-FLASHER编程向导-Init Script USER MANUAL Copyright © 2009 WWW.HJTAG.COM All Rights Reserved 2-9 (4) Program Options Program Options编程向导中的第四步,如下图所示。在这个步骤中,用户可以根据选择的FLASH芯片和自己的需要选择不通的选项。常用的选项包括复位,二次验证和加密等。 图2-23 H-FLASHER编程向导-Program Options (5) Programming Programming是编程向导中的第五步,如下图所示。在这个步骤当中,用户可以对选定的目标FLASH芯片进行基本的操作:检测、烧写、验证、擦除和检查芯片是否为空等。 图2-24 H-FLASHER编程向导-Programming USER MANUAL Copyright © 2009 WWW.HJTAG.COM All Rights Reserved 2-10 (6) H-Flasher Help 在H-FALSHER的向导,还提供了一些基本的帮助信息,如果下图所示。这些基本的信息可以帮助用户了解每个步骤的设置。 图2-25 H-FLASHER编程向导-Help USER MANUAL Copyright © 2009 WWW.HJTAG.COM All Rights Reserved 2-11 第三章 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提供了五个常用选项: VECTOR CATCH设置 H-JTAG集中管理VECTOR CATCH,如图4-17所示。在VECTOR CATCH设置里,用户可以选择在调试过程中需要捕获的中断或异常。如果全局DISABLE VECTOR CATCH选项被使能,VECTOR CATCH的设置将被忽略。 USER MANUAL Copyright © 2009 WWW.HJTAG.COM All Rights Reserved 4-8 图4-17 VECTOR CATCH设置 SEMIHOSTING Semihosting是一种辅助调试机制,用来实现主机与目标开发板的通信。但需要仿真器和目标程序的配合和支持,而且Semihosting只能用在调试上,在实际的产品当中是不能使用的。因为Semihosting会占用断点资源,建议用户在调试的时候禁用掉该功能。 VECTOR CATCH Vector Catch是用来捕获异常的。如果打开了该选项,并在调试软件里做了相应的设置,ARM处理器出现异常的时候,调试软件就会提示用户出现了异常。Vector Catch也会占用断点资源,建议用户在调试的时候,禁用掉该功能。 TARGET RESET 在该选项里,用户可以选择如何对调试目标进行复位。用户可以选择只用nTRST信号,或是同时使用两个信号对系统执行复位。用户还可以选择每当调试软件连接到H-JTAG SERVER的时候,自动执行一个复位操作。另外, 用户也可以指定复位等待时间. 这样H-JTAG会在执行完复位操作后, 等待用户指定的时间, 再停止MCU的运行. 提示: 复位操作依赖于用户具体使用的JTAG调试板。如果JTAG调试板没有系统复位信号,H-JTAG将无法执行系统复位。 DATA ABORT 在调试的过程当中,即使在CPU停止运行的时候,也需要对存储系统进行读写,例如设置/清除断点。在对存储进行读写的时候,有可能会出现数据异常。例如,访问未定义的存储空间,或是访问受保护的存储空间。如果用户打开了REPORT DATA ABORT选项,H-JTAG在检测到数据异常的时候,将会提示用户。否则,H-JTAG只是在内部进行处理,而不会提示用户。用户可以根据自己的需要进行选择。 4.12 检查软件更新 通过H-JTAG的CHECK UPDATE菜单,用户可以检查是否有新的版本可以下载。如果有更新的版本,H-JTAG会提示用户下载。用户也可以访问H-JTAG的主页以获得更多的更新信息。 USER MANUAL Copyright © 2009 WWW.HJTAG.COM All Rights Reserved 4-9 第五章 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) Check 这个操作可以读取目标系统上的FLASH的ID及其处理器的基本信息。用户可以使用Check功能来检查用户的配置是否正确,读取的目标系统的信息是否正确。 (2) 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文件本身不包含除了程序/数据外的任何其它信息。所以,选择这种文件格式的时候,用户需要同时指定二进制文件的路径和烧写的目的地址。 (3) Verify 这个操作可以用来验证烧写是否正确. Verify操作会将FLASH的内容读取回来, 然后和用户指定的文件进行比较. 以确定烧写是否成功. (4) Erase & Check Blank 用户可以对FLASH进行擦除和检查FLASH是否为空。在执行这两个操作的时候,用户可以选择对整块FLASH执行操作,或是通过FROM与TO下拉框选择操作的地址范围。 (5) Read H-Flasher还提供了读取操作,用以读取存储系统的内容。在执行读取操作的时候,用户需要同时指定开始地址和长度。长度的单位是BYTE。 USER MANUAL Copyright © 2009 WWW.HJTAG.COM All Rights Reserved 5-4 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进行调试。 首先,在KEIL中打开一个项目,然后点击Project -> Options for Target…菜单,如下图所示: 图7-22 Options菜单 接下来,用户会看到如图7-23所示的Options配置窗口。 图7-23 Options配置窗口 USER MANUAL Copyright © 2009 WWW.HJTAG.COM All Rights Reserved 7-12 在图7-23所示的Options配置窗口中,选择Debug设置,如下图所示: 图7-24 Debug设置 在Debug设置中,选择使用RDI接口,如下图所示。 图7-25 选择使用RDI接口 USER MANUAL Copyright © 2009 WWW.HJTAG.COM All Rights Reserved 7-13 然后点击上图所示的Settings按钮,KEIL会弹出如下图所示的RDI Interface Driver Setup窗口,需要用户设置H-JTAG.DLL的路径。 图7-26 RDI Interface Driver Setup窗口 在上图所示的设置窗口中,按Browse按钮,然后选择H-JTAG安装目录下的H-JTAG.DLL,设置好路径,如下图所示。 图7-27 设置H-JTAG.DLL路径 提示: 在设置H-JTAG.DLL路径的时候,如果H-JTAG Server没有打开,KEIL会报错,用户可以忽略这个错误。 在上图中,用户点击OK按钮,就会回到图7-25所示的设置窗口。继续点击OK按钮,回到KEIL的主窗口,KEIL的设置就完成了。 USER MANUAL Copyright © 2009 WWW.HJTAG.COM All Rights Reserved 7-14