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

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

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

в корневой директории содержатся: папка «EWARM», в которой хранятся все файлы проекта IAR — (*.eww, *.ewp и файлы сборки); в папке «source» хранится обязательная папка CMSIS и все остальные исходники.
Пример работы с программой
Работу программы рассмотрим на примере создания и последовательного изменения проекта «Great_project» с микроконтроллером STM32F407VG (STM32F4Discovery).
Для начала необходимо скачать саму программу, папку программы «template/» и папку CMSIS, для выбранного контроллера, в одну директорию:

Создание нового проекта
Для создания нового проекта используется команда «create», для которой достаточно указать имя проекта и используемый микроконтроллер. В нашем примере это команда:
ipm create -n Great_project -d stm32f407xx
которая создает в рабочей директории папку «Great_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» проекта, и добавляет ее в сам проект:


Кроме того можно указать необязательный параметр [-i | --ignore] для указания расширений файлов, которые не будут добавлены в проект (расширения разделяются символом "/"). К примеру, параметр
-i s/icf
не добавит в проект стартап файлы и файлы линкера.
Очистка проекта
Далее очистим наш проект от лишних файлов, это выполняется простой командой «clean», которая удаляет все папки и файлы из директории проекта, кроме файлов *.eww и *.ewp. Выглядит это так:
ipm clean -w Great_project/EWARM/Great_project.eww

Переименование «воркспейса»
Теперь переименуем «воркспейс», выполняется командой «rename_workspace», которая просто переименовывает файл *.eww:
ipm rename_workspace -w Great_project/EWARM/Great_project.eww -n Just_project

Переименование проекта
Продолжим переименовывать, теперь на очереди файл проекта, выполняется командой «rename_project»:
ipm rename_project -p Great_project/EWARM/Great_project.ewp -w Great_project/EWARM/Just_project.eww -n Just_project

Переименование «воркспейса» и проекта
И наконец, последняя команда, которая переименовывает и «воркспейс» и проект:
ipm rename -p Great_project/EWARM/Just_project.ewp -w Great_project/EWARM/Just_project.eww -n Great_again_project

Для чего все это
Программа позволяет в несколько команд создать новый проект и добавить в него все исходники. Например, для создания проекта из раздела «Ограничения» достаточно всего трех команд:
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 – и проект готов.
Также, иногда необходимо переименовать проект, что тоже решается одной командой (хотя руками и не сильно сложнее). Ну а функция очистки – это небольшой довесок к программе, возможно, удалить руками даже проще =)
Итог
На этом возможности программы исчерпаны, надеюсь, кому-нибудь она окажется полезной. Очевидно, что применение ограничено принятой структурой проекта, и не подойдет к любой другой, однако код всегда можно подправить под необходимые требования.
Относительно самого кода – предполагаю, что он далёк от идеала, и всегда есть что переделать и улучшить, так что пишите по всем предложениям и комментариям.
- 0
- 07 марта 2017, 03:24
- avilezhaninov
Кроме того можно указать необязательный параметр [-i | --ignore] для указания расширений файлов, которые не будут добавлены в проект (расширения разделяются символом "/").Лучше указывать маски, это гибче, да и привычнее.
причин несколько:
— CubeMX создает не подходящую мне структуру проекта;
— добавляет ненужные мне файлы в директорию проекта и сам проект;
— не позволяет простым способом добавлять свои папки в структуру проекта;
— проект CubeMX завязан на HAL, а в своей программе я могу добавить HAL по необходимости;
— CubeMX создает не подходящую мне структуру проекта;
— добавляет ненужные мне файлы в директорию проекта и сам проект;
— не позволяет простым способом добавлять свои папки в структуру проекта;
— проект CubeMX завязан на HAL, а в своей программе я могу добавить HAL по необходимости;
- avilezhaninov
- 08 марта 2017, 00:36
- ↑
- ↓
Что к чему?))) Либо я настолько глуп, либо не могу увязать большинство ваших коментариев с реальностью(
Это тонкий намёк на некоторую порнографичность переименования файла в винде какой-то сторонней программой с набиванием сотни символов в командную строку.
Уточню пару моментов:
— основной функционал программы — это создание нового проекта и добавление в него папок;
— переименование проекта и воркспейса используется внутри программы при создании проекта (переименование шаблонов), а для пользователя вынесено только как дополнение;
— переименование проекта, это не только переименование файла, при этом еще изменяется название проекта в файле *.eww (хоть и одна строка);
— насчет длинных путей — как уже добавили, автодополнение решает эту проблему (хотя обнаружен баг по этому поводу);
— по небольшому опыту использования — все-таки гораздо удобнее забить пару путей чем вручную наполнять проект в IAR;
— основной функционал программы — это создание нового проекта и добавление в него папок;
— переименование проекта и воркспейса используется внутри программы при создании проекта (переименование шаблонов), а для пользователя вынесено только как дополнение;
— переименование проекта, это не только переименование файла, при этом еще изменяется название проекта в файле *.eww (хоть и одна строка);
— насчет длинных путей — как уже добавили, автодополнение решает эту проблему (хотя обнаружен баг по этому поводу);
— по небольшому опыту использования — все-таки гораздо удобнее забить пару путей чем вручную наполнять проект в IAR;
- avilezhaninov
- 10 марта 2017, 16:53
- ↑
- ↓
add folder struct in existing project
...and add folder in project fileЕсли я правильно понял, что ты хотел сказать, то не in, а to. Алсо, не struct, а structure.
И еще к длинным командам стоит иметь краткие алиасы. А-ля co/ci вместо checkout/checkin/commit. И убери подчеркивания, их неудобно вводить. addfolder удобнее.
Спасибо. Внес правки а тексте и добавил изменения по программе в Issues.
- avilezhaninov
- 10 марта 2017, 17:22
- ↑
- ↓
Комментарии (15)
RSS свернуть / развернуть