реклама на сайте
подробности

 
 
> AT91SAM7X и LPC2388 - что выбрать?, Вопрос новичка в АRМ
Александр Куличо...
сообщение Oct 20 2009, 14:38
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 256
Регистрация: 6-03-06
Из: Украина, г. Винница
Пользователь №: 15 017



С АВР напрограммировался достаточно. Теперь хочу начать изучение/работу с ARM.
Остановился на 2х кристаллах - AT91SAM7X256 и LPC2388. В основном, из-за их доставабельности.
Предполагаю использовать ethernet и USB, с которыми тоже никогда не работал (wiznet+авр не в счет).

Остановился на 2х кристаллах - AT91SAM7X256 и LPC2388. В основном, из-за их доставабельности.
Собственно говоря, интересуют плюсы и минусы каждого из них в общем и в частности:
- максимальная производительность ethernet и USB - интерфейсов
- доступность бесплатных/самодельных средств программирования/отладки.

Есть еще целая туча вопросов, но это попозже.
Буду также благодарен за ссылки на литературу типа "ARM для чайников", где было бы описаны ньюансы работы с АРМ.
К примеру, дерганье ногами. В АВР все просто - sbi - и через такт-два единичка на выходе. А как в АРМе?
Что и как влияет на время выполнения команд? Можно ли добится от того же АТ91SAM7X линейного выполнения кода с максимальной частотой 55МГц, если скорость выборки из флеш "Up to 30 MHz". Вроде бы нельзя. Но может я чего-то не знаю? В общем, вопросов все больше и они только накапливаются при чтении даташитов.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Александр Куличо...
сообщение Oct 20 2009, 21:30
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 256
Регистрация: 6-03-06
Из: Украина, г. Винница
Пользователь №: 15 017



Спасибо.
Хотелось бы еще узнать, каков нужен минимальный набор для отладки и программирования кристаллов первом и втором случае.

И заодно следующая партия вопросов smile.gif

SAM-BA - это, как я понимаю, загрузчик кода для АТ91 контроллеров. Есть ли что-то похожее для NXP?

Вопрос по ДМА. (Далее привожу свои рассуждения и прошу меня поправить в местах, где я ошибаюсь)
Допустим, я хочу сделать 2-направленную передачу данных между четырмя перифериными блоками и памятью с высокой скоростью.
При этом ядро "делает что-то очень важное" ((с)Черновецкий - украинцы поймут smile.gif ), и отвлекатся ему нежелательно.
В случае с АТ91 я на каждый блок настраиваю ДМА и данные от периферийных блоков автоматически поступают в отведенное им место в ОЗУ (и оттуда же передаются). Это похоже на то, что каждому мериферийному блоку из общего объема ОЗУ выделили по 2 буфера FIFO (для приема и передачи). Причем размер этих буферов я задаю сам.

В случае с LPC это не пройдет, так как, на мой взгляд (как новичка), блок ДМА здесь довольно ограничен:
- Только 2 однонаправленных канала (выделенные ДМА под эзернет и ЮСБ не считаем)
- ДМА может создавать каналы:
GPDMA (2 однонаправленных канала):
1. между периферийным блоком на шине АРB и блоком памяти на 16кБайт на АНВ1
2. между периферийным блоком на шине АРB и внешней памятью
3. между внешней памятью и блоком памяти на 16кБайт на АНВ1
USB DMA - между памятью ЮСБ (4кБайт) и тем же блоком памяти на 16кБайт на АНВ1
ethernet DMA - между блоком ethernet и блоком памяти на 16кБайт на АНВ2, который, по сути, служит буфером эзернет. А передавать данные от эзернет во внешнюю память или на периферию можно только по одному.

Еще вопрос.
Что означает описание "reserved for the ARM processor exclusive use" к блоку памяти на 64к на local bus? то, что она недоступна по ДМА?

Про endpoint'ы ЮСБ.
Имеем 4 kB endpoint buffer RAM. Еndpoit'ов всего 32 (физических).
Т.е., память всех реализованных эндпойнтов нужно распределить так, чтобы их суммарный объем не превышал 4 кБайта?
Go to the top of the page
 
+Quote Post
zltigo
сообщение Oct 20 2009, 21:44
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(Александр Куличок @ Oct 21 2009, 00:30) *
В случае с LPC ...

Все с точностью до наоборот, благодаря нескольким банкам памяти и нескольким шинам у LPC от DMA есть польза. В противном случае, контроллеру у которого захватили внешнюю шину делать почти нечего.


Цитата(Александр Куличок @ Oct 21 2009, 00:30) *
Хотелось бы еще узнать....

Очень-бы хотелось, что-бы Вы ознакомились с содержимым форума перед тем, как в мамнадцатый раз задавать дежурные вопросы. Тем более в основных ветках форума. Для начинающих есть специальный раздел - перенес.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
VslavX
сообщение Oct 21 2009, 11:05
Сообщение #4


embarrassed systems engineer
*****

Группа: Свой
Сообщений: 1 083
Регистрация: 24-10-05
Из: Осокорки
Пользователь №: 10 038



Цитата(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 - при массовом производстве он очень "радует" sad.gif

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 делиться иногда надо sad.gif.

8. Работа с программной flash в LPC23 закрыта и намного менее удобна чем в SAM7 - особенно если в этой флешки хранить изменяемые настройки. Мелкие страницы SAM7 часто более предпочтительны. Заводской загрузчик LPC23 занимает часть флеши, имеет логические ловушки - это минус.

9. LPC23 UART может иметь дробный делитель скорости обмена - приятная возможность для достижения высоких стандартных скоростей обмена.
С другой стороны, UART SAM7 имеет очень много дополнительных возможностей - я свои протоколы RS-485 смог реализовать только на одном UART, на всех остальных процессорах (включая LPC23) пришлось задействовать дополнительный таймер.

10. Ethernet - у LPC23 только RMII - требуется внешний генератор 50МГц, у SAM7X - только MII (RMII не работает), генератор не нужен (кварца на PHY достаточно) но, с другой стороны, ножек больше уходит.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Александр Куличок   AT91SAM7X и LPC2388 - что выбрать?   Oct 20 2009, 14:38
- - aaarrr   Цитата(Александр Куличок @ Oct 20 2009, 18...   Oct 20 2009, 14:49
|- - prottoss   Цитата(aaarrr @ Oct 20 2009, 22:49) ...а ...   Oct 20 2009, 15:20
|- - aaarrr   Цитата(prottoss @ Oct 20 2009, 19:20) Раз...   Oct 20 2009, 15:36
- - evgen2   Цитата(Александр Куличок @ Oct 20 2009, 18...   Oct 20 2009, 20:00
- - aaarrr   Через EMAC SAM7X @ 55MHz вполне получается протаск...   Oct 20 2009, 20:48
|- - aaarrr   Цитата(Александр Куличок @ Oct 21 2009, 01...   Oct 20 2009, 21:39
|- - aaarrr   Цитата(zltigo @ Oct 21 2009, 01:44) Все с...   Oct 20 2009, 22:11
||- - zltigo   Цитата(aaarrr @ Oct 21 2009, 01:11) Это у...   Oct 20 2009, 22:50
|- - zltigo   Цитата(VslavX @ Oct 21 2009, 14:05) Именн...   Oct 21 2009, 13:15
- - Александр Куличок   2 zltigo За перенос - спасибо. Просто не сразу наш...   Oct 20 2009, 22:56
|- - zltigo   Цитата(Александр Куличок @ Oct 21 2009, 01...   Oct 21 2009, 08:21
- - aaarrr   Цитата(zltigo @ Oct 21 2009, 02:50) Да-д...   Oct 21 2009, 11:09


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 10:26
Рейтинг@Mail.ru


Страница сгенерированна за 0.01396 секунд с 7
ELECTRONIX ©2004-2016