Хорошее время, чтобы двигаться; 8 бит быстро умирают; Когда вы можете купить плату за 5 долларов с (например) STM32F103, который является довольно способным 32-битным ARM микроконтроллером (даже с USB!), нет сомнений, что времена изменились.
У вас уже есть несколько отличных ответов, но в первую очередь я бы сказал «забудь сборку» и почти «забудь о том, как процессор работает на низком уровне» - однажды будет угловой случай, в который нужно будет покопаться. (особая оптимизация или для отладки), но ядра ARM хорошо работают с кодом C (по замыслу), и вам редко приходится углубляться в кишки.
Это означает, что вы потратите определенное количество времени на то, чтобы справиться с проблемами с компиляторами (и особенно с компоновщиками и make-файлами), чтобы скрыть от вас непонятные ошибки, но все они преодолимы.
Суть того, как работают ARM (то есть книги о процессорах ARM), плотна и не очень интересна до того дня, когда вам действительно нужно оптимизировать (и вы будете удивлены, как редко, когда у вас есть 32-битные регистры и ваш PLL ') d Частота процессора находится в диапазоне 100 МГц).
Набор инструкций ARM «старого skool» намного легче прочитать при разборке, чем гораздо более новый «Thumb2», который вы найдете в большинстве современных ARM уровня микроконтроллера (Cortex), но опять же внутренности инструкций языка ассемблера в основном исчезают на заднем плане; если у вас есть правильный набор инструментов (особенно приличный отладчик на уровне исходного кода с точками останова / одним шагом и т. д.), вы просто не слишком заботитесь о том, чтобы быть ARM вообще.
Когда вы попадаете в мир 32-битных регистров и 32-битных шин данных, и все, что вам когда-либо требовалось, доступно на кристалле, вы больше никогда не захотите возвращаться к 8-битному ЦП; в основном, часто нет штрафов за то, что «все было просто» и написание кода было более читабельным, чем эффективным.
Однако ... периферия ... да и есть руб.
У вас наверняка есть масса вещей, с которыми можно поиграть на современных микроконтроллерах, и многие из них довольно причудливы; Вы часто находите мир изощренности, далеко за пределами AVR, PIC и 8051 встроенных периферийных устройств.
Один программируемый таймер? Нет, есть восемь! DMA? Как насчет 12 каналов с программируемым приоритетом и пакетным режимом и цепным режимом с автоперезагрузкой и ... и ... и ...
I2C? I2S? Десятки вариантов мультиплексирования? Пятнадцать разных способов перепрограммировать встроенную вспышку? Конечно!
Часто кажется, что вы перешли от голода к пиршеству с периферийными устройствами, и часто встречаются целые куски чипа, которыми вы восхищаетесь, но которые почти не используете (следовательно, стробирование часов).
Количество встроенного аппаратного обеспечения (и его вариаций в линейке микросхем только одного производителя) в настоящее время ошеломляет. Один производитель микросхем, конечно, будет склонен повторно использовать IP-блоки, поэтому, как только вы познакомитесь с определенной маркой, это станет проще, но «в наши дни это дерьмо сделано».
Во всяком случае, периферийные устройства и их взаимодействия (и DMA, и прерывания, и распределение шин, и и, и ...) настолько сложны (и, иногда, не совсем так, как описано в таблицах данных), что у инженеров часто есть любимый диапазон микроконтроллеров ARM и склонны придерживаться этого просто потому, что они знакомы с периферийными устройствами и инструментами разработки.
Хорошие библиотеки и инструменты разработки (например, быстрый цикл компиляции + отладки с соответствующим отладчиком) и большой набор рабочих проектов с примерами кода абсолютно необходимы в настоящее время для выбора ARM MCU. Похоже, что большинство поставщиков сейчас имеют чрезвычайно дешевые оценочные платы (
Как я уверен, вы заметили, как только вы выходите за пределы уровня микроконтроллера с ARM и переходите на уровень SOC (например, SOC в стиле Raspberry Pi / etc), тогда правила полностью меняются, и все зависит от того, какой тип Linux вы собираетесь использовать. бежать, потому что - за невероятно немногими исключениями - вы безумно лаете, пытаясь сделать что-то еще.
В основном; независимо от процессора, который (возможно) был предварительно выбран для вас на этом выступлении, купите себе несколько очень дешевых тестовых плат на основе Cortex от нескольких разных поставщиков (TI, STM, Freescale и другие) и взломать с предоставленным примером кода.
Последний совет; как только вы найдете страницу-три в таблице данных, в которой описаны параметры мультиплексирования выводов для конкретного чипа с номером детали, с которым вы работаете, вы можете распечатать его и прикрепить к стене. Позднее обнаружение в проекте того, что определенная комбинация периферийных устройств невозможна из-за мультиплексирования контактов, неинтересно, а иногда эта информация настолько скрыта, что вы поклялись, что они пытаются ее скрыть :-)