• Программирование современных микроконтроллеров: лекция 1

      Конспект первой лекции по программированию современных микроконтроллеров на примере STM32 и операционной системы RIOT. Лекции читаются в Институте информационных технологий МИРЭА по субботам, с 12:50 в актовом зале на 4 этаже корпуса Д. В занятиях отводится 1,5 часа на саму лекцию и 3 часа на практические занятия в лаборатории IoT Академии Samsung по теме лекции.

      Привет, Гиктаймс! Как мы и обещали, начинаем публикацию конспектов лекций, которые сейчас читаются в Институте ИТ МИРЭА. По результатам первой, вводной лекции мы решили немного изменить структуру курса — вместо планировавшихся двух потоков по 5 занятий будет один поток на 7 занятий. Это позволит в более спокойном темпе разобрать ряд вспомогательных вопросов, а также статьи с конспектом будут появляться на GT каждую неделю в течение всего марта и апреля, а не через неделю, как планировалось раньше.

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

      Курс рассчитан на студентов второго и третьего курсов, знакомых с языком C и базовыми понятиями электроники и электротехники. Предварительное знакомство с микроконтроллерами не требуется.

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



      Сегодняшняя лекция — первая, поэтому на ней будут разбираться общие понятия: что такое вообще микроконтроллер и зачем он нужен, что такое прошивка и как она получается, зачем нам нужна операционная система, и наконец — как работать с git. Результат практического занятия — собственный репозитарий на GitHub с исходными кодами ОС, а также успешно настроенная среда сборки на локальном компьютере.
      Читать дальше →
    • Программирование современных микроконтроллеров — новый курс МИРЭА, Samsung и Unwired Devices

        Привет, Гиктаймс! Этим полукреслом мастер Гамбс… Этим постом мы — проект IoT Академия Samsung и компания Unwired Devices — начинаем цикл публикаций по мотивам нового практического курса по программированию микроконтроллеров на ядре Cortex-M3, который с завтрашнего дня будет читаться в Институте Информационных Технологий Московского Технологического Университета (также известного как МИРЭА).

        Цель курса — познакомить студентов с современными микроконтроллерами на ядре Cortex-M3 и дать им базовые навыки программирования под них на языке C под операционной системой. Требования к слушателям — знакомство с языком C (не обязательно на микроконтроллерах) и базовое понимание электроники (на уровне умения подключить светодиод).

        image

        Изначально программа IoT Академии задумывалась как достаточно высокоуровневая — студенты должны работать с готовыми модулями передачи данных для сетей LoRa и 6LoWPAN, в которые уже были загружены прошивки с поддержкой нужных датчиков и необходимой логикой работы с ними. Фактически, курс заключается в настройке этих модулей и написании высокоуровневого ПО для обработки приходящих данных на платформе Samsung Artik + Tizen.

        Однако, как показала практика, многим студентам интересно более серьёзно углубиться в то, что происходит внутри микроконтроллеров. При этом на данный момент с обучающими курсами по контроллерам Cortex-M в паре с операционными системами всё обстоит достаточно плохо: по сути, девять из десяти таких курсов посвящены написанию несложного приложения с использованием StdPeriphLib и/или CubeMX, причём половина текста приходится на вопросы инициализации контроллера и его периферии.
        Читать дальше →
      • Новогодние подарки, часть третья: хорошо ли мы себя вели

          Часть первая: Meltdown
          Часть вторая: Spectre

          Одним из самых интересных вопросов, возникших в дискуссиях об аппаратных уязвимостях Meltdown и Spectre (см. ссылки выше) был вопрос о том, сделал ли нам Дед Мороз этот подарок в связи с тем, что в 2017 году мы вели себя плохо — или, наоборот, хорошо.



          Попробую обосновать тезис о том, что мы вели себя хорошо, иначе Дед Мороз сделал бы нам этот подарок года через три-четыре.
          Читать дальше →
        • Новогодние подарки, часть вторая: Spectre

            Часть первая: Meltdown.

            Несмотря на всю мощь уязвимости Meltdown, принесённое этим Новым годом счастье не было бы полным, если бы не вторая часть открытия, не ограничивающаяся процессорами Intel — Spectre.

            Если говорить очень-очень коротко, то Spectre — принципиально схожая с Meltdown уязвимость процессоров в том смысле, что она тоже представляет собой аппаратную особенность и эксплуатирует непрямые каналы утечки данных. Spectre сложнее в практической реализации, но зато она не ограничивается процессорами Intel, а распространяется — хоть и с нюансами — на все современные процессоры, имеющие кэш и механизм предсказания переходов. То есть, на все современные процессоры.

            Строго говоря, Spectre не является одной уязвимостью — уже на старте заявлены два различных механизма (CVE-2017-5753 и CVE-2017-5715), а авторы отмечают, что может быть ещё и много менее очевидных вариантов.

            В основе своей Spectre похожа на Meltdown, так как также базируется на том факте, что в ходе спекулятивного выполнения кода процессор может выполнить инструкции, которые он не стал бы выполнять при условии строго последовательного (неспекулятивного) вычисления, и, хотя в дальнейшем результат их выполнения отбрасывается, его отпечаток остаётся в процессорном кэше и может быть использован.
            Читать дальше →
          • Новогодние подарки, часть первая: Meltdown

              Да, я знаю, что это уже третий материал на GT/HH по данной проблеме.

              Однако, к сожалению, до сих пор я не встречал хорошего русскоязычного материала — да в общем и с англоязычными, чего уж тут греха таить, та же проблема, там тоже многих журналистов изнасиловали учёные — в котором внятно раскладывалось бы по полочкам, что именно произошло 3 января 2018 года, и как мы будем с этим жить дальше.

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

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

              К счастью, подвержены они ей в разной степени. К несчастью, самый серьёзный удар пришёлся на самые распространённые процессоры — Intel, причём затронул он абсолютно все выпускающиеся и практически все эксплуатируемые (единственным исключением являются старые Atom, выпущенные до 2013 года) процессоры этой компании.
              Читать дальше →
            • Связь в интернете вещей: LoRa против UNB. Часть 3: технические тонкости

                Третья из серии статей, посвящённая описанию основных отличий технологий маломощной дальнобойной радиосвязи, получающей сейчас распространение в системах Интернета вещей: широкополосной связи LoRa от узкополосных (UNB, Ultra Narrow Band) систем, таких как Sigfox и «Стриж», а также вопросам их практического применения.



                Привет, GT.

                После первых двух статей, а также живых рассказов по данной теме меня несколько раз просили подробнее рассказать о базовых технических аспектах работы LoRa и UNB-сетей несколько подробнее, чем я рассказывал в первой статье:

                • Разделение каналов в UNB-системах
                • Проблема обратной связи в UNB-системах
                • Разделение каналов в LoRa
                • Адаптивные скорости в UNB и LoRa
                • Помехозащищенность в UNB-системах и в LoRa




                Что ж, приступим. Ниже будет, как обычно, много текста и мало картинок.
                Читать дальше →
              • Связь в интернете вещей: LoRa против UNB. Часть 2: бизнес

                  Вторая из серии статей, посвящённая описанию основных отличий технологий маломощной дальнобойной радиосвязи, получающей сейчас распространение в системах Интернета вещей: широкополосной связи LoRa от узкополосных (UNB, Ultra Narrow Band) систем, таких как Sigfox и «Стриж», а также вопросам их практического применения.


                  Привет, Гиктаймс!

                  Извиняюсь за долгое молчание — я обещал многим выложить эту часть статьи ещё 22-го августа, но меня немного затянул прекрасный город Алматы, а потом прочие неотложные дела. В качестве компенсации — обещаю после сегодняшнего текста рассказать про конкретное оборудование для сетей LoRa/LoRaWAN (наше и не только), а также ещё и про некоторые технические аспекты работы сетей LPWAN. Последний текст логически должен был бы продолжать самый первый — там будет и про помехозащищённость, и про проблему обратной связи, и про достижимые скорости — но с одной стороны, на наших лекциях многие интересовались этими деталями, а с другой, сегодняшний текст тоже был обещан ещё более многим, и задерживать его ещё дольше совсем некрасиво. Поэтому сначала немного поговорим про бизнес.



                  Итак, поехали. В первой части я рассказал, чем схожи и чем отличаются на физическом уровне конкурирующие протоколы для IoT-сетей большой дальности — LoRa, Стриж, Sigfox и другие.

                  Но отличия на физическом уровне — это знания академические, нас же волнует, можем ли мы реализовать на том или ином протоколе тот или иной проект. Клиенту не нужно знать принцип действия молотка — ему нужно картину на гвоздь повесить.

                  И вот здесь всё становится совсем весело.

                  Читать дальше →
                • Связь в интернете вещей: LoRa против UNB. Часть 1: физика

                    Первая из серии статей, посвящённой описанию основных отличий технологий маломощной дальнобойной радиосвязи, получающей сейчас распространение в системах Интернета вещей: широкополосной связи LoRa от узкополосных (UNB, Ultra Narrow Band) систем, таких как Sigfox и «Стриж»

                    1. Связь в интернете вещей: LoRa против UNB. Часть 1: физика
                    2. Связь в интернете вещей: LoRa против UNB. Часть 2: бизнес
                    3. Связь в интернете вещей: LoRa против UNB. Часть 3: технические тонкости
                    4. Связь в интернете вещей: LoRa против UNB. Часть 4: сети и оборудование LoRa

                    Тема маломощной радиосвязи, позволяющей, не выходя за рамки безлицензионных диапазонов (то есть, как правило, за мощность 25 мВт), передавать низкоскоростные данные на расстояния от 1-3 до 10-30 километров, в России начала бурно развиваться в последние полгода. То есть — говорили о ней и до этого, но практические применения встречались очень редко, а разработчиков и интеграторов, способных сделать проект на подобных технологиях, было крайне мало.

                    Сейчас мы на грани переломного момента: хотя крупные проекты по-прежнему лишь ожидаются в будущем (но уже можно прогнозировать, что это будущее — вопрос месяцев, а не лет), среди интеграторов и заказчиков появился серьёзный интерес к технологиям IoT-связи, причём выражающийся не только в словах, но и в непосредственном желании попробовать эти технологии в деле.

                    Основная конкуренция в этом сегменте сейчас — между широкополосной связью LoRa и узкополосной Sigfox (а конкретно в России — схожей с ней технологией «Стриж-Телематики»). В будущем к этому списку добавится UNB-протокол Weightless, а также сети, продвигаемые поставщиками классического оборудования сотовой связи — NB-IoT и LTE-M, но это случится года через два-три.

                    Итак, в чём же разница — и что выбрать для конкретного проекта? Поехали.
                    Читать дальше →
                  • Как мы хакатон про Интернет вещей делали

                      Привет, Geektimes!

                      Этим полукреслом мастер Гамбс начинает новую партию мебели...
                      И. Ильф, Е. Петров, «Двенадцать стульев»

                      Совсем недавно мы — Mail.Ru Group, Intel и Unwired Devices — делали хакатон по Интернету вещей. В принципе, это могло бы быть рядовым событием — хакатоны по IoT сейчас не делает только ленивый. Но мы решили придумать формат, который выгодно отличал бы нас от других подобных мероприятий.

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


                      Ничтожная часть выпитого за два дня кофе

                      Начали же мы с хакатона. И теперь хотим рассказать вам, почему мы его сделали, что получилось и какие выводы мы извлекли.

                      Читать дальше →
                    • IoT-хаб на Intel Edison

                        Привет, GT!

                        Если вы хотели бы сделать свой собственный «железный» модуль на Intel Edison, но не уверены, с какого бока к нему подступиться — этот текст для вас. Он — про особенности и мелкие нюансы создания своего устройства на Edison, без использования готовых отладочных плат Intel или Sparkfun.

                        Недавно у нас возникла специфическая задача: нам понадобился IoT-хаб (то есть шлюз между специфическими для «Интернета вещей» сетями 6LoWPAN и LoRa, которыми мы занимаемся, и внешним миром) на архитектуре x86. Наш стандартный вариант — это решение на нашем собственном микрокомпьютере Unwired One на архитектуре MIPS, но в данном случае был нужен именно x86.

                        Дело в том, что хаб у нас — это не просто транслятор из 6LoWPAN/LoRa во внешний мир всего, что с той стороны прилетело, а во-первых, небольшой сервер IoT-сети, который поддерживает её существование, раздаёт IP-адреса (при наличии в данной сети таковых) и занимается прочей технической работой, во-вторых, собственно border router из IoT во внешний мир, в-третьих, прослойка на уровне приложений, превращающая наши собственные протоколы IoT-сети в распространённый MQTT и унифицирующая сети разных видов, а в-четвёртых, платформа, на которой клиент может сам написать какой-либо интересный ему софт, проводящий накопление и обработку данных до отправки их на большой сервер, в облако и т.п.



                        Собственно, в последнем и возникла загвоздка. Проблема в том, что при всех разговорах о грядущей победе IoT, с ПО этого уровня в нём всё довольно плохо — его, если говорить коротко, нет. Стандартного, универсального, не привязанного к конкретной железке и не написанного на яве (да простят меня её поклонники, но когда у вас 256 МБ ОЗУ — это много, Java — так себе выбор).

                        Читать дальше →