Avr отладка по usb
При разработке и отладке программ под микроконтроллеры, возникают вопросы, связанные с программированием и отладкой программы в реальной схеме. Если с программированием микроконтроллеров AVR особых проблем не возникает, поскольку существует множество схем для «заливки» прошивки в кристалл, одной из простейших таких схем является схема получившая название «пять проводов», то с отладкой программы такого богатого выбора не существует.
Для отладки программы возможно использования только двух вариантов – это программный симулятор и внутрисхемный JTAG эмулятор-программатор. Программный симулятор, как правило, не может учитывать всех особенностей работы схемы, таких как внешние воздействия, совместная работа с другими устройствами и прочее. С аппаратными программаторами-отладчиками JTAG появляется возможность пошаговой отладки программы напрямую в самом микроконтроллере установленном непосредственно в схему, просмотра и изменения всех регистров микроконтроллера, установка breakpoints и конечно же внутрисхемного программирования микроконтроллера. Но стоимость оригинального AVR JTAG ICE MkII выпускаемого Atmel колеблется в районе 300 евро, а его аналога AVRDRAGON выпускаемого серийно около 3000руб., что является очень дорогим для людей, занимающихся созданием устройств на микроконтроллерах AVR «для себя».
Но к счастью удалось создать клон, оригинального AVR JTAG ICE, который стоит существенно дешевле оригинала и позволяет проводить программирование и отладку микроконтроллеров AVR с интерфейсом JTAG.
Рис 1. Принципиальная электрическая схема клона AVR JTAG ICE
Принципиальная электрическая схема приведена на рис. 1. Основой данного JTAG служит микроконтроллер DD3 AVR ATMega16. Микросхема DD2 MAX232 выполняет роль преобразователя интерфейса RS232 в ТТЛ уровни UART. Микросхема DD1 предназначена для защиты входных и выходных цепей микроконтроллера DD3 и согласования напряжения логических уровней при использовании внешнего питания.
Питание JTAG может браться от цепей питания отлаживаемого устройства через четвертый контакт vTref XP3, а также может использоваться внешнее через разъем XP1 и ХР2. Внешнее напряжение может быть в диапазоне от 7 до 15В. При использовании внешнего источника питания, вывод vTref разъема XP3можно не подключать.
Светодиод HL2 отображает наличие питания, HL1 режим работы JTAG.
Подключение JTAG к отлаживаемому микроконтроллеру осуществляется через стандартный десяти выводной разъем. Схема подключения которого изображена на рис. 2.
Рис 2. Схема подключения AVR JTAG ICE к отлаживаемому устройству
Существует несколько вариантов BootLoader загрузчиков для прошивки JTAG, но на мой взгляд наиболее удачный вариант получился у Кротевич Виталия (Vit). Его загрузчик наиболее близко повторяет фирменный и позволяет обновлять микропрограмму JTAG непосредственно из AVRStudio без перезагрузки JTAG и входа в режим программирования через BootStart. В случае если не планируется производить обновление прошивки JTAG`a , то загрузчик можно не прошивать, а «зашить» только оригинальную прошивку от AVRStudio.
Чтобы «зашить» bootloader в JTAG можно воспользоваться программатором AVReal, PonyProg, STK200, «пять проводов», любо любым другим имеющимся в наличии и совместимым с AVR ISP. Подключение программатора производится к ISP разъему программирования ХР4. Файл прошивки JTAG_ICE.hex.
Пример программирования фьюзов показан на рисунке 3.
Рис 3. Установка фьюзов для AVR JTAG ICE
Пример работы AVR JTAG ICE показан на рисунке 4. В качестве примера произведено считывание сигнатуры ATMega128
Рис 4. Чтение сигнатуры микроконтроллера ATMega128 с помощью AVR JTAG ICE
Рис 5. Изображение верхнего слоя трассировки печатной платы, с нанесенными элементами
Рис 6. Изображение нижнего слоя трассировки печатной платы, с нанесенными элементами
В статье рассказывается, как быстро встроить в firmware AVR отладочный вывод на текстовую консоль терминала.
Немногие программисты (особенно начинающие) имеют в своем распоряжении аппаратный отладчик (типа JTAGICE mkII или AVR Dragon). Поэтому светодиод, осциллограф и текстовый вывод остаются актуальным средством отладки и поиска ошибок. Однако даже при наличии аппаратного отладчика часто нужно в реальном времени видеть, что делает выполняющийся код. Для этого в консоль терминала выводят так называемую отладочную информацию - данные, которые должен увидеть программист.
Самый простой способ реализации такого вывода - использование аппаратного UART, который имеется почти во всех моделях AVR. Вывод получается быстрый и нересурсоемкий (т. е. он не занимает много процессорного времени ядра AVR). Для вывода через UART для AVR есть уже готовые подпрограммы и макросы, один из них - модуль oddebug, который есть в составе библиотеки V-USB.
[Использование модуля oddebug.c для отладки]
1. Скачайте библиотеку V-USB [1].
2. В папке vusb-20120109\usbdrv возьмите файлы usbportability.h, oddebug.c и oddebug.h, и скопируйте их в папку своего проекта.
3. Добавьте в проект компиляцию модуля oddebug.c.
Если у Вас проект AVR GCC, то добавьте модуль oddebug.c в список компиляции и линковки makefile:
SRC = $(TARGET).c \
Descriptors.c \
oddebug.c \
$(LUFA_SRC_USB) \
$(LUFA_SRC_USBCLASS)
Если у Вас проект IAR, то добавьте модуль oddebug.c в дерево модулей проекта.
4. Добавьте в модули, где нужно использовать отладочный вывод, подключение заголовка oddebug.h (директивой include).
5. Задайте глобальное макроопределение DEBUG_LEVEL, не равное 0.
Если у Вас проект AVR GCC, лучше всего это сделать в makefile проекта:
DEBUG_LEVEL = 1
..
CDEFS += -DDEBUG_LEVEL=$(DEBUG_LEVEL)
Если у Вас проект IAR, то добавьте определение DEBUG_LEVEL в свойствах проекта (Options -> Compiler -> Preprocessor -> Defined symbols).
Модуль oddebug написан таким образом, что значение макроопределения DEBUG_LEVEL может быть либо 0, либо 1, либо 2:
DEBUG_LEVEL=0 отладка через UART не активна, код oddebug не компилируется, и макросы DBG1 и DBG2 не работают (хотя они могут присутствовать в коде пользователя).
DEBUG_LEVEL=1 работает только макрос DBG1, DBG2 не работает (хотя DBG2 может встречаться в коде пользователя).
DEBUG_LEVEL=2 работает и DBG1, и DBG2.
6. Перед главным циклом main сделайте вызов odDebugInit().
LEDs_SetAllLEDs(LEDMASK_USB_NOTREADY);
odDebugInit();
DBG1(0x00, 0, 0); /* вывод debug: запуск цикла main */
sei();
Макрос odDebugInit настраивает UART на скорость 19200 бит/сек, 8 бит данных, один стоп-бит, без четности (19200 baud rate, 8 bit data, 1 stop bit, no parity) - имейте это в виду при подключении к порту отладки.
7. Для отладочного вывода используйте макросы DBG1() и DBG2(). Первый параметр макроса - байт префикса, он выведется в HEX-виде (и за ним будет двоеточие), второй параметр - если не 0, то адрес памяти, откуда будут выведены значения байт (указатель), а третий параметр - если не ноль, то количество байт для вывода. Примеры использования:
u16 var16;
var16 = 0x1234;
DBG1(0x01, &var16, 2);
//выведется "01: 34 12" - HEX значения двух байт переменной var16
Как Вы уже наверное догадались, использование макросов DBG1 и DBG2 позволяет вести отладку на 2 уровнях, в зависимости от значения DEBUG_LEVEL. Если DEBUG_LEVEL = 2, то вывод может быть максимально подробным, так как будут выводить инфу и DBG1, и DBG2. Если DEBUG_LEVEL = 1, то отладочного вывода может быть меньше (будет выводится только макрос DBG1).
[Устранение проблем]
Наверное, Вы забыли подключить заголовок, который задает символические имена Вашего микроконтроллера - oddebug.h не нашел имена TXEN или TXEN0, подключите нужный заголовок перед подключением oddebug.h. В проекте AVR GCC нужно подключить файл io.h:
2. Если у Вас чип, у которого нет имен TXEN или TXEN0, но задано имя TXEN1 или другое (например, так у чипа AT90USB162), то поправьте файл oddebug.h примерно так:
Аналогичным образом поправьте условия определения ODDBG_TXEN, ODDBG_UBRR, ODDBG_USR USR, ODDBG_UDRE UDRE, ODDBG_UDR UDR.
Готовый oddebug.h с внесенными исправлениями можете скачать по ссылке [2].
[Как подключить AVR к компьютеру]
Для согласования уровней TTL RS232 (0..+5V) и стандартного RS232, который использовался на PC (+-12V), нужен специальный адаптер, наподобие [3]. По минимуму нужно соединить с инверсией TTL TXD отлаживаемого микроконтроллера с RXD компьютера. Сложность тут в необходимости обеспечить инверсию, сделать изолирующую развязку от статического электричества и одновременно обеспечить двухполярный сигнал TXD. На рисунке показан вариант такого подключения, обеспечивающий электрическую изоляцию отлаживаемого устройства и компьютера. Оптрон 6H2017C можно заменить на любой другой фототранзисторный. Напряжения +12V и -12V можно снять с коннектора ATX блока питания компьютера.
[Адаптер USB - TTL RS232]
Если в Вашем компьютере нет порта RS232, то нужен переходник USB - TTL RS232 (его еще называют VCP переходник, Virtual COM port). Его можно собрать на чипе FTDI [7], а можно на микроконтроллере AVR. На фото показан пример такого адаптера, сделанного из макетной платы AVR-USB162MU [6], и подключенного к отлаживаемой макетной плате AVR-USB-MEGA16 (на которой, кстати, можно сделать точно такой же адаптер USB - TTL RS232). Вверху - плата AVR-USB-MEGA16, программа которой отлаживается, а внизу - адаптер USB - TTL RS232, собранный на плате AVR-USB162.
Сама плата AVR-USB162 физически уже готовый адаптер, который нужно просто прошить программой USB CDC (см. [2], папка bin) и подключить тремя проводками - GND, TXD, RXD (проводок TXD использовать необязательно, если нужен только отладочный вывод):
При первом подключении к компьютеру адаптера USB - TTL RS232 операционная система Windows запросит драйвер, укажите мастеру установки оборудования папку driver из архива [2].
Подключение адаптера USB - TTL RS232 к макетной плате AVR-USB-MEGA16 (микроконтроллер ATmega32A).
Подключение адаптера USB - TTL RS232 к макетной плате AVR-USB162 (микроконтроллер AT90USB162).
Подключение адаптера USB - TTL RS232 к макетной плате AVR-USB162MU (микроконтроллер AT90USB162MU).
[Переходники USB - TTL RS232 на аппаратных чипах]
Переходник USB TTL COM-port (он подключается с одной стороны к 6-pin коннектору FTDI, а с другой стороны к компьютеру по USB) можно купить готовый. Обычно такой переходник сделан по простейшей схеме на основе чипа FT232 (компания FTDI) или CP210x (компания Silicon Labs). Драйвер для переходника можно скачать с сайта соответствующей компании. Хорошие переходники USB to TTL Serial Cable FTDI (или на чипе CP210x) можно купить на eBay, dealextreme или aliexpress, есть даже предложения с бесплатной доставкой. При покупке выбирайте 5V версию (иногда бывают версии на 3.3V). Самый лучший вариант – когда можно выбрать перемычкой рабочие уровни порта TTL RS-232 (3.3V или 5V). Если уровни сигналов на переходнике USB to TTL и отлаживаемом устройстве не совпадают, то понадобятся последовательно включенные резисторы номиналом около 1…2 кОм.
[Использование класса USB CDC для отладки]
Если Ваше устройство на AVR имеет интерфейс USB (как например макетные платы AVR-USB-MEGA16 или AVR-USB162), то Вы можете запустить на них программное обеспечение класса USB CDC, что дает возможность работать USB-устройству в качестве виртуального COM-порта. В этом случае переходник USB - TTL RS232 вообще не нужен. Пример использования виртуального COM-порта для AVR-USB-MEGA16 см. в [4] и для AVR-USB162 в библиотеке LUFA [5].
[Отладка кода в среде программирования Arduino IDE]
Переходник VCP можно также использовать для отладочного вывода и загрузки кода скетча (в платах Arduino, которые не оборудованы собственным портом VCP), что может помочь в отладке кода программы [2]. В Arduino IDE для этой цели используется оператор println.
[Назначение файлов и папок архива по ссылке [2]]
bin готовые прошивки переходника USB - TTL RS232 (проект LUFA-110528\Projects\USBtoSerial), скомпилированные для плат AVR-USB162, AVR-USB162MU (чип AT90USB162) на частоты кварца 8 и 16 МГц.
doc даташиты на микроконтроллеры AT90USB162 (макетные платы AVR-USB162, AVR-USB162MU) и ATmega32A (макетная плата AVR-USB-MEGA16).
download скачанные пакеты библиотек LUFA, V-USB, пакет утилит разработки WinAVR.
driver inf-файл для переходника USB - TTL RS232, который нужно предоставить мастеру установки оборудования Windows.
LUFA-110528 библиотека LUFA
LUFA-110528\Projects\USBtoSerial проект USBtoSerial, из которого скомпилированы прошивки переходника USB - TTL RS232.
LUFA-110528\Demos\Device\ClassDriver\GenericHID проект, в котором в качестве примера используется отладочный вывод через USART (применен модуль oddebug). См. также пример LUFA-110528\Demos\Device\LowLevel\GenericHID.
LUFA-110528\Demos\Device\ClassDriver\GenericHID\oddebug.h исправленный файл oddebug.h, в который добавлена поддержка микроконтроллера AT90USB162.
Как компилировать прошивки переходника USB - TTL RS232 (у Вас должен быть установлен пакет разработки WinAVR):
1. Перейдите в каталог LUFA-110528\Projects\USBtoSerial\.
2. Проверьте в makefile опции MCU, BOARD, F_CPU - они должны соответствовать используемому микроконтроллеру, макетной плате, частоте кварца.
3. Выполните команду make clean.
4. Выполните команду make, получите файл USBtoSerial.hex - это и будет скомпилированный файл прошивки для переходника USB - TTL RS232.
[Часто задаваемые вопросы, FAQ]
120428. Сделал вывод отладочной информации через преобразователь уровней, заработало. Однако в PuTTY отображаются иероглифы (кракозябры и псевдографика). Скриншот прилагаю.
Подобные задачи часто решены в отладочных платах и инструментарии для «больших» микроконтроллеров, но не всегда доступны для контроллеров ценового диапазона «менее 50 центов». В статье показаны возможности расширенной отладки микроконтроллеров фирмы Atmel, вошедшей в состав компании Microchip Technology Inc.
В статье не будут рассмотрены «обычные» функции отладчика, такие как точки останова, наблюдение за состоянием регистров и другие, а описаны возможности по использованию дополнительных каналов отладки, предоставляемые EDBG-отладчиками в отладочных платах Xplained PRO, отладчиках ATMEL-ICE и Power Debugger.
Схема отладки микроконтроллерного устройства приведена на рис. 1.
Рис. 1. Схема отладки микроконтроллерного устройства
Микроконтроллер принимает и передает информацию внутрисхемному отладчику (дебаггер, Debugger) через доступные интерфейсы связи с отладчиком. Внутрисхемный отладчик (в составе отладочной платы или как автономное устройство) через интерфейс связи с компьютером (ПК) направляет информацию в программное обеспечение, например в Atmel Studio, где поступившие сведения обрабатываются и отображаются в удобном для пользователя виде.
Большинство микроконтроллеров имеют встроенное ядро поддержки отладки микроконтроллера (On-Chip Debug, OCD), но при отладке, при поддержке программных ресурсов контроллера, также могут использоваться вспомогательные каналы обмена информацией: порты ввода/вывода, интерфейсы связи (I 2 C, SPI, UART). Полезную информацию, особенно при отладке микропотребляющих устройств, несет измерение напряжения питания и потребляемого устройством тока.
Интерфейс связи МК с дебаггером
Для отладки микроконтроллеров Atmel (AVR, Cortex/ARM), в зависимости от семейства, применяются несколько специальных (Debug) интерфейсов, в том числе PDI, UPDI, JTAG, SWD. Характеристики интерфейса UPDI приведены в таблице 1.
Интерфейс
Однопроводный (1-wire), UART
Отладочный вывод может использоваться для отладки или служить входом сброса или В/В. Процедура выдачи высокого напряжения требуется для входа в режим отладки
Я заметил, что в отношении микроконтроллеров существует несколько способов их программирования. Я немного знаком с USB, так как мои Arduino можно программировать через USB.
Что такое интерфейс JTAG или SPI?
В конечном счете, я знаю, что эти интерфейсы дают возможность прошивать чип новыми инструкциями, но чем они отличаются? Есть ли преимущества одного над другим?
Микроконтроллеры ATMEGA, такие как в Arduino, которые поставляются прямо с завода, могут быть запрограммированы только с использованием интерфейса SPI или JTAG.
SPI означает последовательный периферийный интерфейс и позволяет микроконтроллерам взаимодействовать друг с другом или с внешним миром. Иногда его также называют 3-х проводным, потому что для связи используются три провода. Чтобы запрограммировать микросхему, вам понадобится специальный программатор, который считывает команды с USB для управления линиями SPI для программирования микросхемы. Популярным кажется USBTinyISP от Adafruit . Очень хорошее введение в программирование SPI в SparkFun, Наиболее популярными приложениями для программирования микросхем Atmel AVR являются avrdude (cmd line), ponyprog (не работает с новыми программистами) и в некоторых случаях AVR Studio (если ваш программист поддерживает это). Преимущество программирования SPI заключается в том, что вы можете программировать любой чип Atmel прямо с завода, поэтому вам не всегда понадобится Arduino в ваших проектах.
Если SPI - это «просто еще один» последовательный протокол, JTAG - это протокол, специально разработанный для программирования и отладки микроконтроллеров. Не все Atmel micro поддерживают JTAG, но те, что используются в Arduino. Протокол JTAG может использоваться для таких интересных вещей, как «эмуляция схемы» и отладка, что означает, что он позволяет вам видеть состояние программы в вашем микроконтроллере, пока он действительно работает. Для этого вам понадобится специальный программист. Видел мой ответ на другой вопрос .
Чтобы запрограммировать микросхему с помощью USB, вам сначала нужно запрограммировать ее с помощью «загрузчика» с использованием SPI или JTAG. После загрузки с загрузчиком система будет программироваться с любого ПК с использованием USB-последовательного преобразователя. Недостатком является то, что загрузчик занимает некоторое пространство памяти, и этот метод не позволяет вам видеть состояние чипа во время его работы.
Будучи точным в идее, что последовательный загрузчик недоступен на новом ATMEGA (хотя он есть на многих других микроконтроллерах), утверждение о том, что SPI или JTAG должны использоваться, неверно. ATMEGA также поддерживает режим параллельного программирования высокого напряжения, который имеет возможность переопределить некоторые настройки предохранителей, что сделает более популярными методы внутрисхемного программирования неработоспособными. JTAG был разработан не для программирования микросхем, а для тестирования плат ПК путем синхронизации значений в и из выводных регистров ввода-вывода. Расширение его для программирования или отладки основных функций было более поздним взломом. SPI и In System Programming / Serial программирование различны. Я также привык к тому, что многие из меньших микроконтроллеров Atmega имели последовательные выводы программирования на интерфейсе SPI, но меня поразил тот факт, что на некоторых более крупных микроконтроллерах Atmega последовательные контакты программирования не были на интерфейсе SPI.В то время как я хотел бы погрузиться в различные доступные методы программирования, кто-то еще уже есть. Вот руководство Дина Камера по AVRFreaks,
Я хотел бы добавить еще одну вещь к обсуждению.
SPI - очень распространенный интерфейс для чипов. Подсказка к 3-х проводному - это режим SPI, в котором вы не используете вывод выбора микросхемы.
I2C является основным конкурентом за интерфейс, так как он использует только 2-проводные соединения независимо от количества микросхем, в то время как SPI требует еще один провод для интерфейса, но медленнее.
При обучении я считаю преподавание интерфейсов одной из самых важных задач.
Сообщество вики доступно для тех, кто хочет расширить мою информацию.
Я никогда не слышал о том, чтобы I2C использовался в качестве встроенного интерфейса программирования флэш-памяти на микроконтроллере, хотя нет причин, по которым он не может быть точкой входа в загрузчик, я полагаю . @vicatcu, я просто добавил его как очень распространенный интерфейс.С общей точки зрения эти интерфейсы отличаются только тем, какие программисты и какие микроконтроллеры их поддерживают. Пока у вас есть совпадение между программистом и микроконтроллером, я бы не волновался.
По мере того, как вы будете углубляться в это, вы обнаружите, что контакты, которые интерфейс использует на микроконтроллере, имеют большее значение - если вы используете эти контакты для датчиков, то сигналы могут мешать при программировании устройства. Самое простое решение этой проблемы - отключить датчики во время программирования.
Некоторые интерфейсы (включая JTAG) позволяют отлаживать устройство - но тогда вам нужен программист (и программное обеспечение для его управления), который также поддерживает это. В предыдущем вопросе я указывал на Dragon для отладки устройств AVR - я намереваюсь получить его и играть, когда мой текущий раунд проектов близится к завершению.
Как вы упомянули последовательный, SPI (2 провода, 3 провода?), USB, JTAG, SWD и т. Д. Все используются.
Да, есть свои плюсы и минусы. Jtag, например, для всех известных мне случаев встроенного в аппаратное обеспечение, изначально использовался для чего-то другого, кроме отладки процессора, но они используют его и для этого. если доступен jtag, то это, как правило, лучший интерфейс по этой причине, но есть исключения. Например, если контакты не предназначены для jtag, вы можете иметь ошибку в коде и / или преднамеренно использовать один из этих контактов для чего-то другого, что делает невозможным доступ к чипу с помощью jtag (если он загружает программное обеспечение во флэш-памяти, которое перепрофилирует эти булавки). Другое исключение - если ядро процессора может зависнуть из-за ошибки в программном обеспечении во флэш-памяти, а зависшее ядро не может быть отлажено с помощью jtag. Я бы назвал это ошибкой в дизайне аппаратного обеспечения, но недавно я занимался этим с коммерческой стороны.
На AVR, например, PDI, который, я думаю, здесь могут называть spi, а может и нет. по крайней мере на xmega появляется, что pdi и внешний jtag внутренне подают в общий интерфейс pdi. Таким образом, pdi pins дает вам прямой доступ к этому вместо заголовка jtag. до тех пор, пока этот интерфейс работает, когда программное обеспечение во флэш-памяти повесило ядро, это будет идеальный интерфейс для этого семейства. Протокол опубликован и относительно прост, и встроен в аппаратное обеспечение. у него есть недостаток двунаправленной шины данных, такой как i2c.
Рука имеет JTAG с меньшим количеством проводов, называемых SWD, которые они не обязательно хотят открыто опубликовать. инструменты с открытым исходным кодом реализуют его, хотя. в теории это последовательный jtag, различные сигналы jtag отправляются последовательно по одному проводу, а не параллельно по многим проводам. внутри части я предполагаю, что она снова распараллеливается и передает нормальную логику jtag. Это имеет недостаток в том, что ARM хочет сохранить это в полсекрете, а отладчики ARM jtag - это непростая задача. Так что это много работы. Если / когда openocd работает, то это может быть другая история. Вы также должны все еще беспокоиться о перепрофилированных выводах и о том, что происходит с зависшим ядром.
Ряд поставщиков используют решение, в котором они имеют одну или несколько областей загрузочной флэш-памяти, в зависимости от того, каким образом извлекается один или два или три булавки, зависит от того, с какой флэш-памяти вы загружаетесь. Таким образом, вы можете загружаться с флэш-памяти пользователя, или вы можете загружаться с флэш-памяти, которая, по крайней мере, на заводе-изготовителе имеет загрузчик на основе последовательного порта, или той, которая имеет загрузчик на основе USB. Для каждого поставщика эти программные решения могут различаться, последовательный протокол меняется неуловимым или более чем неуловимым образом, USB-решение может меняться совсем немного. Хорошо и плохо, что некоторые из этих вспышек вы можете получить, поэтому вы можете изменить серийный загрузчик, это хорошо и плохо, хорошо, что вы можете настроить его под свой продукт, плохо, что это возможно чтобы случайно стереть его и кирпичную часть, по крайней мере, кирпич для этого интерфейса.
Раньше инструменты Jtag стоили тысячи долларов, теперь их нет, примерно за 15 долларов вы можете получить разделительную доску ftdi и переназначить ее с помощью openocd. За $ 50 плюс или минус некоторые вы можете получить USB-решение на основе ftdi, которое работает из коробки с openocd. Вы можете получить некоммерческую j-ссылку примерно за 75-80 долларов. И затем есть многомиллионные, которые быстры, конечно, но не стоят денег вообще. Вы покупаете их, когда вы огромная корпорация, у которой много денег, и вы хотите платить за поддержку. Когда вы платите по этим ценам, вы получаете нужный продукт и сразу получаете ответы на вопросы технической поддержки. Как и в случае с linux vs windows или RHEL, поддержка linux бесплатна, но вы получаете то, что получаете. В любом случае, это делает JTAG намного привлекательнее,
Вы должны иметь в своем арсенале средства отладки и разработки jtag, когда и где это возможно. У sparkfun есть основанные на ftdi usb для последовательных плат, и части ftdi могут быть преобразованы в большие устройства, вы можете использовать их для spi или i2c, pdi или jtag или других интерфейсов. Идеально получить доски, которые сделаны для интересующей вас шины / детали, и использовать бесплатное программное обеспечение с открытым исходным кодом, которое идет вместе с ним. Кроме того, используются эти последовательные платы, в идеале имеющие напряжение 3,3 В и 5 В (около $ 15 каждая, которую вы используете для lillypads и arduino minis, и т. Д.) Для подключения к последовательным портам для различных микросхем, которые имеют своего рода последовательный протокол. Я считаю, что проще написать свой собственный загрузчик на основе этих протоколов, особенно как люди из arduino / avr, где опубликован исходный код загрузчика, и это значительное подмножество от предполагаемого стандарта, который они поддерживают. YMMV.
Одним словом, хорошего решения нет, у всех есть свои плюсы и минусы. Будьте готовы поддержать как минимум двух из них. usb и serial или usb и jtag или jtag и serial и т. д. Просто сложите колодки или отверстия для булавок на плате и не обязательно заполнять их. Для вашей личной или лабораторной разработки имейте полный набор инструментов и будьте готовы переключаться с одного на другой, когда вы кирпичите чипы и должны восстанавливать платы или когда вы разрабатываете свой собственный загрузчик, прошивку USB и т. Д.
Читайте также: