Нужна помощь в выборе размера Flash в микроконтроллере


9

Мне нужно определиться с выбором размера Flash и оперативной памяти для проекта. Я предпочитаю использовать микроконтроллер серии TI MSP430. Из-за его низкого энергопотребления и стоимости ряда стоимости линии. Однако я полный новичок в принятии решения о сборе требований. Большая часть моего опыта программирования связана с настольными системами, где размер программы, оперативная память и скорость процессора обычно не имеют значения для общих алгоритмических задач.

У меня есть следующие вопросы:

  1. Существуют ли какие-либо руководящие принципы или стандартные правила, касающиеся определения размера ОЗУ и флэш-памяти для микроконтроллера?
  2. Сколько строк кода (C) переводит на какой размер Flash на MCU?
  3. Является ли язык ассемблера единственным выходом, если размер Flash должен быть минимальным?

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

Ответы:


7

Ответы на все ваши вопросы будут зависеть от того, что вы хотите сделать.

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


Согласовано. Начните с чего-то большого, а затем при необходимости уменьшите до мельчайшей части, которая соответствует вашим конечным требованиям.
W5VO

«Самый большой» должен быть квалифицирован как «В серии, на которую вы нацелены». Найдите необходимую периферию и необходимый вам класс скорости, выберите архитектуру / семейство, а затем разработайте самый большой процессор в этом семействе. Не начинайте с 512 КБ флэш-памяти и 64 КБ ОЗУ, потому что это самый большой микроконтроллер, который вы можете найти; сузьте его до Cortex-M3 против AVR против PIC18 против MSP430 (например), прежде чем начинать беспокоиться о размере. Я подозреваю, что Даниэль ожидал этого, но просто подумал, что это нужно где-то заявить.
Кевин Вермеер

7

Что касается msp430, это хорошая архитектура, довольно хорошие инструменты, такие как mspgcc, mspgcc4 и llvm. binutils без исправлений. Вы можете получить панель запуска менее чем за 5 долларов по этой цене, купив несколько (в конечном итоге вы что-то заделаете или закроете, расплавите, получите запасной, особенно по этой цене) ...

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

Как это делают профессионалы? Почти все, что вы можете себе представить:

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

Иногда подрядчик / любимый клиент диктует платформу, иногда вы можете обучать / вести переговоры, иногда нет.

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

Некоторые люди сосредоточены на инструментах. Здесь снова у вас есть преданные бренду люди, ограничивающие себя своей любимой компанией-компилятором и любыми целями, которые они поддерживают, или любимым инструментом с открытым исходным кодом и тем, что он поддерживает. Любимая встроенная операционная система и ограничение на цели, которые поддерживает.

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

Иногда речь идет о спасении тысячных пенсов. Эта часть на 1,5% дешевле этой части, заставьте ее работать с этой частью, не заботьтесь о NRE, подумайте об экономии производства в объеме.

Иногда речь идет о негативах. Один продавец, возможно, так или иначе облажался с вашей компанией. Невыполнение заявленной поставки запасных частей, приводящее к задержкам или отмене ваших продуктов. Мошенничество с наживкой и переключением (плата за программное обеспечение в размере 50 000 долл. США не включает в себя плату в размере 1200 долл. США за ключ, необходимый для разблокировки лицензии, что является дополнительной ценой. О, и это было на пользователя для плавающей лицензии). После того, как вы подпишете NDA, чтобы увидеть справочное руководство для программистов или справочное руководство по проектированию, вы узнаете, насколько ужасной является их разработка, и вы можете занести в черный список все их продукты на всю жизнь. Прошлая история с ужасной техподдержкой. Любое количество причин может привести к тому, что вы никогда не допустите их продавцов к входной двери, или же вы не сможете больше смотреть на их сайт.

Иногда это связано с производительностью, интерфейсами и т. Д. Например, у вас есть интерфейс с проводным подключением, для которого требуется подтягивание, у микроконтроллера марки XYZ по цене 3 доллара за деталь имеется набор выводов ввода / вывода, которые можно использовать. без какого-либо другого внешнего аппаратного обеспечения, бренд ABC имеет часть за 3 доллара, для которой потребуется минимальный внешний транзистор и резистор. Ваш пример msp430, скажем, он касается энергопотребления, часть A может потребовать от пользователя использовать только одну батарею AAA и работать в течение нескольких месяцев, часть B может потребовать две батареи AAA и работать в течение нескольких недель.

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

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

Даже если вы не можете или не можете тратить такие деньги на аппаратное обеспечение, у большинства есть инструменты, которые вы можете загрузить (бесплатно), в таких случаях, как микрочип, теперь вы можете получить компилятор C (раньше он был Hi-tech), но подписаться (отказаться от своего адреса электронной почты). GCC нравится или ненавидит, будет ли это в вашем будущем, настольным или встроенным, запачкайте руки и научитесь использовать его в качестве кросс-компилятора. Попробуйте llvm, он будет некоторое время и даст gcc серьезную конкуренцию. В любом случае, напишите или найдите некоторые эмуляторы, у mame их много, у gdb есть и т. Д. Я написал один, называемый thumbulator в github, только режим ARM для большого пальца, похожий на cortex-m3, за исключением того, что я не поддерживаю thumb2 (все еще могу выучить немного и программы должны быть запущены на обоих, прежде чем переключаться только на оборудование). Я запустил эмулятор msp430, но на этом остановился. Набор инструкций настолько мал, что основная часть работы - это вечер или, возможно, субботний проект. То же самое относится и к PIC, длинный день, и у вас есть симулятор набора инструкций, с которым можно попрактиковаться. Если ничего другого, то вы можете просто написать программы, скомпилировать и связать, чтобы понять, как это сделать и насколько велики в конечном итоге программы, как настроить программы для получения более точного кода и т. Д.

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

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

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

В зависимости от вашего опыта, возможно, вам не нужно беспокоиться о написании на всех ассемблерах и, возможно, об аспектах электротехники, встроенных в микроконтроллеры, чтении схем, знании, что такое открытый коллектор, три состояния, двухтактный, pwm, adc, dac и т. Д. длинный список других терминов и способы их использования. banging i2c, spi, mdio, dallas one wire и т. д. Использование области видимости в качестве программного отладчика. Даже несмотря на то, что области видимости могут выделить для вас вещи сегодня (за дополнительную плату), вы должны иметь возможность просматривать i2c и spi и некоторые другие протоколы без основных моментов.

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

Что бы вы ни делали, НЕ пытайтесь учить x86 как своего первого ассемблера на рабочем столе, выбирайте практически все остальное и кросс-компилируйте и имитируйте, ARM, THUMB, MSP430, PIC, AVR, даже 6502, 8051. x86 - ужасная инструкция набор и в результате был изменен и сформирован во многих отношениях, микрокодирование, а не микрокодирование, многоядерный, и так далее. Держите x86 для языков высокого уровня и громоздких операционных систем. Используйте его для своего текстового редактора и компиляторов и нацеливайте что-нибудь еще.

Извините за длинный ответ ... надеюсь, это было полезно.


хм, если вопрос был в том, как профессионалы выбирают размер вспышки. иногда пишите некоторый код, который напоминает решение, компилируйте и смотрите, насколько он большой. Если будет использоваться rtos, возьмите несколько примеров, определите их размер и добавьте коэффициент выдумки для кода, который вы добавите. Многое из этого связано с личным опытом оценки. Часто вы можете выбрать оценку, а затем удвоить ее на всякий случай, и ваш босс может удвоить вашу оценку, чтобы у него не было проблем и так далее. И это может помочь, потому что после внедрения вы можете переключиться на меньшую часть и стать героем с экономией.
old_timer

1
Несмотря на его длину, я нахожу этот ответ очень хорошим
Sarrk

3

Лучший способ определить требования к флэш-памяти / ОЗУ для вашего проекта - это создать прототип и измерить его.

Реализуйте основные алгоритмы на ПК и рассчитайте размер объектного кода и использование оперативной памяти. Это даст вам примерную фигуру для работы.

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

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


3

Я думаю, что лучший способ понять, какие у вас требования, в данном случае с точки зрения памяти, это получить несколько образцов MCU, запрограммировать их и посмотреть, сколько памяти используется. Фактически, это будет зависеть от используемого компилятора. Если вы впервые программируете MCU, не стоит слишком беспокоиться о спецификациях. Просто выберите один с большим количеством памяти, большим количеством периферийных устройств и т. Д. Таким образом, вы можете многому научиться с помощью одного MCU. Когда вы сделаете свой первый проект с этим MCU, у вас будет лучшее представление о памяти, необходимой для дальнейших проектов.

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


3

Выберите микроконтроллер с необходимым набором периферийных устройств. Вероятно, будет семейство микросхем, которые имеют одинаковую / сходную периферию, но разное количество оперативной памяти и флэш-памяти. Начните с чипа с самой большой RAM / Flash. Если у вас есть работающий прототип, вы можете перейти на более дешевый микро, если ваша программа подойдет.


0

Настоящие профессионалы не выбирают микроконтроллер изолированно, они запускают проект с максимальной прибылью. В зависимости от критериев проекта, которые могут привести к выбору микроконтроллера, он кажется слишком дорогим, но вполне подходит имеющемуся опыту, инструментам, библиотекам и т. Д. Не принимайте разрозненных решений, помните общую картину , особенно сумма (затраты на разработку + издержки производства)!

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

Размер флэш-памяти IME больше не является значительным фактором стоимости, даже если количество выводов меньше, фактор ОЗУ, по-видимому, является основным фактором, влияющим на стоимость.

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