IAR EW ARM: как перенести проект в другую папку |
![]() |
Добавил(а) microsin |
Часто нужно бывает в IAR Embedded Workbench (далее просто IAR) сделать из одного проекта другой - перенести его в другую папку и переименовать. Это не только потому, что на основе старых проектов удобно делать новые, а потому, что вместе с IAR поставляется много примеров, которые очень хорошо использовать в качестве основы нового проекта. Например, из примера getting-started-project от IAR (находится в папке c:\Program Files\IAR Systems\Embedded Workbench 5.0 Evaluation\ARM\examples\Atmel\at91sam7x-ek) нам надо сделать новый проект, находящийся в папке c:\arm\myfirstproj. Далее будем для простоты путь c:\Program Files\IAR Systems\Embedded Workbench 5.0 Evaluation\ARM\ заменять на $TOOLKIT_DIR$\, а папку проекта c:\arm\myfirstproj\ на $PROJ_DIR$\..\. Процесс по шагам: 1. Создаем папку c:\arm\myfirstproj. Папка проекта ($PROJ_DIR$) будет соответствовать c:\arm\myfirstproj\ewp. 2. Содержимое папки $TOOLKIT_DIR$\examples\Atmel\at91sam7x-ek\getting-started-project копируем в папку $PROJ_DIR$\..\ (c:\arm\myfirstproj\). 3. Файл $PROJ_DIR$\..\getting-started-project.eww переименовываем в $PROJ_DIR$\..\myfirstproj.eww. 4. Файл $PROJ_DIR$\..\settings\getting-started-project.wsdt переименовываем в $PROJ_DIR$\..\settings\myfirstproj.wsdt. 5. Если опции старого проекта, который использовали для создания копии, были установлены по уму, и в папке проекта есть все исходные файлы, то больше никаких телодвижений не требуется. Но в примерах от IAR все устроено несколько сложнее - из-за использования внешних библиотек. Запускаем проект (меню File -> Open -> Workspace..., выбираем файл $PROJ_DIR$\..\myfirstproj.eww), и попробуем его перекомпилировать заново (Project -> Clean, Project -> Rebuild All). Компилятор будет выдавать ошибки наподобие: Файл board.h находится в папке $TOOLKIT_DIR$\examples\Atmel\at91lib\boards\at91sam7x-ek\. В установках проекта этот путь задан относительно старого значения $PROJ_DIR$ - $PROJ_DIR$\..\..\..\at91lib\boards\at91sam7x-ek, но оно у нас поменялось. Поэтому исправим $PROJ_DIR$\..\..\..\at91lib\boards\at91sam7x-ek на $TOOLKIT_DIR$\examples\Atmel\at91lib\boards\at91sam7x-ek. Еще лучше будет скопировать папку resources и at91lib вместе с подкаталогами в корневую папку проекта и указать путь до неё через относительный каталог $PROJ_DIR$. Аналогично исправляем (Project -> Options... -> C/C++ Compiler -> закладка Preprocessor): $PROJ_DIR$\..\..\..\at91lib Чтобы исправить ошибку линкера Lc002, исправляем (Project -> Options... -> Linker -> закладка Config -> галочка Linker configuration file\Override default): После этого пропадут все ошибки. 6. Исправляем путь к макросам отладчика (Project -> Options... -> Debugger -> галочка Use macro file(s)): 7. Аналогичным образом правим все конфигурации, какие есть в проекте (at91sam7x128_flash, at91sam7x128_sram, at91sam7x256_flash, at91sam7x256_sram, at91sam7x512_flash, at91sam7x512_sram). Ненужные конфигурации можно удалить. Все, получили проект в новой папке. Если мы хотим поменять имя проекта, то действуем следующим образом: 9. В папке ewp\settings\ проекта переименовываем файлы: 10. Открываем переименованный на шаге 3 файл myfirstproj.eww текстовым редактором, ищем там строку: Готово! Как переименовать проект IAR, на примере проекта Audio_playback_and_record из STM32Cube_FW_F4_V1.24.0\Projects\STM32F4-Discovery\Applications\Audio\: 1. Сделайте копию папки проекта в любом месте, где должен проект находиться (папка Audio_playback_and_record со всем содержимым). При этом папку Audio_playback_and_record можно переименовать как угодно. Все дальнейшие действия будут происходить только в папке EWARM, которая находится внутри папки Audio_playback_and_record. 2. Зайдите в папку EWARM проекта. Удалите файлы *.ewd, *.eww. Удалите в каталоге EWARM все папки - settings, Debug, Release. Эти папки и все находящиеся в них файлы временные, они будут автоматически созданы при компиляции проекта. 3. Переименуйте файл EWARM\*.ewp, это основной файл настроек проекта. В проектах примеров STM32CubeMX все файлы настроек проекта называются Project.ewp, что не слишком информативно. Дайте файлу проекта любое понятное имя, желательно короткое, например recandplay.ewp. 4. Откройте файл recandplay.ewp в текстовом редакторе. Найдите в нем и замените имена файлов Project.* на recandplay.*. Например, следует заменить Project.hex на recandplay.hex. 5. В проекте наверняка есть множество добавленных внешних библиотек. Ссылки на них обычно содержат пути наподобие $PROJ_DIR$\..\..\..\..\..\..\название_библиотеки. Например: \\ Ссылки на каталоги подключаемых файлов: $PROJ_DIR$\..\..\..\..\..\..\Drivers\CMSIS\Device\ST\STM32F4xx\Include $PROJ_DIR$\..\..\..\..\..\..\Drivers\STM32F4xx_HAL_Driver\Inc $PROJ_DIR$\..\..\..\..\..\..\Drivers\BSP\STM32F4-Discovery $PROJ_DIR$\..\..\..\..\..\..\Middlewares\ST\STM32_USB_Device_Library\Core\Inc $PROJ_DIR$\..\..\..\..\..\..\Middlewares\Third_Party\FatFs\src \\ ... и т. д. \\ Ссылки на компилируемые модули кода: $PROJ_DIR$\..\..\..\..\..\..\Drivers\BSP\Components\cs43l22\cs43l22.c $PROJ_DIR$\..\..\..\..\..\..\Drivers\BSP\Components\lis302dl\lis302dl.c $PROJ_DIR$\..\..\..\..\..\..\Drivers\BSP\Components\lis3dsh\lis3dsh.c $PROJ_DIR$\..\..\..\..\..\..\Drivers\BSP\STM32F4-Discovery\stm32f4_discovery.c< \\ ... и т. д. Здесь $PROJ_DIR$ это макрос, который соответствует полному пути до содержимого папки EWARM. Лучше всего сделать копию этих библиотек в каталог проекта, и переделать пути ссылок на них относительно $PROJ_DIR$. Примерно так: \\ Ссылки на каталоги подключаемых файлов: $PROJ_DIR$\..\Drivers\CMSIS\Device\ST\STM32F4xx\Include $PROJ_DIR$\..\Drivers\STM32F4xx_HAL_Driver\Inc $PROJ_DIR$\..\Drivers\BSP\STM32F4-Discovery $PROJ_DIR$\..\Middlewares\ST\STM32_USB_Device_Library\Core\Inc $PROJ_DIR$\..\Middlewares\Third_Party\FatFs\src \\ ... и т. д. \\ Ссылки на компилируемые модули кода: $PROJ_DIR$\..\Drivers\BSP\Components\cs43l22\cs43l22.c $PROJ_DIR$\..\Drivers\BSP\Components\lis302dl\lis302dl.c $PROJ_DIR$\..\Drivers\BSP\Components\lis3dsh\lis3dsh.c $PROJ_DIR$\..\Drivers\BSP\STM32F4-Discovery\stm32f4_discovery.c< \\ ... и т. д. Достоинство такого подхода в том, что Вы теперь можете свободно вносить изменения в свою копию кода библиотек (например, добавляя туда комментарии), и у Вас остается исходная копия в каталогах (или архиве) STM32CubeMX. Для примера проекта Audio_playback_and_record я создал копии следующих каталогов (и соответствующим образом исправил пути в файле *.ewp): Drivers\CMSIS\Device\ST\STM32F4xx\Include Drivers\STM32F4xx_HAL_Driver\Inc Drivers\STM32F4xx_HAL_Driver\Src Drivers\BSP\STM32F4-Discovery Drivers\BSP\Components Drivers\BSP\Components\Common\ Middlewares\ST\STM32_USB_Device_Library\Core\Inc Middlewares\ST\STM32_USB_Device_Library\Core\Src Middlewares\ST\STM32_USB_Host_Library\Class\MSC\Inc Middlewares\ST\STM32_USB_Host_Library\Class\MSC\Src Middlewares\ST\STM32_USB_Host_Library\Core\Inc Middlewares\ST\STM32_USB_Host_Library\Core\Src Middlewares\ST\STM32_Audio\Addons\PDM\Inc Middlewares\ST\STM32_Audio\Addons\PDM\Lib Middlewares\Third_Party\FatFs\src 6. Откройте проект *.ewp в IAR, попробуйте его скомпилировать. Если Вы что-то пропустили, то компилятор сообщит о не найденных заголовочных файлах, а линкер сообщит о ссылках на не существующие символы. Сначала по сообщениям компилятора надо найти в архиве STM32CubeMX недостающие файлы заголовков и скопировать их в соответствующие папки проекта. После этого по сообщениям линкера надо найти в архиве STM32CubeMX те модули, которые содержат недостающие символы, и добавить эти модули в проект. Возможно, также необходимо будет добавить в проект бинарные библиотеки. Например, в проекте Audio_playback_and_record используется библиотека libPDMFilter_CM4_IAR_wc32.a. [Ссылки] 1. 191122IAR830-renamed-projects.zip - примеры двух переименованных проектов из STM32Cube_FW_F4_V1.24.0 (Audio_playback_and_record и LwIP_TCP_Echo_Client). |