Open JTAG Project
Open JTAG Project is an open source hardware and software for a high speed USB JTAG tool.
In this site, you can find and download all necesary files to make your JTAG device.
The electric schematics, the PCB design including Gerber files, the VHDL project in Altera Quartus II format,
and the C++ examples in Microsoft Visual Studio 2005, are free to be downloaded.
If you like to collaborate, please click on our Opencores.org Open JTAG project page.
We encourage JTAG lovers to collaborate with this project:
We need:
- Patch the OpenOCD to support Open JTAG commands.
- Optimize the VHDL code (I am not the best VHDL programmer, of course!)
- Test hardware and software
Note:
The full project could be emulated in the Altera MAX II Development Kit. Click here to viiew Altera page
The hardware project is mainly composed of:
- 1 two-layer PCB
- 1 FTDIChip FT245BL USB to Parallel converter
- 1 Altera EPM570T100 TQFP100 CPLD
- 1 generic 93C46 serial EEPROM
- 1 IQD SPXO018043 48 MHZ oscillator
- 1 generic HC49 6MHZ quartz
- 1 ST Microelectronics LK112M33TR 3.3V LDO regulator
- 2 Texas TXS0104 bidirectional level converter
The circuitry is simple and easy to understand. The FT245 is the USB front end, c
onverting USB serial data to parallel bus to interface with the EPM570 CPLD.
The CPLD latch the parallel data and execute macro-instruction commands,
driving the main five JTAG signals: TCK, TMS, TDI, TDO and TRST.
Inside the CPLD there is a synthesized clock divisor to work with slow target devices.
The higher TCK frequency is 24 MHZ (main clock / 2) and the lower frequency is 187.5 KHZ.
The board have 8 input/output pins (J4 connector) to be used as general purpose I/O.
The PCB size is 57.2mm x 43.3mm (2.26" x 1.7") and fits inside the Altera USB Blaster plastic box,
and it is pin-to-pin compatible. The same JTAG flat cable can be used.
There is another projetc from Kolja Waschk (http://www.ixo.de) to create an Altera USB Blaster compatible JTAG.
The Kolja project could be implemented in our hardware.
We have tested the project using Quartus II 9.0 and seems to work fine.
Please click here to download the Quartus II Kolja project, ready to be used in our hardware.
The latest files:
Please read the License Document before download files.
- Quartus II VHDL Project 1.4
- Visual Studio 6 test program 1.1
- OpenOCD files 1.0 (old version)
- New OpenOCD files from Ryan Corbin (recommended)
- Protocol Manual 1.1
- Schematic diagram 1.1 (updated, thanks to Michael Kuhn)
- Schematic diagram 1.1 (older version, not recommended)
- Hardware User Manual 1.0
- Gerber Files
- Bill of Materials
- PCB Component mask
- PCB Top view
- PCB Bottom view
USB-Blaster compatibility:
To get USB-Blaster compatibility with our hardware, download and program the CPLD with the Kolja Waschk VHDL project.
This option make OpenJTAG full USB-Blaster compatible. Was tested using an EPM1270 CPLD as target and, of course, with the EPM570 CPLD, both from Altera Corporation. Please note that the OpenJTAG project and the Kolja Waschk project areDIFFERENT.
Remember to change the EEPROM USB VID/PID, product description and manufacturer name using the FTProg utility from FTDI site at (http://ftdichip.com).
__________________________________________________________________
Older files (for reference only)
Click the links to download Open JTAG project files.
Please read the License Document before download files.
Software version 1.1 (the current version).
Hardware board version 1.1 (the current board).
Changes:
- Add R22 (10K) to oscillator enable pin as pull-up
- Change 2 MAX3378E by 2 Texas TXB0104 to improve speed
- Change LED power from +5V to +VCCIO
- Schematic diagram
- Hardware User Manual (no changes, download the previous version)
- Gerber files
- PCB Component mask
- PCB Top view
- PCB bottom view
- Bill of Materials
Hardware board version 1.0:
VHDL version 1.0:
Software version 1.0:
- Protocol Manual
- Visual Studio 2005 C++ project example files
什么是Open JTAG。Open JTAG是一个开源项目,
她的目标是使嵌入式开发者能够通过JTAG接口,
用开放的硬件和软件系统进行烧写、校验和调试。
作为Open JTAG的官方网站,http://www.openjtag.net
上详述了Open JATG可以实现的硬件解决方式。
然而,他们的重点确实放在详述花费 $200 的高速JATG解决方案上,
令我辈山寨开发者十分不满。
还好,USB接口的解放方案提供了一种相对低廉的解决方式,
20M的速率也不算低,这就是给予FTDI的FT2232系列的JTAG调试器。
当然,Open JTAG的硬件成本就不可能做到比Jlink的价格还低了。
不过令人振奋的是,Open JTAG以他特殊的开源优势,特别适合嵌入式开发者的使用,
特别是在Lunix下的使用... ... 我是做硬件的...具体的优势有待查明再讨论。
搭配的软件常用的是OpenOCD,它是一个开源的JTAG上位机程序,主页在
http://openocd.berlios.de/web/,论坛在
http://forum.sparkfun.com/viewforum.php?f=18。
目前支持多种芯片。可以简单查看
src/target/target.c中的target_types的定义就可以了解支持哪些处理器了:
target_type_t *target_types[] =
{
&arm7tdmi_target,
&arm9tdmi_target,
&arm920t_target,
&arm720t_target,
&arm966e_target,
&arm926ejs_target,
&feroceon_target,
&xscale_target,
&cortexm3_target,
&arm11_target,
&mips_m4k_target,
... ...
所以也就是说,凡是以上列出的,Open JTAG都可用。
而且随着Open OCD的功能晚上,支持的芯片还会越来越多。
可以配饰Open JTAG使用的开源软件还有 Eclipse 等,非专业人士,就不做介绍啦。
多种烧写方法:
① 类似sjf2410/sjf2440的oflash工具,支持s3c2410,s3c2440,s3c6410的直接烧写
② 直接使用openocd的命令行烧写
③ 从JTAG口下载u-boot到内存中,使用u-boot来烧写
多种调试手段:
① 使用openocd的命令直接调试
② 使用gdb命令行调试
③ 使用Eclipse图形化工具调试
支持多种调试工具:
① 支持IAR
② 支持Eclipse
③ 可以调试ADS编译出来的axf文件
它是一款集三大功能(USB转JTAG、USB转串口、在线调试)于一体的调试器。
无论是台式机,还是缺乏串口、并口的笔记本,都可以使用。
可以用来调试ARM7, ARM9, Cortex-M3, XSCALE系列CPU的裸板程序、u-boot、内核。
硬件特点:
USB:
USB2.0全速接口
使用USB电源
即插即用
JTAG:
IEEE 1149.1标准
最大速率6Mbits/sec
是并口JTAG的150倍
Multi-ICE 10-pin插座
Multi-ICE 20-pin插座
目标系统1.5~5V自适应
串口:
RS232标准
支持7或8位数据位
1或2位停止位
奇校验/偶校验/标志位/空位/无校验
最大波特率1Mbps
在线仿真功能:
支持的多种CPU系列:ARM7, ARM9, Cortex-M3/M8/A8, XSCALE
软件特点:
·Eclipse集成开发环境的安装程序及教程(Linux/Windows版)
·可调试ADS、KEIL编译出来的axf文件
·源码级别调试器OpenOCD的安装程序及教程(Linux/Windows版)
·实时调试功能:单步、全速运行、复位、软/硬件断点、跳转等
·CPU寄存器、存储器、变量观察窗口:动态变化,实时察看
·支持ARM内置的Cache和MMU功能
·在线烧写多种NOR Flash和NAND Flash
·驱动程序:支持Linux 2.4或更高版本, Windows ME, 2000, Server 2003, XP, win 7
J-Link、J-Trace、Open JTAG都是用来调试程序的(当然还有其他工具可以进行调试,比如ICE),
J-Link和J-Trace是SEGGER公司的(http://www.segger.com)。
Open JTAG(http://www.openjtag.org/)是一个开源项目,
其目标是使嵌入式开发者能够通过JTAG接口,用开放的硬件和软件系统进行烧写、校验和调试[1]。
他们都基于JTAG调试接口协议。
工作原理
调试arm,总要遵循arm的调试接口协议吧,jtag就是其中的一种吧。
当仿真时,iar,keil,ads等等都有一个公共的调试接口,RDI(RDI接口是ARM公司提出的调试接口标准,主要用于ARM芯片的JTAG仿真。)
就是其中的一咱吧, 那么我们如何完成RDI-->arm调试协议(JTAG)的转换呢? 如是乎就有两种做法:
(1) 在电脑上写一个服务程序,把keil,ads,iar中的RDI命令解析成相关的JTAG协议,然后通后一个物理转换接口(
注意,这个转换只是电气物理层 上的转换,就像RS232那样的作用)发送你的的目标板。
h-jtag就是这样的。 h-jtag的硬件就仅是一个物理电平的转换接口,所以很简单。
而电脑中装的h-jtag软件就是前面说到的服务程序,负责协议转换的。
(2)另一种做法,就是做一个板,用此板直接接收来自keil,ads,iar等软件的调试命令,
由此板做rdi->jtag协议的转换。然后与目标板通信,这就是jlink的工作原理。(这也就实现了USB转JTAG协议。)
一回贴说:“大佬,两者都是软件完成的,只不过软件放的地方不一样(一个放计算机,一个放仿真器里面了).
真正的硬件,就象是JTRACE一样,用FPGA来实现.实质上,还是软件到硬件的过程.”。
J-Link与Open JTAG区别
正如上文所述,这两者都是用来调试程序的,都实现了USB转JTAG协议功能,即用USB连接主机,用JTAG线连接板子的JTAG口,
而这之间的转换通过J-Link或者Open JTAG转换。
另J-Link一般是独立的组件,而Open JTAG一般集成到板子上。
Open JTAG Project的更多相关文章
- Debugging JTAG Connectivity Problems
2013-12-04 22:34:26 转自:http://processors.wiki.ti.com/index.php/Debugging_JTAG_Connectivity_Problems ...
- Boot Petalinux Project Using a remote system
通过jtag实现在远程服务器端下载petalinux image到连接在本地PC的开发板上的方法. 具体连接方式为 比如Host的系统为Windows,Remote system为运载在远程服务器上的 ...
- TMS320F28335项目开发记录2_CCS与JTAG仿真器连接问题汇总
CCS与仿真器连接问题 实际使用过程中.仿真器和CCS连接可能出现这样或那样的问题,或许你的连接非常成功,没碰到过什么问题.但我的问题的确不少,可能与电脑配置有关吧,也可能与人品有关吧. 以下的自己的 ...
- Bootloader Project
Bootloader Project From OMAPpedia Jump to: navigation, search Contents [hide] 1 OMAP Bootloader Over ...
- JTAG 引脚自动识别 JTAG Finder, JTAG Pinout Tool, JTAG Pin Finder, JTAG pinout detector, JTAGULATOR, Easy-JTAG, JTAG Enumeration
JTAG Finder Figuring out the JTAG Pinouts on a Device is usually the most time-consuming and frustra ...
- Implementation of Serial Wire JTAG flash programming in ARM Cortex M3 Processors
Implementation of Serial Wire JTAG flash programming in ARM Cortex M3 Processors The goal of the pro ...
- .NET Core系列 : 2 、project.json 这葫芦里卖的什么药
.NET Core系列 : 1..NET Core 环境搭建和命令行CLI入门 介绍了.NET Core环境,本文介绍.NET Core中最重要的一个配置文件project.json的相关内容.我们可 ...
- 记一个mvn奇怪错误: Archive for required library: 'D:/mvn/repos/junit/junit/3.8.1/junit-3.8.1.jar' in project 'xxx' cannot be read or is not a valid ZIP file
我的maven 项目有一个红色感叹号, 而且Problems 存在 errors : Description Resource Path Location Type Archive for requi ...
- ASP.NET Core project.json imports 是什么意思?
示例代码: "frameworks": { "netcoreapp1.0.0": { "imports" : "portable- ...
随机推荐
- SSH 公钥登录
一般使用SSH进行远程登录时需要提供密码,这也是我们所熟知的一种方式. 另外,就是通过公钥登录的方式,本文将简要介绍公钥登录的两种方法,建议使用方法二.本文也将简单演示公钥登录过程,以及强制使用公钥和 ...
- git 修改已提交的注释
在git中,其commit提供了一个--amend参数,可以修改最后一次提交的信息 修改最后一次提交注释 git commit --amend 然后在出来的编辑界面,直接编辑注释的信息,保存退出 gi ...
- yui压缩JS和CSS文件
CSS和JS文件经常需要压缩,比如我们看到的XX.min.js是经过压缩的JS. 压缩文件第一个是可以减小文件大小,第二个是对于JS文件,默认会去掉所有的注释,而且会去掉所有的分号,也会将我们的一些参 ...
- Daemon函数的用法
Daemon函数的用法 说明: 让一个程序后台运行. 原型: #include <unistd.h> int daemon(int nochdir, int noclose); #incl ...
- Python api认证
本节内容: 基本的api 升级的api 终极版api 环境:Djanao, 项目名:api_auto, app:api 角色:api端,客户端,黑客端 1.基本的api [api端] #api_aut ...
- Demo003 最大连续子数组问题(《算法导论》4.1-5)
问题 问题描述 给定n个整数(可能为负数)组成的数组,要求一个数组连续下标和的最大值,数组的元素可正.可负.可为零. 数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和.求所有子数组的 ...
- 使用Windows 2008R2中的NFS替代Samba协议,解决Windows 与Linux共享文件的问题
一.在Windows服务器上进行安装NFS服务 首先,打开服务管理器,选择添加角色: 选中文件服务,下一步: 出现一个提示,不管它,继续下一步: 在接下来的页面中选中“网络文件 ...
- Java中的String问题
方式一:String a = “aaa” ; 方式二:String b = new String(“aaa”); 两种方式都能创建字符串对象,但方式一要比方式二更优.因为字符串是保存在常量池中的,而通 ...
- Codeforces Round #533 (Div. 2) E - Helping Hiasat 最大团
E - Helping Hiasat 裸的最大团,写了一种 2 ^ (m / 2) * (m / 2)的复杂度的壮压, 应该还有更好的方法. #include<bits/stdc++.h> ...
- [C编码笔记] 空串与NULL是不一样的
int main() { char *str = NULL; printf("%p \n", str); printf("%p \n", &str); ...