BlackCat – Программатор памяти SPI и JTAG.

Началась эта история почти год  назад (в 2010-м). Тогда задался я целью собрать или купить интерфейс JTAG для низкоуровневой прошивки беспроводных маршрутизаторов. Электрически спаять интерфейс сопряжения JTAG с компом (например через LPT-порт) вроде как проще простого, но ... Вопрос в программном обеспечении, JTAG – это очень широкое понятие, включающее в себя много всего разного, т.е. интерфейс концептуальный очень универсальный и многофункциональный. В конкретных устройствах (процессорах, контроллерах и др.) он реализован, разумеется, не в полном объеме всей спецификации, а предназначен для решения порой очень узкого круга задач. Так, например, режим тестирования доступен далеко не всегда, а использование шины JTAG лишь для программирования «последовательных» флэшек – это очень мизерная часть от всего, для чего изначально предназначен JTAG. Мне в конкретном случае много и не требовалось, но даже для того чтобы подключившись к процессору устройства через JTAG иметь возможность прошить прицепленную к процу флэшку, необходимо выполнить низкоуровневый алгоритм ее программирования (а это уже дело софта). Софт же для простых «распаек» на LPT-порт также очень прост (чаще чисто консольные приложения), и для программирования флэшек роутеров не подходит (они там достаточно емкие). Так вот – среди того что можно было купить за разумные деньги и с требуемым мне функционалом, тогда на мой взгляд оказался интерфейс BlackCat (с подключением на USB). Заказал я его в штатах за 34 бакса (только что появившуюся версию PCB 1.7), ехал он долго – но путешествие моего "Черного кошака" закончилось благополучно.

 

Объектом для первого исследования планировалось сделать точку доступа DWL-2100AP – на которой были распаяны соответствующие JTAG штыри (разумеется, проверена цоколевка разъема). Но меня ждал большой облом. Программа управления BlackCat (версия 2.50) в упор не хотела работать – после запуска и определения факта наличия подключенного программатора она бесследно вываливалась (попросту закрывалась) – с более ранними версиями тоже самое. Если программатор не подключать – то все нормально, видим сообщение об отсутствии подключения. Также программа успешно отрабатывала процесс обновления прошивки в самом программаторе (при переводе его в режим DFU - контроллер ATMEL 90USB162-16AU). Но дальше этого дело не уходило – в режиме программатора SPI – таже фигня.  Поначалу я грешил на драйвера, на операционку,.. на комп – в конце концов! Но перепробовав все перечисленные компоненты в различных вариациях оставалось сделать вывод, что виновата именно софтина «кошака». И после глубокого вздоха разочарования он был заброшен.

Вспомнил про BlackCat еще раз, с практической точки зрения, совсем недавно (почти год спустя после его покупки). Мне требовалось прошить BIOS в одном из ноутбуков, а там была SPI-флэшка “W25X16” (winbond). А ввиду того что подобным действом (на чисто железячном уровне – с выпаиванием восьминогой микросхемы) занимаюсь в первый раз, - стал вспоминать: чем из имеющегося у меня можно прошить флэшку SPI. Вспомнился и BiDi Pro – и даже нашлась нужная библиотечка и комп со стандартным интегрированным LPT-портом … но это другая (невеселая) история. Вспомнил я и про BlackCat (про неудачу и мучения с ним) – учитывая прошедшее время стал искать новый софт к нему. Была скачана новая версия – 2.75 – и о чудо! – она не вылетает! На радостях я быстренько сооружаю распайку и цепляю к нему флэшку в режиме SPI. BlackCat ее автоматически детектирует! Класс!.. но вот прошить ее не удалось, видимо все-таки неспроста (и не чисто программно) слетел BIOS у ноутбука. Что поделаешь – заказал с ебэя новую флэшку (в Москве таких не купить даже по завышенным ценам, а в Сингапуре за 12 баксов аж 5 штук). После месяца ожидания, получив флэшку – я беспроблемно прошил ее кошаком – УРА …

  

Режим JTAG в реализации BlackCat планирую также при случае протестировать ...

Между тем, "приоткрытым" остается вопрос о создании клона сего программатора ... можно найти ряд миниатюрных демо-платок с идентичным контроллером (AT90USB162), зашить в них соответствующий код (есть в пакете) и распаять соответствующие ноги (нужно смотреть какие) - правда целесообразность подобного мероприятия не совсем ясна - едва ли возможно купить демо-плату с идентичным контроллером дешевле, чем самого кошака.

Несмотря на наличие документации в комплекте с софтом - пару строк о джамперах и кнопках черкану тут:

  1. Двухсекционный переключатель: секция 1 - программная опция (в режиме SPI не используется); секция 2 - OFF - режим DFU (обновления firmware), ON - режим выполнения firmware ("основной" режим).
  2. Кнопка осуществляет сброс контроллера, чтобы не дергать кабель при переходе из режима в режим.
  3. Джампер позволяет выбрать напряжение питания на выходном разъеме.
  4. Красный светодиод - питание; синий - информационный, управляется софтом.

Функционал "основного" режима определяется залитой firmware - это или ISP, или JTAG. Обновлять firmware можно как средствами штатной софтины кошака, так и например атмеловской утилитой Flip.

Распиновка разъема для каждого из режимов следующая:

SPI

JTAG

PS. У "янков-законодателей" (создателей кошака) опять кризис с мозгами ... сайт www.theoryshare.com, где я брал сей программатор прикрыли (с тупейшей мотивацией) - типа "хакать модемы с целью получения халявы от опсосов - уголовно наказуемо ..." - поэтому программаторы больше продавать нельзя! (Остается предложить этим дебилам изъять из продажи все ножи, а до кучи и напитки в стеклянных бутылках и ... много чего еще!) Переходим по редиректу ... новый сайт ребят-разработчиков "черного кошака" больше программаторами не торгует. Купить "черного кошака", к счастию, до сих пор можно на ебэе - ревизия 1.7 (как у меня).

MiGeRA (ноябрь 2011)

Продолжение.

До тестирования JTAG так руки пока и не дошли, а вот тут пришла мысль о совместимости "кошака" с другим софтом ("дудкой", например) ... И по ходу дела обнаружил еще некоторые интересные нюансы, которыми и решил дополнить статью написанную несколько лет назад.

По ссылке выше на ебэе торгуется уже кошак с версией PCB 1.8 - а это уже совсем другая штука получается, и она не совместима с BlackCat! Да, собственно, особенно ругаться тут и не приходится: просто внимательнее нужно быть (продавцам с ебэя в том числе). Девайсина с новой версией PCB носит уже название FlashCat и построена она на контроллере 32u2, соответственно firmware и управляющая софтина для нее свои. И хоть морда "новой" софтины весьма похожа на прежнюю блэк-кэтовскую, совместимостью она не обладает. Также не имеет смысла заливать firmware для FlashCat в устройство BlackCat PCB 1.7 (что логично). Вот и получается, что кошака "старого" тихо отодвинули в сторону. Новый пользователь, покупающий флэш-кэта, равным счетом ничего не теряет, а напротив имеет обновляемый (пока что) софт, который можно взять тут, - последнее обновление аж от 2015 года. Получается, что вопрос клона китайцы решили и успешно его эксплуатируют. Обладателям же, по сегодняшним уже меркам "бородатого", оригинального "Черного кошака" - остается пользоваться последней версией софта (304.RC15 - от 2012 года, свежее не нашел) под firmware (SPI 1.09) для контроллера 90USB162 ...

С другой стороны, кошак (любой) штука узкоспецифичная - "дудка" (avrdude) про нее не знает и не собирается видимо, да и зачем? BlackCat - это не более чем интерфейс (совокупность firmware и управляющей софтины под него) для банальной прошивки микросхем памяти с интерфейсом SPI - и не более! Но актуальность такого программатора в последнее время заметно выросла вместе с переходом предпочтения производителей матерей (в частности) к использованию в качестве BIOS микросхем SPI-флэш.

MiGeRA (март 2015)

И еще чуток дополним.

2019 год. В век мобильных устройств компы, ноутбуки отходят уже на второй план … а прочая периферия (всякие там точки доступа) - работает вроде и так. Короче давно я не доставал и не включал блэк-кэта. А тут решил тряхнуть стариной и вернуть к жизни один портативный wifi-повторитель … Пришлось немного повозиться, перечитать свою статью, распаять «прищепку», понять почему работает, но через раз, погуглить наконец и т.п. – ну и дабы не забыть в будущем, законспектирую некоторые мысли. Старый материал принципиально трогать не буду (поэтому возможны расхождения).

В настоящий момент, последняя версия firmware, которая успешно работает на плате BlackCat ревизии PCB 1.7 и контроллером 90usb162 с функционалом программатора SPI – 2.02, а версия управляющей программы к ней 318.RC15 (или наоборот RC15.318). Совместимость версий прошивки и софтины несколько странная: то что старый софт не хочет видеть (определять) кошака с новой прошивкой – логично, но чтоб новый не видел старой прошивки … Вобщем юзать нужно компоненты из одного архива. Вместе с этим прошивки SPI версии 3.xx (как показала практика) не совместимы с BlackCat, а софт начиная с версии 321.RC15 не распознает прошивку 2.02

Как я отмечал ранее, со сменой названия BlackCat -> FlashCat сменился сперва контроллер, изначально PCB не менялась, но вскоре сменился и дизайн платы, а так же появились и другие модификации. Т.е. «наследником» BlackCat стал FlashCat Classic (отличия только в контроллере и обратная совместимость?). Контроллер заребренженного кошака (classic-версии) имеет вдвое больший объем памяти, и если поначалу прошивки вроде как предполагалось использовать как со старым контроллером (90usb162) так и с новым (32u2), то с переходом на новую ревизию печатной платы отказались от поддержки «маленького» контроллера. Ладно, с софтом разобрались ;-)

С подключением: в принципе в документации есть картинки (для удобства размещу их здесь тоже):

 

Меня (думаю, как и многих) интересует именно SPI-режим данного программатора (для JTAG по-хорошему существует совсем другой инструментарий). Функциональная распиновка коннектора с прошивкой SPI следующая:

 

Вообще картинки из документации к более новым версиям софта, чем тот, с которым работает BlackCat (см. выше) – однако, с учетом того что мануалы разработчик обновляет явно с запозданием, похоже что для FW 2.02 эта информация актуальна. Собственно в чем нюанс: в ранних схемах подключения предлагалось вешать ногу HOLD на VCC, а WP оставлять в воздухе (хотя оба случая в теории эквивалентны «1», с холдом в воздухе кошак микросхему памяти не определит, скорее всего) - это не сложно реализовать, если использовать адаптер (в который микросхема вставляется или впаивается/выпаивается). Но при использовании «прищепки» с косой (шлейфом) проводов (длину которых, а уж тем более количество соединений нужно максимально минимизировать) встает вопрос как изящно посадить HOLD на VCC (штырек которой всего один), да и WP многие источники рекомендуют также подтягивать к VCC. Вобщем экспериментальным путем (вольтметром) было установлено, а затем и подтверждено приведенными схемами-распиновок, что «плюс питания» (VCC) для холда можно найти на одноименной ноге. WP можно по прежнему оставлять висеть в воздухе или коннектить на соответствующий пин (разницы не заметил).

Зато есть другой важный момент: длина кабеля и количество соединений от разъема программатора до микросхемы. И хотя кошак тут менее привередлив чем, например, MiniPro – если злоупотребить, то даже в случае стабильного определения микросхемы (а не рандомного), наверняка зашить ее без ошибок на штатной скорости не удастся. Сбавлять скорость? – устанешь ждать потом завершения процесса, да и не факт что поможет. Если микросхема не определяется – то скорость можно задать в соответствующей вкладке (после чего вновь выбрать «детект» из меню). Если определилась – то только через консоль (обратившись к документации) командой SPI.Fosc(x) – где x делитель базовой частоты в 16MHz.

PS. В сети не сложно (уже) найти схему и любительскую печатную плату как под BlackCat так и под FlashCat – что логично, ведь отдавать минимум 30 баксов за железо ценой в 10-15 баксов, несерьезно … В итоге имеем что хоть исходников прошивки контроллера нет – но hex-файл можно без труда зашить и использовать с любой платой с походящей распиновкой. Кстати, исходники управляющей софтины есть в свободном доступе (зачем?). В моем же случае имеющийся в наличии BlackCat (оригинальный, из америки) более чем устраивает своим функционалом – хотя по большинству позиций MiniPro наступает ему на пятки или даже идет вровень.

MiGeRA (ноябрь 2019)

Заглавная » Радиоэлектроника » BlackCat – Программатор памяти SPI и JTAG