简易JTAG烧写程序_第1页
简易JTAG烧写程序_第2页
简易JTAG烧写程序_第3页
简易JTAG烧写程序_第4页
简易JTAG烧写程序_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第10章 自制简易JTAG下载烧写工具对于普通嵌入式系统爱好者来说,不太可能花太多的钱去买比较高档的调试仿真工具来调试我们自己的目标板,最经济的做法就是自己制作一个简单JTAG线缆用来烧写flash,先将bootloader固化到flash中,因为bootloader编译出来都很小,一般几十KB,最多几百KB,用简易JTAG烧写不需要多少时间,如果顺利,bootloader能够正常工作,那么就可以在bootloader菜单中通过串口或者TFTP下载其他程序到目标板的DRAM中进行运行调试或者烧写最后定型的软件,因为通过串口或者TFTP下载的速度比简易JTAG线缆下载烧写速度快。当然也可以从网上

2、搜索购买一个简易JTAG线缆(很便宜,最多不超过50RMB),不管是什么版本都行,然后用我们下面介绍的简易JTAG烧写软件来烧写目标板的flash,使用烧写软件之前只需先根据所购买JTAG线缆的具体连线图中并口与JTAG口的对应关系适当修改源代码中的管脚变量定义,然后重新编译链接就可以了。这一章我们就介绍简易JTAG线缆硬件原理,烧写软件流程,并说明使用简易JTAG线缆烧写flash的方法。10.1 JTAG简介JTAG接口的基本工作原理是:在芯片内部定义一个TAP(Test Access Port,测试访问端口),开发人员使用连接到芯片的JTAG外部接口上的JTAG调试器,通过访问芯片内部的

3、TAP端口来扫描芯片内部各个扫描单元以写入或读取扫描寄存器的状态,从而对芯片进行测试和调试。一个扫描单元对应一个外部管脚,每个外部管脚有一个扫描寄存器BSR单元,所有这些管脚的扫描寄存器连在一起就形成了扫描链。简单地说,PC通过JTAG调试器对目标板的调试就是通过TAP端口完成对扫描寄存器BSR和指令寄存器IR的读写访问。要了解关于JTAG 更全面的知识,请参阅 IEEE1149.1标准。 一些基本概念JTAG是Joint Test Action Group(联合测试行动组)的缩写,是一种国际标准测试协议,它遵守IEEE 1149.1标准。一个含有JTAG接口的处理器,只要时钟正常,就可以通过

4、JTAG接口访问处理器的内部寄存器、挂在处理器总线上的设备以及内置模块的寄存器。TAP是Test Access Port(测试访问端口)的缩写,是芯片内部一个通用的端口,通过TAP可以访问芯片提供的所有数据寄存器(DR)和指令寄存器(IR),对整个TAP的控制是通过TAP控制器(TAP Controller)完成的。边界扫描英文叫Boundary Scan,边界扫描的基本思想是在靠近芯片的输入输出管脚(PIN)上设置一个移位寄存器单元,也就是边界扫描寄存器(Boundary-Scan Register)。当芯片处于调试状态时,边界扫描寄存器可以将芯片和外部输入输出管脚隔离开来,通过边界扫描寄存

5、器单元,可以实现对芯片外部输入输出管脚的观察和控制。对于芯片的输出管脚可以通过与之相连的边界扫描寄存器单元把信号(数据)加载到该引脚中去,对于芯片的输入管脚,也可以通过与之相连的边界扫描寄存器捕获该管脚上的输出信号。在正常的运行状态下,边界扫描寄存器对芯片来说是透明的,所以正常的运行不会受到任何影响,这样,边界扫描寄存器提供了一种便捷的途径用于观测和控制所需调试的芯片。另外,芯片管脚上的边界扫描(移位)寄存器单元可以相互连接起来,使芯片的周围形成一个边界扫描链(Boundary-Scan Chain),边界扫描链可以串行地输入和输出,通过相应的时钟信号和控制信号,就可以方便地观察和控制处在调试

6、状态下的芯片。10.2 简易JTAG线缆原理简易JTAG线缆一端连接到PC的并口,另一端连接到目标板的JTAG接口,PC并口中的数据、I/O管脚通过一个74XX244单向驱动芯片与目标板JTAG口的TMS、TCK、TDI、TDO、TRST信号线相连,然后用PC上的软件来模拟JTAG所遵守的IEEE 1149.1标准协议,从而访问、控制目标板上处理器的I/O管脚状态,也就能访问、控制挂接在处理器总线上的flash芯片的I/O管脚,实现将数据写入flash芯片中的功能。 PC并口定义PC并口管脚线序如图10-1所示:图10-2 PC并口管脚线序PC并口管脚定义如表10-1所示:表10-1 PC并口

7、管脚定义续表 PC并口的寄存器PC上的程序通过访问并口的I/O端口寄存器来访问、控制并口的管脚信号,这些端口包括数据端口、状态端口和控制端口,其中每个端口都有自己的端口号,相当于它们的地址。程序通过端口号来访问端口寄存器。PC并口1的数据端口号为3BCH,状态端口号为3BDH,控制端口号为3BEH;PC并口2的数据端口号为378H,状态端口号为379H,控制端口号为37AH;PC并口3的数据端口号为278H,状态端口号为279H,控制端口号为37AH;1)数据寄存器数据寄存器(D0D7)也叫数据端口,它保存了写到数据端口管脚的一字节数据。数据端口可以写入数据(输出),也可以读出数据(输入)。写

8、入的数据是从数据端口管脚输出的数据,读出来的数据是我们上次写入数据端口的数据或者原来保留在里面的数据,并不是从端口管脚输入PC的数据。数据端口对应的管脚是PIN2PIN9,数据寄存器定义如表10-2所示。表10-2 PC并口数据寄存器定义bit对应并口管脚信号名信号源是否倒相0Pin2D0PC否1Pin3D1PC否2Pin4D2PC否3Pin5D3PC否4Pin6D4PC否5Pin7D5PC否6Pin8D6PC否7Pin9D7PC否2)状态寄存器状态寄存器(S0S7)又叫状态端口,它保存的是5个输入(S3S7)管脚的逻辑状态,S0S2位不与管脚对应。除了S0以外,状态寄存器是只读的,读出数据信

9、息是状态端口管脚上的逻辑状态。S0是支持EPP传输并口的超时标志信息,可以用软件方法清零。在许多并口中,状态输入接有上拉电阻。状态端口对应的管脚是Pin10Pin13、Pin15。状态寄存器定义如表10-3所示。表10-3 PC并口状态寄存器定义bit对应并口管脚信号名信号源是否倒相0Time-Out1未使用2未使用3Pin15nError(nFault)外设否4Pin13Select外设否5Pin12PaperEnd外设否6Pin10nAck外设否7Pin11Busy外设是3)控制寄存器控制寄存器(C0C8)又叫控制端口,它保存了C0C3的4位的控制信息,C4C7不与管脚对应,这些位一般被用

10、来输出;但在大多数SPP并口中,控制位为集电极开路/漏极开路模式,也就是说,它们同样可以用作输入。要从控制位上读取外部逻辑信号,首先将相应的输出写入1,然后读取控制寄存器的值即可。但是,为了提高交换速度,大多数支持EPP和ECP模式的并口,控制位工作在不能用作输入的推拉模式下。在一些多模式接口中,控制位采用的是改进型的推拉模式,可以用作输入。控制端口对应的管脚是Pin1、Pin14、Pin16和Pin17。控制寄存器定义如表10-4所示。表10-4 PC并口控制寄存器定义bit对应并口管脚信号名信号源是否倒相0Pin1nStrobePC是1Pin14nAutoLFPC是2Pin16nInitP

11、C否3Pin17nSelectInPC是4IRQ5未使用6未使用7未使用 简易JTAG线缆原理图图10-3及图10-4分别是我自己制作的简易JTAG线缆的原理图和外观图。(点击查看大图)图10-3 自制简易JTAG线缆原理图图10-4 自制简易JTAG线缆外观图10.3 简易JTAG烧写代码分析 简易JTAG烧写程序(flashp)使用说明1)需要用到的文件说明文件说明porttalk.sysPC的I/O端口驱动程序,使用flashp前必须将该文件复制到Windows所安装硬盘分区的WINDOWSsystem32drivers目录下AllowIo.exePC的I/O端口使能程序,在Window

12、s 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命令格式说明/(allowi

13、o) flashp cmd options (/a) ;如果在Windows 98系统下使用,则不用allowio和/a命令格式说明cmd操作命令标识字符,不区分大小写R从flash中读数据到指定文件W将指定二进制文件写入flashE擦除flash整个芯片V校验flash中的数据T测试JTAG线缆连接情况,检查PC哪个并口连接了JTAG线缆options选项标识字符,不区分大小写-V指示操作后进行校验,默认不校验-D运行过程中打印调试信息-C指定flash连接描述文件,默认为default.fcd-F指定要写入的二进制文件工程文件名-S指定烧写flash的起始地址,十进制,默认为0-L指定烧写

14、flash的数据长度,字节数,十进制,默认为2563)flashp.exe命令举例/allowio flashp r -f read.bin -s 0 -l 10000 /a该命令行从flash芯片的0地址开始读10000个字节数据保存到read.bin文件中;/allowio flashp e /a该命令将整个flash芯片擦除,擦除后的flash全为0xff;/allowio flashp w -f myprj.bin /a该命令将myprj.bin文件烧写到flash芯片的0位置;如果上述命令在Windows 98系统中使用,那么对应命令格式如下所示:/flashp r -f read.

15、bin -s 0 -l 10000/flashp e/flashp w -f myprj.bin flash与CPU连接及flash属性描述文件这里以我自己制作的S3C4510开发板上用的fcd文件来说明:Chain;JTAG扫描链区段Device=s3c4510b.bsd;CPU的边界扫描文件,由S3C4510处理器的生产商三星公司提供Read;程序中未用BeginByte=0EndByte=0x10000Flash ; SST39VF160;flash芯片描述区段。SST39VF160是注释,指明flash芯片的型号WriteCmd=0x5555, 0xaa, 0x2aaa, 0x55,

16、0x5555, 0xa0 ;写flash芯片的命令字序列,可查阅flash芯片手册获得EraseCmd=0x5555, 0xaa, 0x2aaa, 0x55, 0x5555, 0x80, 0x5555, 0xaa, 0x2aaa, 0x55, 0x0, 0x30 ;擦除flash芯片的命令字序列,可查阅flash芯片手册获得EraseDelay=25;擦除芯片所需要的等待时间,单位为msBlock=0x800, 512;flash芯片中一个sector的大小,如果有多种sector,应该设置成最小的sector大小。这里表示flash芯片最小sector的大小为512字节AddrWidth=2

17、0;flash连到系统中的数据宽度,即数据线位数,这里表示数据线宽为20位;DataWidth=2;flash连到系统中的地址宽度,即地址的字节数,这里表示地址为2字节宽度;BigEndian=0;字节序模式,0表示LittleEndian,小端,一个字中低地址字节为低位字节;1表示BigEndian,大端,一个字中的低地址字节为高位字节;A0=110;flash芯片的地址位0管脚A0连到了S3C4510芯片的第110管脚,以下类推A1=111A2=112A3=113A4=114A5=115A6=116A7=117A8=120A9=121A10=122A11=123A12=124A13=125

18、A14=126A15=127A16=128A17=129A18=132A19=133D0=136 ;flash芯片的数据位0管脚D0连到了S3C4510芯片的第136管脚,以下类推D1=137D2=138D3=139D4=140D5=141D6=144D7=145D8=146D9=147D10=148D11=149D12=150D13=151D14=152D15=153WR=100;flash芯片的写信号管脚WR连到了S3C4510芯片的第100管脚RD=72;flash芯片的读信号管脚RD连到了S3C4510芯片的第72管脚CS=75;flash芯片的片选管脚CS连到了S3C4510芯片的第

19、75管脚 ResetCtrl=0x00;flash芯片的复位控制管脚未连接High=Low=SafeMode=1;安全模式设置,程序中未使用 简易JTAG烧写程序的执行逻辑和流程网上有很多种简易JTAG烧写程序,有用标准C写的,有用VC写的,有Windows系统下使用的版本,也有Linux系统下使用的版本,读者可以自行下载后作适当修改重新编译就可使用了。不管什么版本的程序,其基本原理和执行逻辑应该是差不多的,本书附带光盘中有我所下载、修改、使用的JTAG烧写程序完整源代码,读者可以参考阅读。如图10-6所示是该程序的总体流程。烧写程序维护两个扫描链表缓冲区,一个对应输入,一个对应输出。一个扫描链缓冲区就是一个int型整数数组,数组的长度为CPU的管脚

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论