|
AT91SAM7X и LPC2388 - что выбрать?, Вопрос новичка в АRМ |
|
|
|
Oct 20 2009, 14:38
|
Местный
  
Группа: Свой
Сообщений: 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". Вроде бы нельзя. Но может я чего-то не знаю? В общем, вопросов все больше и они только накапливаются при чтении даташитов.
|
|
|
|
|
Oct 20 2009, 14:49
|
Гуру
     
Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448

|
Цитата(Александр Куличок @ Oct 20 2009, 18:38)  Остановился на 2х кристаллах - AT91SAM7X256 и LPC2388. В основном, из-за их доставабельности. Собственно говоря, интересуют плюсы и минусы каждого из них в общем и в частности: - максимальная производительность ethernet и USB - интерфейсов - доступность бесплатных/самодельных средств прграммирования/отладки. LPC новее и, пожалуй, лучше. К Ethernet'у у SAM'а с моей стороны претензий не возникло, а вот USB не хватает DMA. Осваивать можно любой, взвешивать все за и против нужно уже при выборе кристалла для конкретного применения. Цитата(Александр Куличок @ Oct 20 2009, 18:38)  К примеру, дерганье ногами. В АВР все просто - sbi - и через такт-два единичка на выходе. А как в АРМе? Регистр в адресном пространстве и 3 такта на запись минимум. Цитата(Александр Куличок @ Oct 20 2009, 18:38)  Что и как влияет на время выполнения команд? Можно ли добится от того же АТ91SAM7X линейного выполнения кода с максимальной частотой 55МГц, если скорость выборки из флеш "Up to 30 MHz". Вроде бы нельзя. Но может я чего-то не знаю? Можно выполнять критичные участки из RAM на полной скорости.
|
|
|
|
|
Oct 20 2009, 20:00
|
Местный
  
Группа: Участник
Сообщений: 236
Регистрация: 1-04-06
Пользователь №: 15 688

|
Цитата(Александр Куличок @ Oct 20 2009, 18:38)  Остановился на 2х кристаллах - AT91SAM7X256 и LPC2388. В основном, из-за их доставабельности. Собственно говоря, интересуют плюсы и минусы каждого из них в общем и в частности: - максимальная производительность ethernet и USB - интерфейсов вот сегодня научился обмениваться LPC2378 (стартеркитовская MLPC2378) с писюком по UDP: ~360 кб/сек при обмене сообщениями туда-обратно длиной 65 байт данных.
|
|
|
|
|
Oct 20 2009, 21:30
|
Местный
  
Группа: Свой
Сообщений: 256
Регистрация: 6-03-06
Из: Украина, г. Винница
Пользователь №: 15 017

|
Спасибо. Хотелось бы еще узнать, каков нужен минимальный набор для отладки и программирования кристаллов первом и втором случае. И заодно следующая партия вопросов  SAM-BA - это, как я понимаю, загрузчик кода для АТ91 контроллеров. Есть ли что-то похожее для NXP? Вопрос по ДМА. (Далее привожу свои рассуждения и прошу меня поправить в местах, где я ошибаюсь) Допустим, я хочу сделать 2-направленную передачу данных между четырмя перифериными блоками и памятью с высокой скоростью. При этом ядро "делает что-то очень важное" ((с)Черновецкий - украинцы поймут  ), и отвлекатся ему нежелательно. В случае с АТ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 кБайта?
|
|
|
|
|
Oct 20 2009, 21:39
|
Гуру
     
Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448

|
Цитата(Александр Куличок @ Oct 21 2009, 01:30)  Вопрос по ДМА. (Далее привожу свои рассуждения и прошу меня поправить в местах, где я ошибаюсь) Допустим, я хочу сделать 2-направленную передачу данных между четырмя перифериными блоками и памятью с высокой скоростью. При этом ядро "делает что-то очень важное" ((с)Черновецкий - украинцы поймут  ), и отвлекатся ему нежелательно. В случае с АТ91 я на каждый блок настраиваю ДМА и данные от периферийных блоков автоматически поступают в отведенное им место в ОЗУ (и оттуда же передаются). Это похоже на то, что каждому мериферийному блоку из общего объема ОЗУ выделили по 2 буфера FIFO (для приема и передачи). Причем размер этих буферов я задаю сам. Только нужно учитывать, что DMA сидит на той же шине, что и ядро, поэтому последнее будет "делать что-то очень важное" немного медленнее. Но в 99% случаев замедление не помешает нормальной работе. В приведенном мной выше примере с двумя 72Мбит/с потоками было еще два 18Мбит/с потока наружу через SPI, и не могу сказать, что это как-то мешало.
|
|
|
|
|
Oct 20 2009, 21:44
|

Гуру
     
Группа: Свой
Сообщений: 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
|
|
|
|
|
Oct 20 2009, 22:56
|
Местный
  
Группа: Свой
Сообщений: 256
Регистрация: 6-03-06
Из: Украина, г. Винница
Пользователь №: 15 017

|
2 zltigoЗа перенос - спасибо. Просто не сразу нашел тему "для начинающих". Цитата В противном случае, контроллеру у которого захватили внешнюю шину делать почти нечего. В случае обмена данными с одним периферийным блоком на большой скорости - согласен. Я не знаю, сколько по тактам длится захват/освобождение шины ДМА, но на мой взгляд, одновремменый обмен данными с несколькими периферийными блоками на шине APB(допустим, 3 USART'а со скоростью 1Мбит/с) через 6-канальный ДМА (в АТ91) не должен захватывать шину надолго (что и подтрерждают слова aaarrr). LPC же позволяет реализовать только один полнодуплексный канал. Остальную периферию нужно будет облуживать по прерываниям. И это отнимет значительно больше времени у ядра LPC, чем блокировка внешней шины у АТ91. Хотя, с другой стороны, LPC имеет FIFO на периферии, что немного сокращает кол-во прерываний (у АТ91 я фифо не нашел. Может, плохо искал? хотя с персональным каналом ДМА фифо в нем нет необходимости). Поправьте меня, если я в чем-то неправ. P.S. Честно говоря, мне более симпатизирует LPC. Но хочется сразу узнать его слабые стороны. Пока что вижу две - это отсутствие полного MII и более слабое (по стравнению с АТ91) DMA.
|
|
|
|
|
Oct 21 2009, 08:21
|

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

|
Цитата(Александр Куличок @ Oct 21 2009, 01:56)  Пока что вижу две - это отсутствие полного MII Это да, но есть LPC24xx  Цитата и более слабое (по стравнению с АТ91) DMA. Это Вы просто с ним не работали и пока просто абстрактные разговоры разговариваете  и мечтаете о том, а неплохо-бы что-бы все DMA делало.
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Oct 21 2009, 11:05
|

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 - при массовом производстве он очень "радует"  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 достаточно) но, с другой стороны, ножек больше уходит.
|
|
|
|
|
Oct 21 2009, 11:09
|
Гуру
     
Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448

|
Цитата(zltigo @ Oct 21 2009, 02:50)  Да-да, для эффективной работы DMA нужна N-слойная матрица AHB и кэшированный процессор, так что LPC с его двумя шинами и двумя банками памяти нервно курит в сторонке. Вы как-то упорно игнорируете тот факт, что речь идет о маленьких процессорах с относительно медленной (100+100МБит/с максимум) периферией. Ну не способна она так уж совсем отнять у ядра шину. Цитата(Александр Куличок @ Oct 21 2009, 02:56)  Я не знаю, сколько по тактам длится захват/освобождение шины ДМА, но на мой взгляд, одновремменый обмен данными с несколькими периферийными блоками на шине APB(допустим, 3 USART'а со скоростью 1Мбит/с) через 6-канальный ДМА (в АТ91) не должен захватывать шину надолго (что и подтрерждают слова aaarrr). Запись/чтение слова занимают 1/2 такта соответственно. Правда есть некоторые моменты.
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|