Arm cortex m3. ARM Cortex-M3: ключевые особенности и преимущества 32-битного микроконтроллера

Что такое ARM Cortex-M3. Какие основные характеристики у этого микроконтроллера. Почему ARM Cortex-M3 стал популярным выбором для встраиваемых систем. Какие преимущества дает использование ARM Cortex-M3 по сравнению с другими микроконтроллерами.

Содержание

Ключевые особенности архитектуры ARM Cortex-M3

ARM Cortex-M3 — это 32-битный микроконтроллер, разработанный компанией ARM Holdings специально для применения во встраиваемых системах. Данный микроконтроллер обладает рядом важных архитектурных особенностей:

  • 32-битное RISC-ядро, работающее на частотах до 120 МГц
  • Гарвардская архитектура с раздельными шинами для инструкций и данных
  • Трехступенчатый конвейер для повышения производительности
  • Аппаратное умножение и деление
  • Поддержка набора инструкций Thumb-2 для компактного кода
  • Контроллер вложенных векторных прерываний (NVIC)
  • Блок защиты памяти (MPU)
  • Интерфейсы отладки SWD и JTAG

Благодаря этим особенностям ARM Cortex-M3 обеспечивает высокую производительность при низком энергопотреблении, что делает его отличным выбором для портативных и автономных устройств.


Производительность и эффективность ARM Cortex-M3

Одним из ключевых преимуществ ARM Cortex-M3 является его высокая производительность при низком энергопотреблении. Рассмотрим основные показатели эффективности данного микроконтроллера:

  • Производительность до 1.25 DMIPS/МГц
  • Типичное энергопотребление 0.19 мВт/МГц
  • Быстрая обработка прерываний (от 12 тактов)
  • Эффективная работа с подпрограммами благодаря аппаратному стеку
  • Компактный код за счет использования Thumb-2

Такие характеристики позволяют создавать на базе Cortex-M3 высокопроизводительные системы с очень низким энергопотреблением, что критично для многих современных встраиваемых приложений.

Преимущества использования ARM Cortex-M3

Применение микроконтроллеров на базе ARM Cortex-M3 дает разработчикам встраиваемых систем целый ряд существенных преимуществ:

  1. Высокая производительность при низком энергопотреблении
  2. Большой выбор микроконтроллеров от разных производителей
  3. Развитая экосистема инструментов разработки
  4. Поддержка популярных RTOS
  5. Простота программирования на C/C++
  6. Хорошая масштабируемость решений
  7. Совместимость кода с другими ядрами ARM

Эти факторы позволяют существенно сократить время и стоимость разработки конечных устройств на базе ARM Cortex-M3.


Сравнение ARM Cortex-M3 с другими микроконтроллерами

Чтобы лучше понять преимущества ARM Cortex-M3, сравним его с некоторыми популярными альтернативами:

ХарактеристикаARM Cortex-M38-bit AVR16-bit MSP430
Разрядность32 бит8 бит16 бит
Макс. тактовая частотаДо 120 МГцДо 20 МГцДо 25 МГц
Производительность1.25 DMIPS/МГц~1 MIPS/МГц~1 MIPS/МГц
Энергопотребление0.19 мВт/МГц~0.5 мВт/МГц~0.3 мВт/МГц

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

Области применения ARM Cortex-M3

Благодаря своим характеристикам, микроконтроллеры на базе ARM Cortex-M3 нашли широкое применение в различных областях:

  • Промышленная автоматизация
  • Медицинское оборудование
  • Автомобильная электроника
  • Бытовая техника
  • Портативные устройства
  • Системы «умного дома»
  • Сетевое оборудование

Такая универсальность делает ARM Cortex-M3 отличным выбором для самых разных встраиваемых приложений.


Инструменты разработки для ARM Cortex-M3

Для разработки приложений на базе ARM Cortex-M3 доступен широкий выбор инструментов:

  • Интегрированные среды разработки (Keil MDK, IAR EWARM, Eclipse)
  • Компиляторы (ARM Compiler, GCC)
  • Отладчики (J-Link, ST-Link)
  • Операционные системы реального времени (FreeRTOS, RTX)
  • Стартовые наборы от различных производителей

Наличие развитой экосистемы средств разработки существенно упрощает создание проектов на ARM Cortex-M3.

Перспективы развития ARM Cortex-M3

Несмотря на появление более новых версий ядра Cortex-M, ARM Cortex-M3 продолжает активно применяться и развиваться. Основные направления развития включают:

  • Повышение энергоэффективности
  • Увеличение объемов встроенной памяти
  • Интеграция новых периферийных модулей
  • Улучшение средств обеспечения безопасности
  • Оптимизация для работы в составе IoT-устройств

Это позволяет ARM Cortex-M3 оставаться актуальным выбором для новых разработок встраиваемых систем.

Заключение

ARM Cortex-M3 является мощной и эффективной 32-битной микроконтроллерной архитектурой, обеспечивающей отличный баланс производительности, энергопотребления и стоимости. Благодаря своим преимуществам данная платформа стала де-факто стандартом для многих встраиваемых приложений. Широкая поддержка со стороны производителей микроконтроллеров и разработчиков инструментов делает ARM Cortex-M3 отличным выбором для создания современных встраиваемых систем.



Знакомство с ARM Cortex-M3 и с STM32, в частности / ARM / RoboCraft. Роботы? Это просто!

Пожалуй, большинство эмбеддерщиков и просто интересующихся встроенными системами уже слышали про процессоры ARM. Их устанавливают в промышленное оборудование, в смартфоны и аудио-плееры, в видеотехнику, да много ещё куда. Популярность ARM во многом обеспечена их хорошей производительностью при низком энергопотреблении, что делает их идеальными для применения в различных мобильных устройствах.
ARM
расшифровывается как Advanced RISC Machines. RISC — это архитектура процессоров с “сокращённым” набором команд, ныне одна из наиболее распространённых. Между прочим, микроконтроллеры AVR, используемые в Arduino, имеют архитектуру RISC.

Существует современное семейство ARM под названием Cortex, которое делится на три подсемейства:

  • Cortex-A
    Это полноценные процессоры общего назначения для самых различных задач. Самое известное устройство на базе их — это iPhone.
  • Cortex-R
    Предназначены для систем реального времени, где существует необходимость в быстрой и точной реакции на внешние события с гарантированным временем отклика — для применений в промышленности, медицине, автомобилестроении и пр.
  • Cortex-M
    Микроконтроллеры, уже известная нам по AVR область. Как обычно, это не очень быстрый процессор, но со встроенной памятью для программ (flash), оперативной памятью (SRAM) и различной периферией — такой, как GPIO (порты ввода-вывода), UART, SPI, I2C и т.д.
Эта статья, как и последующие в цикле (да, это будет цикл статей), сконцентрируется на самом популярном виде Cortex-M в наши дни — Cortex-M3. Микроконтроллеры этого семейства выпускают несколько компаний — например, ST Microelectronics, NXP, Atmel, Texas Instruments. Надо сказать, что с ARM вообще и Cortex-M3, в частности, ситуация с производством отличается от привычной: компания ARM Limited занимается только разработкой архитектуры и средств разработки (компиляторов и IDE), но сама процессоры не производит, а продаёт лицензии другим компаниям — вышеперечисленным, например. При этом гарантируется совместимость кода на уровне инструкций процессора — это значит, что можно разрабатывать ПО под процессоры различных производителей, пользуясь одним и тем же компилятором.

Чем же Cortex-M3 круче других микроконтроллеров? Много чем:

  • Полностью 32-битная архитектура: все регистры 32-битные, арифметические операции работают с 32-битными данными; умножение 32 x 32 -> 32 выполняется за 1 такт, деление — за 2-12 тактов. Благодаря этому CM3 за то же время успевает сделать больше, чем 8-ми и 16-битные МК.
  • Большое количество (от 16) регистров общего назначения, характерное для архитектуры RISC. Так как регистры работают на частоте процессора, а RAM — на меньшей, всегда предпочтительнее работать с данными в регистрах, а чем их больше, тем дольше можно обходиться без использования RAM. Тут соперничать c CM3 могут разве что AVR.
  • Отличная поддержка режимов энергосбережения. Можно отправить в спячку как весь МК, так и отдельные его подсистемы.
  • 24-битный таймер SysTick
    Этот таймер без ШИМ (PWM), зато 24-битный: можно задавать интервал срабатывания в широких пределах, не особо парясь. Самое то для организации конечных автоматов и планировщика RTOS.
  • Полноценная отладка по JTAG или SWD даже на младших кристаллах. Полноценная — значит, можно ставить точки останова (breakpoints), просматривать содержимое переменных и регистров, выполнять программу пошагово и т.п.
  • NVIC — Nested Vectored Interrupt Controller
    Контроллер прерываний, который поддерживает до 240 прерываний на все случаи жизни, до 256 их приоритетов, и обеспечивает быструю реакцию на прерывания.
  • Контроллера DMA — Direct Memory Access
    Очень полезная вещь — позволяет периферии (UART, SPI, I2C и пр.) читать/писать дынные в RAM без участия МК. То есть, можно дать задание контроллеру DMA считать в указанный буфер 100 байт по SPI, и эта задача будет выполняться в фоне, не загружая МК.
  • Высокая плотность кода. Для большинство более-менее сложных проектов размер кода будет меньше, чем для многих других МК. Это достигается за счёт специально разработанного для этих целей набора инструкций Thumb-2. Меньше размер кода — больше кода влезет в МК.
  • Общая ориентированность набора инструкций на компиляторы C — например, наличие команд для табличных переходов (для swicth/case), битовых манипуляций (PORTA |= (1 << 3) и подобный код), условного исполнения инструкций (очень крутая фича). Всё это выливается в более эффективную оптимизацию кода компиляторами C, а значит и в более высокую скорость работы.
  • Хорошие средства разработки: компилятор + среда разработки Keil от ARM Limited, IAR Embedded Workbench for ARM, связка компилятора GCC (сборка Sourcery CodeBench Lite Edition) и Eclipse IDE. Для пользователей Windows есть совсем простая в использовании CoIDE на базе GCC + Eclipse. Вариации с Eclipse круче всего, так как в ней есть поддержка всего, что нужно для удобного программирования: подсветка синтаксиса, умное автодополнение и автозавершение кода, сниппеты, отладчик, всплывающие подсказки с комментариями к функциям и переменным, рефакторинг.
Это мы пока рассматривали Cortex-M3 вообще, а изучать мы их будем на линейке STM32F10x от компании ST Microelectronics, производителем электронных компонентов с мировым именем. Эти ребята очень серьёзно подошли к разработке своих МК на базе Cortex-M3, в результате чего STM32 имеют ряд своих собственных достоинств. Во-первых, это богатая периферия:
  • Несколько многоканальных скоростных 12-битных АЦП, до миллиона измерений в секунду, режим непрерывного измерения.
  • Двухканальный ЦАП, умеющий работать в 8-ми и в 12-битном режимах.
  • 12-канальный контроллер DMA, обслуживает до 12 запросов, имеет 4 уровня приоритетов, независимые размеры блоков данных для приёма и передачи (8, 16 и 32 бита), поддержка кольцевого буфера (!), передача данных в режимах память->память, память->периферия, периферия>память и периферия>периферия.
  • Несколько 16-битных таймеров с произвольными делителями (не только степени двойки, как в AVR), которые умеют генерировать прерывания по переполнению, по сравнению, генерировать ШИМ, измерять длину и число входящих импульсов, запускать ЦАП, и даже автоматически считать импульсы с энкодеров и датчиков Холла!
  • NVIC, помимо всего прочего, поддерживает до 20 прерываний от внешних источников.
  • Модуль RTC (Real-Time Clock) — часы реального времени с счётчиком и будильником.
  • Несколько Watchdog-таймеров для пущей надёжности.
  • FSMC — Flexible Static Memory Controller
    Обеспечивает прозрачный доступ к нескольким видам памяти — SRAM, ROM, NOR Flash, NAND Flash, PSRAM и 16-битным PC Card-совместимым устройствам.
  • SDIO — Secure Digital I/O interface
    Делает львиную долю работы по чтению/записи на карты памяти MMC и SD, что даёт возможность легко и просто прикрутить поддержку FAT и полноценно работать с файлами на карточках.
  • USB
    Полная поддержка стантарта USB 2.0 Full-speed, до 8 эндпоинтов.
  • USB OTG (On-The-Go)
    Эта технология позволяет связывать USB-устройства с её пооддержкой без участия хоста — например, цифровую камеру с принтером.
  • Ethernet, MAC-уровень
    Ага, можно связываться с компом по локальной сети. С внешней PHY-микросхемой может выжимать 10/100 Мбит/с.
  • Шина I2S — шина цифровой связи аудио-устройств.
  • Ну, и стантдартный набор: UART, SPI, I2C, CAN.
Во-вторых, у STM32 очень хорошая структурированная документация:
  • Один Reference manual с описанием всей периферии на всю линейку STM32F10x
  • Подробная документация по каждой отдельной серии МК — распиновка, корпуса, наименование и т.п.
  • Приличное количество аппноутов (Application Notes) — рекомендаций по применению: правильный подбор источника тактирования, питания, примеры работы с LCD, SD-картами, RTC и многое другое.
В-третьих, совместимость — и по расположению ног на кристалле, и по коду. То есть, если не хватает производительности, Flash, RAM или периферии, то можно без модификации кода и без переделки платы просто поставить на плату МК пожирнее с тем же количеством ног.

В-четвёртых, цена. Самый младший камень из серии — STM32F100C4T6B — можно купить за 1-2 $, при этом он имеет 48 ног, 16 КБ Flash, 4 КБ SRAM и может работать на частоте 24 МГц, ну и UARTы и прочие интерфейсы в наличии. То есть, он круче, чем стандартный для Arduino контроллер ATmega168. Конечно, 48 ног — это не DIP-корпус, а TQFP: в макетку или в панельку его не воткнёшь, нужно плату разводить. Но технология изготовления печатных плат в домашних условиях ЛУТ уже расписана вдоль и поперёк, так что не такая уж это и проблема.

Ну, и наконец, платы вроде Arduino для быстрого освоения у ST тоже имеются, и начнём мы изучать STM32 с одной из них — STM32 Discovery:

Так что, если кто не силён в пайке, расслабьтесь. В этой плате есть встроенный отладчик ST-Link, так что вы сможете вкусить всю прелесть полноценной отладки, для которой к AVR пришлось бы докупать AVRDragon за 70$.

В общем, STM32 — это выбор редакции, однозначно. Теперь о цикле статей. Если коротко, то цель цикла — описать STM32F10x вдоль и поперёк. А, если длинно, мы с вами:

  • Изучим всю периферию линейки со всеми режимами работы.
  • Познаем всю прелесть и сложность работы с прерываниями.
  • Научимся разным полезным программерским трюкам и приёмам.
  • Подтянем свои знания языка C.
  • Научимся комбинировать полученные знания и к концу курса сделаем хотя бы одно относительно сложное устройство (уровня MP3-плеера).
Кто хочет прокачаться в программировании МК, у кого есть стальные яйца воля к победе, кто не боится трудностей — ждите продолжение, оно скоро будет. Заряжайте свои мечи, падаваны (:

Курс «Отечественные микроконтроллеры с ядром ARM Cortex-M3»

АктуальностьИдёт набор
Стоимость43 000 руб
Продолжительность72 часа
Группаот 3 до 10 человек
Начало занятийПо мере формирования группы