USB-JTAG 두번째 자작

기존에 USB 클라이언트 디바이스를 이용한 USB-JTAG을 하나 만들었었다.

첫번째 자작 USB-JTAG

위에 제작한 USB-JTAG은 USB 클라이언트 디바이스의 IO에 JTAG 핀 기능을 할당하여
펌웨어에서 직접 드라이브 (bit-bang)하는 방식으로 개발 하였으나 사용한 USB 클라이언트
디바이스 IO스위칭 속도가 너무 낮아 문제가 되었다.
(PXA270 보드의 NOR플래시 읽기/쓰기를 구현해 봤으나 너무 느림)

때문에 처음 제작한 USB-JTAG은 USB-AVRISP전용 디바이스로 쓰기로 하고
고속 IO스위칭이 가능한 클라이언트 MCU (TMS320F2812)를 적용하여 다시 제작하였다.
USB-UART 컨버터를 내장시켜 호스트 PC에서는 시리얼 통신 터미널을 이용해
접속하도록 바꾸었다.

JTAG신호 드라이브에는 기존의 bit-bang기법과 F2812에 내장된 SPI인터페이스를
사용하여 구동하도록 구현하였으며 SPI엔진을 사용할 경우 JTAG클럭 스피드를
사용자가 변경하여 사용 할 수 있도록 해놨다.
최대 37.5MHz까지 가능하나 원래 JTAG과 SPI는 타이밍이 다른 구조이므로 10MHz이내에서 호환(?)되는 최대 클럭을 찾아 사용하였다 (아래 테이블 TCK속도 참조).

JTAG 인터페이스 부분은 기존과 동일하게 Digital Isolator를 적용하여
타켓측과 전원/신호/접지를 완전히 분리 시켜 놓았다.

기존에 만들었던 PXA270용 JTAG 코드를 이식시켜 사용해 봤는데
겁나게 빨라졌다. 움하하...


<> 2015/04/17 업데이트 기준 지원가능 디바이스 리스트 및 TCK속도
ARM7TDMI (ARMv4T, Embedded-ICE) S3C3400(7MHz), S3C3410(7MHz)
ARM9TDMI (ARMv4T, Embedded-ICE) KS8695(8MHz), S3C2410(7MHz), S3C2440(7MHz)
XScale (ARMv5TE, EXTEST) PXA270(4MHz)
MIPS32 (EJTAG v2.6) ADM5120P(8MHz), SMP8634(6.5MHz)
AVR (AVR-ISP) ATMEGA8/16/64/128(1MHz)

댓글 없음:

댓글 쓰기