Здравствуйте!
всё заработало.
В основном цикле while (1); я счастлив. 100% рабочего кода в прерываниях!
Помог совет Сергей Борщ (Слава Ему!) в топике
Старт c IAR+Sam7x1) Исправил стартап
EXTERN VICADDRESS
...
org 0x18
LDR PC, VICADDRESS
2) все обработчики обозначил __irq __arm
3) а то тормозное прерывание которое я не хочу переводить в основной цикл! описал как __irq __nested __arm. И в нём же, сделал __enable_interrupt(); - именно перед тем местом где заходит на длительный разбор пакетов, естественно приняты меры, чтобы небыло повторного вызова до окончания обработки
4) расставил приоритеты прерываниям: быстрым 0, чуть приторможенным 1, а тому тормозному 2
5) планирую в юартах использовать FIFO 16байт, для саморазвития, острая необходимость отпала
Про ошибку Warning[w52]: More than one definition for the byte at address 0x18 in common segment INTVEC. It is defined in module "main" as well as in module "?RESET" которую я получал, всё просто, у меня в main был "типовой" обработчик с соответствующими атрибутами размещения # pragma vector=IRQV
__irq __arm void irq_handler (void){....}
убрал его, ошибка пропала.
SasaVitebsk! я предлагал СИНТЕТИЧЕСКИЙ ТЕСТ для изучения проблемы.