Показаны сообщения с ярлыком STM32CubeMX. Показать все сообщения
Показаны сообщения с ярлыком STM32CubeMX. Показать все сообщения

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

Как запустить STM32CubeMX в ОС Linux. Шаг 2. Финиш

Шаг второй и последний. В предыдущих я рассказывал как запустить Куб (STM32CubeMX) под линуксом здесь и здесь.

В этот раз я расскажу, как сделать пункт меню для окружения рабочего стола (DE)  Gnome, Unity или KDE. Скорее всего этот способ будет работать и в XFCE, а вот относительно экзотических DE типа  Enlightenment ничего не скажу.

Для начала отойду в сторону и расскажу, как формируется меню программ в рабочих столах линукса. Каждый пункт меню описывается desktop-файлом. По сути это INI-файл, который имеет  минимум одну секцию и некоторый набор параметров. Вот пример такого файла для редактора gedit:

[Desktop Entry]
Name=Text Editor
Comment=Edit text files
Exec=gedit %U
Terminal=false
Type=Application
StartupNotify=true
MimeType=text/plain;
Icon=accessories-text-editor
Categories=GNOME;GTK;Utility;TextEditor;
X-GNOME-DocPath=gedit/gedit.xml
X-GNOME-FullName=Text Editor
X-GNOME-Bugzilla-Bugzilla=GNOME
X-GNOME-Bugzilla-Product=gedit
X-GNOME-Bugzilla-Component=general
X-GNOME-Bugzilla-Version=2.30.4
X-GNOME-Bugzilla-ExtraInfoScript=/usr/share/gedit-2/gedit-bugreport
X-Ubuntu-Gettext-Domain=gedit

Как мы можем видеть, здесь много параметров, назначение которых нам на данном этапе знать и не нужно. Позже мы создадим такой файл для нашего куба. А пока скажу, что системные файлы (по терминологии Windows - программы для всех пользователей) располагаются по пути /usr/share/desktop/applications. Если программа установлена для конкретного пользователя, то такие пункты меню описываются в домашней папке по пути ~/.local/share/applications. Здесь мы и будем создавать наш desktop-файл.

Кстати, формат стандартный и его понимают все выше перечисленные DE, с небольшими оговорками - каждое DE может добавлять свои специфические параметры по типу GNOME в приведенном примере (параметры X-GNOME-...).

Итак, переходим в каталог ~/.local/share/applications. Замечу, что файлы и папки, начинающиеся с точки в линуксе являются скрытыми. Поэтому если Вы пользуетесь графическим файловым менеджером, рекомендую предварительно включить отображение скрытых файлов и папок (для Nautilus это комбинация клавиш Ctrl+H).

Здесь создаем файл STM32CubeMX.desktop. Кстати, название файла никак не влияет на отображение пункта меню. Для удобства понимания в каком файле пункт какой программы описан я рекомендую называть его по имени программы.

В моем случае STM32CubeMX.desktop имеет такое содержимое:

[Desktop Entry]
Terminal=false
Name=STM32CubeMX
Exec=/usr/lib/jvm/java-8-oracle/bin/java -jar /home/sergio/STM32Cube/STM32CubeMX/STM32CubeMX.jar
Type=Application
Categories=Development
Icon=/home/sergio/STM32Cube/STM32CubeMX/cube.png
Hidden=false
NoDisplay=false

Разберу по порядку.
Секция [Desktop Entry] является обязательной и сообщает рабочему окружению, что далее  будет описан элемент рабочего стола (пункты меню являются элементами рабочего стола).

Terminal=false сообщает о том, что программу не нужно запускать в терминальной сессии

Exec= здесь указывается какой исполняемый файл необходимо запустить. Т.к. у нас не совсем исполняемый файл, а JAR-архив, то исполнять нам надо его в среде виртуальной Java машины. У меня  путь к ней /usr/lib/jvm/java-8-oracle/bin/java. У Вас может отличаться. Выяснить его не сложно, набрав в терминале which java Вы узнаете полный путь к исполняемому файлу.
-jar - это параметр командной строки уже Java-машины и говорит о том, какой JAR-файл нужно запустить. Мы помним из предыдущих шагов, что информация об основном классе хранится в манифесте, поэтому уже можем не беспокоиться относительно этих инструкций. Java-машина сама найдет необходимую ей информацию.

Type=Application говорит о том, что это приложение. Desktop Entry могут быть не только приложения. Документы, папки и прочее.

Categories=Development Здесь через точку с запятой перечисляются стандартные категории, в которых надо отображать этот пункт меню. Выяснить их название можно в документации к DE, но в нашем случае категория будет всего одна - "Разработка".

Icon=/home/sergio/STM32Cube/STM32CubeMX/cube.png Если помните. в прошлом шаге мы упаковывали в JAR-архив содержимое exe-файла. Так вот там есть иконка для Куба. Можно использовать ее, можно нарисовать свою или стянуть из интернета. Главное, что эта иконка не должна быть в архиве, а лежать в какой-то папке. Кстати, совсем не обязательно в папке с программой.

Hidden=false
NoDisplay=false
Эти две опции говорят о том, что пункт меню не будет скрытым и его надо отображать.

На этом, собственно, создание пункта меню закончено. Скриншотов не будет, т.к. скриншотить, собственно, нечего.
И еще, рекомендую на уровень выше папки с Кубом (у меня это ~/STM32Cube/) создать каталог Repository и указать его в настройках программы  как путь для сохранения баз данных плат и процессоров.
Т.е.:
~/STM32Cube/STM32CubeMX - каталог с программой
~/STM32Cube/Reository - каталог репозиториев

Теперь Ваш Куб готов к работе. Удачи :)

Как запустить 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. Можно работать.


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

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