Як з’ясувати, чи достатньо потужний мікропроцесор


9

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

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

Який хороший процес з’ясувати, чи є процесор достатньо потужним для запуску мого додатка?

В основному мої вимоги:

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

Знайти чіпи з цими властивостями дуже просто. Це, якщо чесно, не може бути простішим. Проблему можна зрозуміти, чи є чіп досить швидким, обробляє та працює.

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

Якими є кроки, щоб переконатися, що процесор достатньо швидкий для мого застосування? Як, як я можу знати, чи буде 80 МГц процесор досить хорошим чи мені потрібно щось на порядку 204 МГц або навіть вище?


1
Я думаю, вам також потрібно буде забезпечити енергетичні вимоги.
колоси

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

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

Якщо ви не можете сказати, що вам потрібно від специфікацій, ви можете просто замовити зразки та прототип?
Роджер Роуленд

@RogerRowland Я міг, хоча це дуже тривалий процес. Surly є якийсь спосіб знайти мінімальні характеристики для програми
Funkyguy

Відповіді:


5

Це залежить від того, наскільки впевнено вам потрібно бути. Я працюю в космічній галузі, і це зазвичай досягається завдяки тому, що ми називаємо "бюджети на процесор, оперативну пам'ять, ROM". Бюджет, будь то вартість енергоресурсів чи що-небудь інше, розбиває ваш процес на керованих предметах, які ви зможете кількісно оцінити та підсумувати, щоб отримати загальний попит. Потім ви приймаєте коефіцієнт безпеки, який залежить від зрілості вашого проекту, зменшуючись з часом, щоб врахувати зростання попиту. На початку він значною мірою спирається на досвід, а потім вдосконалюється з часом, коли вибираються технології.

  • ПЗУ відносно простий. Ви знаєте, скільки стек / бібліотека / драйвер приблизно займає пам'ять ROM: або надана автором, або ви можете її скласти, не завантажуючи її. Ця цифра може сильно змінитися щоразу, коли ви змінюєте свій код, хоча через оптимізацію компілятора.
  • Оперативна пам’ять набагато складніше. Деякі інструменти в спеціалізованих інтегрованих середовищах розробки дають вам оцінку часу виконання , і я бачу, як це можна зробити, але я не знаю жодного загального інструменту - скажімо, наданого GCC (хтось знає інакше?). На жаль, це здається так, ніби він підраховує найбільші або найбільш виділені елементи вашого коду (враховуючи термін служби змінних).
  • Процесор є складнішим в тому, що залежно від архітектури (CISC або RISC) MIPS (мільйони інструкцій на секунду, пропорційні тактовій частоті процесора) може бути або не може бути репрезентативним. Тому що якщо у вас є код під рукою, ви можете розбити найважливіший розділ на інструкції та обчислити необхідні MIPS з часу, що вимагається. Будь-який перерваний недієздатний ВИНАГО слід вважати спрацьованим в цьому пункті - закон Мерфі і все таке.

Вищезазначене вкрай важко точно визначити, коли планувальник починає працювати, як тільки у вас є потоки (якщо тільки потоки не вручну розподіляються до ядер) та операційних систем. Це має бути керованим для простих кодів мікроконтролерів, але чи варто воно вашому застосуванню?

Це лише моя участь: хоча я розробляю інтегровані системи, я не відповідав за ці конкретні бюджети (які є для мене вхідними даними), і мені дуже цікаво знати розповіді експертів з цього приводу.

Додаток: За допомогою систем у режимі реального часу зазвичай простіше оцінити адекватність системи завдання через максимальний час вибірки, який залежить від затримки / затримки в передачі інформації протягом робочого процесу та максимального часу, який приймає кожен зразок завдання.


avrdudeможе дати оцінки, скільки оперативної пам’яті забирають глобальні змінні, але ви повинні запустити її за допомогою опції сухого запуску, оскільки це в основному інструмент для завантаження.
felixphew

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

Цікаво, дякую. Чи оцінюєте ви обсяг оперативної пам’яті, виділений вашим кодом (аналіз коду чи певний інструмент), чи вимірюєте його під час виконання? Мені здається, що MIPS трохи складніше оцінити, оскільки його неможливо оцінити з аналізу коду, не розбивши його на інструкції, на відміну від використання оперативної пам'яті (можливо, не просто). Нитки роблять завдання неймовірно складнішим, але це здається, що аналіз процесора все ж потребує більше кроків - це взагалі менше проблеми. Як ти гадаєш?
Містер Містер

2

Я збираюся спростити ваше запитання до "Як дізнатися, чи досить швидкий мікропроцесор "?
Вам потрібно визначити процес / процедуру, що вимагає найшвидшого часу виконання. Якщо ваш процесор може виконати необхідні в даний час інструкції або менше, то це досить швидко.
Розглянемо приклад: Ваша найшвидша вимога - це обробка втрати живлення перериванням; для цього потрібно виконати 10 000 інструкцій за 10 мілісекунд. Вам знадобиться процесор, принаймні 1 MIP. Щоб перетворити це на "МГц", потрібно знати кількість тактових циклів за інструкцію (cci). Припустимо, що це 10 cci, ваш процесор повинен працювати на 10 МГц або швидше.


0

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.