Подивіться на openocd. Програми в основному базуються на паралельному підході до порізу біт портів, я думаю, це йде так далеко, що змінюється лише один біт за один раз. Досить просто взяти те, що я думаю, що вони називають фіктивний бекенд, який є прикладом. Надішліть будь-яку команду запису бітів на ардуїно, і поставте її чи очистіть цей біт. Коли вас попросять прочитати біт введення, тоді надішліть команду arduino для виконання цього завдання та повернення результатів.
Я зробив саме це з успіхом, але не з ардуїно, я розмовляв з openocd від хоста до імітованого ядра руки, що працює в симуляторі hdl.
Зауважте, що деякі специфікації jtag закриті, наприклад, cortex-m3 є якось серіалізованим зменшеним числом штифтів jtag, який останній раз, коли я подивився, був недоступний без NDA. це може не мати значення, тому що openocd піклується про все це для вас, поки ви використовуєте jtag-інтерфейс, який підтримує openocd, дещо битий задній кінець - це ваш ардуїно та будь-який інтерфейс, який ви використовуєте, щоб дістатися до / з нього, прийти грати .
Як уже зазначав Джобі, вам потрібно бути обережними з напругами (не всі ароматизатори ардуїно 5 В, а не всі регулятори арматури 3,3 вольта) та кондиціонування сигналу та заземлення та все таке. Якщо ваша цільова плата живиться від живлення, яке знаходиться на іншому рівні порівняно з тим, чим ви живите ардуїно, ви зможете щось розплавити, коли з'єднаєте ці два.