原创 制作JTAG下载线

2008-11-18 10:53 9415 7 8 分类: 工程师职场

声明:以下所有代码参考 http://www.ixo.de/info/usb_jtag 源文件请下载usb_jtag-20070215-1134.zip,下载地址:http://www.ixo.de/info/usb_jtag/usb_jtag-20070215-1134.zip


我参考的是老的fx2框架版本,fx2.old文件夹下。这个代码相信开发过fx2的网友会比较容易理解一些。但是这个版本只支持jtag模式,不支持as,ps模式。新的版本基于开源的编译器sdcc开发,我不熟悉。所以先从简单的入手。


 


本来我做了一款用于学习fx2的开发板,也是我考虑了近半年的时间,什么样的开发板有利于我们学习fx2?另外根据对fx2的应用了解,我觉得大部分的开发都会加入一个cpld逻辑来控制。还有就是单单一片68013的板子,实际上我们是不能真正了解fx2的工作原理。fx2的难点就在于gpif编程和slave fifo编程,如果没有外围的芯片提供数据源,实际上根本无法了解fx2的本质。所以我做了一款68013+cpld的简单实用的开发板。同时可以利用这块板子学习cpld,一举两得.


我决定做几个真正的例子,来演示bulk,iso,interrupt,control传输.等准备好了,我会在网站上提供此开发板.希望大家支持.我也希望这块板子能够让初学者快速入门.


由于这块板子有一个cpld,所以就需要一个下载电缆.而我又不愿意用并口下载电缆.而usb下载电缆又很贵.正好我找到了上面我给出的开源程序.经过实践证明,jtag模式非常好用.


点击看大图




首先弄来一根10针的扁平电缆,一端可以插到你的下载插座插座上,另一端将线拨开.各个引脚定义见下面的图,实际上我们只用到其中的4根.


 


点击看大图


 


 


点击看大图


 


实际上我们要连接到68013上的只需要4根线,TCK,TDO,TMS,TDI.


这四根线要焊到68013的管脚上确实不容易!我费了一个小时的时间终于焊上了(关键是我的焊技太差),也许你的板子的IO直接引出来了,那么就只需动一下电烙铁了.我在想,如果我当初设计板子的时候,直接把PA口连到EPM3128的几个JTAG引脚就好了.不过还好,我没挨着引脚焊,实际上我是用了PA0,PA2,PA4,PA6,这样有些间隔还好焊些.


 


点击看大图


 


在调试过程中,我多次遇到问题,最主要的问题可能就是在FIRMWARE中定义的引脚和与JTAG下载定义引脚没对应上,所以这点大家在实际做的时候多注意!


由于我用的是PA0=TCK,PA2=TDO,PA4=TMS,PA6=TDI,所以在USBJTAG.C文件中我改成了:
sbit TCK = 0x80 + 0;
sbit TDO = 0x80 + 2;
sbit TMS = 0x80 + 4;
sbit TDI = 0x80 + 6;


#define bmTCKOE bmBIT0
#define bmTDOOE bmBIT2
#define bmTMSOE bmBIT4
#define bmTDIOE bmBIT6


在shift.a51中改为:
TCK BIT 080H+0H
TDO BIT 080H+2H
TMS BIT 080H+4H
TDI BIT 080H+6H


并且设置相应的PA口为输出:
OEA = bmTDIOE | bmTCKOE | bmTMSOE;


如果你用其他口连接,只改动上面的设置应该就可以.


另外,我没有仔细看为什么程序中要摹拟一个EEPROM和主机通讯.实际上返回的信息与ALTERA 的USB BLASTER不符合,所以直接将
   if(SETUPDAT[1] == 0x90) // READ EEPROM
   {


      BYTE addr = (SETUPDAT[4]<<1) & 0x7F;
      EP0BUF[0] = PROM[addr];
      EP0BUF[1] = PROM[addr+1];
   }
改为:
   if(SETUPDAT[1] == 0x90) // READ EEPROM
   {
      EP0BUF[0] = 0;
      EP0BUF[1] = 0;
   }


并且将VID,PID改成USB-BLASTER的VID(09FB),PID(6001),这样我们的设备枚举后,会加载USB-BLASTER的驱动,并通过QUARTUS程序与我们的设备通讯.
将desc.a51中的
      dw   016C0H             ;; Vendor ID
      dw   006ADH             ;; Product ID
改为
      dw   0FB09H
      dw   00160H


好了,不过USB-BLASTER驱动还会验证是否产品描述符为USB-BLASTER,否则你在QUARTUS的Programmer中还是看不到下载设备,最后我们将:
StringDscr2:  
      db   StringDscr2End-StringDscr2      ;; Descriptor length
      db   DSCR_STRING
      db   'U',00
      db   'S',00
      db   'B',00
      db   '-',00
      db   'J',00
      db   'T',00
      db   'A',00
      db   'G',00
      db   '-',00
      db   'I',00
      db   'F',00
StringDscr2End:
改为:
StringDscr2:
      db   StringDscr2End-StringDscr2      ;; Descriptor length
      db   DSCR_STRING
      db   'U',00
      db   'S',00
      db   'B',00
      db   '-',00
      db   'B',00
      db   'l',00
      db   'a',00
      db   's',00
      db   't',00
      db   'e',00
      db   'r',00
StringDscr2End:


好了,这时你启动quartus II 软件,选择Tools>>Programmer,再点击Hardware Setup...按钮,你会看到我们的USB-Blaster设备了.添加一个文件,点击Start,看看是否成功!


 


最后将我的设置代码传上来供大家参考:


USBSOLUTION-USBJTAG.rar

PARTNER CONTENT

文章评论1条评论)

登录后参与讨论

用户48185 2009-11-12 10:23

图也没有,文件也下不了

用户152202 2008-5-6 23:59

您好,读了您的文章,感触很深,特别佩服你有超人的毅力!这个正是很多人欠缺的。我今年九月份要到北京市嵌入式系统重点实验室读研,做IC设计。想向您学习交流一下。希望您能跟我联系QQ419484892,郭海东,E-mail:guohaidong1994@sina.com 谢谢您

用户132803 2008-3-7 21:45

相当佩服...对自己理想的执着追求令人佩服...
相关推荐阅读
sealove518_112732726 2012-12-14 13:16
同時兩個surfaceview camera 中的一些開發問題
問題1: 如何將camera surfaceview 顯示在最上層:用了this.setZOrderOnTop(true);這個方法 問題2: 如何用一個BUTTON來自由控制came...
sealove518_112732726 2012-12-14 11:22
Eclipse中导入android项目名前有红叉但项目内文件无错误问题解决方法
Eclipse中导入android项目名前有红叉但项目内文件无错误问题解决方法 Eclipse中,Android项目名称前有红叉,但项目内所有文件都无错误,通常发生在导入项目时。 先可以去...
sealove518_112732726 2012-09-05 10:29
android各种权限及说明
  android.permission.ACCESS_CHECKIN_PROPERTIES 允 许读写访问”properties”表在checkin数据库中,改值可以修改上传( Allow...
sealove518_112732726 2012-09-05 10:27
android各种权限及说明
android各种权限及说明 android.permission.ACCESS_CHECKIN_PROPERTIES 允 许读写访问”properties”表在checkin数据库中,改值...
sealove518_112732726 2012-09-04 08:54
android 获取当前程序路径
//  获取当前程序路径     getApplicationContext().getFilesDir().getAbsolutePath();   //  获取该...
sealove518_112732726 2012-01-11 09:40
mt.exe:general error c101008d 最终原因已查明
mt.exe:general error c101008d(最终原因已查明)_算法的天空_百度空间   2011-05-27 16:22:41|  分类: 坑爹软件问题 |  标签: |字号大...
EE直播间
更多
我要评论
1
7
关闭 站长推荐上一条 /3 下一条