Здравствуйте высокопочтенные радиокоты! Предлагаю в данной теме посовершенствоваться в изучении JTAG-интерфейса. И что-нибудь попробовать собрать на практике. Считать/прошить/поправить/отладить
В двух словах... поискав информацию в сети понял, что JTAG-это такой интерфейс для прямой связи ПК с чипами на плате. Он разработан для тестирования
аппаратной части, а не программной!. Но в чипы, в которые заложена возможность общаться через JTAG, встроен такой хитрый специальный контроллер -ТАР (test access port). Через который можно по специально отведенным контактам считывать/посылать биты...
Изначально, как я понимаю, это делалось для отладки плат. Да и по сей день так и есть. Ну например, я изготовил плату с программируемым чипом. В этом чипе прошита программа, которая исполняется при заданных условиях, например после нажатия кнопки последовательное моргание лампочек.
Но лампочек очень много, и всяких дорожек тоже. Поэтому, подключившись к JTAG-разъему, я могу через компьютер моргать каждой лампочкой отдельно, или несколькими лампочками, как захочу... Получается такая типа проверка на правильность расключения на плате, на целостность контактов и сразу же на исправность тех самых лампочек. Но тут возникает и обратный эффект, который возможно еще более интересен! Раз есть прямой доступ к чипу, прямо в его, так сказать сердце, то можно перепрошить его программный код, либо считать его в процессе его исполнения, а так же изменить его, усовершенствовать... Прямо сразу на плате. Это очень удобно. Так же с помощью JTAG можно "оживлять" окирпиченные вещи. То есть когда аппарат не включается, зависает на заставке, глючит, и когда не удается прошить штатными способами. Через JTAG-интерфейс есть доступ к загрузчику (BOOT LOADER). Как я понимаю, в таких случаях, если микросхема памяти исправна, то тогда необходимо прошить загрузчик. А после уже можно будет прошить штатными способами. Через этот интерфейс можно прошить и сразу все, не только загрузчик.
Поэтому очень хотелось бы на практике попробовать эти возможности. Но для начала давайте разберемся, какие контакты используются для программирования через JTAG-интерфейс? В сети нашел такую информацию:
TCK (TCLK) (test clock)- тестовая синхронизация
TDI (test data in) - входные тестовые данные (ноли и единицы) по протоколу, выбранным производителем. Данные "вливаются по переднему фронту
TCKTDO (test data out) - выходные тестовые данные (вывод информации с чипа). Считываются по заднему фронту
TCKTMS (test mode select) - выбор тестового режима. Сигнал управления ТАР-контроллером.
TRST (test reset) - пин, используемый для сброса JTAG в начальное состояние (используется не всегда, т.к. ресета можно добиться удерживая некоторое время
TMS=1. Не менее 5 тактов частоты
TCK. Активное состояния
TMS=0)
VCC- питание
GND - общий минус питания
Суть такова: подключаемся к этим пинам. Переводим наш чип в режим тестирования (test mode). Подаем питания на плату. И тогда уже можно считывать/записывать данные. Чтобы перейти в режим тестирования необходимо что-то с чем-то замкнуть на плате.
Что необходимо для практической работы?
1) Какая-нибудь плата. В моем случае пусть это будет рабочий всеформатный DVD-проигрыватель.
2) JTAG-программатор.
Подскажите пожалуйста, самодельный какой-нибудь простенький подойдет? Или необходимо приобретать многофункциональный программатор? Есть ли какая-то разница между JTAG-программаторами? Может быть какие-то всеядные, или работающие только по определенным протоколам, только с определенными чипами?3) Софт.
Подскажите, есть ли бесплатные софты для JTAG? Какой лучше подойдет? По моей задумке, я планирую попробовать так: законектить программатор к ПК и к DVD. Далее замкнуть что-то на плате, для перехода в тестовый режим. Далее запустить ПО, включить DVD-проигрыватель, и что-нибудь считать. А потом что-нибудь записать туда:)
Подскажите пожалуйста, с чего начать. И поправьте, если я не правильно понимаю суть JTAG-интерфейса
Добавлено after 7 minutes 45 seconds:Через какой разъем коннектиться к ПК: USB, LPT, COM? Очень бы хотелось либо через USB, либо через СOM, т.к. LPT у меня уже нет. COM тоже не было, но специально приобрел модульную планку для PCIe...