Страница 1 из 1

USB программатор 24ХХХ (i2c)

Добавлено: Сб фев 11, 2012 05:26:06
bend
Попался в руки как-то мне контроллер AT90USB162, нужно было сделать некий коммерческий проект. Вообщем поковыряв его я понял что вещь замечательная. Но документация скудная, особенно что касается работы с USB. Те кто читал документацию и делал устройства USB знают как там чуваки намудрили :) Изначально в моем проекте не стояла задача общения устройства с USB, этот МК я выбрал потому что его можно прошивать без программатора - просто через USB (хотя я собрал неплохой прогер HID-USB avrdooper на амгера8), но возиться с дополнительными проводами мне не хотелось, да и была мысль вдальнейшем поковырять данный МК на предмет хардварного USB. И вот этот "черный" день настал :)
Появился заказ собрать программатор i2c для EEPROM 24ХХХ. Пошукав в интернет я ничего нормального не нашел, кроме как купить готовый у китайцев за 35$ с неизвестным ПО. Сам по себе интерфейс i2c очень простой и в сети море программаторов на COM и LPT порты, но ни одного нормального на USB. Извращаться со всяким FT232 мне вообще не хотелось и было решено ваять программатор самостоятельно. Причем на форумах частенько жуют темы про такой программатор но конкретной схемы я не встретил.
Итак программатор я собрал, тестовая 24СХХ прошивается быстро, но есть определенные моменты.
Я работаю только в Linux и писать обертку для Windows вообще нет никакого желания. а для успеха проекта нужна кросплатформенная поддержка. Вобщем требуется написать простой интерфейс желательно на QT или питоне, задача тривиальная прога должна открыть COM порт отправить в него один командный байт (READ or WRITE прошивку) и затем послать всю прошивку из файла побайтово или принять и записать (верифицировать) прошивку из EEPROM.
Под Linux можно прошивать вообще без оберток

Код: Выделить всё

echo "CMD" > /dev/ttyACM0
cat FIRMWARE.BIN > /dev/ttyACM0


но не все рубят в пингвинах, поэтому если кому-то интересно данное устройство можно его допилить :)

Re: USB программатор 24ХХХ (i2c)

Добавлено: Пн фев 20, 2012 19:42:59
Мурик
bend писал(а):нужна кросплатформенная поддержка. Вобщем требуется написать простой интерфейс желательно на QT или питоне, задача тривиальная прога должна открыть COM порт отправить в него один командный байт
Берем что-то типа PureBasic (у него есть кроссплатформенная библиотека и он позволяет создавать проги для Windows, Linux, MacOS X и AmigaOS).
Функции для работы с COM портом, вот. http://purebasic.ru/manual.php?id=1148&lng=rus

Re: USB программатор 24ХХХ (i2c)

Добавлено: Чт фев 23, 2012 18:26:47
bend
Мурик писал(а):
bend писал(а):нужна кросплатформенная поддержка. Вобщем требуется написать простой интерфейс желательно на QT или питоне, задача тривиальная прога должна открыть COM порт отправить в него один командный байт
Берем что-то типа PureBasic (у него есть кроссплатформенная библиотека и он позволяет создавать проги для Windows, Linux, MacOS X и AmigaOS).
Функции для работы с COM портом, вот. http://purebasic.ru/manual.php?id=1148&lng=rus


Спасибо за совет, но писать интерфейс на Васике после с++ неохота :)

В итоге я собрал программатор протестировал его на еепромах с 24с01 до 24с256. Для прошивки написал консольную утилиту на Си использовал для работы с ком-портом какую-то библиотеку сишную, найденую в сети. Т.к. проект коммерческий, то пришлось писать интерфейс на питоне чтобы иметь возможность кроссплатформенного гуя. Под виндой установил пока Cygwin и в нем собрал консольную утилиту, до виндового питона пока дело не дошло, т.к. пишу изначально под линукс и интерфейс пока не готов. Вот такие дела, в планах сделать поддержку SPI еепромов чтобы иметь один универсальный программатор.

Re: USB программатор 24ХХХ (i2c)

Добавлено: Чт фев 23, 2012 18:43:02
МитяРа
Всё скошачено до нас: viewtopic.php?f=2&t=26471 :)

Re: USB программатор 24ХХХ (i2c)

Добавлено: Чт фев 23, 2012 20:24:26
Мурик
bend писал(а):Спасибо за совет, но писать интерфейс на Васике после с++ неохота
А зря.
Это не какой-то бейсик допотопный, а современный, кроссплатформенный. Программы получаются не хуже чем на Си. Иногда даже лучше. Да и трудозатраты меньше чем при использовании Си.

bend писал(а):пришлось писать интерфейс на питоне чтобы иметь возможность кроссплатформенного гуя
И придется устанавливать интерпретатор пайтона в винде (в лине он прикошечен по умолчанию).
А если бы написали бы прогу на PureBasic, то получили бы нативный бинарник, который пашет без установки каких-либо доп. файлов.

Re: USB программатор 24ХХХ (i2c)

Добавлено: Пт фев 24, 2012 16:00:24
bend
To Митяра: я так понял по ссылке поделка на программном V-USB, делал я такие вещи но, хочется настоящего хардверного USB, да и интересно сделать программатор самостоятельно. Дело в том что софтовый USB съедает много памяти и потоянно дрюкает прерывания, это накладывает определенные трудности для дальнейшей модернизации программатора. Сам я делал на Atmega8 софтовый USB-1Wire адаптер, дак там пришлось очень сильно извращаться в алгоритме ибо 1Wire имеет таймслоты фиксированной длины и во время их не должно быть прерываний. Вот что кстати по поводу всяких там бейсиков, там реализовать грамотный алгоритм обработки былобы затруднительно. ИМХО конечно. :)

А зря.Это не какой-то бейсик допотопный, а современный, кроссплатформенный. Программы получаются не хуже чем на Си. Иногда даже лучше. Да и трудозатраты меньше чем при использовании Си.

Хм, если уж Си это посути ассемблер в "обертке" то сомневаюсь что на бейсике программы могут быть лучше, я вообще сомневаюсь что под этот бейсик есть адекватные кросплатформенные компиляторы.

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

Вы думаете питон не умеет делать бинарные файлы??? :) Питон кстати очень понравился, хорошие демки, быстро выдрал из демок куски нужного мне кода и слепил интерфейс.
Расскажите какие именно приемущества есть у бейсика на ваш взгляд по сравнению с Си? можно это обсудить..

Re: USB программатор 24ХХХ (i2c)

Добавлено: Пт фев 24, 2012 18:33:34
Мурик
bend писал(а):Вот что кстати по поводу всяких там бейсиков, там реализовать грамотный алгоритм обработки былобы затруднительно. ИМХО конечно.
Как бы вот термометр на бейсике, использующий софтовый USB. http://purebasic.mybb.ru/viewtopic.php?id=46

bend писал(а):Хм, если уж Си это посути ассемблер в "обертке" то сомневаюсь что на бейсике программы могут быть лучше
А PureBasic это надстройка над ассемблером FASM, что позволяет вставлять в код асм. инструкции, директивы, макросы и т. д. в формае FASM'а. Так что PureBasic ближе к ассемблеру чем Си.

bend писал(а):я вообще сомневаюсь что под этот бейсик есть адекватные кросплатформенные компиляторы
Качайте, смотрите, тестируйте. http://purebasic.com/download.php
И заодно можете посмотреть справку на русском, по языку, IDE и имеющейся кроссплатформенной библиотеке функций (содержит больше 1100 кроссплатформенных функций). http://purebasic.ru/manual.php?id=1104&lng=rus

bend писал(а):Вы думаете питон не умеет делать бинарные файлы???
Ага, склейка интерпретатора и скрипта это уже нативный файл?
Дайте ка ссылку на нормальный компилятор для питона.

bend писал(а):Расскажите какие именно приемущества есть у бейсика на ваш взгляд по сравнению с Си? можно это обсудить..
А зачем нам еще один холивар?
Эта тема уже много раз обсуждалась и нет смысла поднимать ее снова.
Язык выбирают исходя из задачи. И если задачу проще и быстрее решить на бейсике чем на Си, получив при этом тот же результат, то как говорили в одной известной рекламе - "Зачем платить дважды?" - зачем тратить больше времени и сил, создавая прогу на Си, если ее можно сделать на бейсике за более короткий срок?

Re: USB программатор 24ХХХ (i2c)

Добавлено: Вт мар 06, 2012 03:46:19
bend
Мурик писал(а):Как бы вот термометр на бейсике, использующий софтовый USB. http://purebasic.mybb.ru/viewtopic.php?id=46

Я не утверждал что на софтовом USB невозможно что-то сделать, речь шла о сложности дальнейшей модернизации устройства, да и контроллер AT90USB162 стоит 230р. имеет USB и регулятор на 3.3V, поэтому я его считаю очень перспективным для работы, нежли более дешевый какой-нить атмега + софт USB.
Мурик писал(а):
bend писал(а):Хм, если уж Си это посути ассемблер в "обертке" то сомневаюсь что на бейсике программы могут быть лучше
А FASM'а. Так что PureBasic ближе к ассемблеру чем Си.

Вот тут не соглашусь с вами. васик не выдерживает никакой конкуренции с ОБЩЕПРИНЯТЫМ с++ хотя бы потому что он ПЛАТНЫЙ, и естественно пользоваться им профессиональные программисты никогда не будут. Хотя он может подойти для любителя, т.к. наверняка имеет хорошую документацию и простые примеры.

Мурик писал(а):Дайте ка ссылку на нормальный компилятор для питона.

Да вот тут вы правы - при более детальном изучении питона я понял что кросплатформенность у него очень хромает, так же как и реализация компиляции бинарных файлов. Я очень разочаровался в питоне.

В итоге я начал смотреть в сторону GTK, но под виндой мне так и не удалось скомпилить демо (использовал cygwin), вообще я очень давно не работал в винде, но заказчик просил чтобы были диалоги и окошки для выбора файла.
Пришлось пойти по линуксовому пути :)
Скомпилил я под cygwin свою консольную утилиту для работы с программатором. Нашел в инете под винду типа cmd файла с GUI диалоговым редактируемым меню и просто сделал запуск консольной утилиты с нужными параметрами из этого GUI. На заднем плане открывается консоль и в нее выводится лог по прошивке. Все почти как в линуксе + окошки и cmd скрипт :)
Портируя свою утилиту под винду я конечно подозревал что без костылей не обойдется - и конечно не обошлось :)
Дело в том что за USB to virtual COM в винде отвичает веселый драйвер usbser, который сломал не один моцк, в итоге в ходе эксперимента выяснилось что чтобы принять байты от устройства надо дополнительно послать любой байт перед отправкой буфера, почему так - никто не знает. :)
Вот такие пироги, но в итоге устройство работает, и в данный момент собираю вторую версию девайса добавив SPI и 1wire интерфейсы.
Изображение

Re: USB программатор 24ХХХ (i2c)

Добавлено: Вт мар 06, 2012 12:02:13
Мурик
bend писал(а):контроллер AT90USB162 стоит 230р. имеет USB и регулятор на 3.3V, поэтому я его считаю очень перспективным для работы, нежли более дешевый какой-нить атмега + софт USB.
Так то оно так, только контроллер с USB модулем достать сложнее чем обычную мегу. Скажем, у меня тут, вообще нет AVRов с USB на борту и приходится использовать то, что есть.

bend писал(а):В итоге я начал смотреть в сторону GTK, но под виндой мне так и не удалось скомпилить демо...
...Скомпилил я под cygwin свою консольную утилиту для работы с программатором. Нашел в инете под винду типа cmd файла с GUI диалоговым редактируемым меню и просто сделал запуск консольной утилиты с нужными параметрами из этого GUI. На заднем плане открывается консоль и в нее выводится лог по прошивке...
...Портируя свою утилиту под винду я конечно подозревал что без костылей не обойдется - и конечно не обошлось
Что нужно было делать, я уже советовал выше, повторяться не буду.
Скажу только следующее. Если бы использовали бы PureBasic, то все было бы намного проще и без костылей. В его составе есть кроссплатформенная библиотека и при компиляции под винду, будет использованы WinAPI функции, а под линью - GTK 2.
Вот пример программы.

Код: Выделить всё

; Создаём окно.
OpenWindow(1,0,0,200,90,"Заголовок окна",#PB_Window_MinimizeGadget|#PB_Window_ScreenCentered)
ButtonGadget(2,64,30,80,25,"Кнопка")
Repeat ; Начало главного цикла.
  Event = WaitWindowEvent() ; Получаем идентификатор события.
  Gadget = EventGadget() ; Узнаём идентификатор активного гаджета.
  If Event = #PB_Event_Gadget And Gadget=2 ; Условие будет выполнено при щелчке по кнопке.
    MessageRequester("Сообщение","Была нажата кнопка") ; Выводим на экран сообщение.
  EndIf
Until Event = #PB_Event_CloseWindow ; Прерываем цикл при закрытии окна.
В принципе ничего особенного, окно с кнопкой и обработчиком кликов по кнопке.
Во вложении этот пример, скомпилированный под винду и линь.
Как видим, один и тот же исходник без его правки компилируется под разные платформы и работает на них без костылей.

Re: USB программатор 24ХХХ (i2c)

Добавлено: Ср апр 18, 2012 20:52:54
S@n4z
:beer: