Время от времени меня тоже охватывает потребность что-то поменять. И чаще всего я меняю в своих разработках семейство микроконтроллеров. И я не одинок в этом. Каждый год не менее 50% разработчиков меняют процессор, на котором будут выполнять следующие проекты. На этот раз я решил попробовать семейство Kinetis.

Kinetis это семейство низко потребляющих 32-х битных микроконтроллеров базирующихся на процессорных ядрах ARM Cortex-M0/M4/M7, без MMU, с частотой ядра до 240 МГц. Отсутствие MMU означает, что Kinetis не предназначены для операционных систем подобных Windows, QNX, Android, iOS. Эти микроконтроллеры созданы для выполнения кода систем жесткого реального времени в составе разнообразных встраиваемых устройств, от сердечных имплантатов до управляющих контроллеров электромобилей. Хотя и существуют сборки Линукса для запуска на Kinetis.

Где можно применить Kinetis?


Фирма Freescale могла бы перечислить очень много сфер применения. Но для себя я выделил следующие: индустриальные контроллеры, частотные преобразователи с векторным без сенсорным управлением, тиристорные регуляторы, конвертеры напряжения, анализаторы электросетей, программируемые логических контроллеры для систем управления лифтами, подъемниками, конвейерами и другими механизмами с множеством приводов. Перспективной темой для Kinetis видится интернет вещей и интеллектуальные сенсоры. И наконец неплохо было бы попробовать их в мультикоптерах и другой робототехнике.

Что же интересного есть в Kinetis?


Ближайшими конкурентами Kinetis можно назвать микроконтроллеры семейств: STM32F4, LPC4000, XMC4000, SAM4S и некоторые менее известные. С некоторых пор конкуренты также предлагают решения и с ядром ARM-Cortex-M7. В общем тоже не стоят на месте.

Согласно опросу «2014 Embedded Market Study» самым популярным в мире 32-х разрядным семейством является STM32. Поэтому дальше акцент будет на возможностях Kinetis которых нет в STM32.

На рисунке ниже я изобразил структурную схему старшего представителя семейства Kinetis чипа MK70FN1M0VMJ15. Она чуть подробнее чем принято изображать в описаниях Freescale, чтобы подчеркнуть характерные особенности Kinetis. В скобках даны имена блоков, применяемые в фирменных описаниях.


А вот основные преимущества Kinetis:

-широта номенклатуры. По широте номенклатуры Kinetis не уступает STM32 и даже превосходит. Kinetis включает самые маленькие чипы в мире (2.0 x 1.6 мм) на ядре ARM и продвинутые чипы MK70 с числом выводов 256 и возможность подключения DDRAM, аналогичных которым у STM нет.

-большая приспособленностью к жестким условиям эксплуатации. В семействе есть чипы с напряжением питания до 5.5 В. Есть чипы специально для автомобильных применений с повышенной устойчивостью к электромагнитным помехам. Помимо этого, в периферии микроконтроллеров всего семейства реализовано много аппаратных решений для повышения помехоустойчивости. Устойчивость к сбоям обеспечивают:
-до пяти независимых тактовых генераторов, три из которых на внешних кварцевых резонаторах,
-независимый генератор для сторожевого таймера,
-аппаратные фильтры двух видов на всех цифровых входах,
-управление доступом к различной периферии, возможность управления правами задач,
-детектор несанкционированного доступа по множеству событий,
-специальный сигнал сброса внешних устройств по отдельному сторожевому таймеру,
-возможность защелкивания некоторой периферии для защиты от последующих изменений до отключения питания,
-гибкое управление и приоретизация шинных коммутаторов
и т.д.

-расширенные механизмы программирования и отладки. Гибкость и удобство отладки — общее достоинство всех микроконтроллеров на ядре ARM Cortex M. Как показывает упомянутый выше опрос, разработчики из всех инструментов в работе больше всего внимания уделяют инструментам отладки. И даже высокую популярность STM32 я бы отнес именно к доступности JTAG/SWD отладчика для этих чипов, который сразу встраивается в отладочные платы на базе STM32. В Kinetis помимо этого есть специальный последовательный SPI-совместимый интерфейс программирования — EzPort. EzPort позволяет без JTAG адаптера с высокой скоростью программировать чипы, а также упрощает перепрограммирование в мультипроцессорной системе одних чипов другими. Никаких скрытых загрузчиков и скрытого кода как в LPC или STM32.

-большой объемом прикладных библиотек. У Freescale прикладные библиотеки отличаются своей обстоятельностью и открытостью. Чего стоит только их библиотека для работы по протоколу ZigBee. Это наверно лучшая реализация стека ZigBee полностью доступная в исходных кодах. Далее, конечно, следует библиотеки для управления двигателями. В данный момент ожидается выпуск Freescale обновленного и расширенного пакета ПО для разработки систем управления двигателями на Kinetis. Есть в наличии библиотека для построения графических пользовательских интерфейсов eGUI, библиотека для разработки сенсорных панелей и клавиатур, библиотека поддержки медицинских коммуникационных протоколов, библиотека поддержки стандарта безопасности IEC 60730-1:2010, оптимизированные для аппаратных ускорителей библиотеки криптографических функций, библиотеки протоколов подключения к облачным сервисам и т.д. И это еще не считая программного обеспечения, сопровождающего операционные системы реального времени для Kinetis, которые упоминаются ниже. Отдельно стоит упомянуть различные начальные загрузчики, а также очень полезный для разработчика инструмент FreeMaster который по сути является реализацией встраиваемого в микроконтроллер программного осциллографического модуля с функцией логгера и командного управления.

-наличие эффективных бесплатных средств разработки. Без наличия бесплатных средств разработки эта статья про Kinetis имела бы мало смысла. Да, для Kinetis есть весьма развитая бесплатная среда разработки на базе проекта Eclipse и компилятора GCC под названием Kinetis Design Studio IDE. Эта мощная среда содержащая качественный редактор исходных текстов, компилятор, базовые библиотеки, графический конфигуратор периферии микроконтроллеров (аналог STM32CubeMX для микроконтроллеров STM32), автоматический генератор шаблонных проектов и исходных текстов, SDK с полным набором драйверов ко всей периферии, символьный отладчик-программатор на базе различных JTAG/SWD адаптеров с плагинами для отладки операционных систем и генератор проектов с использованием операционных систем реального времени. Для тех, кто работает с коммерческими IDE Keil или IAR в Kinetis Design Studio есть возможность автоматически экспортировать проекты и исходные тексты в эти IDE и синхронно с Kinetis Design Studio их поддерживать.

На рисунке окно рабочего процесса подготовки проекта в Kinetis Design Studio


-широкий выбор готовых операционных систем реального времени. Операционные системы реального времени — это то без чего немыслима современная встраиваемая электроника. Именно они дают возможность интеграции в одном устройстве огромного числа функций без потери надежности и обеспечивают его конкурентоспособность. Здесь у Kinetis есть то, что я бы назвал неотразимым аргументом – открытая операционная система реального времени MQX. Собственно, с нее и начался мой интерес к Kinetis. Но большинство разработчиков предпочитают FreeRTOS. Для FreeRTOS тоже есть возможность генерации проектов в Kinetis Design Studio. Кроме этого можно сгенерировать проекты для широко известных операционных систем uCOS-II и uCOS-III. Как уже упоминалось существует сборка ОС Линукс для Kinetis. С сайта проекта mbed.org можно скачать открытую операционную систему mbed OS для Kinetis. И конечно можно найти не меньше десятка коммерческих операционных систем, адаптированных под Kinetis.

Коротко об MQX.


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

Состав непосредственно RTOS представлен на диаграмме ниже


А основной состав промежуточного программного обеспечения перечислить сложно поскольку он постоянно расширяется. Но во всяком случае вот компоненты, которые входят в состав ПО уже достаточно давно:
• Файловая система для накопителей на SD картах
• Файловая система в ОЗУ.
• Файловая система для NAND Flash накопителей
• Мультипроцессорная коммуникационная библиотека
• Стек протоколов TCP/IP включающий: ARP, DHCP, IP, TCP, UDP, PPP, ICMP, SMTP, SNMP, DNS, HTTP, NAT, RIP, Telnet, FTP, WEB сервер с авторизацией, CGI.
• Драйвера Wi-Fi для семейства чипов Qualcomm Atheros AR4100
• Классы USB хост: audio, CDC, HID, HUB, MSD, PHDC, printer
• Классы USB устройство: CDC, HID, MSD, PHDC
• Универсальный коммуникационный драйвер инструмента FreeMaster

Интересные примеры приложений для Kinetis:



Электрокардиограф и измеритель пульса (с исходными текстами)
Подключение видеокамеры с чипом OV7675 (с исходными текстами)
Простое практическое руководство по измерению параметров двигателя необходимых для векторного управления
Тонкая настройка алгоритма без сенсорного управления BLDC двигателями
Использование DMA для организации непрерывного автоматического цикла сканирования произвольного набора аналоговых входов модулем аналого-цифрового преобразователя
Надежный способ обновления прошивки микроконтроллера по беспроводным каналам связи с использованием взаимной подмены банков Flash памяти (с исходными текстами)
Управление и мониторинг микроконтроллеров через Twitter (с исходными текстами)
Управление микроконтроллерами Kinetis с устройства под управлением OS Android
Аудио проигрыватель на Kinetis (с исходными текстами)
Использование быстрого преобразования Фурье для реализации измерителя параметров электросети (с исходными текстами)

Здесь перечислена малая часть из примеров применения опубликованных Freescale для семейства Kinetis.
Остальные можно найти на официальном сайте.

А теперь к практике



Я не любитель готовых отладочных плат и KIT-ов. Имея достаточный опыт работы с микроконтроллерами можно сразу приступать к разработке “боевых” платформ не тратя время на лишние макетные итерации.
После недолгого изучения я разработал вот такой отладочный частотный преобразователь:

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

Проект открыт для изучения и находится по ссылке

Комментарии (13)


  1. progchip666
    26.04.2015 00:17
    +2

    Лично я стараюсь скакать с серии на серию только по серьёзной необходимости. Дорогое это удовольствие — осваивать новую серию. Времени тратится не мало. Ловишь новые глюки, кроме того обычно новые устройства продаются по завышенным ценам. Тем кто использует микроконтроллеры в качестве хобби наверно это прикольно, а для профи это лишние расходы времени, денег и нервов. Хотя долго на месте стоять тоже нельзя и хочешь не хочешь но двигаться вперёд приходится. Раз в пару лет менять платформу необходимо.
    Впрочем я знаю человека, который застыл на восемнадцатых пиках и ему до сих пор их возможностей вполне достаточно.


    1. Indemsys Автор
      26.04.2015 22:26

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


  1. progchip666
    26.04.2015 00:21

    Я кстати тоже не слишком большой любитель китов, но в отдельных случаях они сильно сокращают время разработки. Особенно когда переходишь на новые камни и не всегда это касается процессоров. Например мне очень помог в своё время кит для DDS от AD. А время однако — это деньги и для разработчика и для заказчика.


  1. kiltum
    26.04.2015 09:53

    А я, наоборот, любитель всяких разных китов, отладочных плат и прочего, выдаваемого производителем. С одной стороны, дает возможность очень быстро пощупать, что может та или иная железка, а с другой стороны является источником схемотехнических решений (пусть иногда и кривых, но зато от производителя :). И да, именно поэтому stm32 так широко распространена: есть дешевые платы, есть схемы к ним, есть софт к ним, есть описание к ним с примерами.

    Теперь посмотрим на freescale. Плат в доступности нет (нашел две платы от китайцев, просто поиском по kinetis), схем нет, софт… софт не трогал, описаний — нет (для примера взял MKL05Z32VFM4 с одной из плат).

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


    1. Indemsys Автор
      26.04.2015 22:21

      На MKL05Z32VFM4 мануал вот по этой ссылке — cache.freescale.com/files/32bit/doc/ref_manual/KL05P48M48SF1RM.pdf?fasp=1&WT_TYPE=Reference%20Manuals&WT_VENDOR=FREESCALE&WT_FILE_FORMAT=pdf&WT_ASSET=Documentation&fileExt=.pdf
      Чего- чего, а у Freescale объем документации точно больше чем для STM32.
      Хотя и у этого может быть обратная сторона.


      1. kiltum
        27.04.2015 09:48

        Ну тут можно поспорить. В смысле определения «наличие описаний/мануалов/примеров». Да, мануал на чип есть и очень странно было бы, если бы его не было. Но для меня «описания» — это некая экосистема, где можно найти разработчиков, примеры, обсуждения и так далее и тому подобное. А в этом, по моему, из 32х разрядных stm лидируют с большим отрывом. На любой чих можно найти кучу тем, где обсасывают искомое в любом варианте.

        В общем, классическая проблема курицы и яйца: пока не будет дешевых и доступных плат, обычный народ не будет смотреть в их сторону. А плат нет, потому что народ не смотрит.

        Но вернемся к реалиям: вот у меня тоже появляется еще один проект. Технически простой: надо какой-нибудь чип, который умеет USB OTG, SDIO (так у stm обзывается интерфейс к SD картам), и хорошо бы еще и CAN/LIN. Ну и ножек не много. Сверху добавим какую-нибудь RTOS, лучше FreeRTOS, ибо вдруг потом портировать? И мне в принципе абсолютно все равно, на каком делать. Что я делаю в первую очередь? Иду в гугл, где набираю "{производитель|марка} chip selector". Для stm, avr и pic мне отдают страничку, где я могу жамкать нужные поля и мне выдадут список чипов удовлетворяющим моим условиям. У freescale я нашел только большую pdf'ку, где все в куче и надо искать самому. А самому как обычно лень.

        Все, круг замкнулся, freescale вылетел в первом же раунде. И пусть он будет лучше/производительней/фичастей, но из-за неудобства представления информации они не получат немного денежек…


        1. Indemsys Автор
          27.04.2015 23:20

          А я не так подхожу к вопросу.
          USB OTG это мало что значит. Важно какие классы хотите реализовать и есть ли такие готовые.
          SDIO тоже ни о чем не говорит. Важно какую файловую систему вы хотите сделать. Насколько быструю и надежную.
          CAN тоже не сам по себе. Еще нужны протоколы типа CANOpen.
          А еще неплохо RTOS с гибкими сервисами, логами и тестами и хорошей актуальной документацией.
          Вот все это промежуточное ПО и забирает львиное время.

          И что видим. STM только и предлагает что FreeRTOS, LwIP да FATFS. И Все!
          Я на STM32 много чего напроектировал, но подошел к потолку и вижу что эта троица меня уже не устраивает.

          Насчет популярности STM32 не спорю. Arduino еще популярней.
          Но это не конкуренты для MQX-Kinetis, это этапы по пути к нему.


    1. progchip666
      27.04.2015 13:04

      У freescale подобное же отношение и к распространению своих чипов. Получить образец достаточно просто. Закупить 10 000 в год для большого проекта тоже не вопрос. А если тебе нужно раз в пол года по сотне, тебе быстро дадут понять что ты не их клиент. Именно поэтому не могут их продукты прижиться в России. Вся их маркетинговая политика заточена для продвижения продукции для массового производства.


      1. kiltum
        27.04.2015 13:16

        Ну точно так же себя ведет и STmicrosystems, да и другие. У них даже в форме заявки в саппорт есть графа про объемы выпуска. И любое массовое производство начинается с пару-тройки опытных образцов (наверняка, где-то есть гении, которые рисуют ту же плату сразу с нуля, но я не видел). Но тем не менее, я в любом приличном магазине могу набрать пачку плат на stm32, и пару-тройку (в лучшем случае) — на freescale.

        Так что, имхо, проблема в чем-то другом…


        1. progchip666
          27.04.2015 13:33

          Совсем не так. Купить сотню микроконтроллеров от STM с российского склада практически без проблем. Попробуйте купить сотню чего нибудь от freescale и почувствуете разницу.


          1. kiltum
            27.04.2015 13:47

            Ну. И я о том же. Наверное, не так поняли друг друга :)


  1. Oval
    26.04.2015 21:27

    а можно вам заказать частотник для однофазного двигателя с двумя обмотками с конденсаторным пуском? (по сути нужен двухфазный частотник с векторами в 90 градусов)


    1. Indemsys Автор
      26.04.2015 22:32

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

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

      У меня такое решение есть. Возможно даже опубликую.