Некоторое время назад столкнулся с микроконтроллерами на ядре ARM - и понял, что это то, что надо!
Не, конечно отсутствие моделей в DIP корпусах немного пугает, но при наличии переходника вполне "съедобно".
Далее - про процессор, с которым я игрался (Atmel AT91SAM7S64).
Итак - 32-х разрядный процессор, без разделения адресных пространств на код и данные, тактовая частота - под 50 МГц (простые команды выполняются за два такта). Питание - 3.3 вольта. В аналогичных условиях по питанию от ATmega можно только 8 МГц получить.
У упомянутой мною модели 64K ПЗУ и 16K ОЗУ - у других моделей в этом корпусе есть больше, у модели в 48-ногом корпусе (как у AD9951) - 32KB ОЗУ и 8KB ПЗУ.
Объём кода, полученного для ATMega и ARM компиляторами на основе GCC (WinAVR и YAGARTO соответственно) с точностью до 5% одинаковый.
Управляющая программа приемника (транссивера), обсуждаемого вот тут, стала тратить на обсчёт очередного шага где-то в пять раз меньше времени (субъективно). Поскольку в этом применении на ATMega ничего из специфической периферии не использовалось - кроме контроллера прерываний и таймера - перенос "ножкодрыгательн ой" программы на новый процессор занял около полудня. Этому предшествовали два дня разбирательств с программатором и модфикация start-up кода из примеров. И, естественно, изучение инициализации периферии данной модели процессора. Ядро ARM оно, конечно, одинаковое - но периферию каждая из фирм-производителей делает свою.
Минимальный набор внешних элементов - кварц (без конденсаторов!), блокирующие конденсаторы, разъм программатора и четрые подтягивающих резистора. Программатор я использовал обычный LPT STK200.