Notice: Memcache::get(): Server localhost (tcp 11211) failed with: Connection refused (111) in /home/a146/www/we.easyelectronics.ru/engine/lib/external/DklabCache/Zend/Cache/Backend/Memcached.php on line 134
IAR project manager / STM32 / Сообщество EasyElectronics.ru

IAR project manager

IAR project manager


Хочу поделиться небольшой программой для работы с проектами IAR EWARM для микроконтроллеров STM32F с ядрами M0, M3, M4, M7 (и другими со схожей организацией структуры папок ST CMSIS).

Нескромное название программы — IAR project manager, предназначена для ускорения типовых рутинных процессов при работе с IAR EWARM. Её основные возможности:
— создание нового проекта со всеми необходимыми файлами CMSIS;
— добавление новой директории в проект;
— переименование «воркспейса» и проекта;
— очистка проекта;

Программа написана на Python 3.6.0 и имеет зависимость от LXML.
На данный момент “exe” версии программы нет, поэтому для её запуска необходим интерпретатор Python.
Распространяется под лицензией MIT, соответственно: "...THE SOFTWARE IS PROVIDED «AS IS», WITHOUT WARRANTY OF ANY KIND ..."

Ссылка на проект: GitHub

Далее о работе с программой.


Справка

Доступна общая справка с ключом [-h | --help]:

ipm –h

help

Также, для всех команд с ключом [-h | --help] доступна справка по применению. К примеру, так выглядит справка для команды «create»:

ipm create -h

command help

Ограничения

Программы предполагает работу со следующей структурой папок:

project struct

в корневой директории содержатся: папка «EWARM», в которой хранятся все файлы проекта IAR — (*.eww, *.ewp и файлы сборки); в папке «source» хранится обязательная папка CMSIS и все остальные исходники.

Пример работы с программой

Работу программы рассмотрим на примере создания и последовательного изменения проекта «Great_project» с микроконтроллером STM32F407VG (STM32F4Discovery).
Для начала необходимо скачать саму программу, папку программы «template/» и папку CMSIS, для выбранного контроллера, в одну директорию:

start folder

Создание нового проекта

Для создания нового проекта используется команда «create», для которой достаточно указать имя проекта и используемый микроконтроллер. В нашем примере это команда:

ipm create -n Great_project -d stm32f407xx

которая создает в рабочей директории папку «Great_project» и размещает в ней готовый к сборке проект с упомянутой выше структурой:

new project folder

iar new project
Важно отметить, что название микроконтроллера указывается как в файле «CMSIS/Device/ST/STM32Fxxx/Include/stm32fxxx.h» выбранного семейства. При этом, если название микроконтроллера оканчивается не на «хх», то требуется дополнительное действие — изменение в опциях среды IAR «defined symbol» (project options -> C/C++ compiler -> Preprocessor -> Defined symbols). Также, для подключения отладчика в среде IAR необходимо определить «Processor variant» (project options -> General options -> Processor variant).

Добавления папки в проект

Добавим ещё одну папку в наш проект, для этого достаточно скопировать её в директорию с программой и выполнить команду «add_folder»:

ipm add_folder -p Great_project/EWARM/Great_project.ewp -f add_folder

Эта команда копирует папку «add_folder» в директорию «source» проекта, и добавляет ее в сам проект:

add folder

iar add folder

Кроме того можно указать необязательный параметр [-i | --ignore] для указания расширений файлов, которые не будут добавлены в проект (расширения разделяются символом "/"). К примеру, параметр
-i s/icf

не добавит в проект стартап файлы и файлы линкера.

Очистка проекта

Далее очистим наш проект от лишних файлов, это выполняется простой командой «clean», которая удаляет все папки и файлы из директории проекта, кроме файлов *.eww и *.ewp. Выглядит это так:

ipm clean -w Great_project/EWARM/Great_project.eww

clean

Переименование «воркспейса»

Теперь переименуем «воркспейс», выполняется командой «rename_workspace», которая просто переименовывает файл *.eww:

ipm rename_workspace -w Great_project/EWARM/Great_project.eww -n Just_project

rename workspace

Переименование проекта

Продолжим переименовывать, теперь на очереди файл проекта, выполняется командой «rename_project»:

ipm rename_project -p Great_project/EWARM/Great_project.ewp -w Great_project/EWARM/Just_project.eww -n Just_project

rename project

Переименование «воркспейса» и проекта

И наконец, последняя команда, которая переименовывает и «воркспейс» и проект:

ipm rename -p Great_project/EWARM/Just_project.ewp -w Great_project/EWARM/Just_project.eww -n Great_again_project

rename

Для чего все это

Программа позволяет в несколько команд создать новый проект и добавить в него все исходники. Например, для создания проекта из раздела «Ограничения» достаточно всего трех команд:

ipm create –n Project –d stm32f407xx
ipm add_folder Project/EWARM/Project.ewp –f FreeRTOS
ipm add_folder Project/EWARM/Project.ewp –f STemWin

остается только прописать пути в IAR – и проект готов.
Также, иногда необходимо переименовать проект, что тоже решается одной командой (хотя руками и не сильно сложнее). Ну а функция очистки – это небольшой довесок к программе, возможно, удалить руками даже проще =)

Итог

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

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

RSS свернуть / развернуть
Кроме того можно указать необязательный параметр [-i | --ignore] для указания расширений файлов, которые не будут добавлены в проект (расширения разделяются символом "/").
Лучше указывать маски, это гибче, да и привычнее.
0
  • avatar
  • Vga
  • 07 марта 2017, 04:06
Согласен, по возможности внесу изменения.
0
а чем CubeMX не устраивает автора топика?
0
причин несколько:
— CubeMX создает не подходящую мне структуру проекта;
— добавляет ненужные мне файлы в директорию проекта и сам проект;
— не позволяет простым способом добавлять свои папки в структуру проекта;
— проект CubeMX завязан на HAL, а в своей программе я могу добавить HAL по необходимости;
0
в Кубе нет текстовой строки для поддержания авторитета… не каждому с первого раза удастся набить длиннейшую строку… :)


вместо того, чтобы делать программы облегчающие жизнь пытаются всё обгитхабить :(
0
текстовый ДОС намного удобней
Наконец-то ты это понял!
0
Что к чему?))) Либо я настолько глуп, либо не могу увязать большинство ваших коментариев с реальностью(
0
Это тонкий намёк на некоторую порнографичность переименования файла в винде какой-то сторонней программой с набиванием сотни символов в командную строку.
0
Из которых 90 — имя файла, которое так и так набивать.
0
Ты так шутишь? Ни старое имя, ни путь в проводнике вводить не надо.
0
Для уже имеющихся файлов есть автодополнение.
0
Уточню пару моментов:
— основной функционал программы — это создание нового проекта и добавление в него папок;
— переименование проекта и воркспейса используется внутри программы при создании проекта (переименование шаблонов), а для пользователя вынесено только как дополнение;
— переименование проекта, это не только переименование файла, при этом еще изменяется название проекта в файле *.eww (хоть и одна строка);
— насчет длинных путей — как уже добавили, автодополнение решает эту проблему (хотя обнаружен баг по этому поводу);
— по небольшому опыту использования — все-таки гораздо удобнее забить пару путей чем вручную наполнять проект в IAR;
0
add folder struct in existing project
...and add folder in project file
Если я правильно понял, что ты хотел сказать, то не in, а to. Алсо, не struct, а structure.
И еще к длинным командам стоит иметь краткие алиасы. А-ля co/ci вместо checkout/checkin/commit. И убери подчеркивания, их неудобно вводить. addfolder удобнее.
0
  • avatar
  • Vga
  • 10 марта 2017, 16:27
Спасибо. Внес правки а тексте и добавил изменения по программе в Issues.
0
Картинки пока оставил как есть.
0
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.