Почему я должен изучать архитектуру микроконтроллера? [закрыто]

8

Недавно я начал работать в небольшой компании, которая производит электронику для диагностики автомобилей. Мой босс, которому за пятьдесят, сказал, что он использует производные 8051, и они делают свою работу. Я продолжил поиск в Google, чтобы узнать, все еще ли популярна 8051 сегодня. И в Кора, я видел это:

... это, наверное, самая простая архитектура MCU. Каждое периферийное устройство выглядит как голая версия. Мои концепции таймеров, тактирования, UART и т. Д. Многое прояснили! И затем я начал ценить другие архитектуры - потому что я действительно понимал разницу.

... очевидно, что ни одна индустрия не будет использовать его для разработки продукта из-за его простоты ...

Но почему? До сих пор, по крайней мере, будучи студентом, я много чего делал, не вмешиваясь в архитектуру. Я с радостью запрограммировал C, я использовал периферийные устройства LCD, подключенные к другим микросхемам с разными протоколами (SPI, I2C и т. Д.)

Зачем мне беспокоиться об архитектуре моего микроконтроллера, за исключением ограниченных областей приложений реального времени и времени?

CK
источник
3
Либо ради интереса, либо потому, что вам нужно сделать проект с такой архитектурой, очевидно.
PlasmaHH
Сегодня 8051 - это максимум хобби. С другой стороны, если вы начинаете работать с таким модером, как ARM Cortex M4, вам не нужно изучать архитектуру. Не начинать хотя бы
Грегори Корнблюм
@PlasmaHH Хотелось бы, чтобы у меня было достаточно времени, чтобы «развлечься» с каждой темой об электронике, но это было в студенческие годы :)
CK
6
Вы должны знать архитектуру, когда вам нужна производительность, что, вероятно, не произойдет. В качестве примера: если вам нужно выполнять какие-то вычисления снова и снова и у вас есть ограниченное время, вам может потребоваться не использовать данные, хранящиеся во флэш-памяти, или оптимизировать использование регистров. Но это происходит сегодня только с очень ограниченным числом профессионалов. Это займет у вас время, чтобы добраться туда. На данный момент я не ошибусь, если предположим, что на ближайшие годы достаточно написать C.
Грегори Корнблюм
2
Я оставлю это для тех, кто может знать лучше :)
Грегори Корнблюм

Ответы:

30

8051 и другие младшие микроконтроллеры все еще используются сегодня?

Да почти везде. Они маленькие и простые, вокруг много плавающих ядер, которые вы можете вставить в свой пользовательский кремний за небольшую плату или бесплатно, есть зрелые компиляторы. Все это делает 8051 по-прежнему одной из самых популярных базовых архитектур среди производителей кремния. Ядра ARM могут быть доступны в более разных продуктах, но, опять же, когда вы говорите с кем-то, кто строит много устройств по очень строгому ценовому ограничению, есть вероятность, что он предпочтет более дешевое / бесплатное ядро ​​8051, если оно выполнит свою работу , Просто чтобы возразить, @ Nitro2k01 утверждает, что использование только в нише: у Mouser есть около 800 моделей 8051 микроконтроллеров на складе ¹. И тот факт, что они начинаются, даже в Mouser, по ценам ниже 40 центов, может указывать на то, для чего они используются:

основной, низкопроизводительный, MCU большого объема

таким образом:

... очевидно, что ни одна индустрия не будет использовать его для разработки продукта из-за его простоты ...

это качественная полная ерунда. Тем более что вы сами представляете себе контрпример

Мой босс, которому за пятьдесят, сказал, что он использует производные 8051, и они делают свою работу.

Точно! Они используются повсеместно, они хорошо себя зарекомендовали и дешевы, и их достаточно ; Никогда не стоит недооценивать преимущества решения какой-либо общей проблемы в ящике где-нибудь!

Конечно, часто бывает так, что вам может понадобиться решение, скажем, с двумя типичными автомобильными шинами, высокоскоростным интерфейсом к АЦП, некоторыми надежными сторожевыми таймерами, тремя модулями ШИМ ... и затем вы начинаете собирать воедино что-то, состоящее из четыре 8051 и 8080 производных .. э-э. Это плохая ситуация, и, скорее всего, ее можно решить гораздо быстрее и надежнее, используя один, более универсальный, более мощный MCU (например, ARM). Но то, что «у нас есть знания компании о том, как что-то работает со старыми технологиями,« против », что мы ориентированы на будущее, имея возможность работать на современном оборудовании», является классическим компромиссом в области безопасности инвестиций. Если вы столкнетесь с одним из таких проектов, я постараюсь поговорить с боссом в этом контексте. Для легких небольших работ, да, 8051.

Должен ли я узнать об архитектуре MCU в целом?

Да! Я думаю, что @jfkowes объясняет это очень хорошо. Но, честно говоря, это немного похоже на вопрос: «Должен ли я узнать, как работает двигатель внутреннего сгорания, если я хочу быть автомехаником»; Ответ таков: «Вы могли бы просто жить хорошо, если бы вы могли просто выполнять руководства по ремонту достаточно хорошо, но вы, вероятно, будете намного лучшим техником (не говоря уже о инженере), если вы понимаете, что делает ваше оборудование.

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

Стоит ли изучать архитектуру 8051?

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

С другой стороны, ядро ​​8051 настолько просто, что я бы порекомендовал понять, какие у него блоки, прежде чем пытаться взяться за более современное, сложное ядро ​​MCU. Это хороший пример.

Так что, если 8051 не ядро Я ищу в приложении низкого объема, чем я ищу?

Итак, лично: пойти на ARM Cortex-M0, -M3, -M4F; они распространены во всех видах доступных микроконтроллеров, просты в программировании (да, зрелая поддержка GCC, стандартные библиотеки CMSIS, много встроенных ОС, работающих на них) и обычно поставляются со стандартными интерфейсами отладки (что является большим плюсом).

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

Если вы занимаетесь проектированием процессоров, я думаю (это действительно личное убеждение, основанное на моих наблюдениях за исследовательской деятельностью и «обещанными» инвестициями в отрасли), в настоящее время мы наблюдаем появление новой важной ISA - RISC-V. Существуют различные реализации этой архитектуры для ПЛИС или кремния, и такие люди, как Nvidia, похоже, тоже пытаются заменить свои потоковые мультипроцессоры ядрами такого типа.


О. Очень вероятно, что мне не хватает более половины фактических 8051-х, которые есть у mouser (потому что, эй, я только что выбрал все MCU с именем ядра * 80 * 5 *). Скорее всего, если вы выберете случайный 8-битный микроконтроллер, вполне вероятно, что его ядро, по крайней мере, частично получено из 8051. Я имею в виду, просто посмотрите на «список поставщиков производных [8051]» из Википедии .

Маркус Мюллер
источник
AVR также является отличной архитектурой обучения, с выдающейся документацией и поддержкой gcc.
chrylis -cautiouslyoptimistic-
@Chrylis ненавижу не соглашаться, но лично я не думаю, что 8-битные ATMega - это отличная архитектура, и их документация или поддержка GCC не выдаются по сравнению с ARM cortex m0, с которым они конкурируют. Но это личное мнение!
Маркус Мюллер
1
@ MarcusMüller После некоторого опыта работы с Atmel, я бы никогда больше не использовал их (кроме хобби). Atmel зависел от деятельности хобби, чтобы поддерживать бизнес меньше определенного «размера», который у меня всегда был меньше, так как наш qtys никогда не превышал 6000 в год. FAE были хорошими, но это не помогло с Францией (AT91), и поэтому я просто позволил им уйти. Микрочип, с другой стороны, поддерживал меня до безумных великолепных уровней независимо от проекта. Поддерживает их проф. инструменты "навсегда" и даже старые фишки еще сделаны. Atmel теперь купил Microchip. Так что, может быть, там поменяется, и я посмотрю еще раз.
Йонк
1
@ jonk так, в то время как PIC / microchip имеет хорошую репутацию в обслуживании и могут выжить в одиночку, расширение портфеля Atmel может зайти в тупик. И моя надежда на следующее десятилетие: как мы уже обсуждали в комментариях к другому ответу некоторое время назад, если это окажется правильным, то вафельные «челночные услуги» станут все более и более доступными и с очень конкурентоспособными 32-битными / опционально 64-битными / опционально RT гарантирует архитектуры, такие как RISC-V, в различных размерах и скоростях (реализованные в виде ядер под названием BOOM, Rocket-chip или PicoRV32), «черт, у меня особая проблема, я могу получить специальный MCU»…
Маркус Мюллер
1
@ MarcusMüller Можно надеяться. Если все зависит от поддержки клиентов, Microchip просто убивает всех остальных. У меня был профессиональный инструмент, 12 лет, в котором выключатель питания стал «облупленным». Я позвонил, чтобы спросить, могут ли они дать мне номер детали переключателя, чтобы я мог заказать один и починить блок. Вместо этого они потребовали отправить мне запасной блок, прислали мне его и коробку, чтобы вернуть им старый, и он прибыл в следующий час! Бесплатно. Я спросил: «Вам нужно подтверждение покупки?» Они сказали: «Нет. Просто верните другое подразделение. Физическое владение - это все, что нам нужно». Штопанная вещь была древней.
Йонк
12

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

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

Отладка

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

Эффективность и простота кода

Если вы знаете архитектуру, вы можете перенести функциональность с программного обеспечения на аппаратное обеспечение. Это может снизить загрузку программного обеспечения и устранить источники ошибок.

Снижение цены

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

Увеличение вашей полезности

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

Знание - сила

Даже если вам не нужны знания в вашей нынешней работе, когда вы увидите объявление о работе, которая выглядит потрясающе и гласит: «Знание архитектуры <семейства микроконтроллеров> является обязательным / предпочтительным» , вы окажетесь в лучшем положении пойти на это.

jfowkes
источник
Опять же, я не знаю, будете ли вы часто читать это предложение в объявлении о работе - это своего рода загадочные знания, и любой, кто наименее осведомлен о любой архитектуре процессора, сможет выбрать 8051 в первые три дня. работы, я думаю,
Маркус Мюллер
Хорошо, я отредактировал это, чтобы быть более общим.
jfowkes,
7

8051 и другие младшие микроконтроллеры все еще используются сегодня?

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

Одним из таких примеров является управляющая микросхема в смарт-картах, которые часто используют ядро ​​8051 или аналогичное с криптографическими аппаратными расширениями. Скорее всего, вы найдете 8-битные ядра микроконтроллера в таких вещах, как контроллер для интеллектуального монитора электрической зубной щетки. Автомобильный ECU будет часто использовать 8-битный микроконтроллер вместе с 32-битным в качестве сторожевого таймера из-за их более высокой надежности и меньшей сложности.

Вы должны узнать это?

Помимо вероятности того, что вы действительно окажетесь в ситуации, когда необходимо знание этой конкретной архитектуры, я бы сказал, что это полезный навык в целом. Даже если вы программируете C в своей повседневной работе, полезно иметь общее представление о том, что происходит на «один уровень ниже». При устранении неисправностей, связанных со странными ошибками или проблемами с производительностью, может быть намного проще точно определить проблему, если у вас есть общее представление об основном оборудовании. Вы также можете легче проанализировать вывод на ассемблере от компилятора C. Изучение одной архитектуры также облегчит изучение других в будущем. Эти навыки могут также помочь вам написать лучший код даже для более современных процессорных ядер.

nitro2k01
источник
Я бы совсем немного не согласился с претензией "ниши"; см. мой ответ ниже :), но все же, ваш хороший ответ!
Маркус Мюллер
1

Вы можете многое узнать о цифровом дизайне, изучая их. Цифровая электроника построена с использованием двух вещей. Во-первых, это логика, взаимосвязь элементов AND, OR, NOT, реализующих логическое выражение. (На практике фактически используются другие логические элементы, такие как NAND, но легче понять И, ИЛИ и НЕ.) Во-вторых, это элементы памяти, которые могут содержать один или несколько битов. Когда вводятся элементы памяти, устройства могут иметь то, что называется состоянием . Различные комбинации битов в его элементах памяти соответствуют различным состояниям.

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

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

Для торгового автомата это не очень сложно. Для сложных контроллеров это становится намного сложнее. Микроконтроллеры - это быстрый и простой способ сделать то же самое. Рассмотрим «память», которая (в смысле байта или слова) имеет ширину k бит и имеет n адресных строк, что приводит к 2 ^ n расположениям в памяти. Эта память запрограммирована с дизайном и только для чтения на практике. Обратите внимание, что используя биты адреса памяти в качестве «входов» и биты данных в качестве выходов, память может быть запрограммирована для реализации любой логической функции.

Добавление регистра также шириной k бит для хранения содержимого ячейки памяти дает конечный автомат.

Если биты делятся на, например , код операции и адрес. Набор битов кода операции управляет другими частями схемы (такими как выдача продукта торгового автомата), а остальные являются адресом памяти шириной n битов, каждый набор из k битов становится микроинструкцией с возможностью ветвления.

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

В 1970-х и 1980-х годах несколько успешных компьютеров были построены с использованием этой конструкции. Один из них (VAX 11 от Digital Equipment) имел машинную инструкцию для вычисления целочисленного полинома, предназначенную для вычисления адресов (думаю массив). Оказалось, что инструкция может быть реализована быстрее, используя более простые инструкции.

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

Стюарт Уилсон
источник