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

10

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

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

  • NXP LPC1768 / mBed
  • STM32 / Discovery
  • PIC32 / ChipKit
  • PIC32 / Параллакс Пропеллер
  • LM4F120 / TI Launchpad
  • и т.п.

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

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

Томас Э
источник
Ну, во-первых, я думаю, вы можете обрабатывать видеопотоки в прямом эфире, где Arduino не может с этим справиться. Он также позволяет использовать расширенные алгоритмы шифрования или хеширования (быстрее и проще, чем в Arduino). Я удивлен, что Arduino вышел с 32-битной платформой, но он просто показывает вам - некоторые люди просто хотят сделать больше, чем просто управлять реле. Это прекрасный день для Arduino!
Петр Кула
Вы не будете выполнять больше, чем обычную обработку живого видео на процессоре с частотой <100 МГц, если только вы не делаете это в подключенном специальном функциональном ядре. И особенно не из-за довольно ограниченного встроенного плеера на этих устройствах. Более реалистичным является то, что стоимость этих чипов не намного выше, чем стоимость 8-битных частей; на самом деле он может быть ниже, чем ATMEGA с сопоставимой флэш-памятью.
Крис Страттон
3
Насколько я знаю, Parallax Propeller - это специальный чип, не имеющий отношения к PIC32. Есть источники для подключения?
AndrejaKo

Ответы:

12

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

Краткое резюме:

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

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

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

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

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

Легкость развития

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

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

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

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

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

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

Микроконтроллер с подкачкой ОЗУ / регистров / флэш-памяти просто глуп. Да, я говорю о 8-битных PIC. Тупой, тупой, тупой. Это настолько отвлекло меня от PIC, что я даже не удосужился взглянуть на их новые вещи. (Отказ от ответственности: это означает, что новые PIC могут быть улучшены, и я просто не знаю этого.)

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

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

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

Размер посылки

Некоторые из небольших PIC и других 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 очень привлекательны.

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

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

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

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

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


источник
1
Чтобы получить доступ к любой ячейке памяти с помощью ARM, необходимо сначала загрузить регистр с адресом, который находится в пределах 4K; многим устройствам ввода-вывода выделено более 4 Кб адресного пространства, хотя многие используют только несколько дискретных адресов. Напротив, PIC 18Fxx могут напрямую работать в большинстве мест ввода / вывода с помощью одной инструкции, независимо от состояния банковского обслуживания. Средства, с помощью которых создается большая часть ОЗУ, довольно раздражают, но для определенных типов разбивки битов (цель, для которой была разработана архитектура PIC в 1970-х годах) архитектура PIC работает очень хорошо.
суперкат
1
Кстати, мне кажется любопытным, что хотя популярный 8-битный микропроцессор 1970-х годов мог эффективно обрабатывать произвольно выровненные 256-байтовые структуры данных, а популярный 16-битный процессор мог бы хорошо работать с 65 536-байтовыми структурами данных, которые были выровнены на 16 -байтовые границы или произвольно выровненные структуры данных почти такие большие, новые 8-битные и 16-битные процессоры затрудняют написание эффективного кода, который пересекает границы страниц / банков.
суперкат
@supercat Диапазон адресов 4K для инструкции «Немедленное смещение LDR / SRT» - это правда, но часто это не проблема. Я не согласен с остальной частью вашего комментария. Рассматривая документы Freescale M4, каждое периферийное устройство занимает не более 4 КБ диапазона адресов, поэтому для доступа ко всем регистрам в этом периферийном устройстве достаточно одного «указателя базового адреса». Существует также 32 регистра общего назначения, каждый из которых может использоваться в качестве указателя базового адреса, поэтому быстрый доступ к нескольким периферийным устройствам в одном и том же разделе кода является относительно безболезненным.
1
@supercat Ваш второй пункт касается всей дискуссии RISC против CISC. ARM - это RISC-процессор, что означает, что он оптимизирован для выполнения наиболее частых задач. Задачи, которые не являются частыми, такие как не выровненный доступ, требуют больше работы или занимают больше времени (в зависимости от Arch CPU). Я считаю это положительным, а не отрицательным. Вот почему мы получаем быстрые 32-битные микроконтроллеры по цене более старых 8-битных. Даже с этими причудами, я бы взял один из этих процессоров над PIC в любой день.
Я оговорился; Я не имел в виду, что один базовый регистр не может обрабатывать все периферийные устройства, а скорее, что регистр часто приходится загружать для каждого периферийного устройства (поэтому нельзя просто, например, оставить регистр, сидящий с IO_BASE_ADDR, все время ). Для некоторых типов кода возможность установки бита ввода / вывода в одном цикле с помощью инструкции типа «bsf LATA, 4» без предварительной предварительной загрузки каких-либо регистров может быть очень удобной. Мне нравится ARM, но прямое отображение ввода / вывода на PIC может быть довольно хорошим (слишком плохой доступ к другой памяти не так хорош).
суперкат
3

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

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

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

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

S5S
источник
Для прототипирования есть сокеты для LQFP, которые работают довольно хорошо. И, конечно, вы можете припаять LQFP вручную, просто нужно немного потренироваться. QFN, DFN и BGA Я не буду паять вручную, но тогда каждый 32-битный MCU младшего класса на рынке поставляется с LQFP.
Лундин
1

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

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

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

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

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

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

Джон У
источник