Потрібна допомога у виборі розміру Flash у мікроконтролері


9

Мені потрібно визначитися з вибором розміру Flash та оперативної пам’яті для проекту. Мікроконтролер, який я волію використовувати, - це серія TI MSP430. Через низьке енергоспоживання та вартість рядків вартості. Однак я цілком новачок у вирішенні питання щодо збору вимог. Більшість мого досвіду програмування припадає на системи на робочому столі, де зазвичай розмір програми, оперативна пам'ять та швидкість процесора не викликають особливих проблем для загальних алгоритмічних завдань.

У мене є такі питання:

  1. Чи є якісь вказівки чи стандартні практики щодо визначення розміру оперативної пам’яті та розміру спалаху для мікроконтролера?
  2. Скільки рядків коду (C) перекладається на яку кількість розміру Flash на MCU?
  3. Чи є мовою збірки єдиний вихід, якщо розмір Flash потрібно мінімізувати?

Що стосується загального вибору мікроконтролера для проекту, як професіонали в цій галузі йдуть на вирішення найбільш відповідного мікроконтролера для виконання завдання? Які ресурси вони шукають? Яких рекомендацій вони дотримуються?

Відповіді:


7

Відповіді на всі ваші запитання будуть залежати від того, що ви хочете зробити.

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


Домовились. Почніть з чогось великого, а потім, якщо потрібно, сформуйтеся до найменшої частини, що відповідає вашим кінцевим вимогам.
W5VO

"Найбільший" повинен бути кваліфікований із "У серії, на яку ви орієнтуєтесь". Знайдіть необхідні периферійні пристрої та клас швидкості, який вам потрібен, оберіть архітектуру / сімейство, а потім розвиніться з найбільшим процесором у цій сім'ї. Не починайте щось із 512 кБ Flash та 64 КБ оперативної пам’яті, оскільки це найбільший мікроконтролер, який ви можете знайти; звужте його до Cortex-M3 проти AVR проти PIC18 проти MSP430 (наприклад), перш ніж починати турбуватися про розмір. Я підозрюю, що Даніель цього очікував, але просто думав, що це потрібно десь заявити.
Кевін Вермер

7

Що стосується msp430, це хороша архітектура, досить хороші інструменти там mspgcc та mspgcc4 та llvm. бінулети без латки. Ви можете отримати стартовий блок за ціною менше 5 доларів за цією ціною, придбайте декілька (зрештою, ви цегеруєте щось або скоротите і розплавите, отримаєте запас, особливо за ціною) ...

Завантажте інструменти, всі вони безкоштовні, напишіть кілька рядків коду, дізнайтеся, як його пов’язати, подивіться, наскільки велика кількість бінарних файлів отримує відчуття вбудованості, рядки коду до розміру рому тощо.

Як це роблять професіонали Практично про кожен спосіб, який ви можете уявити:

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

Іноді підрядник / улюблений замовник диктує платформу, іноді можна навчити / домовитись, іноді ні.

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

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

У деяких випадках мова йде про інструменти, але по-іншому, з часом, можливо, ви вклали багато грошей у щорічні контракти на підтримку з продавцем (скажімо, на руку або xilinx або motorola, наприклад), і можливо, вам сподобалася їх підтримка і ти не хочеш змінитись чи чорт, якого ти знаєш, кращий, ніж диявол, якого ти не робиш. Або це може бути тому, що інші 5 активних проектів в компанії використовують цю річ, і ми вже маємо контракт на підтримку, і будемо продовжувати платити за цей рік за роком, ви повинні вибрати одне з цих рішень для постачальників.

Іноді йдеться про економію мільйонів. Ця деталь на 1,5% дешевша за цю частину, змушуйте її працювати з цією частиною, не дбайте про NRE, подумайте про економію виробництва на обсязі.

Іноді йдеться про негативи. Один постачальник може так чи інакше накрутити вашу компанію. Невиконання рекламованої поставки деталей, що спричиняє затримки або скасування вашої продукції. Афери за приманку та перемикання (плата за 50 000 доларів США за програмне забезпечення не включала плату в розмірі 1200 доларів США за ключ, необхідний для розблокування ліцензії. Це додаткова стаття витрат. О, і це було плаваючою ліцензією на користувача). Як тільки ви підпишете NDA, щоб побачити посібник для програмістів або керівництво по довідковому проектуванню, ви дізнаєтеся, наскільки страшна їх інженерія, і ви можете вибрати чорний список всіх їхніх продуктів на все життя. Історія минулого з жахливою технічною підтримкою. Будь-яка кількість причин може призвести до того, що ви ніколи не дозволяєте їхнім людям з продажу у вхідних дверях, або не дозволять вам більше ніколи не дивитись на їхній веб-сайт.

Іноді це стосується продуктивності, інтерфейсів тощо. У конкретному випадку, у вас є інтерфейс, який має провідний руд і потребує підтягування, мікроконтролер марки XYZ за $ 3 за частину має набір штифтів вводу / виводу, які можна використовувати не вимагаючи іншого зовнішнього обладнання, марка ABC має частину $ 3, яка потребує зовнішнього транзистора та резистора, щоб змусити його працювати як мінімум. У вашому прикладі msp430, наприклад, йдеться про споживання електроенергії, частина А може вимагати від користувача лише однієї батареї AAA і працювати місяцями, частина B може потребувати двох батарей AAA і працювати тижнями.

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

Моя особиста рекомендація - бути гнучким. Більшість брендів / сімейств мікроконтролерів у якійсь формі або моди можуть бути на дошці eval за ціною менше 50 доларів. Sparkfun, olimex або безпосередньо від постачальника (ti для msp430 або stellaris тощо). Спробуйте один або декілька з кожного, зрозумійте, що є спільним, а що відрізняється, інструменти, навантажувачі, як важко відкрутити і т. Д. Ви отримуєте з цього принаймні дві речі, одна полягає в тому, що коли вас змушують пройти шлях з висоти або з клієнтом ви можете потрапити на землю під час бігу, по-друге, коли ваша черга вибирати платформу, ви краще навчаєтесь тому, що є, а не там, і ви можете вибрати потрібну (завантажену слово) платформу, виходячи з проблеми, щоб вирішуватися.

Навіть якщо ви не збираєтеся чи не можете витрачати ці гроші на апаратне забезпечення, у більшості є інструменти, які ви можете завантажити (безкоштовно), у таких випадках, як мікрочіп, тепер ви можете отримати компілятор C (раніше був Привіт-тех). доведеться підписатися (відмовтеся від своєї електронної адреси). gcc - це вам подобається або ненавидіти це буде у вашому майбутньому, настільному ПК або вбудованому, забруднити руки та навчитися використовувати його як перехресний компілятор. Спробуйте також llvm, він буде деякий час і дасть gcc серйозну конкуренцію. У будь-якому разі напишіть або знайдіть якісь емулятори, у мами є багато, у gdb є багато тощо. Я написав один, який називається Thumbulator у github, тільки в режимі великого пальця ARM, подібний до кору-м3, за винятком того, що я не підтримую thumb2 (все ще можна навчитися трохи і програми запущені на обох, перш ніж перейти лише на апаратне забезпечення). Я підключив емулятор msp430, але щось на цьому застопорився. Набір інструкцій настільки малий, що основна частина роботи - це проект вечора чи, можливо, суботи. Те ж саме стосується PIC, довгий день, і у вас є тренажер з набору інструкцій, за допомогою якого практикувати вбудовані. Якщо нічого іншого, ви можете просто написати компіляцію та посилання програм, щоб зрозуміти, як це зробити та наскільки великі програми, як налаштувати програми на отримання більш чіткого коду тощо.

Що стосується C проти асемблера, то деякі набори інструкцій зручні для C, а деякі - ні. Деякі компілятори є середніми, а деякі - дуже поганими, і лише деякі - справді непогані (і зазвичай коштують декількох тисяч доларів один раз або на рік для використання). Як і з продуктивністю в будь-якому місці, якщо ви хочете по-справжньому натиснути, може знадобитися суміш мови високого рівня (давайте просто сказати С) та асемблера. Отже, навик - це не написання всієї програми в асемблері, а вміння визначає, який код змушує вас не дотримуватися часу / продуктивності, а потім знаючи, як це вирішити через C, параметри компілятора, вибір правильного компілятора чи написання асемблера.

Рекомендую вам знати асемблер для всіх платформ, які ви вирішили використовувати, якщо нічого іншого читати про нього не можна, як із вбудованими, я рекомендую вам часто розбирати (при цьому з'ясовуючи, де ваші проблеми з продуктивністю). Багато платформ, який-небудь асемблер, потрібен або бажаний для завантаження коду.

Якщо ви хочете заощадити ці 10-20% на ціні за одиницю і хочете придбати дешевший / повільніший мікроконтролер або генератор, або флеш-частину 32 Кб замість флеш-частини 64 КБ і може покрити вартість розробки за обсягом продажів, і можливо довгий список інших речей, які ви, можливо, дуже добре вирішите записати всю справу в асемблері, швидкій, малої потужності, низькій вартості, задоволених клієнтів.

Залежно від вашого фону поки що, можливо, вам не варто турбуватися про написання у всіх асемблерах і, можливо, про електротехнічні аспекти вбудованих мікроконтролерів, читання схем, знаючи, що таке відкритий колектор, три стану, push pull, pwm, adc, dac та a довгий перелік інших термінів та способи їх використання. розбиття i2c, spi, mdio, dallas один провід тощо. Використання області в якості програмного відладчика. Навіть незважаючи на те, що сфери застосування можуть підкреслити сьогодні речі (додаткова стаття витрат), ви повинні мати можливість i2c і spi i деякі інші протоколи без важливих моментів.

Я також рекомендую, щоб на кожній з платформ, з якими ви граєте, виходити з когось іншого пісочниці (наприклад, Arduino ide / середовище програмування). Напишіть код завантаження, який перенаправляє процесор у вашу основну () програму, зробіть скільки завгодно, щоб зрозуміти, як завантажувати / програмувати спалах до такої міри, що може включати написання власного завантажувача, навіть якщо на полиці там. Це все про особисту освіту, чим більше ви знаєте і можете витягнути з задньої кишені і використовувати більше контролю над своєю кар’єрою і більше нулів в кінці числа на зарплаті.

Що б ви не робили, НЕ намагайтеся вивчити x86 як свій перший асемблер на робочому столі, вибирайте майже все інше і перехрещуйте компіляцію та імітацію, ARM, THUMB, MSP430, PIC, AVR, навіть 6502, 8051. x86 - жахлива інструкція Набір і, як результат, було зафіксовано та сформовано так багато способів, мікрокодування, не мікрокодування, багатоядерність, включення та ввімкнення. Зберігайте на x86 мови високого рівня та об'ємні операційні системи. Використовуйте його для свого текстового редактора та компіляторів та націлюйте щось інше.

Вибачте за довгу відповідь ... сподіваюся, що це було корисно.


хммм, якщо питання полягало в тому, як професіонали обирають розмір спалаху. іноді пишіть якийсь код, що нагадує рішення, компілюйте і дивіться, наскільки він великий. Якщо буде використано rtos, візьміть кілька зразків та розміріть їх та додайте коефіцієнт вигину для коду, який ви додасте. Багато це стосується особистого досвіду оцінки. Часто ви можете вибрати оцінку, а потім подвоїти її на всякий випадок, і ваш начальник може подвоїти вашу оцінку, щоб він / вона не потрапив у проблеми і так далі. І це може допомогти, оскільки після їх впровадження ви можете перейти на меншу частину та стати героєм із заощадженнями.
old_timer

1
Незважаючи на тривалість, я вважаю цю відповідь дуже хорошою
Саррк

3

Найкращий спосіб визначити вимоги Flash / RAM для вашого проекту - це скласти прототип і виміряти його.

Реалізуйте основні алгоритми на ПК та обчисліть розмір об'єктного коду та використання оперативної пам’яті. Це дасть вам бальну фігуру для роботи.

Не забудьте додати більше до свого бюджету, якщо ви покладаєтесь на такі функції операційної системи, як stdio або управління пам'яттю.

Немає прямого способу порівняння рядків коду з розміром зібраного коду. Але, ви можете порівняти архітектури процесорів за щільністю коду.


3

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

Найбільш підходящий MCU для завдання? Скільки каналів АЦП вам потрібно? Що з ЦАП? Що важливіше у вашій програмі: продуктивність або низька потужність? Це такі питання, на які ви повинні відповісти, вибираючи певний MCU.


3

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


0

Справжні професіонали не вибирають мікроконтролер ізольовано, вони ведуть проект для отримання максимального прибутку. Залежно від критеріїв проекту, який може призвести до вибору мікроконтролера, це здається занадто дорогим, але, можливо, добре відповідає наявним досвідом, інструментам, бібліотекам тощо. Не приймайте поодиноких рішень, майте на увазі велику картину , особливо сума (витрати на розробку + витрати на виробництво)!

Більшість виробників мікроконтролерів пропонують діапазони мікросхем, розмір спалаху - один із параметрів, що відрізняються між різними мікросхемами. "Безпечний" вибір - це спочатку вибрати мікросхему з найбільшим розміром спалаху, щоб ви могли зменшити масштаб, якщо програма впишеться у менший чіп. Але програми, як правило, ростуть, щоб відповідати всім доступним розмірам (і більше).

Розмір спалаху IME вже не є великим фактором витрат, навіть кількість штифтів менше фактора, розмір оперативної пам’яті, здається, найбільший драйвер витрат.

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