понедельник, 14 декабря 2015 г.

Как запустить STM32CubeMX в ОС Linux. Шаг 1

В прошлом шаге мы успешно запустили Куб под линуксом.

Теперь я расскажу как распакованный exe-файл упаковать в пакет. Наверное, стоит сделать небольшое отступление и рассказать для чего это необходимо.

Программы, написанные на Java, распространяются в виде пакетов. Для веб-приложений (контейнера сервлетов) это WAR-файл, для серверов приложений, таких как JBoss или Glassfish, это может быть EAR. А для standalone приложений для десктопа это, как правило, JAR. Хотя по методу упаковки это есть ничто иное, как ZIP-архив. Но с небольшими "довесками".

Оригинальный Куб идет в exe-файле, который есть ничто иное как jar-архив с виндовым лаунчером. Мы же пересоберем этот архив без лаунчера. Профитом будет то, что запустить jar-ник можно будет на любой платформе с Java RE.

В прошлом шаге мы получили рабочий Куб, но полностью развернутый. Здесь, как говориться "на вкус и цвет все фломастеры разные". Кто-то может оставить и так и перейти к следующему шагу (ссылочку сделаю, когда его напишу). А мне - некомильфо.

Итак, начнем.

У нас есть каталог с установленным и рабочим Кубом. Снова открываем STM32CubeMX.exe (вы же его еще не удалили?) в Менеджере архивов и смотрим на список каталогов. Эти каталоги нам надо переместить из папки с установленным Кубом, в какую-нибудь рабочую. Я сделал /home/sergio/STM32CubeMX. Там мы должны получить следующее


После этого открываем консоль, переходим в каталог на уровень выше (у меня это /home/sergio) и создаем jar-архив. Наш архив будет исполняемым (отличие jar'а от zip'а - наличие дополнительных данных).

Упаковщику jar мы говорим, где искать манифест (в котором, как мы помним, указывается основной класс программы, который надо запускать) и каталог, который надо упаковать.
Результатом выполнения упаковщика будет файл STM32CubeMX.jar. Собственно, это и есть наш "кросплатформенный exe-шник".
Переносим его в каталог с установленным Кубом. 

 В принципе, теперь если попытаться его запустить откроется Менеджер архивов. Нас это не устраивает и надо сменить программу, чем открывать jar-файлы. Правая кнопка мыши на нашем файле, "Свойства", вкладка "Открыть с помощью" и устанавливаем программу по умолчанию "Orace Java 8 Runtime" 



Теперь если дважды щелкнуть на файле STM32CubeMX.jar - запустится наш Куб.

В следующем шаге сделаем пункт меню для нашего Desktop Environment.


Как запустить STM32CubeMX в ОС Linux. Шаг 0

Как и обещал, выкладываю способ запуска Куба (STM32CubeMX) под линуксом. У меня установлена Linux Mint 17.3, хотя этот способ, скорее всего, будет работать на любом дистрибутиве линукса где есть Java RE, т.к. Куб написан на java.

У меня хорошей традицией стало выпиливание из ОС свободного openjdk и установка оригинального JRE/JDK с сайта Oracle. Не могу точно сказать, будет ли Куб корректно работать  под свободной реализацией JRE т.к. даже не пробовал. Как установить Oracle JRE/JDK в Ubuntu-based дистрибутиве замечательно описано тут

Начнем. Сперва надо скачать сам Куб с сайта STMicroelectronics по ссылке http://www.st.com/web/catalog/tools/FM147/CL1794/SC961/SS1743/PF259242?sc=microxplorer#

Это будет zip-архив, который надо будет распаковать

На данный момент последняя версия Куба - 4.12.0.

Далее, нам необходимо будет распаковать exe-файл SetupSTM32CubeMX-4.12.0.exe. Самый простой способ - открыть в Менеджере архивов. Для установщика я создал отдельную папку SetupCube, куда и распакую содержимое exe-файла.


После этого нам необходимо выяснить имя класса-инсталлятора и запустить его. Среди распакованных каталогов и файлов есть манифест по пути META-INF/MANIFEST.MF. Открываем его в текстовом редакторе.

Название класса com.izforge.izpack.installer.bootstrap.Installer. 
Нам необходимо запустить его и инсталлировать Куб штатным способом. Простой способ сделать это - запустить его из консоли, находясь в папке, куда мы распаковали инсталлятор (у меня это ~/Cube/CubeSetup), командой:

java -cp . com.izforge.izpack.installer.bootstrap.Installer



А вот и наш инсталлятор


Я устанавливаю в домашнюю папку, чтобы впоследствии не иметь проблем с правами доступа при загрузке баз данных плат и микроконтроллеров.  


Каталог /home/sergio/STM32Cube/ будет общим для Куба и его репозиториев.

Собственно дальше тривиально - устанавливаем. После установки видим такую картину:



Понятно, что без wine мы не сможем запустить Куб под линуксом, т.к. exe-файл. Но, к счастью, нам это и не нужно. Также, как с инсталлятором, мы распаковываем одержимое exe-файла в эту папку.




Точно также находим манифест и смотрим название основного класса Куба. Это у нас
com.st.microxplorer.maingui.STM32CubeMX




Запускаем таким же способом, как и инсталлятор - из консоли, находясь в папке, куда мы только что установили Куб.



Вуаля! Мы видим главное окно STM32CubeMX. Можно работать.


Текущий шаг мы сделали. В следующих шагах я расскажу, как настроить каталоги для загрузки баз данных плат и микроконтроллеров и сделать запуск Куба более удобным - из меню системы, с иконкой :)

До новых встреч. 








воскресенье, 13 декабря 2015 г.

Кубический генератор проектов

Не так давно я заинтересовался разработкой для архитектуры ARM. Обзавелся замечательной платкой STM32F4Discovery и понеслась. Благо для плат от STMicroelectronics нет необходимости паять программаторы. Это не AVR. Тут все для людей. Начиная от юзабилити и до прайса.

Методом тщательного перекапывания гугла, рерференсов и даташитов был выбран вариант Eclipse + GNU ARM Toolchain + OpenOCD. Муки выбора IDE - отдельная песня и как-нибудь расскажу об этом.

А также была выбрана очень полезная тулза от самой STMicroelectronics - STM32CubeMX (далее просто - куб). Это существенно освеженный MicroXplorer с генератором проектов под Keil uVision отдельно для 4-й и 5-й версий, IAR EWARM, TrueSTUDIO и System Workbench (который и есть Эклипс с некоторыми доработками французов из Ac6).

Куб - весчь в хозяйстве нужная и полезная. Вот только проект он генерирует несколько специфически. К имени проекта, заданного при сохранении (пусть будет TestProject), в эклипс-проект к названию артефакта будет добавлено " Configuration". После сборки будет сгенерирована прошивка с именем "TestProject Configuration.elf". А в процессор не зальется, т.к.  OpenOCD будет искать файл "TestProject.elf", по имени материнского проекта куба.

Меня порядком достало после каждой перегенерации проекта лезть в конфигурацию и менять имя артефакта и я решил решить (а как иначе решать?)... Вобщем, лень - двигатель прогресса. Пришлось перелопатить все файлы куба, чтобы понять где порылась собака. Об чем я и расскажу, авось кому-то пригодится.

В папке с установленным кубом, а у меня это C:\STM32Toolbox\STM32Cube\STM32CubeMX\, я нашел файлик \db\plugins\projectmanager\fileConfig.ftl и заменил в нем секцию <name>${Configuration} Configuration</name> на <name>${Configuration}</name>.

Voila!

Немного лирики. Куб для генерации исходников и проектов использует шаблонизатор FreeMarker. Собственно, при большом желании и знании FreeMarker'а, можно перелопатить все шаблоны и заточить под себя. Но мне такие кардинальные меры пока не нужны. 

В общем, именно в этом файле и задается название артефакта. В этом файле еще много чего важного и глобального задается. Он общий для генератора проекта под все поддерживаемых IDE. 

Следующим этапом будет запуск куба под линуксом, т.к. плагин для эклипса STMicroelectronics больше отдельно не делает и дистрибутив куба есть только под винду, что ИМХО некошерно для матерого с/с++ девелопера.

вторник, 6 сентября 2011 г.

Ubuntu 11.10 (beta 1) vs Fedora 15 или дефлорация мозга

Вот жеж хочется новизны и чего-нибудь сменить в своей жизни. Короче, приключений на свою околокомпьютерную /dev/ass. 

До недавнего времени любимым десктопом был Ubuntu. При чем часто стояла и development release. В принципе, обновлениями релизов я не страдал, потому качался исошник и ставилась система с нуля. За одно проходило ревизию все барахло, которое в /home скапливалось все это время. Раскладывалось по папкам и приоритетам.

Предыдущие 3 месяца сидел на Ubuntu 11.04 с самым тривиальным Gnome,  темой Orta и иконками Faenza. Все бы хорошо, но дай, думаю, обновлюсь до 11.10. Месяц всего остался. Вроде по всяким видеороликам свежая Unity уже вполне юзабельна.

Обновился. На свою голову.

Первое, что убило наповал. Так это замечательная надпись "AMD Unsupported Hardware" в правом нижнем углу экрана. К слову, машина - Acer Aspire 7750G, Intel Core i5-2410M, AMD Radeon 6650M (1GB VRAM), 4 GB DDR3 RAM, HDD SATA 500GB, Wi-Fi b/g/n... Ладно, похвастался и хватит.

Короче, fglrx никак не панимайт мою видяху, при чем на 11.04 он все очень даже понимайт. Т.к. в игрухи я не играюсь, то кол-во FPS, которое выдают мне шестеренки, как-то в принципе не парило. Лишь бы интерфейс живо бегал и видео с флэшем не тупило.

Откатился на стоковый драйвер radeon. Вроде все ничего... Но кто сказал Шаттлворту, что это уёжище Unity совместимо с мозгом homo sapiens? Ну может быть еще с homo facebookiens... Но.

1. При развернутом на всю портянку окне кнопы minimize, maximize, close находятся в самом верхнем углу экрана... При чем закрывалка самая левая. Несколько раз промахивался...
2. Скрытая панель слева выползает с 3-го - 5-го раза. Т.е. либо она девственница и ее надо упрашивать, либо она принцесса и ее необходимо добиваться.
3. Хваленая панель с приложениями вечно показывает 4 абсолютно бесполезных категории Интернет, Музыка и бла-бла... Не, ну я понимаю, что образец маркетинга - это Эппл. Но нафига уподоблять вполне рабочую (в прошлом) систему дорогущей_игрушке_для_понтов_и_фоток? Ну не слушаю я музыку во время работы - отвлекает, и на ноуте у меня ее нет! И как мне нахрен убрать эту категорию и поместить туда иконки самых необходимых мне аппликух? А никак! Типа "Пошли все в (___.___) Вы нифига не шарите, мы вас научим как пользоваться компом"
4. Поиск работает через ту же (_._)

Ну да ладно, поставлю-ка я Gnome 3. Он как-то поудачнее будет. По крайней мере там известно где и что пилить (javascript и CSS все-таки).
Вобщем поставил и... Нет больше убунты. Ни Unity нормально не работает, ни Gnome 3, хотя уже не на ланчпаде, а в официальных репах.

Фигасе, думаю... пошли вы все нафиг. Возьму-ка я дистр, который сразу с 3-м Гномом. Из всего, что я нашел (Fedora 15 и openSUSE 11.04) доверие внушила мне только Fedora, потому как openSUSE хорош дистрибутив, но 11.04 - это не совсем той свежести дистр, в котором Gnome 3 будет по-дефолту... А мне надо так чтобы "искаропки". И не заморачиваться.

Хух... устал я. Пойду-ка пивка хлебну и покурю. Затем продолжу.

Вобщем Fedora тоже порадовала меня красивеньким зелененьким сообщением о то, что  "AMD Unsupported Hardware". И я решил, что это где-то ошибка в коде... ДНК... Производителей. Ибо либо! Либо драйвер слишком стар, либо драйвер слишком свеж (во что мне верится с трудом). Работа родного radeon меня пока устраивает, потому отложил видяху "на потом".

1. Gnome 3 радует. Апологетам 2-го непонятно, но мне-то хочется новизны! И эта новизна меня радует. Радует в той же степени, в какой не порадовала новизна KDE 4 (хотя я всю сознательную линукс-жизнь прожил на кедах, а до линукса была FreeBSD с разрешением 80х25 символов и как-то не до Гуя было) и столкнула на (тогда еще) ненавистный Гном. Вобщем, мне удобно. Единственное, что реально напрягает - это переключение между окнами одного приложения. Я часто работаю в LibreOffice с несколькими открытыми документами. БЛИН! Вот это реально неудобно. Почему бы не вернуть Alt-Tab с добавлением интеллекта - типа выстраивать окна по самым частым переключениям в них?
2. Убило отсутствие дайверов для моего старенького Samsung SCX-4216F (он же известен под именем Xerox Pe16). Т.е. в Убунте эти дрова, как и загрузка firmware для HP LaserJet 1000 были "искаропки". Здесь нужен определенного рода танец народов крайнего севера, сопровождающийся шаманским завыванием и мерными ударами бубна. Кстати, некрофил и некромант - это разные категории IT-шников. У меня это железо работает!
Ну да ладно, благо как раз на прошлой неделе в офис приехало 2 штуки HP 4250 и один HP 4300. Кстати, подключить Samsung, воткнутый в USB Asus WL-500gPV2 с кастомной прошивкой, под Гном 3 - не совсем тривиальная задача. А вот хьюлет отдетектился сам, я даже не успел поставить курсор на поле, куда IPшник надо вбить.
3. Я не инвалид. Нет, ну может с головой и есть проблемы (а кто нынче без греха?) Но вижу/слышу/княпаю и т.д. я нормально. Поэтому, можно мне как-то более удобным способом отключить Accessibilities, кроме как через анальное отверстие патчей и хаков?
4. Всю жизнь мечтал посреди экрана созерцать часы... Да еще на которые дату, кроме дня недели, втулить нельзя. Опять изучаем  бинарную проктологию.
5. Почему все так сложно? Чтобы поставить Flash, MP3, DivX, Xvid и прочую трахомультимедию надобно перекопать пол гугела?

Вобщем, "Нет в жызни щасья!". ИМХО любой популярный дистр придется пилить, как герою Шуре известного классика. Пока сижу на Федоре, хотя кто его знает... Привык я к Бубунте. Но на Unity меня можно будет загнать только под пивом. На чужом компе. Чтобы запустить терминал.

.


З.Ы. А че, ниче так Федоркино Коре... Но на серваках все равно debian :0)

понедельник, 17 января 2011 г.

Баг is not bug!

Очень давно я ничего не постил. Престранное, однако, слово. Постил. Не нравится оно мне, хотя писал - не намного лучше. ПисАл или ПИсал - непонятно. Ну да ладно.

Не об это я сейчас.

Я писал о баге корзины... Но этоне баг... Точнее, баг! но не корзины. Он где-то в ДНК (может и моем?) тех индивидов, которые постили это как баг.
Все просто - если в процессе родов начать кормить младенца пиццей - вряд ли он этому будет рад... Мамаша тоже.

Так что с точки зрения Мадженты - это действительно не баг. Это просто неправильное применение инструментария.

Не в то время и не в том месте попытка сделать над объектами то, что сейчас делать ненадо. Ну а что из этого получается мы видим в кинопродукции Голливуда... Ну и в баглисте мадженты.