Чи можливо зробити інтерфейс JTAG з ардуїно?


14

Якщо так, чи міг би мене направити на сайт, який розповідає, як це зробити? Я вважаю, що, можливо, я знайшов спосіб , але я не впевнений у тому, чи він би ще працював (потрібно знайти щось для перевірки)

Це питання пов'язане з попереднім питанням міни, розташованим тут.

У випадку, якщо потрібна додаткова довідкова інформація.


JBailey Я щойно наштовхнувся на ваше запитання про використання arduino для виготовлення перетворювача JTAG-USB, і мені було цікаво, як ви це зробили? \

Відповіді:


14

Так, можна перетворити Arduino в адаптер ARM JTAG.

Є три проблеми: напруга, швидкість та драйвери.

Ардуїно споконвічно працює на 5В. Більшість мікроконтролерів ARM не мають 5В на своїх штифтах JTAG і потребують 3,3 В. Найпростішим рішенням є запустити Arduino на рівні 3,3 В, якщо цього не знадобиться якесь перетворення рівня ( ідеї див. Перетворення I2C 3,3 до 5,0 В ).

Arduino підключений до ПК через послідовне посилання. Я сумніваюсь, що це можливо пройде швидше, ніж 115200bps, що зробить інтерактивні дії, такі як перехід коду в налагоджувач дуже повільним. Але ви зможете завантажувати код та повторно змінювати пристрої.

JTAG - протокол високого рівня, характерний для кожної сім'ї процесорів, який використовує інтерфейс, подібний SPI, для обміну даними. Більшість ключів JTAG просто забезпечують інтерфейс SPI через USB, а решту роботи залишають на ПК. OpenOCD і URJTag - популярний вибір. Для вашого протоколу Arduino JTAG вам знадобиться драйвер однієї з них.

Bus Pirate дуже схожий на Arduino (низькошвидкісний мікроконтролер + чіп FTDI). Він підтримує JTAG з OpenOCD, тому це, безумовно, можливо.

Якщо ви використовуєте плату Teensy / Opendous або іншу AVR-USB, ви можете використовувати eStick-JTAG .

Але для втраченої вартості JTAG я рекомендував би один з ключів на основі FTDI2232. Вони дешеві і добре підтримуються OpenOCD.


5

Це можливо, але дуже складно. Мені не подобаються FTDI на базі JTAG, тому що мікросхеми FTDI є готовими чорними скриньками і ніхто не дуже вчиться їх використанню.

Якби я хотів створити USB-JTAG з AVR, я отримав би принаймні повну швидкість підтримки в мікросхемі. Потім отримайте стек AVR usb (вихідні коди c) і подивіться приклад usb-to serial. Оскільки бітбінг через usb - це погана ідея (висока затримка), його потрібно перетворити на команди вищого рівня, які доручать MCU робити сам бітбінг (або використовувати SPI, якщо можливо) і повернути результат високого рівня через usb (повні байти ). Але тоді виникає необхідність написання драйверів для IDE для підтримки нового пристрою JTAG для налагодження через нього. У OpenOCD та URJTag є вихідний код драйверів для багатьох jtag-пристроїв, тому вам потрібно буде придбати та переробити його для свого нещодавно винайденого пристрою. Подивіться, як деякі люди виконали подібну роботу: http://code.google.com/p/estick-jtag/


1

Подивіться на openocd. Програми в основному базуються на паралельному підході до порізу біт портів, я думаю, це йде так далеко, що змінюється лише один біт за один раз. Досить просто взяти те, що я думаю, що вони називають фіктивний бекенд, який є прикладом. Надішліть будь-яку команду запису бітів на ардуїно, і поставте її чи очистіть цей біт. Коли вас попросять прочитати біт введення, тоді надішліть команду arduino для виконання цього завдання та повернення результатів.

Я зробив саме це з успіхом, але не з ардуїно, я розмовляв з openocd від хоста до імітованого ядра руки, що працює в симуляторі hdl.

Зауважте, що деякі специфікації jtag закриті, наприклад, cortex-m3 є якось серіалізованим зменшеним числом штифтів jtag, який останній раз, коли я подивився, був недоступний без NDA. це може не мати значення, тому що openocd піклується про все це для вас, поки ви використовуєте jtag-інтерфейс, який підтримує openocd, дещо битий задній кінець - це ваш ардуїно та будь-який інтерфейс, який ви використовуєте, щоб дістатися до / з нього, прийти грати .

Як уже зазначав Джобі, вам потрібно бути обережними з напругами (не всі ароматизатори ардуїно 5 В, а не всі регулятори арматури 3,3 вольта) та кондиціонування сигналу та заземлення та все таке. Якщо ваша цільова плата живиться від живлення, яке знаходиться на іншому рівні порівняно з тим, чим ви живите ардуїно, ви зможете щось розплавити, коли з'єднаєте ці два.


Зауважте, що використання послідовного (або ще гірше, USB з його пакетованим транспортом) інтерфейсу для пробіту біт-проксі може бути дуже повільним. Набагато ефективніше змусити мікроконтролер виконувати повноцінні операції та спілкуватися з ним на більш високому рівні, тобто сказати йому прочитати цей реєстр, записати цей або навіть запрограмувати цей блок даних.
Кріс Страттон

1

Це можливо, і я насправді це реалізував і все тут пояснив .

Існує бібліотека на GitHub тут , який складається з двох частин: програма , яка працює на Arduino і сценарій пітона , який відправляє XSVF файли в Arduino.

Вам, швидше за все, знадобиться кілька резисторів для перетворення 5 В на 3,3 В, оскільки більшість FPGA і CPLD використовують цей рівень напруги.

Я також певний досвід написав асемблер / демонтаж для файлів XSVF, код знаходиться в тій же бібліотеці github і пояснюється в цій публікації тут .

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.