В общем buspirate тормоз, хоть и из коробки поддерживается flashrom. Со старой прошивкой все было совсем печально, обновился - теперь вычитка 2 мегабайт spi флешки занимает 3 минуты 49 секунд. Не быстро.
Взял я свой uISP, насадил на него адаптер для SPI флеша и решил, как говорят гусары, достать и померяться.
Собственно, лулз в том, что на buspirate спользуется ft232 интерфейсная мсх + microchip'овский камень, так что в теории при должном росте рук разработчиков оно должно уделывавать uISP. Последний состоит из атмеги8 и софтового usb через vusb.
Сначала сделал serprog совместимую прошивку для uISP (uISP прикидывается /dev/ttyACM0 портом) и получил время чтения 2х мегабайтовой spi флешки - 4 минуты 41 секунда. Неплохо для атмеги на 12 мегагерцах без аппаратного USB, но баспирату таки сливаю. Почесал голову и собрал еще один uISP, но уже с кварцем на 20Mhz. И получил те же самые 4 минут с гаком.
Вспомнил то, как работает USB, осознал что interrupt out на low-speed устройствах сильно тормозной, ограничен стандартом, выше не получить. В итоге сделал еще одну прошивочку, которая полностью все делает control transfer'ами, и прибил ее к flashrom'у... Итогом стало 2 минуты 13 секунд на чтение 2х мегабайтовой флешки. 8 минут 48 секунд на чтение 8-мегабайтовой. Т.е. на ~40% быстрее баспирата. У которого аппаратный фактически USB.
А теперь внимание ворос, телезрители: Каким местом надо было писать прошивку для устройства стоимостью 30 баксов, что устройство со стоимостью BOM'а в 5 баксов его уделывает?
XVilka, патч на flashrom для поддержки uisp_spi присылать? Насколько критично наличие возможности выставлять скорость работы SPI из флешрома?
Сырцы: Реализация serprog'a: https://github.com/nekromant/uisp-app-serprog
Реализация flashprog и патч на flashrom: https://github.com/uISP/uisp-app-flashprog