Преимущества 32-битных микропроцессоров 48-96 МГц (например, в Arduino Due)

Похоже, что Arduino Due (32-разрядный, 84 МГц, ARM-Cortex-M3-SAM3X8E) был выпущен сегодня.

Кроме того, очевидно, что в этой категории имеется множество процессоров (32-бит /48-96 МГц /ARM), а также соответствующие платы прототипов:

  • NXP LPC1768 /mBed
  • STM32 /Discovery
  • PIC32 /ChipKit
  • PIC32 /Parallax Propeller
  • LM4F120 /TI Launchpad
  • и др.

Я пытаюсь понять привлекательность этих «промежуточных» микропроцессоров, которые, как мне кажется, лежат между low-end AVR /MSP430 и т. д. (профи: недорогой, маломощный, малогабаритный) и high-end ARM7 /и т. д. (pro: способен выполнять гораздо большие инструкции в секунду).

В каких ситуациях или способах используются 32-разрядные /48-96 Mhz /ARM-микропроцессоры? Более конкретно, мне интересно, какие приложения или какие параметры они будут делать для превосходный выбор во время проектирования, как для младших 8-битных микроконтроллеров, так и для высокопроизводительных процессоров ARM7.

10 голосов | спросил Thomas E 23 +04002012-10-23T05:18:04+04:00312012bEurope/MoscowTue, 23 Oct 2012 05:18:04 +0400 2012, 05:18:04

3 ответа


12

Это один из тех предметов, которые могут стать предметом большой дискуссии. Существует так много разных точек зрения, и разные вещи важны для разных людей. Я постараюсь дать исчерпывающий ответ, но пойму, что всегда будет кто-то, кто не согласен. Просто поймите, что те, кто не согласен со мной, ошибаются. (Just Kidding.)

Краткое описание:

Этот ответ будет длинным, поэтому позвольте мне подвести итог этому. Для подавляющего большинства людей новейшая культура чипов ARM Cortex-M0 /M3 /M4 предлагает лучшее решение, лучшие функции для стоимости. Это даже верно при сравнении этих 32-битных MCU с их 8 и 16-битными предками, такими как PIC и MSP430. M0 можно купить по цене менее US $ 1 /each, а M4 - менее чем за 2 доллара США /каждый, за исключением очень чувствительных к цене приложений. Решения ARM очень приятные. M0 имеют очень низкую мощность и должны быть достаточно хороши для большинства людей. Для тех, кто очень чувствителен к электропитанию, MSP430 могут по-прежнему быть лучшим выбором, но M0s заслуживают внимания даже для этих приложений.

Если вас интересует более подробный анализ, тогда прочитайте дальше, иначе вы можете сейчас перестать читать.

Теперь я посмотрю на каждую область и сравниваю различные MCU:

Скорость выполнения

Конечно, 32-битные MCU будут быстрее. Они, как правило, имеют более высокую тактовую частоту, но также выполняют больше работы для каждого из этих часов. MCU, такие как ARM Cortex-M4, включают в себя инструкции по обработке DSP и могут иметь поддержку с плавающей запятой в оборудовании. 8 и 16-разрядные процессоры могут работать на 32-битных номерах, но это неэффективно. Это позволит быстро потреблять регистры процессора, циклы процессора и флэш-память для хранения программ.

Простота развития

По-моему, это самая ценная причина для использования современных 32-битных микроконтроллеров - но и наиболее недооцененных. Позвольте мне сначала сравнить это с 8-битными ПОС. Это худшее сравнение, но и лучшее, что можно проиллюстрировать моими пунктами.

Меньшие PIC требуют, чтобы программирование выполнялось на языке ассемблера. Правда, существуют компиляторы C для 8-битных ПОС, но эти компиляторы либо бесплатны, либо хороши. Вы не можете получить компилятор, который является хорошим и бесплатным. Свободная версия компилятора повреждена тем, что его оптимизация не так хороша, как версия «Pro». Версия Pro составляет приблизительно 1000 долларов США и поддерживает только одно семейство чипов PIC (8, 16 или 32 бит). Если вы хотите использовать более одной семьи, вам придется купить еще одну копию за еще 1000 долларов США. «Стандартная» версия компилятора делает средний уровень оптимизации и стоит около 500 долларов США для каждого семейства микросхем. 8-битные ПОС медленны по современным стандартам и требуют хорошей оптимизации. Вы можете либо развить деньги за хороший компилятор, либо написать на ассемблере. Я предпочитаю сборку в этом случае.

Для сравнения, есть много хороших компиляторов C для ARM MCU, которые являются бесплатными. Когда есть ограничения, эти ограничения обычно имеют максимальный размер поддерживаемой флэш-памяти. На инструментах Freescale Codewarrior этот предел составляет 128 Кбайт. Этого много для большинства людей на этом форуме.

Преимущество использования компилятора C состоит в том, что вам не нужно беспокоиться (как много) с низкоуровневыми деталями карты памяти ЦП. Пейджинг на ПИК особенно болезнен и лучше избегать, если это вообще возможно. Другим преимуществом является то, что вам не нужно беспокоиться о том, что раздавать 16 и 32-разрядные номера на 8-битном MCU (или 32-битные номера на 16-битном MCU). Хотя это не очень сложно сделать на языке ассемблера, это боль в тылу и склонность к ошибкам.

Существуют другие компиляторы, отличные от ARM C, которые работают хорошо. Кажется, что компилятор MSP430 выполняет разумную работу. Инструменты Cypress PSoC (особенно PSoC1) являются ошибочными.

Модель плоской памяти

MCU, который выгрузил страницыRAM /регистры /Flash просто глупы. Да, я говорю о 8-битных ПОС. Тупой, тупой, тупой. Это так сильно оттолкнуло меня от ПОС, что я даже не потрудился посмотреть на их новые вещи. (Отказ от ответственности: это означает, что новые ПОС могут быть улучшены, и я просто этого не знаю).

С 8-битным MCU трудно (но не невозможно) получить доступ к структурам данных, превышающим 256 байтов. С 16-битным MCU, который увеличивается до 64 кбайт или к-слов. С 32-разрядными микроконтроллерами, которые поддерживают до 4 гигабайт.

Хороший компилятор C может скрыть много от программиста (a.k.a. You), но даже тогда он влияет на размер и скорость выполнения программы.

Есть много приложений MCU, для которых это не будет проблемой, но, конечно, есть много других, которые будут иметь проблемы с этим. Это в основном проблема того, сколько данных вам нужно (массивы и структуры) в ОЗУ или Flash. Разумеется, по мере увеличения скорости процессора увеличивается вероятность использования больших структур данных!

Размер пакета

Некоторые небольшие ПОС и другие 8-битные микроконтроллеры доступны в действительно небольших пакетах. 6 и 8 контактов! В настоящее время самый маленький ARM Cortex-M0, о котором я знаю, находится в QFN-28. Хотя QFN-28 достаточно мал для большинства, он недостаточно мал для всех.

Стоимость

Самый дешевый PIC составляет около одной трети цены самого дешевого ARM Cortex-M0. Но это действительно 0,32 доллара США против 0,85 доллара США. Да, эта разница в цене имеет значение для некоторых. Но я полагаю, что большинство людей на этом веб-сайте не заботятся о той небольшой разнице в стоимости.

Аналогично, при сравнении более мощных микроконтроллеров с ARM Cortex-M0 /M3 /M4 обычно ARM Cortex выходит «примерно ровно» или сверху. При факторизации других вещей (простота разработки, затраты компилятора и т. Д. ARM очень привлекательны.

Второе резюме

Я предполагаю, что реальный вопрос: зачем вам NOT использовать ARM Cortex-M0 /M3 /M4? Когда абсолютная стоимость очень важна. Когда чрезвычайно низкое энергопотребление является критическим. Когда требуется минимальный размер пакета. Когда скорость не важна. Но для подавляющего большинства приложений ни одно из них не применяется, и ARM в настоящее время является лучшим решением.

Учитывая низкую стоимость, если нет веской причины не использовать ARM Cortex, тогда имеет смысл использовать ее. Это позволит ускорить и упростить время разработки с меньшими головными болями и большими проектами, чем большинство других микроконтроллеров.

Существуют и другие 32-битные MCU без ARM Cortex, но я не вижу в них никакого преимущества. Есть много преимуществ, связанных со стандартной архитектурой процессора, включая лучшие инструменты разработки и более быстрое внедрение технологии.

Конечно, все может и может измениться. То, что я говорю, действует сегодня, но может быть недействительным через год или даже через месяц. Сделайте свою домашнюю работу.

ответил 24 +04002012-10-24T20:19:18+04:00312012bEurope/MoscowWed, 24 Oct 2012 20:19:18 +0400 2012, 20:19:18
3

Дэвид Кесснер прав. Я хотел бы добавить следующее.

  1. 8-битные MCU - это единственные MCU, которые легко доступны в пакетах PDIP, которые легко обрабатываются и легко вставляются в макет прототипа.
  2. 32-разрядные MCU могут использовать меньше энергии, чем 8-битные MCU. Не обязательно верно, что <20 MHZ 8-бит MCU будет потреблять меньше энергии, чем Cortex M4.
  3. 8-битные MCU часто используются любителями, которые обычно не требуют многого от MCU. Может быть, несколько сотен строк простого кода C.

Я согласен, что в наши дни нет оснований не использовать 32-битные MCU. Я бы использовал их только [8-битные MCU] по двум причинам: мне нравится легкость PDIP-пакета (не требуется пайка); Мне часто не требуется больше мощности /сложности, чем то, что может предложить 8-битный MCU.

Прерыватель транзакций - действительно доступные инструменты.

ответил s5s 4 J000000Thursday13 2013, 12:42:22
1

Мы используем относительно немодный Freescale MCF52259, 32-битный MCU с мощностью 80 МГц.

Причины /мыслительный процесс для выбора были:

  • Он заменил 32-битное устройство M.Core, поэтому портирование было относительно простым.
  • Это также означало, что мы могли бы придерживаться существующей IDE (CodeWarrior)
  • Нам потребовалось много IO: управление для шага /направления на 3 шаговых двигателях, 4 каналах PWM, 3 UART и I2C и SPI.
  • Было много событий (см. последний пункт), и некоторые из них должны были произойти своевременно, поэтому нам нужно было убедиться, что было достаточно циклов процессора, чтобы все было сделано.
  • Устаревший код сталкивался с размером флеш-памяти 256 тыс. и 32-килобайтной оперативной памятью M.Core, поэтому удвоение количества вспышек и amp; оперативная память сделало жизнь легкой, чтобы подняться & быстро запускается.

В наши дни более экономично (и целесообразно) перераспределять /расширять возможности аппаратного обеспечения (хранение, скорость, ввод-вывод и т. д.), чем тратить ценное время на оптимизацию кода, чтобы втиснуться в минимально дешевый /меньший MCU если пространство или мощность не являются большими проблемами.

В нашем случае устройство в два раза превышало спецификацию M.Core за половину цены, и переход на более дешевый MCU будет экономить только пенни за борт, но дорогостоящее время разработки и ограничить потенциал для будущего развития без изменения MCU снова.

Если бы мы строили миллион досок, стоило бы делать упражнение по оценке затрат, чтобы разобраться в них, но, поскольку это стоит, это не стоит времени разработки.

ответил John U 4 J000000Thursday13 2013, 15:16:36

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132