Что касается 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 для языков высокого уровня и громоздких операционных систем. Используйте его для своего текстового редактора и компиляторов и нацеливайте что-нибудь еще.
Извините за длинный ответ ... надеюсь, это было полезно.