Универсальный внешний накопитель для всех iOS-устройств, совместим с PC/Mac, Android
Header Banner
8 800 100 5771 | +7 495 540 4266
c 9:00 до 24:00 пн-пт | c 10:00 до 18:00 сб
0 Comments

Знакомство с ARM Cortex-M3 и с STM32, в частности – 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
  • Хорошие средства разработки: компилятор + среда разработки 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-плеера).

Кто хочет прокачаться в программировании МК, у кого есть стальные яйца воля к победе, кто не боится трудностей — ждите продолжение, оно скоро будет. Заряжайте свои мечи, падаваны (:

17 ноября, 2011

burjui

ARM

Микроконтроллеры Cortex-M0/M3/M4

Микроконтроллеры Cortex-M0/M3/M4

Микроконтроллеры Cortex-M стали сегодня одними из самых популярных процессоров, применяемых при разработке и изготовлении электронной техники. Высокая вычислительная мощность, широкий набор периферии и низкая стоимость делают эти устройства привлекательными для самого широкого круга разработчиков. При этом каждый желающий может выбрать наиболее подходящий вариант для решения конкретной задачи. Производители предлагают огромное количество разнообразных микросхем, общим для которых остается только процессорное ядро. На сегодняшний день распространение получили 3 варианта ядер: Cortex-M0, Cortex-M3, Cortex-M4. Отличия этих моделей не всегда явно прослеживаются, поэтому данная статья делает попытку разобраться в особенностях этих вариантов.

Микроконтроллеры Cortex-M представляют собой одно из направлений развития микропроцессорных ядер, предлагаемых фирмой ARM. Фактически, под общей торговой маркой Cortex можно увидеть три типа процессоров (профилей), обозначаемых буквами A, R, M. Задачей профиля A стало достижение большой вычислительной мощности. Изделия с этой маркировкой – Cortex-A, представляют собой классические микропроцессоры, являющиеся дальнейшей эволюцией разработок ARM. Профиль R нацелен на использование во встраиваемых системах, поэтому эти процессоры модернизированы для исполнения задач в реальном времени. Основной задачей профиля M заявлена простота и низкая стоимость. Технически Cortex-M представляют сильно упрощенные варианты старших моделей. Тем не менее, даже такие «урезанные» контроллеры обладают вычислительной мощностью, значительно превышающей многие аналоги. Также отличием от «больших» ARM стала поддержка битовых операций, необходимая в микроконтроллерах для работы с периферией.

Cortex-M0

Микроконтроллеры, использующие ядро Cortex-M0, позиционируются производителями в качестве замены 8-ми разрядных моделей. Их отличительной особенностью стала предельно низкая стоимость и малое энергопотребление, при сохранении многих возможностей архитектуры ARM.

По своей структуре ядро Cortex-M0 – это конфигурируемый мультистадийный 32-разрядный RISC процессор. В его основе лежит архитектура ARMv6-M. Основное отличие от классической «большой» ARMv6 заключается в использовании только набора 16-разрядных инструкций, под общим названием Thumb. Дополнительно поддерживаются некоторые команды более нового набора Thumb2. Такое решение, при незначительном падении вычислительной мощности, максимально упростило процессор относительно старших моделей и позволило использовать дешевую 16-ти разрядную память. Благодаря использованию современных технологий проектирования, количество транзисторов, из которых построено данное ядро, составляет примерно 12 тысяч. Такое количество обеспечило низкое энергопотребление и невысокую стоимость. Для сравнения процессор i8086 имел 32 тысячи транзисторов при намного меньших возможностях. Энергопотребление процессора M0, в зависимости от исполнения и решаемых задач, колеблется от 73 до 4мкВт/МГц.

Быстродействие ядра Cortex-M0 составляет 0.84 DMIPS / МГц. Это значит, что на максимальной частоте работы ядра в 50Мгц, достигается производительность 45 DMIPS. Данное значение превышает возможности 8-ми разрядных систем в несколько десятков раз, и на порядок выше, чем у 16-разрядных моделей.

Разработчики, в архитектуре Cortex, попытались получить законченное процессорное ядро. Поэтому в его состав включены: контроллер прерываний на 32 вектора, интерфейс для периферийных устройств в виде 32-разрядной шиной ASB-Lite, отладчик. При необходимости процессор может оснащаться контроллером «спящего» режима.

Процессорное ядро Cortex-M3

Процессорное ядро Cortex-M3 стало наиболее популярным вариантом архитектуры ARM у производителей и разработчиков микроконтроллеров. Структурно, это также мультистадийный RISC процессор. Но в отличие от M0, данное ядро основано на архитектуре ARMv7-M и полностью реализует наборы команд Thumb и Thumb2. Из особенностей следует упомянуть аппаратное умножение 32-разрядных чисел за 1 цикл, а также деление чисел подобной разрядности (от 2 до 12 циклов). Производительность процессора составляет 1.25DMIPS/МГц. Энергопотребление примерно в два раза выше, чем у варианта M0. Количество физических прерываний увеличено до 240. В ядре предусмотрен механизм защиты памяти.

Cortex-M3, в отличие от классической ARMv7, выполнен по Гарвардской архитектуре и поддерживает несколько периферийных шин. Следует отметить, что ARMv7 является основой только процессоров под обозначением Cortex и имеет мало общего с некогда сверхпопулярной ARM7 и ее вариантами. Хотя именно с ARM7 часто сравнивают возможности Cortex-M3.

Cortex-M4

Вариант микроконтроллерного ядра Cortex-M4, по сравнению с Cortex-M3, не характеризуется ростом общих показателей. Фактически M4 тот же самый M3, но дополнительно оснащенный DSP-инструкциями. Наличие последних существенно ускоряет обработку потоковых данных, что в свою очередь делает M4 весьма привлекательным для использования в системах управления и обработки информации.

Возможности DSP, входящего в состав M4, позволяют параллельно выполнять четыре операции сложения/вычитания для 8-ми разрядных чисел или две операции сложения/вычитания с16-ти разрядными операндами. Также реализовано умножение за один цикл, при этом для 16-ти разрядных чисел возможно параллельное исполнение двух операций.

В серии M4 есть еще один вариант, под обозначением Cortex-M4F. В нем, дополнительно к DSP, установлен блок операций для чисел с плавающей точкой – FPU.

Кроме вышеназванных, существуют и другие варианты процессоров. Большинство из них представляют модернизированные варианты основных ядер. Несколько особняком стоит малоизвестный Cortex-M1, предназначенный для использования в программируемых логических матрицах. Основные характеристики этого процессора практически совпадают с вариантом M0, но при этом он реализован только в виде программной модели.

В отличие от профиля А, Cortex-M развивается не столь бурно. Когда и какими будут будущие микроконтроллеры неизвестно. Можно только предположить, что развитие пойдет по пути «больших» систем и в скором времени привычными станут двух-, трех или четырехядерные контроллеры.

You have no rights to post comments

Cortex-M3 – Arm®

Серия процессоров Cortex-M позволяет разработчикам создавать недорогие решения с ограниченным энергопотреблением для широкого спектра устройств. Оптимальный баланс между площадью, производительностью и мощностью делает Cortex-M3 идеальным решением для таких продуктов, как микроконтроллеры, автомобильные кузовные системы, беспроводные сети и датчики.

Особенности и преимущества

Широкая поддержка 

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

 Низкое энергопотребление

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

Развертывание на ПЛИС

Доступен по цене 0 долларов США для использования в проектах FPGA, прототипах и коммерческих проектах.

Технические характеристики

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

Дополнительные сведения см. в ресурсах для разработчиков.

Ключевая документация

Варианты использования

Где воплощаются в жизнь инновации и идеи

Умные домашние устройства

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

Узнать больше

Приложения Интернета вещей (IoT)

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

Узнать больше

Поговорите с экспертом

Узнайте, как процессор Arm Cortex-M3 может повысить энергоэффективность ваших самых маленьких приложений.

Свяжитесь с нами

Доступно в Arm Flexible Access

Чтобы получить неограниченный доступ к этому продукту и другим полезным IP-адресам Arm, посетите сайт Arm Flexible Access. Начните свой проект с правильного пути с помощью ведущего в мире портфолио дизайна SoC. Этот IP-адрес ЦП доступен в Arm Flexible Access по цене 0 долларов США.

Узнать больше

Сопутствующие продукты и услуги

Ознакомьтесь с дополнительными опциями и функциями

Виртуальное оборудование Arm

Виртуальное оборудование Arm предоставляет модели процессоров, систем и оборудования сторонних производителей для разработчиков приложений и разработчиков SoC для создания и тестирования программного обеспечения без оборудования, ускорение разработки IoT и ML.

Подробнее

Arm Development Studio

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

Узнать больше

Corstone-101

Пакет Arm Corstone-101 содержит предварительно проверенную подсистему и системный IP-адрес, чтобы помочь сделать разработку безопасных пользовательских SoC для IoT и встроенных приложений быстрой и эффективной.

Узнать больше

Архитектура и технологии

Основа кремниевого успеха  

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

Ресурсы Cortex-M3

Справочник

  • Разработка системы на кристалле с процессорами Arm Cortex-M

Блог

  • Гибкий подход к повышению функциональной безопасности ЦП

Практический пример

  • От концепции до воплощения в жизнь за 6 месяцев с помощью DesignStart
  • Стартап использует Arm DesignStart Pro для проверки концепции и получает финансирование в размере 16 млн долларов

Инструменты

  • Обзоры дизайна

Тренировка

  • Опции для тренировки рук

Событие

  • Онлайн-семинар: Интеграция программного IP-процессора Arm Cortex-M в ПЛИС

Краткое введение в процессор ARM Cortex M3

Этот пост является частью серии о Шина CAN и прототип SAE J1939 с процессором ARM Cortex M3.

ARM Cortex-M представляет собой группу 32-разрядных RISC-процессоров ARM. ядер по лицензии ARM Holdings. Ядра предназначены для использования в микроконтроллерах, и состоят из Cortex-M0, M0+, M1, M3, M4 и M7.

Процессор ARM Cortex-M3 очень хорошо подходит для высокопроизводительных детерминированные приложения реального времени даже для недорогих платформ, таких как системы автомобильного кузова, промышленные системы управления, беспроводные сети и датчики и многое другое.

Микроконтроллеры Cortex-M3 доступны в ряде производители полупроводников, такие как Texas Instruments, Infineon, Atmel, NXP (ранее Philips), Analog Devices, Toshiba, STMicroelectronics и другие.

Ключевые особенности ядра Cortex-M3:

  • архитектура ARMv7-M
  • 3-этапный конвейер с отраслевые спекуляции.
  • Наборы инструкций:
  • Большой палец (целиком).
  • Большой палец-2 (целиком).
  • 32-битное аппаратное умножение с 32-битным или 64-битным результатом, со знаком или без знака, добавить или вычесть после умножить.
  • 32-битное аппаратное деление (2-12 циклов).
  • Насыщенная математическая поддержка.
  • Расширение DSP: Одиночный цикл 16/32-битный MAC, один цикл двойной 16-битный MAC, 8/16-битный SIMD арифметика.
  • от 1 до 240 прерываний, плюс НМИ.
  • Прерывание на 12 циклов задержка.
  • Встроенные спящие режимы.

Поскольку Cortex-M3 был лицензирован для такого разнообразия производители, их отдельные продукты процессора немного различаются в отношении скорость процессора, объем памяти, доступные интерфейсы и т. д.

В дальнейшем я буду ссылаться на две аппаратные системы используя:

  • ЦП Atmel SAM3X8E ARM Cortex-M3
  • NXP LPC1768 с 32-разрядным ядром ARM Cortex-M3

Помимо большой скорости и более чем достаточного количества FLASH и RAM, ARM Cortex-M3 — идеальный выбор для множества встроенных приложений благодаря поддержке большого количества периферийных интерфейсов. Встроенные функции включают в себя:

  • Ethernet
  • USB-хост и устройство
  • Локальная сеть контроллера (МОЖНО)
  • SPI
  • I2C
  • АЦП
  • ЦАП
  • ШИМ
  • Цифровой ввод/вывод

Доступность интерфейсов локальной сети контроллеров (CAN) в сочетании с другими интерфейсными технологиями объясняет огромную популярность процессора Cortex-M3 в индустрии CAN и J1939. Процессор предоставляет средства для простого и быстрого создания приложений, таких как CAN/J1939 шлюзы, мосты CAN, ЭБУ J1939, регистратор данных J1939 и многое другое.

И последнее, но не менее важное: для получения дополнительной информации по теме см.: Шина CAN и прототип SAE J1939 с процессором ARM Cortex M3.


Полное руководство по локальной сети контроллеров Вилфрида Восса представляет собой наиболее тщательно проработанную и наиболее полную работу по CAN, доступную на рынке.

Controller Area Network (CAN) — это технология последовательной сети, которая изначально была разработана для автомобильной промышленности, особенно для европейских автомобилей, но также стала популярной шиной в промышленной автоматизации, а также в других приложениях.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *