www.linuxidc.com
Linux公社(LinuxIDC.com)于2006年9月25日注册并开通网站,Linux现在已经成为一种广受关注和支持的一种操作系统,IDC是互联网数据
中心,LinuxIDC就是关于Linux的数据中心。
LinuxIDC.com提供包括Ubuntu,Fedora,SUSE技术,以及最新IT资讯等Linux专业类网站。
并被收录到Google 网页目录-计算机 > 软件 > 操作系统 > Linux 目录下。
Linux公社(LinuxIDC.com)设置了有一定影响力的Linux专题栏目。
包括:
Ubuntu专题
Fedora专题
RedHat专题
SUSE专题
红旗Linux专题
Android专题
 
 
Linux公社简介 - 广告服务 - 网站地图 - 帮助信息 - 联系我们 
本站(LinuxIDC)所刊载文章不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。 
本站带宽由[6688.CC]友情提供 
Copyright © 2006-2011 Linux公社 All rights reserved 
Linux公社(LinuxIDC.com) 是包括Ubuntu,Fedora,SUSE技术,最新IT资讯等Linux专业类网站。
www.linuxidc.com
                                   USB 转 JTAG/USB 转串口/在线调试 
Eclipse,OpenOCD,OpenJTAG 嵌入式开发教程 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
– 1 – 
Linux公社(LinuxIDC.com) 是包括Ubuntu,Fedora,SUSE技术,最新IT资讯等Linux专业类网站。
www.linuxidc.com
                                   USB 转 JTAG/USB 转串口/在线调试 
Eclipse,OpenOCD,OpenJTAG嵌入式开发教程................................................................................1 
1.    调试工具简介......................................................................................................................3 
1.1    OpenJTAG套件简介 .................................................................................................3 
1.2    嵌入式软件的交叉开发系统....................................................................................6 
2.    Windows下OpenJTAG套件的使用 ..................................................................................10 
2.1    硬件、软件安装......................................................................................................10 
2.1.1  安装OpenJTAG驱动程序...............................................................................10 
2.1.2  安装OpenOCD、交叉编译工具链、Eclipse................................................12 
2.2    使用OpenOCD、OpenJTAG烧写程序、调试程序...............................................14 
2.2.1  启动OpenOCD,OpenOCD常用命令...........................................................14 
2.2.2  使用OpenOCD烧写小程序到内部RAM,并运行、调试...........................18 
2.2.3  使用OpenOCD下载u-boot,通过u-boot烧写Nor/Nand Flash .....................21 
2.3    使用Eclipse进行开发..............................................................................................24 
2.3.1  启动Eclipse,进行简单设置:.....................................................................24 
2.3.2  新建一个Eclipse工程:.................................................................................25 
2.3.3  配置Eclipse工程:.........................................................................................28 
2.3.4  编译、清除程序:.........................................................................................31 
2.3.5  使用Eclipse调试程序:以leds、u-boot为例 ................................................32 
3.    Ubuntu下OpenJTAG套件的使用......................................................................................46 
3.1    硬件、软件安装......................................................................................................46 
3.1.1  修改udev规则,使得识别OpenJTAG后自动加载驱动...............................46 
3.1.2  安装OpenOCD、GDB、交叉编译工具链、Eclipse....................................47 
3.2  使用OpenOCD、OpenJTAG  烧写程序、调试程序 ..............................................50 
3.2.1  启动OpenOCD,OpenOCD常用命令...........................................................50 
3.2.2  使用OpenOCD烧写小程序到内部RAM,并运行、调试...........................53 
3.2.3  使用OpenOCD下载u-boot,通过u-boot烧写Nor/Nand Flash .....................57 
3.3  使用Eclipse进行开发................................................................................................60 
3.3.1  启动Eclipse,进行简单设置:.....................................................................60 
3.3.2  新建一个Eclipse工程:.................................................................................61 
3.3.3  配置Eclipse工程:.........................................................................................65 
3.3.4  编译、清除程序:.........................................................................................67 
3.3.5  使用Eclipse调试程序:以leds、u-boot、Linux内核为例...........................68 
附录:u-boot使用简要说明 ............................................................................................82 
 
 
 
 
 
 
 
– 2 – 
Linux公社(LinuxIDC.com) 是包括Ubuntu,Fedora,SUSE技术,最新IT资讯等Linux专业类网站。
www.linuxidc.com
                                   USB 转 JTAG/USB 转串口/在线调试 
1.  调试工具简介 
1.1  OpenJTAG 套件简介 
在嵌入式开发中,有很多优秀的调试、仿真工具,比如 Keil、IAR、Rowley Associates 等。
它们的安装、使用都很便利,功能强大,但是价格昂贵(几百美元甚至更多);还要购买相应
的硬件,比如 J-Link、U-Link 等 USB 到 JTAG 的转换盒,这也是一笔不小的开支。 
对于学生,或者是开发预算有限的工程师来说,完全可以使用免费的开发工具 Eclipse、
OpenOCD,然后通过一些便宜的 JTAG 转接器(比如并口 JTAG 等)就可以达到接近、甚至超
越上述商业软件的效果。 
 
并 口 JTAG 速 率 太 低 , 一 般 很 少 使 用 。 本 教 程 使 用 OpenJTAG 转 换 器 , 配 合
Eclipse,OpenOCD 等开源软件,就可以完成下载、烧写、调试等任务。 
OpenJTAG 的外观及性能见图 1.1、表 1.1,它含有 3 大功能:USB 转串口,USB 转 JTAG,
在线调试。无论是台式机,还是缺乏串口、并口的笔记本,都可以使用。 
 
 
 
 
 
 
 
 
 
– 3 – 
图 1.1 OpenJTAG 的外观 
 
Linux公社(LinuxIDC.com) 是包括Ubuntu,Fedora,SUSE技术,最新IT资讯等Linux专业类网站。
www.linuxidc.com
表 1.1                             OpenJTAG 套件的性能 
                                   USB 转 JTAG/USB 转串口/在线调试 
USB 
JTAG 
串口 
硬件特点 
USB2.0 全速接口 
使用 USB 电源 
即插即用 
IEEE 1149.1 标准 
最大速率 6Mbits/sec 
是并口 JTAG 的 150 倍 
Multi-ICE 10-pin 插座 
Multi-ICE 20-pin 插座 
自适应支持目标系统电压:1.2~5V 
RS232 标准 
7 或 8 位数据位 
1 或 2 位停止位 
奇校验/偶校验/标志位/空位/无校验 
最大波特率 235Kbps 
在线调试功能  支持的多种 CPU 系列:ARM7, ARM9, Cortex-M3, XSCALE 
软件特点 
·Eclipse 集成开发环境的安装程序及教程(Linux/Windows 版) 
·在线调试器 OpenOCD 的安装程序及教程(Linux/Windows 版) 
·实时调试功能:单步、全速运行、复位、软/硬件断点、跳转等 
·CPU 寄存器、存储器、变量观察窗口:动态变化,实时察看 
·支持 ARM 内置的 Cache 和 MMU 功能 
·在线烧写多种 Nor Flash 和 Nand Flash 
·驱动程序:支持 Linux 2.4 或更高版本, Windows ME, 2000, Server 2003, XP 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
– 4 – 
Linux公社(LinuxIDC.com) 是包括Ubuntu,Fedora,SUSE技术,最新IT资讯等Linux专业类网站。
www.linuxidc.com
                                   USB 转 JTAG/USB 转串口/在线调试 
 
OpenJTAG 上两个 JTAG 座子的引脚定义如图 1.2 所示。 
图 1.2 JTAG 座子的引脚定义 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
– 5 – 
Linux公社(LinuxIDC.com) 是包括Ubuntu,Fedora,SUSE技术,最新IT资讯等Linux专业类网站。
www.linuxidc.com
                                   USB 转 JTAG/USB 转串口/在线调试 
1.2  嵌入式软件的交叉开发系统 
一套完整的交叉开发系统从上到下,可以分为 4 个部件:集成开发环境(IDE,Integrated 
Development  Environment,比如 Eclipse)、交叉编译工具链、一个接收各种操作命令(复位、
暂停、读/写等)的守护进程(Daemon program,如 OpenOCD)、用来连接 PC 与单板的 JTAG 接
口板。 
 
 
它们的联系可以用图 1.3 来表示,下面详细介绍。 
图 1.3 交叉开发系统的 4 层结构 
交叉编译工具链是嵌入式开发中最核心的工具,它被用来编译、链接、调试程序。在集
成开发环境出现之前,我们通常是先使用其他编辑工具(比如记事本、Source  Insight 等)写好
代码,然后通过命令行进行编译、链接。 
集成开发环境将各种命令“封装”起来,通过各种按钮就可以编译、调试程序;它还提
供一个现代化的软件编辑器。Eclipse 的操作界面如图 1.4 所示。 
 
– 6 – 
Linux公社(LinuxIDC.com) 是包括Ubuntu,Fedora,SUSE技术,最新IT资讯等Linux专业类网站。
www.linuxidc.com
                                   USB 转 JTAG/USB 转串口/在线调试 
图 1.4 Eclipse 的操作界面 
下面以一个例子来看看 Eclipse 是如何与交叉编译工具链协同,来编译、链接程序的。 
在图 1.4 的“工程窗口”中有一个“Makefile”文件,Eclipse 根据它来调用交叉编译工具
 
链。Makefile 内容如下: 
objs := head.o init.o leds.o 
 
all : $(objs) 
arm-elf-ld -Tmmu.lds -o mmu_elf $^ 
arm-elf-objcopy -O binary -S mmu_elf mmu.bin 
arm-elf-objdump -D -m arm mmu_elf > mmu.dis 
 
arm-elf-gcc -Wall -g -c -o $@ $< 
arm-elf-gcc -Wall -g -c -o $@ $< 
 
 
 
 
%.o:%.c 
 
 
%.o:%.S 
 
 
clean: 
 
rm -f mmu.bin mmu_elf mmu.dis *.o  
 
 
当在 Eclipse 里按下“Build All”、“Build Project”按钮时,就相当于在命令行里执行“make 
all”命令,它根据 Makefile 的指示编译出 head.o、init.o、leds.o,然后链接成 elf 格式的可执
行文件 mmu_elf,最后制作二进制可执行文件 mmu.bin、制作反汇编文件 mmu.dis。 
 
– 7 – 
Linux公社(LinuxIDC.com) 是包括Ubuntu,Fedora,SUSE技术,最新IT资讯等Linux专业类网站。