VIM snippets for using the IAR ARM compiler (Embedded Workbench).

  • Various bits were tested either with IAR ARM or IAR MSP430 compilers

Makefile

  • Call xmlstar from makefile to extract includes and sourcefile list
  • Alternatively, transform project file to makefile entirely

Extract source files from IAR project

  • xmlstarlet
  • outputs list of all .c and .cpp files included in the project

Bash version

  • Escaped for direct inclusion in BASH script.
  • $PROJECT_FILE is .ewp project file
  • IAR uses standard DOS path separator so use tr '\\' '/'

xml sel -t -m '/project/file|/project//group/file' -i "contains(name,'.c') or contains(name,'.cpp')" -v "concat(substring-after(name,'\$PROJ_DIR$\'),' ')" $PROJECT_FILE

$[Get Code]3

DOS batch version

  • Escaped for direct inclusion in DOS batch file.
  • %PROJECT_FILE% is .ewp project file

xml sel -t -m "/project/file|/project//group/file" -i "contains(name,'.c') or contains(name,'.cpp')" -v "concat(substring-after(name,'$PROJ_DIR$\'),' ')" %PROJECT_FILE%

$[Get Code]4

Extract include directories from IAR project

Environment Variables

: * PROJ_DIR * TOOLKIT_DIR

Extract with xmlstar

  • XPath: /project/configuration(Debug)/settings(ICC430)/option(CCStdIncludePaths|newCCIncludePaths)/state

xml sel -t -m '/project/configuration' -i "contains(name,'Debug')" -m './settings' -i "contains(name,'ICC430')" -m "./data/option" -i "contains(name,'CCStdIncludePaths') or contains(name,'newCCIncludePaths')" -m "state" -v "concat('-I "',.,'" ')"  $PROJECT_FILE

$[Get Code]8

Extract defines from IAR project

xml sel -t -m '/project/configuration' -i "contains(name,'Debug')" -m './settings' -i "contains(name,'ICC430')" -m "./data/option" -i "name='CCDefines'" -m "./state" -v "concat('-D',.,' ')" $PROJECT_FILE

$[Get Code]9

VIM Compiler File

  • Install into .vimfiles/compiler/iar.vim

    " ---- Beginning of ${vimfiles}/compiler/iar.vim ---- " Compiler: IAR icc430 " Maintainer: Mark Ferry " Last Change: 2009 Jan 21

    if exists("current_compiler") finish endif let current_compiler = "iar"

    " errorformat matches errors like: " ... " MyOneArgumentFunction(); " ^ ""MyFile.c",666 Error[Pe165]: too few arguments in function call " " ... " Warnings are matched similarly. " CompilerSet errorformat=%E%p^,%Z\"%f\"\\,%l\ \ Error[Pe%n]:\ %m,%W%p^,%Z\"%f\"\\,%l\ \ Warning[Pe%n]:\ %m

    " ---- End of Vim compiler file ----

Configure VIM

Set your compiler

:compiler iar

vimrc project settings

set path=.,,**,C:\Program\\\ Files\IAR\\\ Systems\Embedded\\\ Workbench\\\ 5.4\430\inc,C:\Program\\\ Files\IAR\\\ Systems\Embedded\\\ Workbench\\\ 5.4\430\inc\dlib

ToDo

  • more compiler configuration - C99 etc.