Недавно я начал работать в небольшой компании, которая производит электронику для диагностики автомобилей. Мой босс, которому за пятьдесят, сказал, что он использует производные 8051, и они делают свою работу. Я продолжил поиск в Google, чтобы узнать, все еще ли популярна 8051 сегодня. И в Кора, я видел это:
... это, наверное, самая простая архитектура MCU. Каждое периферийное устройство выглядит как голая версия. Мои концепции таймеров, тактирования, UART и т. Д. Многое прояснили! И затем я начал ценить другие архитектуры - потому что я действительно понимал разницу.
... очевидно, что ни одна индустрия не будет использовать его для разработки продукта из-за его простоты ...
Но почему? До сих пор, по крайней мере, будучи студентом, я много чего делал, не вмешиваясь в архитектуру. Я с радостью запрограммировал C, я использовал периферийные устройства LCD, подключенные к другим микросхемам с разными протоколами (SPI, I2C и т. Д.)
Зачем мне беспокоиться об архитектуре моего микроконтроллера, за исключением ограниченных областей приложений реального времени и времени?
Ответы:
8051 и другие младшие микроконтроллеры все еще используются сегодня?
Да почти везде. Они маленькие и простые, вокруг много плавающих ядер, которые вы можете вставить в свой пользовательский кремний за небольшую плату или бесплатно, есть зрелые компиляторы. Все это делает 8051 по-прежнему одной из самых популярных базовых архитектур среди производителей кремния. Ядра ARM могут быть доступны в более разных продуктах, но, опять же, когда вы говорите с кем-то, кто строит много устройств по очень строгому ценовому ограничению, есть вероятность, что он предпочтет более дешевое / бесплатное ядро 8051, если оно выполнит свою работу , Просто чтобы возразить, @ Nitro2k01 утверждает, что использование только в нише: у Mouser есть около 800 моделей 8051 микроконтроллеров на складе ¹. И тот факт, что они начинаются, даже в Mouser, по ценам ниже 40 центов, может указывать на то, для чего они используются:
основной, низкопроизводительный, MCU большого объема
таким образом:
это качественная полная ерунда. Тем более что вы сами представляете себе контрпример
Точно! Они используются повсеместно, они хорошо себя зарекомендовали и дешевы, и их достаточно ; Никогда не стоит недооценивать преимущества решения какой-либо общей проблемы в ящике где-нибудь!
Конечно, часто бывает так, что вам может понадобиться решение, скажем, с двумя типичными автомобильными шинами, высокоскоростным интерфейсом к АЦП, некоторыми надежными сторожевыми таймерами, тремя модулями ШИМ ... и затем вы начинаете собирать воедино что-то, состоящее из четыре 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]» из Википедии .
источник
В общем, вот несколько веских причин для изучения (или, по крайней мере, практического знания) архитектуры используемого вами микроконтроллера.
Предостережение: в контексте вашей работы, компании, приложения, связанного с ним оборудования и т. Д. Могут быть причины, по которым вам не следует изучать конкретную архитектуру, которую вы используете прямо сейчас.
Отладка
Когда работают библиотеки высокого уровня, вам может не понадобиться знать архитектуру. Когда вы начинаете испытывать проблемы, знание внутренних компонентов вашего микроконтроллера может очень помочь быстро изолировать и устранить эти проблемы.
Эффективность и простота кода
Если вы знаете архитектуру, вы можете перенести функциональность с программного обеспечения на аппаратное обеспечение. Это может снизить загрузку программного обеспечения и устранить источники ошибок.
Снижение цены
Знание архитектуры может снизить использование памяти программ и данных и загрузку процессора. Это может означать, что вы можете выбрать микроконтроллер с меньшим количеством ресурсов, что может снизить затраты.
Увеличение вашей полезности
Даже если вы не используете знания прямо сейчас, это может потребовать обсуждения с коллегами / поставщиками / инженерами службы поддержки и т. Д. Например, то, что вы знаете, может помочь кому-то еще с проблемой, с которой они сталкиваются. Спасение дня - это то, что люди помнят.
Знание - сила
Даже если вам не нужны знания в вашей нынешней работе, когда вы увидите объявление о работе, которая выглядит потрясающе и гласит: «Знание архитектуры <семейства микроконтроллеров> является обязательным / предпочтительным» , вы окажетесь в лучшем положении пойти на это.
источник
8051 и другие младшие микроконтроллеры все еще используются сегодня?
Да, хотя в основном для нишевых случаев использования. Они в основном используются для простых задач, в серийно выпускаемых, дорогостоящих продуктах или там, где желателен проверенный послужной список. Они часто лицензируются и интегрируются в одночиповое решение. Из-за их простой архитектуры их легко интегрировать с пользовательскими периферийными устройствами в одном чипе. Другое преимущество состоит в том, что они могут быть изготовлены на небольшой площади с использованием более старых (и более дешевых) технологий изготовления полупроводников.
Одним из таких примеров является управляющая микросхема в смарт-картах, которые часто используют ядро 8051 или аналогичное с криптографическими аппаратными расширениями. Скорее всего, вы найдете 8-битные ядра микроконтроллера в таких вещах, как контроллер для интеллектуального монитора электрической зубной щетки. Автомобильный ECU будет часто использовать 8-битный микроконтроллер вместе с 32-битным в качестве сторожевого таймера из-за их более высокой надежности и меньшей сложности.
Вы должны узнать это?
Помимо вероятности того, что вы действительно окажетесь в ситуации, когда необходимо знание этой конкретной архитектуры, я бы сказал, что это полезный навык в целом. Даже если вы программируете C в своей повседневной работе, полезно иметь общее представление о том, что происходит на «один уровень ниже». При устранении неисправностей, связанных со странными ошибками или проблемами с производительностью, может быть намного проще точно определить проблему, если у вас есть общее представление об основном оборудовании. Вы также можете легче проанализировать вывод на ассемблере от компилятора C. Изучение одной архитектуры также облегчит изучение других в будущем. Эти навыки могут также помочь вам написать лучший код даже для более современных процессорных ядер.
источник
Вы можете многое узнать о цифровом дизайне, изучая их. Цифровая электроника построена с использованием двух вещей. Во-первых, это логика, взаимосвязь элементов AND, OR, NOT, реализующих логическое выражение. (На практике фактически используются другие логические элементы, такие как NAND, но легче понять И, ИЛИ и НЕ.) Во-вторых, это элементы памяти, которые могут содержать один или несколько битов. Когда вводятся элементы памяти, устройства могут иметь то, что называется состоянием . Различные комбинации битов в его элементах памяти соответствуют различным состояниям.
Рассмотрим торговый автомат, который запускается в состоянии 0 и переходит в другое состояние каждый раз, когда монета вставляется. При этом машина может отслеживать общую сумму денег, знать, когда было внесено достаточно денег, и знать, сколько изменений нужно вернуть.
Чтобы спроектировать схемы машины, начните с диаграммы состояний со стрелками, показывающими переходы в другие состояния вместе с условиями, которые их запускают. Для каждой стрелки логическое выражение идентифицирует условие. Затем можно определить, что все эти выражения, и реализовать их с помощью логических элементов.
Для торгового автомата это не очень сложно. Для сложных контроллеров это становится намного сложнее. Микроконтроллеры - это быстрый и простой способ сделать то же самое. Рассмотрим «память», которая (в смысле байта или слова) имеет ширину k бит и имеет n адресных строк, что приводит к 2 ^ n расположениям в памяти. Эта память запрограммирована с дизайном и только для чтения на практике. Обратите внимание, что используя биты адреса памяти в качестве «входов» и биты данных в качестве выходов, память может быть запрограммирована для реализации любой логической функции.
Добавление регистра также шириной k бит для хранения содержимого ячейки памяти дает конечный автомат.
Если биты делятся на, например , код операции и адрес. Набор битов кода операции управляет другими частями схемы (такими как выдача продукта торгового автомата), а остальные являются адресом памяти шириной n битов, каждый набор из k битов становится микроинструкцией с возможностью ветвления.
Добавьте к этому некоторую арифметическую логику, еще несколько регистров (где один или несколько из них получают управляющие входы для смещения влево и вправо), и вы можете создать ЦП, машинные инструкции которого реализуются с помощью последовательности микроинструкций.
В 1970-х и 1980-х годах несколько успешных компьютеров были построены с использованием этой конструкции. Один из них (VAX 11 от Digital Equipment) имел машинную инструкцию для вычисления целочисленного полинома, предназначенную для вычисления адресов (думаю массив). Оказалось, что инструкция может быть реализована быстрее, используя более простые инструкции.
Микроконтроллеры могут быть и обычно являются менее эффективной реализацией, чем традиционный конечный автомат. Но они могут быть легко изменены, намного быстрее спроектированы и являются отличными решениями для контроллеров.
источник