arduino와 JTAG 인터페이스를 만들 수 있습니까?


14

그렇다면 어떻게해야하는지 알려주는 사이트로 안내 할 수 있습니까? 나는 방법 을 찾았을 것이라고 생각 하지만 그것이 아직 작동하는지 여부는 확실하지 않습니다 (테스트 할 무언가를 찾아야합니다).

이 질문은 여기 에있는 이전 질문과 관련이 있습니다.

더 많은 배경 정보가 필요한 경우.


JBailey 방금 arduino를 사용하여 JTAG-USB 변환기를 만드는 방법에 대한 질문을 받았는데 어떻게 만들 었는지 궁금했습니다. \

답변:


14

예, Arduino를 ARM JTAG 어댑터로 전환 할 수 있습니다.

전압, 속도 및 드라이버의 세 가지 문제가 있습니다.

Arduino는 기본적으로 5V에서 실행됩니다. 대부분의 ARM 마이크로 컨트롤러는 JTAG 핀에서 5V를 허용하지 않으며 3.3V가 필요합니다. 가장 쉬운 해결책은 Arduino를 3.3V에서 실행하는 것인데, 일종의 레벨 변환이 필요하지 않습니다 ( 아이디어는 I2C 3.3에서 5.0V 변환 참조 ).

Arduino는 직렬 링크를 통해 PC에 연결됩니다. 115200bps보다 빠른 속도로 진행될 수 있다고 생각합니다. 이로 인해 디버거에서 코드를 단계별로 실행하는 것과 같은 대화 형 활동이 매우 느려집니다. 그러나 코드를 업로드하고 장치를 다시 플래시 할 수 있습니다.

JTAG는 각 프로세서 제품군에 고유 한 고급 프로토콜로, SPI와 같은 인터페이스를 사용하여 데이터를 교환합니다. 대부분의 JTAG 동글은 USB를 통해 SPI 인터페이스를 제공 한 다음 나머지 작업은 PC 응용 프로그램에 맡깁니다. OpenOCD와 URJTag가 인기있는 선택입니다. Arduino JTAG 프로토콜 용 드라이버 중 하나가 필요합니다.

Bus Pirate는 Arduino (저속 마이크로 컨트롤러 + FTDI 칩)와 매우 유사합니다. OpenOCD와 함께 JTAG지원 하므로 가능합니다.

Teensy / Opendous 또는 다른 AVR-USB 보드를 사용하는 경우 eStick-JTAG를 사용할 수 있습니다 .

그러나 JTAG 손실 비용으로 FTDI2232 기반 동글 중 하나를 권장합니다. OpenOCD에서 저렴하고 잘 지원됩니다.


5

가능하지만 매우 어렵습니다. FTDI 기반 JTAG는 FTDI 칩이 블랙 박스로 만들어 졌기 때문에 사용하지 않기 때문에 FTDI 기반 JTAG가 마음에 들지 않습니다.

AVR을 사용하여 USB-JTAG를 빌드하려면 칩에서 최소 USB 최대 속도 지원 기능을 사용하십시오. 그런 다음 AVR USB 스택 (c 소스 코드)을 가져 와서 usb-to 직렬 예제를보십시오. USB를 통한 비트 뱅킹은 좋지 않은 생각 (높은 대기 시간)이기 때문에 MCU가 비트 뱅킹 자체를 수행하거나 가능한 경우 SPI를 사용하도록 지시하고 USB를 통해 높은 수준의 결과를 반환하도록 명령하는 고급 명령으로 변환해야합니다 (완전한 바이트) ). 그러나 IDE를 디버깅하기 위해 새로운 JTAG 장치를 지원하기 위해 드라이버를 작성해야합니다. OpenOCD와 URJTag는 많은 jtag 장치를위한 드라이버 소스 코드를 가지고 있으므로 새로 발명 된 장치에 대한 드라이버를 얻어서 재 작업해야합니다. http://code.google.com/p/estick-jtag/ 일부 사람들이 유사한 작업을 수행 한 방법을 확인하십시오 .


1

openocd를보십시오. 백엔드는 대부분 병렬 포트 비트 뱅 접근 방식을 기반으로하며 한 번에 하나의 비트 만 변경하는 것으로 생각합니다. 그들이 생각하는 더미 백엔드라고 생각하는 것을 취하는 것은 매우 간단합니다. Arduino에 write bit 명령을 보내고 해당 비트를 설정하거나 지우십시오. 입력 비트를 읽으라는 메시지가 표시되면 arduino에 명령을 보내 해당 작업을 수행하고 결과를 반환하십시오.

나는 이것을 정확하게 성공했지만 arduino는하지 않았지만 호스트에서 hdl 시뮬레이터에서 실행되는 시뮬레이션 된 팔 코어로 openocd 대화를했습니다.

일부 jtag 사양이 닫히고 cortex-m3은 예를 들어 마지막으로 보았던 NDA가 없으면 사용할 수 없었던 일종의 직렬화 된 줄어든 핀 수 jtag입니다. openocd가 지원하는 jtag 인터페이스를 사용하는 한 openocd가 모든 것을 처리하기 때문에 문제가되지 않을 수 있습니다. 비트 백엔드는 arduino와 사용하기 위해 사용하는 인터페이스가있는 곳입니다. .

Joby가 이미 언급했듯이 전압 (모든 arduino 풍미가 5V는 아니며 모든 암 컨트롤러가 3.3V는 아닙니다) 및 신호 컨디셔닝 및 접지 및 모든 것들에주의해야합니다. 타겟 보드에 Arduino에 전원을 공급하는 것과 다른 레벨의 전원이 공급되는 경우 두 보드를 연결할 때 무언가가 녹을 수 있습니다.


프록시 비트 뱅킹에 직렬 (또는 패킷 화 된 전송 기능을 갖춘 USB) 인터페이스를 사용 하면 속도 가 매우 느려질 수 있습니다 . 마이크로 컨트롤러가 완전한 동작을 수행하고 더 높은 레벨에서 통신하도록하는 것이 훨씬 더 효율적입니다. 즉,이 레지스터를 읽거나, 쓰거나,이 데이터 블록을 프로그래밍하도록 지시합니다.
Chris Stratton

1

가능하며 실제로 구현하고 여기에 모두 설명했습니다 .

여기 github 에는 arduino에서 실행되는 프로그램과 XSVF 파일을 arduino로 보내는 파이썬 스크립트로 구성 되는 라이브러리 가 있습니다.

대부분의 FPGA 및 CPLD가이 전압 레벨을 사용하므로 5V에서 3.3V로 변환하려면 몇 개의 저항이 필요할 것입니다.

XSVF 파일을위한 어셈블러 / 디 어셈블러를 작성해 본 경험이 있으며 코드는 동일한 github 라이브러리에 있으며이 게시물에 설명되어 있습니다 .

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.