flashrom benchmark: uISP против buspirate

А давайте, господа, достанем и померяемся
(с) Поручик Ржевский

Если Вы помните, то баспират это девайсина состоящая из связки pic24 и ft232 для связи по USB. PIC24 работает (согласно даташиту) на частоте до  32Mhz. Стоимость баспирата версии bpv3 в китайских местах типа seeedstudio составляет около 30$.
uISP с другой стороны дешев, как я не знаю что и состоит из atmega8 + небольшого количества пассивных компонентов. BOM обойдется в ~5$ считая печатную плату. Эту штуку я когда-то придумал как сверхдешевый программатор AVR’ок + отладочную платку. Что-то, что я могу давать студентам, кто только начинает работать с электроникой. У uISP НЕТ АППАРАТНОГО USB. ВООБЩЕ НЕТ. На борту vusb стек, реализующий USB ногодрыгом. На большистве стоит кварц на 12Mhz, хотя для этого теста я спаял специальный вариант с 20Mhz кварцем (вдруг не успею?)

IMG_20140605_204747

Итак, сможет ли эта штукенция по скорости побить buspirate, у которого мало того, что быстрее камень так еще и есть аппаратный USB. Давайте проверим!

Тестировать будем на флешроме. Так как мне частенько приходится возиться со всевозможными роутерами, то и флешром тут верный помощник. Однако buspirate, который я использовал до этого был тормозом еще тем. Даже после обновления фирмвари, которое разогнало SPI до 8Mhz ему требовалось  3m43s чтобы вычитать 2MiB SPI флешку, что казалось пустой тратой времени. В итоге я из себя выдавил сразу две прошивки для uISP

  • serprog-совместимая (тормозная)
  • flashprog, с моим кастомным протоколом обмена.

Чтобы не приводить тут тонну логов, просто приведу картинку. Во всевозможных конфигурациях я вычитывал 8MiB MX25L6445E SPI флешку. Взял самую жирную, которая была, чтобы калибровка delayloop’а флешромом вносила как можно меньшую погрешность.

s44

Теперь самое вкусное. Serprpog прошивку можно найти тут. Только учтите, что реализация cdc_acm при помощи vusb использует bulk транзакции, нарушает USB стандарт, и работать не должно (на практике — работает с 70% USB хостами). Но к тому же оно еще и тормозно настолько, что сливает на тестах даже баспирату.

Мою флешпрог прошивку можно найти тут. Как видно на бенчмарках баспирата она рвет как тузик грелку уже на 12Mhz (Это минимальная частота с которой вообще работает USB). Но это требует патча на флешром. Протокол я сделал простым, и так как сама прошивка написана с использованием antares прикрутить ее потом можно будет в том числе и к STM32. Сам протокол поддерживает любое количество SPI шин на программаторе (Да, с каждым можно работать независимо, запустив еще один инстанс flashrom!) Патч на флешром уже уехал в список рассылки, но потребуется некоторое время чтобы его отревьювили и приняли.

 

Trollface_HDПроблемы, баспират?

А почему баспират тормозит?
Реально ft232 может работать и на 250000(~30KiB/s) как минимум, а может и быстрее (Мой 3д-принтер с той же ft232 вполне себе работает на такой частоте, проблем никаких). Может даже и быстрее, я не проверял. Однако разрабы баспирата остановились на 115200, что создает боттлнек в  ~14 KiB/s. В теории это дает нам  ~9m28s на вычитку 8MiB. Реальность суровее, и у нас почти 14 минут.  Разницу эту составляет время на калибровку цикла задержки флешромом, избыточность протокола и то, как реализована прошивка баспирата. (В исходники смотреть было в лом, потому ругать и обзывать наркоманами не буду).

One thought on “flashrom benchmark: uISP против buspirate

  1. В качестве максимально дешёвого решения — очень неплохо.
    Но если скорость важнее — то FT2232H со своим 30MHz MPSSE будет гораздо быстрее.
    Макетка на этой штуке — универсальная вещь, да и цена не сильно больше.

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

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.