Если это так, можно ли направить меня на сайт, который рассказывает, как это сделать? Я полагаю, что, возможно, нашел способ , но я не уверен относительно того, будет ли он работать или нет (нужно найти что-то, чтобы проверить его).
Этот вопрос относится к предыдущему моему вопросу, расположенному здесь.
В случае, если требуется дополнительная справочная информация.
Ответы:
Да, можно превратить Arduino в адаптер ART JTAG.
Есть три проблемы: напряжение, скорость и драйверы.
Arduino изначально работает на 5V. Большинство микроконтроллеров ARM не допускают 5 В на своих выводах JTAG и требуют 3,3 В. Самое простое решение - запустить Arduino при напряжении 3,3 В, если вам не потребуется какое-либо преобразование уровня (см. Преобразование I2C от 3,3 до 5,0 В). Идеи ).
Arduino подключен к ПК через последовательный канал. Я сомневаюсь, что он может работать быстрее, чем 115200 бит / с, что сделает интерактивные действия, такие как пошаговое выполнение кода в отладчике, очень медленным. Но вы сможете загружать код и обновлять устройства.
JTAG - это протокол высокого уровня, специфичный для каждого семейства процессоров, который использует SPI-подобный интерфейс для обмена данными. Большинство ключей JTAG просто предоставляют интерфейс SPI через USB, а оставшуюся часть работы оставляют за приложением для ПК. OpenOCD и URJTag являются популярным выбором. Вам понадобится драйвер в одном из них для вашего протокола Arduino JTAG.
Bus Pirate очень похож на Arduino (низкоскоростной микроконтроллер + чип FTDI). Он поддерживает JTAG с OpenOCD, так что это, безусловно, возможно.
Если вы используете плату Teensy / Opendous или другую плату AVR-USB, вы можете использовать eStick-JTAG .
Но для JTAG с потерей стоимости я бы порекомендовал один из ключей на базе FTDI2232. Они дешевые и хорошо поддерживаются OpenOCD.
источник
Это возможно, но очень сложно. Мне не нравятся JTAG на основе FTDI, потому что чипы FTDI представляют собой готовые черные ящики, и никто не учится на них.
Если бы я хотел создать USB-JTAG с AVR, я бы получил тот, который поддерживает по крайней мере полную скорость USB в чипе. Затем получите USB-стек AVR (c исходными кодами) и посмотрите на последовательный пример usb-to. Так как битовая привязка по usb - плохая идея (высокая задержка), ее необходимо преобразовать в команды более высокого уровня, которые будут инструктировать MCU самостоятельно выполнять битовую привязку (или использовать SPI, если это возможно) и возвращать результат высокого уровня через usb (полные байты). ). Но затем возникает необходимость написания драйверов для IDE для поддержки нового устройства JTAG для его отладки. OpenOCD и URJTag имеют исходный код драйверов для многих jtag-устройств, поэтому вам нужно будет получить и переработать его для вашего нового устройства. Посмотрите, как некоторые люди проделали похожую работу: http://code.google.com/p/estick-jtag/
источник
Посмотрите на openocd. Бэкэнды в основном основаны на подходе параллельного порта, и я думаю, что он заходит так далеко, что меняется только по одному биту за раз. Довольно просто взять то, что я думаю, они называют фиктивным бэкэндом, который является примером. Отправьте любую команду записи в arduino, и установите или сбросьте этот бит. Когда вас попросят прочитать входной бит, отправьте команду в arduino, чтобы выполнить эту задачу и вернуть результаты.
Я сделал именно это с успехом, но не с Arduino, у меня был разговор openocd от хоста в симулируемое ядро руки, работающее в симуляторе HDL.
Обратите внимание, что некоторые спецификации jtag закрыты, например, cortex-m3 является своего рода сериализованным уменьшенным числом пинов jtag, которое в прошлый раз, когда я смотрел, было недоступно без NDA. это может не иметь значения, потому что openocd позаботится обо всем этом для вас, пока вы используете интерфейс jtag, который поддерживает openocd, бэк-бэк-бэнд - это то место, где ваше arduino и любой интерфейс, который вы используете для доступа к нему / с него, входят в игру. ,
Как уже отмечал Джоби, вы должны быть осторожны с напряжениями (не все ардуиновые ароматы имеют напряжение 5 В и не все контроллеры питания имеют напряжение 3,3 В), а также с формированием сигнала и заземлением и всем этим. Если ваша целевая плата питается от источника питания, который находится на другом уровне по сравнению с тем, что вы используете для питания вашего Arduino, вы можете расплавить что-то, когда вы подключите их.
источник
Это возможно, и я на самом деле реализовал это и объяснил все здесь .
Существует библиотека на GitHub здесь , который состоит из двух частей: программа , которая работает на Arduino и сценарий питона , который отправляет XSVF файлы в Arduino.
Скорее всего, вам потребуется несколько резисторов для преобразования 5 В в 3,3 В, так как большинство FPGA и CPLD используют этот уровень напряжения.
Я также имел некоторый опыт написания ассемблера / дизассемблера для файлов XSVF, код находится в той же библиотеке github и объясняется в этом посте здесь .
источник