Хабрахабр

[Из песочницы] Обзор и доработка устройств от DreamSourseLab

Всех приветствую.

По следам предыдущих статей по логическим анализаторам на Хабре решил таки закончить свой "фундаментальный" труд.

image

Начну немного издалека.

Но уже в 13 в процессе реализации очередного проекта столкнулся с тем, что очень мне понадобился логический анализатор с большим буфером. Все началось в в начале 10-х годов, когда я впервые узнал про Saleae Logic (далее под Saleae я подразумеваю 8 канальный анализатор без плисины) на каком-то радиолюбительском форуме.
Принял к сведению. Доступные в тот момент осциллограф и hanteck la-5034 не позволяли решить проблему.

После чего его можно анализировать, декодировать и экспортировать. Главная особенность Saleae и его клонов это отсутствие встроенного буфера — весь поток сразу гонится в ПК и там сохраняется. В большинстве случаев хватает, правда из-за программного характера семплирования, у отсчетов есть заметный "джиттер". С одной стороны мы практически не ограничены в глубине просмотра (можно часами сохраняться данные), с другой стороны максимальная частота семплирования 24МГц.

В итоге, очень быстро, примерно за сутки, из Харькова, из 6-lab (ныне почившей) мне через проводников доставили их клон saleae с уже встроенными двумя eeprom для переключения типов saleae и xbee (аппаратная часть у этих устройств одинаковая отличаются только vid:pid которые прошиты в eeprom).

image

Соответственно можно пользоваться ПО от обоих производителей.

Вот тогда я и заинтересовался такой штукой как СY7C68013A, ну или короче FX2 (хотя правильней FX2LP).

0 портом и честными 480Мб/с. Это 8051-совместимый микроконтроллер с аппаратным USB2.

В число особенностей входит: 16KB оперативной памяти и возможность загрузить прошивку как из подключенной I2C EEPROM, так и через USB (встроенной flash там нет).

А еще этот МК может прикидываться любым устройством на USB-шине (в смысле откликаться на любой VID:PID).

Немного подробностей из даташита по процедуре загрузки

Рассмотрим случай когда к МК подключена I2C EEPROM.

В таком случае из нее анализируются 8 первых байт:

В зависимости от прошитых VID:PID МК может "быть" разным устройством, хоть Saleae хоть Xbee хоть кем. Если первый байт 0xC0 (как в прошивке клонов Saleae), то МК конфигурирует USB-порт с указанными в 1-4 байтах VID:PID и ждет загрузки прошивки через USB. Можно стопкой припаять EEPROM-ки и джампером выбирать. Очень удобно.

А вот если первый байт 0xC2, то начиная с 9 байта в EEPROM должна хранится прошивка для MK, которую он загрузит в RAM и начнет исполнять.

Формат хранения похож на HEX от Intel:

И соответственно, нет смысла хранить пустые участки. То есть, прошивка разбивается на блоки которые по отдельности грузятся в разные участки памяти.

И вот мы плавно подходим к главному герою нашей статьи DreamSourseLab.

Это три инженера которые через краудфандинг запилили проект логического анализатора мечты (ну почти). Не буду пересказывать всю историю (я ее толком не знаю и глубоко погружаться смысла не вижу).

Что они сделали.

Добавили к FX2 дешевую плисину — Spartan 6 (возможно подсмотрели у Saleae).

Это возможность сохранять в буфер на высокой частоте (400МГц/4 канала, 200МГц/8 каналов, 100МГц/16каналов), а потом медленно отдавать в ПК. А это сразу 16 каналов, это четкие моменты семплирования, это возможность упаковки отдельных бит (две линии можно семплировать в 4 раза чаще чем 8, главное в полосу пропускания USB уложиться). В общем, проект выстрелил — все довольны. А если к этому прикрутить sigrok с его мощнейшей базой декодируемых протоколов. А с учетом того, что авторы сохранили поточный режим (без сохранения во внутренний буфер), то получился логический анализатор мечты (ну почти, потому как сразу захотелось 32 канала и FX3).

Строгая черная коробочка из алюминия с USB-C разъемом. Таким образом появился DSLogicPro.

И выпустили коробочки с названием DSLogicBase и DSLogicPlus (как я понял для завоевания мира через китайские сайты), а также DSCope (вешаем парочку 8-разрядных AЦП и вот у нас получился двухканальный осциллограф). А дальше инженеры ударились в бизнес.

То есть электрически и функционально DSLogicPlus и DSLogicPro идентичны, но SRAM висит на плисине на других выводах (это хорошо видно по рисунку дорожек). Ну, а чтобы этот процесс шел под строгим контролем немного поменяли разводку плат. Подозреваю, что и в других местах сделаны доработки.

Если в Pro все 16 линий подключаются сразу одним широким разъемом, то в Plus, все кабели разделили на группы по 4 канала который можно подключать отдельно. Кстати, была сделана очень ценная доработка в плане кабеля подключения исследуемых сигналов. Ну и сами кабели короткие, коаксиальные и в месте разделки (где коаксиал раздваивается на отдельный сигнальный и общий проводы) стоит маленькая платка с фильтром.

image

Мне все прислали, но предвкушая буфер на 64 мегасемпла я раскрутил плату и увидел пустое место. И вот, весной 17 года я в Китае заказал себе DSLogicBase (к сожалению я тогда не знал всего-того о чем тут написал). А потом занялся изучением вопроса по превращению моего Base в Plus. Быстро подняв бучу вернул 50% стоимости. В Base используется память встроенная в FPGA. Именно в этом и заключается отличие Base от Plus — наличием отдельного буфера.

И довольно быстро стало ясно, что отличия только в запаянной SRAM и паре байт прошивки EEPROM. Летом 17 года по дороге на работу и обратно по полчаса в электричке МЦК я изучал этот вопрос.

Немного про то, что лежит в каталоге DSView/res

Там у нас комплект файлов с раcширениями bin и fw.

Они загружаются в момент старта программы через fx2.
fw — это бинарные файлы прошивки для FX2. bin — это прошивки для плисины.

Если сравнить все файлы fw от окажется, что все они отличаются только байтом PID-а по адресу ближе к концу.

То есть отличия у всех устройств только этим ну и прошивкой плисины (которая как я уже сказал грузится в момент инициализации).

Сравнение fw с тем, что записано в EEPROM (я конечно сразу слил дамп с своего анализатора) показало, что здесь именно развернутая прошивка.

96). Если прошивку из EEPROM развернуть, то (насколько я помню) они совпадут (для версии ПО 0.

Таким образом, как уже писали на хабре, нужно всего лишь припаять память и в прошивке поменять 2 байта (в заголовке и потом далее в прошивке).

Аналогичным образом дорабатывается DSCope, допаиваем память и меняем PID в EEPROM.

Есть еще один нюанс.

96-0. По мере выпуска новых версий ПО (0. 99) происходило добавление поддерживаемых моделей оборудования и изменение PID этих моделей.

Вот у меня получилась такая табличка:

Скорей всего это как раз версия печатной платы. Кроме этого, в прошивках появился какой-то признак по адресу 0x20 у версии Pro там 5, у Base и Plus там 6.

Не требующий перепрограммирования EEPROM. Кстати, есть еще один способ доработки. Достаточно только запаять SRAM, а потом при компилировании libsigrok4DSL в файл libsigrok4DSL/hardware/DSL/dsl.h внести исправление:

В структуре описывающей оборудование static const struct DSL_profile supported_DSLogic[],
в месте где описывается DSLogic PLus и Base поля PID поменять местами, чтобы программы думала, что у Base PID 20, а у Plus PID 21.

319 {0x2A0E, 0x0020, "DreamSourceLab", "DSLogic PLus", NULL,
320 "DSLogicPlus.fw",
321 "DSLogicPlus.bin",
322 "DSLogicPlus.bin",
323 {CAPS_MODE_LOGIC,
324 CAPS_FEATURE_VTH | CAPS_FEATURE_BUF,
325 (1 << DSL_STREAM20x16) | (1 << DSL_STREAM25x12) | (1 << DSL_STREAM50x6) | (1 << DSL_STREAM100x3) |
326 (1 << DSL_BUFFER100x16) | (1 << DSL_BUFFER200x8) | (1 << DSL_BUFFER400x4),
327 SR_MB(256),
328 0,
329 DSL_BUFFER100x16,
330 0,
331 0,
332 DSL_STREAM20x16,
333 SR_MHZ(1),
334 SR_Mn(1),
335 0,
336 0}
337 },
338 339 {0x2A0E, 0x0021, "DreamSourceLab", "DSLogic Basic", NULL,
340 "DSLogicBasic.fw",
341 "DSLogicBasic.bin",
342 "DSLogicBasic.bin",
343 {CAPS_MODE_LOGIC,
344 CAPS_FEATURE_VTH,
345 (1 << DSL_STREAM20x16) | (1 << DSL_STREAM25x12) | (1 << DSL_STREAM50x6) | (1 << DSL_STREAM100x3) |
346 (1 << DSL_BUFFER100x16) | (1 << DSL_BUFFER200x8) | (1 << DSL_BUFFER400x4),
347 SR_KB(256),
348 0,
349 DSL_STREAM20x16,
350 0,
351 0,
352 DSL_STREAM20x16,
353 SR_MHZ(1),
354 SR_Mn(1),
355 0,
356 0}
357 },

И ваша версия анализатора с этой версией DSView будет работать как будто у вас настоящий Plus.

А я пока помечтаю о связке Spartan6+FX3+DSView.

Теги
Показать больше

Похожие статьи

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Кнопка «Наверх»
Закрыть