В новом IAR 5.10 обнаружена неприятная вещь, касающаяся размещения IRQ_Handler, FIQ_Handler.
Поддержку #pragma vector они убрали, вместо этого предлагается пользоваться переопределением приведенных выше функций. Так вот грабли в том, что при использовании С++ преобразование имен происходит как-попало и пользовательская IRQ_Handler после компиляции не подставляется вместо библиотечной, а обрабатывается как отдельная фаунция и зачастую вообще линкером игнорируется. Решение - не использовать С++ или пользоваться преобразованием имен:
Код
extern "C"
__irq __arm void IRQ_Handler() {...};
С IAR-ом я связывался, обещали внести это в новый мануал на компиллер.