IAR в очередной раз "кардинально улучшили свой продукт". К сожалению, это как обычно привело к проблемам при переходе со старых версий на новые. На этот раз кардинальные изменения коснулись загрузчика (debugger flash loader mechanism). В статье описывается переход с версии IAR Embedded Workbench® for ARM 5.20 (IDE 5.3.0.622) на версию 5.50.1 (IDE 5.7.0.1534).
Вот что пишут по этому поводу в документе C:\Program Files\IAR Systems\Embedded Workbench 5.4\arm\doc\infocenter\readme.ENU.htm: "Процедура работы загрузчика flash-памяти дебаггера (debugger flash loader mechanism) была изменена начиная с версии 5.40. Если Ваш проект использует загрузчик по умолчанию (default flash loader) без дополнительных параметров, то никаких действий при миграции не потребуется. Если же отладчик обнаружит, что Ваш проект использует загрузчик не по умолчанию либо имеет дополнительные параметры, он применит в Вашем проекте загрузчик flash по умолчанию. При этом в папке настроек проекта (обычно это папка ewp) будет создан файл .board (содержащий настройки старого загрузчика). При необходимости файл .board может быть отредактирован и использован для ручной замены загрузчика flash по умолчанию специфическим для проекта файлом .board.".
В процессе установки никаких вопросов не возникло, все происходило по стандарту. Причем старая версия 5.20 осталась, её удалять не обязательно и при необходимости старой версией можно пользоваться. Новый интерфейс стал красивее и современнее.
Если нажать на кнопку Example Projects, то откроется обширный список производителей микроконтроллеров ARM - Actel, Aiji, AnalogDevices, ARM, ATMEL, Cirrus Logic, Energy Micro, Freescale, Fujitsu, Micronas, Nuvoton, NXP, OKI, Samsung, ST, Texas Instruments, Toshiba. Расширилась так же и функциональность примеров. Вот, например, список примеров от Atmel для микроконтроллеров AT91SAM7X128, AT91SAM7X256, AT91SAM7X512 (раньше примеров было 18, а сейчас их 28):
basic-adc-project basic-can-project basic-dataflash-project basic-dhrystone-project basic-emac-project basic-emac-uip-helloworld-project basic-emac-uip-telnetd-project basic-emac-uip-webserver-project basic-internalflash-project basic-iso7816-project basic-microcanopen-project basic-pwm-project basic-rtt-project basic-sd-spi-project basic-serialflash-project basic-twi-eeprom-project basic-usart-hw-handshaking-project getting-started-project usb-device-ccid-project usb-device-cdc-serial-project usb-device-composite-cdchid-project usb-device-composite-cdcmsd-project usb-device-composite-hidmsd-project usb-device-core-project usb-device-hid-keyboard-project usb-device-hid-mouse-project usb-device-hid-transfer-project usb-device-massstorage-project
Теперь не нужно заботиться о переносе проектов примеров для их использования - достаточно в среде IDE IAR кликнуть на выбранном примере, и все происходит автоматически. Файлы выбранного проекта копируются вместе со всеми необходимыми библиотеками в папку %USERPROFILE%\Мои документы\IAR Embedded Workbench\arm\examples\Atmel\, рабочее пространство проекта (workspace) открывается в IDE, и пример сразу готов для компиляции и отладки (по умолчанию настроено использование J-Link).
[Миграция проекта версии 5.20]
Конвертация проекта 5.20 в новую версию происходит очень легко, выдается единственное сообщение, предупреждающее о сохранении настроек загрузчика (In the project you opened 'pkrc-m.ewd' (C:\asm\pkrc-m.512\ewp\pkrc-m.ewd), the configuration 'at91sam7x512_flash' contains older settings for flash loaders, that were converted and saved in the file 'C:\asm\pkrc-m.512\ewp\pkrc-m_at91sam7x512_flash.board'. Because the older settings might no longer work, the project will be set up to use new default flash loader settings. Verify the flash loader settings before you use the debugger with this project.):
После этого в папке настроек проекта (обычно это папка ewp) действительно создается файл .board. У меня создался файл myproject_at91sam7x512_flash.board - он автоматически составляется из названия проекта и названия конфигурации. После этого проект компилируется нормально (если убрать русские комментарии из ассемблерных файлов). При сохранении проекта в новом формате меняется содержимое файлов:
ewp\.dep .ewd .ewp ewp\settings\.dni .cspy.bat settings\.wsdt
Самое неприятное, с чем пришлось столкнуться при миграции с версии 5.20 на 5.50.1 - пропала поддержка русских комментариев в ассемблерных файлах (*.s, *.s*). Т. е. при компиляции выскакивают ошибки наподобие: board_cstartup_iar.s Error[4]: Unexpected end of file encountered C:\asm\myproject.512\at91lib\board\board.h 2 Error while running Assembler Error[15]: Invalid character encountered: '\xe0'; ignored C:\asm\myproject\at91lib\board\board.h 214 Error[15]: Invalid character encountered: '\xec'; ignored C:\asm\myproject\at91lib\board\board.h 214 Error[15]: Invalid character encountered: '\xff'; ignored C:\asm\myproject\at91lib\board\board.h 214 Error[15]: Invalid character encountered: '\xf0'; ignored C:\asm\myproject\at91lib\board\board.h 239 Error[15]: Invalid character encountered: '\xf2'; ignored C:\asm\myproject\at91lib\board\board.h 239 Error[15]: Invalid character encountered: '\xee'; ignored C:\asm\myproject\at91lib\board\board.h 239 Error[15]: Invalid character encountered: '\xf7'; ignored C:\asm\myproject\at91lib\board\board.h 239 Error[15]: Invalid character encountered: '\xea'; ignored C:\asm\myproject\at91lib\board\board.h 239 Error[15]: Invalid character encountered: '\xe8'; ignored C:\asm\myproject\at91lib\board\board.h 239 Error[15]: Invalid character encountered: ' '; ignored C:\asm\myproject\at91lib\board\board.h 239 Error[40]: Bad instruction C:\asm\myproject\at91lib\board\board.h 239
Получается, что ассемблер теперь почему-то парсит комментарии, и букву 'я' он принимает за конец файла, а при наличии других русских символов пытается проанализировать синтаксис. Устранить это никак нельзя, можно только удалить русские комментарии.
[Как устранить проблему с загрузчиком кода]
В принципе, можно оставить все как есть, и не использовать дополнительный загрузчик, так как загрузчик по умолчанию (default) теперь стал умным и грузит код, беря настройки линкера (в версии 5.20 этого не было, приходилось специально настраивать параметры загрузки кода). Если же у Вас все-таки используется дополнительный загрузчик и что-то не работает, то проверьте следующее:
1. Project -> Options... (Alt+F7) -> Debugger -> закладка Download -> поставить галку "Use flash loader(s)" -> поставить галку "Override default .board file" -> выбрать файл, который автоматически создала IDE как бекап старых настроек загрузчика (в моем примере $PROJ_DIR$\myproject_at91sam7x512_flash.board).
2. При ошибке формата выходного файла ("The debugging session could not be started. Either the debugger initialization failed, or else the file "C:\asm\myproject\ewp\at91sam7x512_flash\Exe\at91sam7x512_flash.out" was corrupt or of an unsupported format. There might be more information in the Debug Log window"), скорее всего у Вас задано использовать загрузчик, но не указан правильный путь до него. Чтобы выбрать путь до загрузчика, нужно зайти в Project -> Options... (Alt+F7) -> Debugger -> закладка Download -> нажать кнопку Edit... -> и отредактировать строку в таблице. Нужно поменять Loader Path (например, если чип AT91SAM7X512) на $TOOLKIT_DIR$\config\flashloader\Atmel\AT91SAM7X512-EK\flash-at91sam7x512.flash, в результате должно быть что-то наподобие:
Range: |
Offset |
Loader Path |
Extra Parameters |
CODE: 0x100000-0x180000 |
0x0 |
$TOOLKIT_DIR$\config\flashloader\Atmel\AT91SAM7X512-EK\flash-at91sam7x512.flash |
--flash --boot |
Данный пример показывает настройку загрузки по умолчанию для чипа AT91SAM7X512, при размещении кода со смещением не по адресу 0x100000, как обычно, а по адресу 0x110000 - несмотря на то, что это в настройках загрузчика нигде не отражено, а указано только в настройках линкера.
[Что изменилось с отладчиком J-Link]
Был приятно удивлен, что драйвера обновлять не потребовалось (они были в папке drivers\Jlink\x86\ компакт-диска с IAR 5.50.1). Глюк со стартом отладки остался (надо делать несколько предварительных шагов по стартовому ассемблерному коду кнопкой F10, и потом запустить выполнение кнопкой F5), но встречается реже. [Что не понравилось]
1. Вышеупомянутая проблема с русским языком в комментариях ассемблерных файлов. Что интересно, что некоторые русские комментарии проглатываются без вопросов, а некоторые - нет. Принцип не очень понятен, почему некоторые русские комментарии не перевариваются. 2. Компиляция в новой версии происходит визуально медленнее, чем в старой. 3. Есть нерешенная проблема с Build Actions -> Post-build command line. Почему-то утилита, нормально работавшая в среде IAR 5.20, отказалась работать в новой IAR 5.50.1. Эта утилита у меня автоматически генерировала код прошивки. 4. Проект, сконвертированный в версию 5.50, уже нельзя открыть версией 5.20.
Если открыть проект версии 5.20 в новой версии IAR, то IDE выдает следующее сообщение - "Broken options were detected in the project file. A backup copy will be made. (See log window for details)" и "The project 'rtosdemo' contains the unknown tool 'STLINK_ID'":
|