JTAG, BSDL и сопутствующие

..it is true that asking regexpes to parse arbitrary HTML is like asking Paris Hilton to write an operating system..

Заинтересовался протоколом IEEE-1149, который JTAG. Хочу попытаться освоить его на низком уровне. Вроде как всё довольно просто – конечный автомат Тестового порта доступа (TAP) управляется линией TMS по переднему фронту TCK, данные вводятся по линии TDI, выводятся по TDO. Плюс необязательная линия TRST, про которую можно не думать. Автомат достаточно неплохо расписан в стандарте – всё довольно стройно и логично.
Далее начинаются усложнения. Стандарт описывает интерфейс и требования к протоколу, а вот сам протокол может быть с некоторыми ограничениями каким угодно. Для каждого устройства, оснащенного портом JTAG, производителем пишется BSDL-файл, в котором данный протокол и описывается. После чего данный файл выкладывается или не выкладывается (если производитель очень жадный) на всеобщее обозрение. Также, в BSDL-файле может содержаться дополнительная информация о внутренней структуре устройства и способах доступа к этим кишкам всё через тот же JTAG – попросту говоря, описывается что нужно сплясать на входе TDI, когда автомат состояний находится в правильном состоянии (Capture-IR или Capture-DR – пока этот момент я не особо уяснил).

Теоретическая информация – это хорошо, но я уясняю информацию только в практическом ключе – поэтому захотелось изваять простенький JTAG-комплекс. Взять программатор, который изначально был разработан для работы с совершенно другим самописным протоколом и попробовать подцепиться им к какому-нибудь камню. Для начала мне бы хватило правильно считанного значения IDCODE.

Я не люблю делать одноразовую работу, поэтому к задаче решил подойти издалека – написать свой собственный парсер BSDL-файлов. Возвращаясь к фразе из эпиграфа – структура этих файлов представляет собой обычный исходник, похожий на исходники любого другого языка программирования. И подойти к нему с точки зрения обычных конфигурационных файлов довольно проблематично. Поэтому я снова заинтересовался задачей синтаксического анализа. Пока что сижу и изучаю форму Бэкуса-Наура, расширенную форму их же, выбираю инструмент, которым буду пытаться описать грамматику BSDL, пока что по принципу количества информации лидирует yacc и его форки вроде bison. Освоение синтаксического анализа впоследствии может пригодиться для построения скриптовых интерпретаторов для внутренних задач.

4 thoughts on “JTAG, BSDL и сопутствующие

  1. Очень интересуют Ваши результаты на поприще создания BSDL-парсера и, вообще, освоения темы граничного сканирования. В данный момент пытаюсь на коленке слепить нечто отдалённо напоминающее BSDL-парсер. При этом, не являюсь никаким программистом даже на копейку. Добыть описалово стандарта IEEE-1149 не удалось. Да и не уверен, что это сильно бы мне помогло. Просто беру в качестве наглядного образца один за другим BSDL-файлы и прикидываю кое-что к носу, как бы вытянуть оттуда нужную мне информацию. Получается, естественно, довольно примитивно и неэффективно. Как я понимаю, мне для моих задач требуется просто-напросто отловить в каждом *.bsd соответствие пинов их месту в BOUNDARY_REGISTER.
    Был бы крайне признателен, если бы Вы могли поделиться Вашими результатами. Самостоятельно, думаю, мне эту задачу не осилить.
    Заранее благодарю за ответ.
    С моим категорическим уважением, Штабс-капитан Штабс-капитанович Овечкинд.

    • Здравствуйте. К сожалению, особых результатов нет. Я для себя понял, что вот так с наскока нарисовать общий парсер – это у меня пока мозгов не хватит. Максимум что получилось – это примитивный доставатель данных, да и тот нестабильный был. Пока всё дело упёрлось именно в фундаментальные знания, в свободное время прохожу курс по компиляторам от Стэнфорда на coursera.org, проблема в том, что постоянно встречается необходимость фундаментальных знаний из разных областей математики. Так что еще приходится и курсы по математике проходить. Времени ни на что не хватает, голова пухнет…
      Извините, что не могу вам помочь. Могу разве что поделиться тем, что у меня есть по IEEE-1149. Там сам стандарт, расширения к нему и что-то, написанное на VHDL. http://files.shengsu.org/ieee1149.zip (28 метров примерно)

  2. Огромное спасибо за описание стандарта и сопутствующие материалы. Буду попытаться склеить что-то собственными силами. Если что-то получится, обязательно похвастаюсь. Это дело я люблю, хотя, вполне допускаю, что кроме смеха мои результаты у грамотных людей не вызовут никаких положительных эмоций.

    • Любой результат стоит того, чтобы им похвастаться. Потому что когда хвастаешься узнаёшь предмет ещё глубже – это особенность работы мозга – он уверяет тебя, что всё понятно ровно до того момента, как ты у него спросишь “а что, собственно, понятно?” :)

Leave a Reply to ShengSu Cancel reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>