Как узнать, достаточно ли мощный микропроцессор


9

Всем известно, как легко разработать доказательство концепции встраиваемого устройства на Rasbperry Pi или даже ПК, хотя когда дело доходит до выбора микропроцессора для вашего продукта, трудно быть уверенным, что ваш выбор позволит вашей концепции работать оптимально.

В настоящее время у меня есть проект потоковой передачи мультимедиа, успешно работающий на Raspberry Pi, хотя он слишком большой и громоздкий, чтобы его можно было использовать как конечное устройство. Также заявлено, что конечное устройство является заказным. Мне трудно найти уверенность в процессорах, которые я могу использовать.

Что хорошего в том, чтобы выяснить, достаточно ли мощный процессор для запуска моего приложения?

В основном мои требования:

  • USB-хост или встроенный стек TCP / IP для работы WiFi
  • Медиа-протокол I2S / PCM
  • I2C для периферийной конфигурации

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

Я немного посмотрел на LPC4337 и чувствую, что он подойдет, хотя среда разработки доставляет мне немало хлопот, поэтому я все еще осматриваюсь, что привело меня к CC3200 от Texas Instruments , хотя этот контроллер работает только на частоте 80 МГц, и я не уверен, будет ли он достаточно сильным для потоковой передачи мультимедиа в реальном времени.

Какие шаги нужно сделать, чтобы процессор был достаточно быстрым для моего приложения? Например, как узнать, будет ли достаточно 80 МГц процессор или мне нужно что-то порядка 204 МГц или даже выше?


1
Я думаю, вам нужно будет также указать требования к питанию.
Колосы

Это не отвечает на ваш вопрос, но вы можете рассмотреть вопрос о новом семействе микроконтроллеров PIC32MZ , которые имеют вдвое больше флэш-памяти (2 МБ) и в три раза больше оперативной памяти (512 КБ), а также хост USB 2.0, I²S и пять I²C модули по той же цене, что и LPC4337. IDE (MPLAB X) и компилятор можно попробовать бесплатно, но после пробного периода вы должны заплатить за оптимизированный компилятор, если он вам нужен (неоптимизированный компилятор GCC остается бесплатным). Microchip имеет бесплатные библиотеки для стеков USB и TCP / IP.
tcrosley

2
Я думаю, что некоторые могут упустить смысл вопроса. Я не ищу рекомендации по запчастям. Просто убедиться, что на чипе достаточно места или есть подходящие периферийные устройства. Я больше ищу параметры обработки и шаги в качестве руководства, чтобы убедиться, что я выбрал достаточно мощный процессор. Как и в его скорости.
Funkyguy

Если вы не можете сказать, что вам нужно из спецификации, вы можете просто заказать образцы и прототип?
Роджер Роуланд

@RogerRowland Я мог бы, хотя это очень длительный процесс. Конечно, есть какой-то способ найти минимальные спецификации для программы
Funkyguy

Ответы:


5

Это зависит от того, насколько вы уверены в себе. Я работаю в космической отрасли, и это обычно достигается через то, что мы называем «ЦП, ОЗУ, ПЗУ бюджетов». Бюджет, будь то удельный вес или что-то еще, разбивает ваш процесс на управляемые элементы, которые вы можете определить количественно и суммировать, чтобы получить общий спрос. Затем вы берете коэффициент безопасности, который зависит от зрелости вашего проекта, и уменьшается со временем, чтобы учесть рост спроса. На раннем этапе он в значительной степени опирается на опыт, а затем совершенствуется с течением времени по мере выбора технологий.

  • ПЗУ относительно проста. Вы знаете, сколько приблизительно занимает стек / библиотека / драйвер в памяти ПЗУ: либо предоставлено автором, либо вы можете скомпилировать его без загрузки. Эта цифра может сильно меняться каждый раз, когда вы меняете свой код, хотя из-за оптимизации компилятора.
  • Оперативная память намного сложнее. Некоторые инструменты в специализированных интегрированных средах разработки дают вам оценки времени выполнения , и я вижу, как это можно сделать, но я не знаю ни одного универсального инструмента, скажем, предоставляемого GCC (кто-нибудь знает иначе?). К сожалению, звучит так, будто доходит до подсчета самых больших или наиболее выделенных элементов вашего кода (с учетом времени жизни переменных).
  • Процессор является более сложным в том смысле, что в зависимости от архитектуры (CISC или RISC) MIPS (миллионы инструкций в секунду, пропорциональные тактовой частоте процессора) могут или не могут быть репрезентативными. Потому что, если у вас есть код под рукой, вы можете разбить наиболее важный раздел на инструкции и рассчитать требуемый MIPS из требуемого времени. Любое прерывание, не связанное с отключением, СЛЕДУЕТ рассматривать как инициированное в этот момент - закон Мерфи и все такое.

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

Это только мое участие: несмотря на то, что я разрабатываю интегрированные системы, я не несу ответственности за эти конкретные бюджеты (которые являются входными данными для меня), и мне на самом деле очень интересно узнать истории экспертов по этому вопросу.

Приложение: В системах реального времени обычно легче оценить адекватность системы задаче по максимальному времени выборки, которое зависит от задержки / задержек при передаче информации в течение всего рабочего процесса и максимального времени, затрачиваемого каждым из них. образец задания.


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

1
Самая сложная часть оценки IMO - это использование стека и кучи. Наша текущая встроенная система (проприетарная ОС), работающая на PIC32, обычно выполняет более 25 задач, причем многим из них требуется пара кучи или более, когда они активны. Вы получаете несколько из них, плюс некоторое интенсивное использование стека, и вы скоро можете быть близки к исчерпанию ОЗУ. Я только что написал рекурсивную подпрограмму неделю назад или около того, и мне нужно было очень внимательно относиться к использованию стека локальных переменных (без массивов и т. Д.)
tcrosley

Интересно, спасибо. Вы оцениваете объем ОЗУ, выделенный вашим кодом (анализ кода или конкретный инструмент), или вы измеряете его во время выполнения? Мне кажется, что MIPS немного сложнее оценить, потому что его нельзя оценить по анализу кода без разбивки его на инструкции, в отличие от использования оперативной памяти (возможно, не просто). Потоки значительно усложняют задачу, но похоже, что анализ ЦП все еще требует больше шагов - в общем, это просто меньшая проблема. Что вы думаете?
Мистер Мистер

2

Я собираюсь упростить ваш вопрос: «Как узнать, достаточно ли быстрый микропроцессор »?
Вам необходимо определить процесс / процедуру, которая требует самого быстрого времени выполнения. Если ваш процессор может выполнять инструкции, требуемые в данное время или меньше, то это достаточно быстро.
Давайте рассмотрим пример: ваше самое быстрое требование - обработать прерывание потери питания ; для этого требуется 10 000 инструкций за 10 миллисекунд. Вам понадобится процессор с минимум 1 MIP. Чтобы преобразовать это в «МГц», вам нужно знать количество тактов на инструкцию (cci). Предположим, что это 10 cci, ваш процессор должен работать на 10 МГц или быстрее.


0

Если вы смотрите на снижение стоимости BOM, иногда у этих производителей в Шэньчжэне появляются удивительные предложения. Один пример: Allwinner A10 имеет больше вычислительной мощности и возможностей подключения, чем Raspberry Pi, но, вероятно, будет дешевле, если использовать его в своем дизайне. Если вы смотрите на ту же цену, что и Pi, Allwinner A31s в 6-8 раз мощнее.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.