Цитата(zltigo @ Oct 21 2009, 00:44)

Все с точностью до наоборот, благодаря нескольким банкам памяти и нескольким шинам у LPC от DMA есть польза. В противном случае, контроллеру у которого захватили внешнюю шину делать почти нечего.
Именно у LPC23xx DMA убогонький - всего два канала - один отдаем на MMC/SD (is a must - без DMA этот блок не работает нормально), второй на USB - и все, остальная периферия курит без DMA в сторонке. Недаром же в новых LPC17xx добавили DMA-каналов.
Насчет разделения памяти на банки - оно тоже не без недостатков - память из этих "нескольких банков" работает медленнее основной SRAM - при доступе со стороны ядра мосты AHB вставляют свои несколько лишних тактов. Так что - так или иначе за доступ к данным надо платить - или отдавать шину в процессе обмена (как в SAM7X) или ждать на мосту потом при обращении к ним (LPC23xx). ИМХО, очень правильно атмеловцы сделали в новых SAM3 - там и банки памяти разделены и шина многослойная.
А вообще - однозначно выбрать из LPC23/SAM7X сложно - надо внимательно на задачу смотреть. Все ниженаписанное - ИМХО, по плотному опыту работы с обоими кристаллами.
1. На уровне печатной платы - LPC23 предпочтительней - у него одно питание, SAM7 требует двух - сложнее трассировка. С другой стороны, если задача очень критична к потреблению в рабочем режиме - то оптимизировать источник питания ядра 1.8 - самое оно.
2. По моим впечатлениям LPC23 раза в полтора прожорливей чем SAM7 (на одинаковых частотах, частота периферии = частоте ядра) в активном режиме. "В спячке" LPC23 сливает полностью - 150uA это даже неприлично как-то. SAM7 в спячке сильно выигрывает даже с ежесекундной калибровкой RC-часов - 30uA.
3. Угу, в LPC23 есть нормальные RTC - это большой плюс для некоторых задач. В SAM7X часики приходится делать на RC-генераторе - достаточно геморройно. С другой стороны - во многих ревизиях LPC есть чудный баг с VBAT - при массовом производстве он очень "радует"

4. LPC23 быстрее чем SAM7 - тут и технология 128-битной выборки из программного флеша и частота ядра больше. В SAM7X имеется только одна PLL, и если используется USB то максимальная частота ядра ограничивается 48МГц. В LPC23 этой проблемы нет - для ядра стоит отдельная PLL. При некоторых условиях абсолютный выигрыш по быстродействию достигает двух раз (LPC23@72MHz <-> SAM7X@48MHz, режим ARM).
5. Ядро LPC23 не генерирует исключения при обращении по невыравненному адресу - это минус, особенно для новичков.
6. DMA в LPC23 ограниченный - мало каналов, не со всей памятью работает. Но для многих задач достаточный. Наличие USB DMA - приятно, хотя полезность под вопросом - как и полезность всех PDC в SAM7. Но опять-таки - это все от задачи зависит.
7. Оперативной памяти в SAM7X может быть до 128K и, при желании, хоть всю ее можно отдать для буферов обмена EMAC. В LPC23 - для EMAC доступно максимум 16+16, да еще и с USB делиться иногда надо

.
8. Работа с программной flash в LPC23 закрыта и намного менее удобна чем в SAM7 - особенно если в этой флешки хранить изменяемые настройки. Мелкие страницы SAM7 часто более предпочтительны. Заводской загрузчик LPC23 занимает часть флеши, имеет логические ловушки - это минус.
9. LPC23 UART может иметь дробный делитель скорости обмена - приятная возможность для достижения высоких стандартных скоростей обмена.
С другой стороны, UART SAM7 имеет очень много дополнительных возможностей - я свои протоколы RS-485 смог реализовать только на одном UART, на всех остальных процессорах (включая LPC23) пришлось задействовать дополнительный таймер.
10. Ethernet - у LPC23 только RMII - требуется внешний генератор 50МГц, у SAM7X - только MII (RMII не работает), генератор не нужен (кварца на PHY достаточно) но, с другой стороны, ножек больше уходит.