Универсальный программатор с GUI

--
  • +3
  • 25 декабря 2011, 01:38
  • reptile

Комментарии (50)

RSS свернуть / развернуть
Хм. Интерфейс я бы сделал наверно иначе) Но пожалуй даже не знаю, что в нем конкретно раскритиковать)

А вот более конструктивное — почему бы не сделать поддержку дудки в качестве back-end'а? Накроешь кучу погроматоров для AVR одним махом.
0
  • avatar
  • Vga
  • 25 декабря 2011, 01:45
можно, как минимум avrdude/avreal
0
+1 за avrdude — там же командная строка!
Вещь вообще нужная да!
0
а схема?
0
схема чего?
0
а можно немного покритиковать интерфейс? :)
Не знаю как Scala на это будет реагировать, но думаю как и любая другая программа, т.е. никак. Вот у вас есть кнопочка language, которая подразумевает использование, в том числе и русского языка, но элементы управления у вас на русский язык явно не рассчитаны, многие надписи типа «применить» просто не влезут на кнопки. Понятно что это все не первоочередной важности, но все же.
А в целом — выглядит очень очень неплохо.
Ну и не сочтите за наглость, на мой взгляд интерфейс и функциональность более чем, но у меня есть предположение, правда достаточно трудоемкое, а именно отображение флэш памяти как asm-кода, а не Hex кодов. Не знаю правда, на сколько оно необходимо… Да, фактически декомпилятор. :) Либо возможность прикрутить свой плагинчик на отображение, как в тотале например. Хотя опять же нада взвесить все за и против, может оно и ни к чему :)
0
надписи типа «применить» просто не влезут на кнопки
влезут, там размеры не заданы жестко:


а именно отображение флэш памяти как asm-кода, а не Hex кодов
подумаю
0
аа мм интресно, это (изменение размеров) автоматически происходит, или в коде учитывается?
0
я просто всю сознательную жизнь пишу на c++, delphi и др объектно ориентированных, на стандартных IDE, там такой фичи еще не встречал…
0
Это заслуга гуи-тулкита. В VCL такого нет, а вот в Qt для плюсов возможно и есть.
0
Для этого в любых Gui есть сайзеры или layout-менеджеры, управляющие своим содержимым. Не помню было ли такое в Delphi
0
я и в Вижуал Студии такого не встречал…
0
В Delphi (точнее, в VCL) такого нету. В студии по моему тоже нету вменяемых гуи-тулкитов (разве что WPF в шарпе).
А вообще не надо путать язык, среду и гуи-фреймворк.
0
размеры элементов подгоняются по содержимому, размер основного окна запоминается
0
То что делаете это очень хорошо (лучше хоть что-то чем вообще ничего)
В остальном, считаю, подход с GUI к программатору не верный.
В этом смысле допилка avrdude на мой взгляд более правильный подход с точки зрения рационального использования времени и усилий. Добавление к avrdude программирование stm, или форк в отдельный проект с аналогичным интерфейсом было бы гораздо эффективней.
Прошивка это одна очень маленькая операция (как по времени так и по усилиям). Как правило человек работает с одним чипом очень долго (макетирование, отладка) с одним программатором (железкой). Все эти настройки выставленные один раз больше не трогаются.
Я вообще напрямую программатор не вызываю (в редактора исходного кода говорю :make install и все, через Makefile вызывается avrdude с нужными параметрами). Тоже самое со всякими студиями в которых народ пишет код.
Жалко когда куча труда пропадает в пустую.

Если вам не хватает hex-редактора, то лучше именно его написать (со всякими штучками типа дизассемблера, правкой ресурсов и т.д.).
+2
В этом смысле допилка avrdude на мой взгляд более правильный подход с точки зрения рационального использования времени и усилий. Добавление к avrdude программирование stm, или форк в отдельный проект с аналогичным интерфейсом

консольный режим добавить просто, функции программирования никак не привязаны к GUI, а выполняются в отдельном потоке

Если вам не хватает hex-редактора, то лучше именно его написать

в некоторых случаях не хватает редактора, с визуальным редактированием Fuse-битов, поиском по содержимому и т.д.
0
fuse — наверно единственно стоящая вещь для реализации.
Но ради редактирования fuse писать цельный программатор я бы не стал.
0
Подскажите, как это дело собрать в Ubuntu?
0
  • avatar
  • ploop
  • 25 декабря 2011, 21:06
собрал бинарники под Linux/Windows: bitbucket.org/edartuz/muprog/downloads/muprog_0.00.zip
пока версия сырая, много чего не работает

запуск: muprog.bat / muprog.sh

нужна JRE 1.6 www.oracle.com/technetwork/java/javase/downloads/jre-6u30-download-1377142.html
0
Так и не удалось запустить. Яву по вашей ссылке тоже скачивал, ничего не изменилось.

java.lang.UnsatisfiedLinkError: no rxtxSerial in java.library.path thrown while loading gnu.io.RXTXCommDriver
Exception in thread "AWT-EventQueue-0" java.lang.UnsatisfiedLinkError: no rxtxSerial in java.library.path
	at java.lang.ClassLoader.loadLibrary(Unknown Source)
	at java.lang.Runtime.loadLibrary0(Unknown Source)
	at java.lang.System.loadLibrary(Unknown Source)
	at gnu.io.CommPortIdentifier.<clinit>(CommPortIdentifier.java:83)
	at ul.commx.Serial.ports(SerialRXTX.scala:14)
	at muprog.interfaces.InterfaceRS232.ports(InterfaceRS232.scala:15)
	at muprog.interfaces.InterfaceRS232.<init>(InterfaceRS232.scala:19)
	at muprog.programmers.ProgrammerSerial.<init>(ProgrammerSerial.scala:17)
	at muprog.programmers.ProgrammerAVR911.<init>(ProgrammerAVR911.scala:5)
	at muprog.MuProg$$anon$5.<init>(MuProg.scala:32)
	at muprog.MuProg$.top(MuProg.scala:15)
	at muprog.MuProg$.top(MuProg.scala:13)
	at scala.swing.SimpleSwingApplication.startup(SimpleSwingApplication.scala:7)
	at scala.swing.SwingApplication$$anonfun$main$1.apply$mcV$sp(SwingApplication.scala:4)
	at scala.swing.Swing$$anon$10.run(Swing.scala:31)
	at java.awt.event.InvocationEvent.dispatch(Unknown Source)
	at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
	at java.awt.EventQueue.access$000(Unknown Source)
	at java.awt.EventQueue$1.run(Unknown Source)
	at java.awt.EventQueue$1.run(Unknown Source)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source)
	at java.awt.EventQueue.dispatchEvent(Unknown Source)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
	at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.run(Unknown Source)
0
скопируйте librxtxSerial.so, librxtxParallel.so в /usr/lib
0
Спасибо, заработало.
Дома буду — попробую что-нибудь прошить :)
0
Существует проект AVR8 Burn-O-Mat — GUI к avrdude, написанный на Java. Хеши в редакторе, конечно, не вычислишь, но в остальном, на мой беглый взгляд, всё то же, что и у вас.

На мой взгляд, у такого подхода есть два важнейших недостатка:
1) Необходимость сливать и устанавливать JRE.
Если я и хочу гуй для программатора, а я хочу его, как правило, чтобы не накосячить с фьюзами, то я не хочу тянуть все его зависимости. Я хочу скачать и запустить.

2) Виртуальная машина Java дьявольски тоормозит в Linux при старте. Реально неудобно. Если бы вы написали что-нибудь нативное или хотя бы скомпилировали в GCJ или заявили его поддержку, то я бы с радостью перевёл несколько сотен рублей вам на телефон.

Avrdude — очень хорошая, отшлифованная абстракция программатора. Если бы у меня было время, я бы развивал именно его, а не переизобретал велосипед.

Тем не менее, спасибо вам за вклад.
0
Необходимость сливать и устанавливать JRE
20Мб на сегодняшний день — ерунда.

Виртуальная машина Java дьявольски тоормозит в Linux при старте
не замечал такого. У меня стартует максимум за 5сек первый запуск, и 2..3сек следующие на довольно слабом железе Athlon-3000-1.5G (Linux) и P3-1100-512M (WinXP), системной памяти занимает ненамного больше программ на Qt и Wxwidgets. Консольный вариант стартует до 2..3х сек.

Avrdude, AVR8 Burn-O-Mat
все это заточено под AVR, у меня цель несколько шире — что-то типа PonyProg / IcProg. Проще написать свое чем разбираться в чужом коде, тем более на Scala писать в несколько раз быстрее чем на C
0
Ява да, тормозит. Работать-работает, но по сравнению с нативным софтом заметно хорошо.

Конечно, каждый пишет на чём может. Но с другой стороны делать кроссплатформенные сборки на том же Qt совсем не сложно, а работает замечательно (во всяком случае под win и linux точно).

А задумка хорошая. avrdude — всё-таки только AVR. Хоть и пользуюсь ей постоянно, но со временем другие вещи попробовать тоже хочется, разумеется придётся искать инструментарий.
0
Ява да, тормозит
старый миф. опровержение — там: shootout.alioth.debian.org/u32/which-programming-languages-are-fastest.php
0
Ну я как-бы винду два года в глаза не видел, а явовский софт на линуксе частое явление, так что опровержения не нужны: неприятно с ним работать, «не то» :)
0
Я, как бы, каждый день жабный софт колупаю по 8 часов минимум. Тормоза жабы — миф. Тормозить может конкретная прикладуха, это да, но сама жаба тут ни при чем — как написали прикладуху, так она и работает.
0
Я не лез в причины, (может что не так настроено) да и ни к чему как-бы… но тем же эклипсом пользоваться не могу — тяжелый очень, NetBeans тоже, хотя машины не слабые и дома и на работе.

Даже мелкие утилиты неприятны. Хотя не все, действительно…
0
самые неприятные грабли — отсутствие беззнаковых целых, из-за чего часто нужно преобразовывать Byte<->Int
0
Эклипс в типовой конфигурации на старте поднимает столько всего, что, на самом деле, это он еще быстро работает, учитывая то, сколько ему всего надо прочитать с диска (и, зачастую, не последовательным чтением, а рандомным доступом). И каждый новый плагин (а все ведь хотят фич и удобств, правда?) время старта никак не уменьшает. Но время старта это время старта, у меня эклипс стартует редко и живет неделями, а то и месяцами и, что характерно, во время работы ничего не тормозит, хотя мой обвешан плагинами по самое небалуйся (и, что характерно, все они достаточно активно используются, а не просто висят).
К слову, «даже мелкие утилиты» это, как раз, самый неудобный для jvm сценарий. Впрочем, для него тоже есть решение.

Я по работе (и иногда в свободное время) как раз жабный софт пишу и как он работает знаю не только по наблюдениям, но и достаточно подробно в деталях (в том числе потроха jvm). Тягаться с жабой по скорости очень не просто, и с ростом размера и сложности софта — сложнее и сложнее (даже С и плюсам).

P.S. что бы, случайно, не сложилось впечатление, что я хвалю жабу, потому, что только ее и знаю, уточню — опыта написания софта на С/С++ у меня примерно раза в два больше, чем на жабе.
0
Я про тормоза интерфейса, касаемо эклипса. Они больше всего раздражают. «Вязкий» он какой-то.
Запуск чёрт с ним, хорошо если раз в день, понимаю, что не блокнот какой-нибудь…
0
Если хочется оценить настоящие тормоза, можно запустить весь из себя нативный Inkscape и подсунуть ему SVG сгенеренный из не самой простой платы. Вот там будут не только настоящие тормоза, ни еще и падения.
0
весь из себя нативный Inkscape
ОООооо… вот это точно реально нереальный тормоз… %) чуть что-то делаешь, и можно идти пить кофе с неспешным перекуром.
0
Угу. В добавок глюкав и падуч он просто неописуемо. Я, пока не перешел на формирование панелей скриптом, просто вешался, когда надо было уместить несколько плат на один лист пленки. Под конец дошел до сохранения чуть ли не после каждого действия. Потом, правда, поставил и настроил gerbmerge и из Inkscape только печатаю готовое, так что теперь он не падает, только тормозит нещадно.
0
причем падает он очень подло — в самый неподходящий момент, когда уже бОльшая часть сделана. я когда разводил альтиумовский PDF (осцилл вэй куна) по слоям, родил столько новых идеоматических оборотов, сколько мои домашние за всю жизнь от меня не слышали… самой работы на полчаса максимум, а пришлось половину вечера убить… %)
0
осцилл вэй куна
Что за?
0
0
Действительно тормозит. Пробовал этот файл на 5,5Мб. Экспортирован с гербера.
0
И не удивительно. Там заливка как отдельные линии ( отдельный объект) получается:
0
Вот-вот, большое количество мелких объектов (не только графических) это одно из слабых мест сишных и плюсовых рантаймов. С этим можно бороться специальными аллокаторами, но до скорости жабного рантайма (в котором выделение памяти под объект заключается всего лишь в приращении указателя) им не дотянуться (а ведь есть еще сегментация памяти, которой в жабе нет в принципе в силу наличия сборщика мусора умеющего перемещать объекты).

Жаба далеко не идеальна и у нее хватает своих заморочек, но тормоза не одна из них. К слову, практически весь андроидный софт тоже писан на жабе, что никак не мешает приложениям быстро работать, причем на значительно меньших ресурсах, чем у современного десктопа.
0
Большое ничего не пробовал, но кое-что делать в нём приходилось. Тормозов не заметил.

Попробую дома загрузить в него SVG из гербера, интересно, что выйдет :)
0
На простой плате проблем, вероятно, не будет. Но с ростом сложности скорость падает очень быстро. Например, панель из 3-4 платок типа Maple (SVG размером около 10 метров) грузится на моей машине секунд 15. И это не смотря на 8 гиг памяти и четырехядерный проц. Во время загрузки интерфейс вообще никак не реагирует на действия пользователя. Подвинуть изображение на листе вообще упражнение не для слабонервных, напоминает ну очень медленный фильм со скоростью один кадр за 3-5 секунд. Увеличить/уменьшить зум — сравнимо с загрузкой по времени. И все остальное примерно в таком же духе. Несколько копи-пастов это гарантированное падение, а если воспользоваться откатом или группировкой объектов, то вероятность падения резко возрастает.
0
кстати, ключик -server неполохо помогает, как Eclipse, так и приложению
0
Бенчи кстати все ориентированы на скорость выполнения кода. А у распространенного мнения о тормознутости жабы, AFAIK, другая причина — неторопливость ее GUI-фреймворка.
Хотя лично я проблем с приложениями на яве не замечаю. Тот же эклипс на мой взгляд вполне отзывчив и стартует еще и пошустрее мощных сред на нативных языках (MSVS, BDS). По крайней мере в тех сборках, что я щупал — кокос, rIDE и подобные.
0
вынесите пожалуйста описания МК наружу, например, как это сделано в AVRStudio
0
Ни пробывал, но по скриншотам сразу бросились в глаза закладки АВР/СТМ. При добавлении новых поддерживаемых комней, я так понимаю, будут добавлены новые закладки. а это не совсем то, что хочется от программы. Допустим я юзаю только авр, тогда всё остальное мне не нужно в принципе, «зачем мне грзить то, чем я не пользуюсь».
С другой стороны расделение по закладкам возможно лучшее решение (ну его помещать всё и вся в одном окне).
Ну и повторюсь: не пользовался, не могу объективно оценить. На текущий момент даже 20Мб представляется довольно не простой задачей, что бы не коворил народ в комментах.
0
V0.02 — добавлена работа с Avrdude (пока только чтение): bitbucket.org/edartuz/muprog/downloads
0
А что тут было? :)
0
:) это electrotormentor.blogspot.com/2012/01/muprog-universal-programmer-gui.html, но наехали из-за «рекламы»…
0
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.