ARMFlasher - программа для прошивки платы Disсovery в Kubuntu

Всем привет!!!
Вот решил осваивать ARM Cortex M-3, прикупил себе платку Discovery v1. Первый опыт с Keil-ом был очень горьким, потом услышал о CoIDE — прекрасная среда разработки. Установил драйвера на отладочную плату и погнал… Да и прошивать прямо с кокоса можно — приятно. Как-то решил для себя (уже давно) пересесть полностью на Kubuntu, но вот трудновато как-то было настроить Eclipse, та не беда — разобрался. Прошивать приходилось через arm-none-eabi-gdb, предварительно запустив st-util. Сначала радовался что все завелось, но потом стало жалко времени и хотелось прошивать из графики, так чтоб мышью тыкнул и оно все сделало. Кстати, давно чесались ручонки к QtCreator, и решил учиться в сей среде с пользой для себя (а может оно кому-то надо будет). И начал програмить, параллельно разбираясь с некоторыми особенностями Qt и своим незнанием с помощью хелпа и Google ))).
Программа была написана за несколько дней, хотя заработало все сразу же. Остальное время тратилось на добавление красивостей. В результате получилось вот что:

ARMFlasher

Это моя первая полезная программа в Qt, так что готов выслушать замечания в работе. Хотя глюков работе программы не замечал, пробовал на другой машине. Правда, я не знаю как в Qt скомпилировать проект так чтоб он не требовал библиотек Qt, поэтому выкладываю всю папку с данными либами. Кстати, в Kubuntu 12.04 почему-то не меняются локально иконки приложений. Она в папке то есть, но если выставлю свою картинку вместо стандартной, то поменяются иконки всех бинарных файлов в системе (раньше такого не было). Может я что-то делаю не так. Буду рад услышать как это исправить))).

Потом придумал как назвать программу — пока будет ARMFlasher. Она прошивает отладочные платы Discovary v1 и v2.
Программа использует внешние консольные утилиты:
  • st-util — для подключения к отладочной плате,
  • arm-none-eabi-gdb — отладчик для прошивки контроллера.
Эти утилиты находятся в каталоге программы.

В окошке GDB commands выводится соответствующий список команд, который записывается в файл и будет передан отладчику в качестве аргумента. Потом, после окончания диплома, добавлю возможность редактирования команд, сохранения и т.п.
В программе есть мануал как завести сие чудо, если у Вас discovery v1 (для v2 нет такой необходимости). Необходимо в терминале перейти в директорию «copy_files» программы и из консоли выполнить следующие команды:

sudo cp 49-stlinkv* /etc/udev/rules.d/ 
sudo udevadm control --reload-rules 

sudo cp stlink_v1.modprobe.conf /etc/modprobe.d

перед следующей командой все устройства USB должны быть отключены:
sudo modprobe -r usb-storage && sudo modprobe usb-storage

теперь плату Discovery можно подключить и если все верно, то на команду
dmesg | tail -n 2

будет выдан ответ:
usb 6-4: new full speed USB device number 4 using ohci_hcd
usb-storage 6-4:1.0: device ignored


Данная программа не нуждается в установке. Главное распаковать куда-то подальше от глаз, например /opt/ARMFlaser, и создать ярлык на рабочий стол и добавить в меню, как душа того желает. Оригинальный READMY от st-util находится в корне директории программы. Программа не позволяет прошивать МК если по какой-то причине не запустилась утилита st-util или не выбран файл прошивки. Также не имеется возможности автоматом ресетить МК, приходится перетыкивать USB. Вот и есть поле для деятельности. Но, со временем облом… Так что буду рад помощи в продвижении сего направления. Если у кого-то возникнет неудовлетворимое желание дописать самому прогу, пишите в личку или на почтовый ящик (в ящике я запрос увижу раньше). Так что пока всем)))

автор и разработчик программы: Д. В. Ковальчук
@mail: triggery@yandex.ru
vk: id101281460

Добавил в программу сохранение последнего открытого файла прошивки. Также программа помнит уже и версию ST-Link.
  • +2
  • 25 апреля 2012, 20:00
  • triggery
  • 4

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

RSS свернуть / развернуть
а где же кат?
0
  • avatar
  • xar
  • 25 апреля 2012, 20:02
хм… я не думал что в списке топиков оно автоматом не свернет. можно поправить?
0
Данная программа не нуждается в установке.
это на кубунту все более менее просто ибо кде на qt написано. неплохо бы пакетик оформить, чтоб зависимости тянулись сами
0
  • avatar
  • xar
  • 25 апреля 2012, 20:04
этому надо научиться еще))) буду рад помощи)
0
поправил. Большое спасибо данному обществу — большая часть моих умений это его заслуга)))
0
сам ни разу не делал. ибо для себя не надо, а для народа выкладывать не приходилось.
0
может таки DISCOVERY? так то всем ясно, а вот поисковиками может непонравиться… да и глаз режет
0
  • avatar
  • kest
  • 25 апреля 2012, 20:17
упс… спешка)))
0
Что-то мне не нравится инструкция «как завести». Сделай скрипт, чтоб сам всё настраивал. Ну и ещё не нравится, что надо отключать usb устройства. Вообще неясно, нафига оно в ядро?
0
увы, для версии 1 дискавери, где кривая эмуляция SCSI (discovery будет видеться как флешка), все эти телодвижения нужны. А для 2-й не нужно (так говорится в ридми st-util).
0
а что если все это в прогу зашить? в том числе и проверку.
0
можно, и все в одном скрипте. но на это надо время, чтоб до ума довести))) в скором будущем постараюсь сделать (после диплома — всего немного осталось)
0
хорошая идея, кстати. Да еще можно добавить запуск скрипта нажатием в меню программы. совсем уж просто будет тогда
0
как программер программеру: не торопись, но и прогу не забывай. не бывает программ, которые с первой версии не имеют косяков. ну и не так часто выкладывают что то подобное. если пойдет в народ как оболочки для avrdude можешь портал и за бугром прославить )
0
xar, спасиб, меня взбодрило)))
0
Эм, в README нет никаких контактов.
Исходников нету, зато есть автогенеренные огрызки, которые не нужны для работы бинарника:
main.o
Makefile
moc_armflash.cpp
moc_armflash.o
ui_armflash.h


Может оформить по человечески и выложить в репозиторий на gitorious.org/ или на github.com/?

Уверен желающих помочь довести до ума найдётся много. В том числе и пакеты оформить.
0
контакты в меню about программы. идея очень неплохая)))) это будет даже быстрее чем я сам соберусь.
0
Ну писать в README
Please report any and all known working combinations so I can update this!
без контактов как-то не логично. А если я хочу обратиться по поводу того что программа не запускается?
0
ну реадми я стырил из st-util. мало ли, может я в чем-то ошибаюсь, а там все в оригинале на буржуйском)))
0
gitorious.org/easyelectronics

Создал проект для коллективных наработок сообщества.
Администрации сего замечательного ресурса предоставлю полные административные полномочия по первому же требованию.
0
Залил в gitorious.org/easyelectronics/armflasher
Немного причесав код и поправив пару утечек памяти.

До упаковки в пакет нужно еще причесать и решить с размещением внешних файлов (в том числе и бинарников)

PS. рекомендую сразу себя приучить к аккуратному форматированию кода по отступам и расстановке скобочек. Потом сэкономит дюже времени.
0
tamerlan311, спасибо!!! да, спасибо тем, кто не проходит мимо)
а на счет форматирования — так это же дело привычки и вкуса. как привык, так лучше и понятно ;)
0
Привычка это когда мелкие особенности форматирования в мелочах (например переносить или нет фигурную скобку на след страницу)

А когда то соблюдается, то не соблюдается выравнивание и строчки прыгают, это безалаберность.

Я не из эстетических соображений говорю. От форматирования очень сильно зависит скорость восприятие кода и «всплывание ошибок»
+2
А ещё там нигде нет информации о лицензии. Под какой лицензией код-то? Apache, BSD, GPL, LGPL и тд.? Ну и в идеале надо привести структуру дистрибутива в соответствие принятыми нормами (исходники в src, обязательные файлы типа AUTHORS, COPYNG, INSTALL, NEWS, README) и добавить систему сборки.
0
вы наверное не читали текст. там были написаны мотивы написания данной проги. а на счет лицензии — там нет ничего сильно умного (много из хелпа самого Qt). поэтому никаких возражений ни к кому гне будет)))
это попытка безвозмездного вклада в благое дело и в целях обучения (не читаю книги по программированию. ставлю перед собой задачу, и, если чего-то не знаю, то только тогда лезу в книгу или мануал).
0
Ну почему-же, читал. Ещё удивился, почему оно так названо, если работает только с st-link`ом, но хозяин — барин, плюс спишем на дальнейшее развитие =). Мотивы ясны, но раз выкладываешь в большой мир (а тем более мир *NIX-софта), почему бы не оформить как принято в этом мире? Тем более, что это лишь добавит опыта (освоение сборочных систем — тоже важная часть программирования).
На счёт лицензии — программа по-любому твоя интеллектуальная собственность и ты должен сообщить потенциальным пользователям на каких условиях ты разрешаешь им этой собственностью пользоваться. В твоём случае можно взять BSD, или вообще Public Domain. А можно тупо написать что-то в стиле «Разрешаю делать с этим всё что угодно без каких-либо ограничений» в файлике COPYNG, или LICENSE, или даже в исходнике. Но в каком-то виде эта информация быть должна.
0
Дык автор выложил только сюда, дабы поделиться. Это tamerlan311 предложил на git залить.
0
Примерно по-этому я и отвечал tamerlan311, а не автору ;)
0
А, точно. В комментах запутался :)
0
symbol lookup error: ./ARMFlasher: undefined symbol: _ZN9QListData11detach_growEPii

Ubuntu 10.04 при нажатии «Connect to Discovery»
0
в каталоге программы сделайте атрибуты файлов исполняемые командами:
chmod +x st-util arm-none-eabi-gdb
0
вы не распаковали случайно на фат или нтфс, а потом на линуксовый раздел? при этом атрибуты теряются
0
*а потом переместили папку на линуксовый раздел?
0
Не в этом проблема.

-rwxrwxr-x  1 ploop ploop   59367 2012-04-16 22:08 ARMFlasher
-rw-------  1 ploop ploop   39998 2012-04-06 14:19 ARMFlash.ico
-rw-rw-r--  1 ploop ploop   42000 2012-04-15 23:24 armflash.o
-rw-------  1 ploop ploop   13414 2012-04-04 02:20 ARMFlash.png
-rwx--x--x  1 ploop ploop 3378472 2011-04-21 01:16 arm-none-eabi-gdb
drwxrwxr-x  2 ploop ploop    4096 2012-04-09 02:02 copy_files
-rw-rw-r--  1 ploop ploop       0 2012-04-25 23:51 gdbconf
-rw-------  1 ploop ploop   33027 2012-04-04 02:01 images.jpg
-rw-rw-r--  1 ploop ploop   69068 2012-04-12 12:28 images.png
-rw-rw-r--  1 ploop ploop    2420 2012-04-15 23:19 main.o
-rw-rw-r--  1 ploop ploop    8343 2012-04-15 22:43 Makefile
-rw-------  1 ploop ploop    3330 2012-04-15 23:14 moc_armflash.cpp
-rw-rw-r--  1 ploop ploop    7868 2012-04-15 23:14 moc_armflash.o
-rw-------  1 ploop ploop    4756 2012-03-16 12:21 README
-rwx--x--x  1 ploop ploop  133537 2012-03-16 12:22 st-util
-rw-rw-r--  1 ploop ploop    5968 2012-04-15 23:23 ui_armflash.h
0
странно, на Kubuntu 12.04 все без проблем было на 2-х машинах где нет Qt. Все делалось по инструкции: ни шагу ни вправо, ни влево.
0
могу скинуть исходник, вы пересоберете в гноме)))
0
Да не должно быть проблем. Давайте исходник, creator стоит, подебажу :)
0
ща добавлю к статье. думаю будет правильно)))
0
добавил;)
0
Собрал, работает. У нас разные версии Qt (у меня Qt 4.8.0, у вас 4.7.4)

Минусы: нет прогресса, не завершает st-util после прошивки (контроллер в состоянии дебага), приходится его ребутить
Проверял на F4DISCOVERY
0
ну можно в коде создать процесс killall st-util — мне помогало, но потом убрал из программы (показалось очень косячным такое решение))))
0
Не, с ним как-то можно командами обмениваться, как — не помню, кажется через gdb-сервер.
Ну да, через него, послав команду на отключение.
0
ploop, команду помните? ща добавим сразу же)))
0
Блин, ушел пораньше спать :)
команда kill. Проверил.
0
Ну что, как на счет допиливания?
1. Сборка, чтобы работало сразу
2. kill gdb-серверу
3. прогресс
4. еще какие-нибудь плюшки

А так штука удобная получается, чтобы быстро зашить что-то готовое.
0
5. Сохранение настроек (постоянно перетыкать с V1 на V2 неинтересно)
0
да, будет очень кстати))) ух… если это предложение мне, то после защиты диплома.
Да, таки очень удобно. Сам уже не обхожусь без нее)))))
0
бггг
0
>QtCreator
>учиться
это взаимоисключающие параграфы.
-1
потрудитесь объяснить данную точку зрения…
0
Кто хочет объяснить, делает это сразу. Но это обычно сложнее, чем просто троллить.
+1
по мне так Qt нынче самая оптимальная платформа для разработки на цпп.
0
по мне так C++ вообще бесчеловечен, кроме как в виде C++/Qt (чистый Си я, естественно, не имею ввиду)
0
да елки палки. я конечно признаю что qt не самое оптимизированное решение. но я не понимаю тех кто пишет на яве там где не требуется кроссплатформенность. дотнет вообще не понимаю.
0
предлагаю название — disKovery. )
+1
Вродебы, чтобы прога не тянула за собой либы надо пересобирать всю среду в статическом режиме. Но смысла в этом вроде нет ибо конечный файл по размеру разрастется ровно на столько, сколько весят все подключаемые либы. По крайней мере в винде. Но я могу и ошибаться!=)
0
Меньше. Но все равно, исполнимый файл будет от 4-5 метров. Да и зачем это в линуксе, где Qt практически во всех дистрибутивах?
0
Ребят, пишите, все замечания не в упрек воспринимаю. есть неприятность — должно быть и решение. как освобожусь, так займусь)))
0
тоже писал гуй для программатора:
electrotormentor.blogspot.com/2012/01/muprog-universal-programmer-gui.html
можно добавить плагин для stlink
0
Ребят, не замечали, что с обновлением дистрибутива Ubuntu (Kubuntu) нужно пересобирать st-link? Вот как то решил доработать проект (давно уже) и нифига, ошибки просто смутили разум))) перекомпилировал, всунул, все норма. Плюс старым методом сборка не канала. Может это связано (что скорее всего) с переходом на Kubuntu x64. Вот сам вопрос: если оформлять установочный пакет, такие проблемы можно решить автоматически? (типа autoconf и т.п.). Кто шарит в этом? Сам не разбирался с подобным в дистре.
0
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.