《简易JTAG烧写程序》由会员分享,可在线阅读,更多相关《简易JTAG烧写程序(11页珍藏版)》请在金锄头文库上搜索。
1、 内部公开本文中的所有信息归中兴通讯股份有限公司所有,未经允许,不得外传 第 1 / 11 页第 10 章 自制简易 JTAG 下载烧写工具对于普通嵌入式系统爱好者来说,不太可能花太多的钱去买比较高档的调试仿真工具来调试我们自己的目标板,最经济的做法就是自己制作一个简单 JTAG 线缆用来烧写 flash,先将 bootloader 固化到 flash 中,因为 bootloader 编译出来都很小,一般几十 KB,最多几百 KB,用简易 JTAG 烧写不需要多少时间,如果顺利,bootloader 能够正常工作,那么就可以在 bootloader 菜单中通过串口或者 TFTP 下载其他程序到
2、目标板的 DRAM 中进行运行调试或者烧写最后定型的软件,因为通过串口或者 TFTP 下载的速度比简易 JTAG 线缆下载烧写速度快。当然也可以从网上搜索购买一个简易 JTAG 线缆(很便宜,最多不超过 50RMB),不管是什么版本都行,然后用我们下面介绍的简易 JTAG 烧写软件来烧写目标板的 flash,使用烧写软件之前只需先根据所购买 JTAG 线缆的具体连线图中并口与 JTAG 口的对应关系适当修改源代码中的管脚变量定义,然后重新编译链接就可以了。这一章我们就介绍简易 JTAG 线缆硬件原理,烧写软件流程,并说明使用简易JTAG 线缆烧写 flash 的方法。10.1 JTAG 简介J
3、TAG 接口的基本工作原理是:在芯片内部定义一个 TAP(Test Access Port,测试访问端口),开发人员使用连接到芯片的 JTAG 外部接口上的 JTAG 调试器,通过访问芯片内部的 TAP 端口来扫描芯片内部各个扫描单元以写入或读取扫描寄存器的状态,从而对芯片进行测试和调试。一个扫描单元对应一个外部管脚,每个外部管脚有一个扫描寄存器 BSR 单元,所有这些管脚的扫描寄存器连在一起就形成了扫描链。简单地说,PC 通过 JTAG 调试器对目标板的调试就是通过 TAP 端口完成对扫描寄存器 BSR 和指令寄存器 IR 的读写访问。要了解关于 JTAG 更全面的知识,请参阅 IEEE11
4、49.1 标准。10.1.1 一些基本概念JTAG是 Joint Test Action Group(联合测试行动组)的缩写,是一种国际标准测试协议,它遵守 IEEE 1149.1 标准。一个含有 JTAG 接口的处理器,只要时钟正常,就可以通过 JTAG 接口访问处理器的内部寄存器、挂在处理器总线上的设备以及内置模块的寄存器。TAP是 Test Access Port(测试访问端口)的缩写,是芯片内部一个通用的端口,通过 TAP 可以访问芯片提供的所有数据寄存器(DR)和指令寄存器(IR),对整个 TAP的控制是通过 TAP 控制器(TAP Controller)完成的。 内部公开本文中的所
5、有信息归中兴通讯股份有限公司所有,未经允许,不得外传 第 2 / 11 页边界扫描英文叫 Boundary Scan,边界扫描的基本思想是在靠近芯片的输入输出管脚(PIN)上设置一个移位寄存器单元,也就是边界扫描寄存器(Boundary-Scan Register)。当芯片处于调试状态时,边界扫描寄存器可以将芯片和外部输入输出管脚隔离开来,通过边界扫描寄存器单元,可以实现对芯片外部输入输出管脚的观察和控制。对于芯片的输出管脚可以通过与之相连的边界扫描寄存器单元把信号(数据)加载到该引脚中去,对于芯片的输入管脚,也可以通过与之相连的边界扫描寄存器捕获该管脚上的输出信号。在正常的运行状态下,边界扫
6、描寄存器对芯片来说是透明的,所以正常的运行不会受到任何影响,这样,边界扫描寄存器提供了一种便捷的途径用于观测和控制所需调试的芯片。另外,芯片管脚上的边界扫描(移位)寄存器单元可以相互连接起来,使芯片的周围形成一个边界扫描链(Boundary-Scan Chain),边界扫描链可以串行地输入和输出,通过相应的时钟信号和控制信号,就可以方便地观察和控制处在调试状态下的芯片。10.2 简易 JTAG 线缆原理简易 JTAG 线缆一端连接到 PC 的并口,另一端连接到目标板的 JTAG 接口,PC 并口中的数据、I/O 管脚通过一个 74XX244 单向驱动芯片与目标板 JTAG 口的TMS、TCK、
7、TDI、TDO、TRST 信号线相连,然后用 PC 上的软件来模拟 JTAG 所遵守的IEEE 1149.1 标准协议,从而访问、控制目标板上处理器的 I/O 管脚状态,也就能访问、控制挂接在处理器总线上的 flash 芯片的 I/O 管脚,实现将数据写入 flash 芯片中的功能。10.2.1 PC 并口定义PC 并口管脚线序如图 10-1 所示:图 10-2 PC 并口管脚线序PC 并口管脚定义如表 10-1 所示:表 10-1 PC 并口管脚定义 内部公开本文中的所有信息归中兴通讯股份有限公司所有,未经允许,不得外传 第 3 / 11 页续表 内部公开本文中的所有信息归中兴通讯股份有限公
8、司所有,未经允许,不得外传 第 4 / 11 页10.2.2 PC 并口的寄存器PC 上的程序通过访问并口的 I/O 端口寄存器来访问、控制并口的管脚信号,这些端口包括数据端口、状态端口和控制端口,其中每个端口都有自己的端口号,相当于它们的地址。程序通过端口号来访问端口寄存器。PC 并口 1 的数据端口号为 3BCH,状态端口号为 3BDH,控制端口号为 3BEH;PC 并口 2 的数据端口号为 378H,状态端口号为 379H,控制端口号为 37AH;PC 并口 3 的数据端口号为 278H,状态端口号为 279H,控制端口号为 37AH;1)数据寄存器数据寄存器(D0D7)也叫数据端口,它
9、保存了写到数据端口管脚的一字节数据。数据端口可以写入数据(输出),也可以读出数据(输入)。写入的数据是从数据端口管脚输出的数据,读出来的数据是我们上次写入数据端口的数据或者原来保留在里面的数据,并不是从端口管脚输入 PC 的数据。数据端口对应的管脚是 PIN2PIN9,数据寄存器定义如表 10-2 所示。表 10-2 PC 并口数据寄存器定义bit 对应并口管脚 信 号 名 信 号 源 是否倒相0 Pin2 D0 PC 否1 Pin3 D1 PC 否2 Pin4 D2 PC 否3 Pin5 D3 PC 否4 Pin6 D4 PC 否5 Pin7 D5 PC 否6 Pin8 D6 PC 否7 P
10、in9 D7 PC 否2)状态寄存器状态寄存器(S0S7)又叫状态端口,它保存的是 5 个输入(S3S7)管脚的逻辑状态,S0S2 位不与管脚对应。除了 S0 以外,状态寄存器是只读的,读出数据信息是状态端口管脚上的逻辑状态。S0 是支持 EPP 传输并口的超时标志信息,可以用软件方法清零。在许多并口中,状态输入接有上拉电阻。状态端口对应的管脚是Pin10Pin13、Pin15。状态寄存器定义如表 10-3 所示。表 10-3 PC 并口状态寄存器定义bit 对应并口管脚 信 号 名 信 号 源 是否倒相0 Time-Out 1 未使用 2 未使用 3 Pin15 nError(nFault)
11、 外设 否4 Pin13 Select 外设 否5 Pin12 PaperEnd 外设 否 内部公开本文中的所有信息归中兴通讯股份有限公司所有,未经允许,不得外传 第 5 / 11 页6 Pin10 nAck 外设 否7 Pin11 Busy 外设 是3)控制寄存器控制寄存器(C0C8)又叫控制端口,它保存了 C0C3 的 4 位的控制信息,C4C7不与管脚对应,这些位一般被用来输出;但在大多数 SPP 并口中,控制位为集电极开路/漏极开路模式,也就是说,它们同样可以用作输入。要从控制位上读取外部逻辑信号,首先将相应的输出写入1,然后读取控制寄存器的值即可。但是,为了提高交换速度,大多数支持
12、EPP 和 ECP 模式的并口,控制位工作在不能用作输入的推拉模式下。在一些多模式接口中,控制位采用的是改进型的推拉模式,可以用作输入。控制端口对应的管脚是 Pin1、Pin14、Pin16 和 Pin17。控制寄存器定义如表 10-4 所示。表 10-4 PC 并口控制寄存器定义bit 对应并口管脚 信 号 名 信 号 源 是否倒相0 Pin1 nStrobe PC 是1 Pin14 nAutoLF PC 是2 Pin16 nInit PC 否3 Pin17 nSelectIn PC 是4 IRQ 5 未使用 6 未使用 7 未使用 10.2.3 简易 JTAG 线缆原理图图 10-3 及图
13、 10-4 分别是我自己制作的简易 JTAG 线缆的原理图和外观图。 内部公开本文中的所有信息归中兴通讯股份有限公司所有,未经允许,不得外传 第 6 / 11 页(点击查看大图)图 10-3 自制简易 JTAG 线缆原理图图 10-4 自制简易 JTAG 线缆外观图10.3 简易 JTAG 烧写代码分析10.3.1 简易 JTAG 烧写程序(flashp)使用说明1)需要用到的文件说明 内部公开本文中的所有信息归中兴通讯股份有限公司所有,未经允许,不得外传 第 7 / 11 页文 件 说 明porttalk.sys PC 的 I/O 端口驱动程序,使用 flashp 前必须将该文件复制到 Wi
14、ndows 所安装硬盘分区的WINDOWSsystem32drivers 目录下AllowIo.exe PC 的 I/O 端口使能程序,在 Windows XP 和 Windows 2000 下必须与 flashp.exe 联合使用,在 Windows 98下无须用此文件flashp.exe 简易 JTAG 烧写 flash 程序已编译好的可执行文件mycpu.bsd 目标板上 CPU 芯片的边界扫描描述文件,由 CPU 芯片生产厂家提供myflash.fcd 目标板上 CPU 与 flash 芯片管脚连接以及 flash 芯片属性描述文件myprj.bin 要被烧写到 flash 中的二进制工程文件erase.bat 擦除 flash 芯片批处理文件read.bat 读 flash 芯片中数据批处理文件write.bat 写数据到 flash 芯片批处理文件2)flashp.exe 命令格式说明/(allowio) flashp cmd opti