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专业类网站。