• ESP32 в окружении VSCode

      В нескольких следующих статьях я хотел бы детально рассмотреть настройку окружения VSCode для работы с фреймворком ESP-IDF. Не совсем популярная комбинация ПО обладает как преимуществами, так и недостатками, которые при детальном рассмотрении мы попытаемся исправить, обойти или превратить в достоинства.

      Изыскания проводятся в рамках разработки программно-аппаратного комплекса полетного контроллера на чистых кватернионах, без применения углов Эйлера.

      Поскольку предполагается многопользовательская удаленная разработка, то мы решили вначале отработать выбор и настройку самой среды разработки. После нескольких экспериментов с Eclipse, Visual Studio и QT Creator выбор пал на кроссплатформенный VSCode и плагин от разработчика Espressif IDF для работы с фреймворком ESP-IDF.

      В качестве «сердца» контроллера рассмотрим двухъядерный микроконтроллер ESP32, который обладает рядом преимуществ, и которые планируется использовать и раскрыть в проекте, а именно:

      Читать далее
    • Баг в ESP-IDF: MDNS, Wireshark и при чём тут единороги

        Всем привет. Я занимаюсь коммерческой разработкой в IoT, в основном мы используем модули от Espressif - ESP8266 и ESP32.

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

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

        Разведка
      • Как перестать бояться и полюбить 1-wire

        • Tutorial
        Мне очень нравится протокол 1-wire своей простотой и удобством для применения в системах «умный дом». Недавно я писал программную эмуляцию одной микросхемы и погрузился во внутренности этого протокола. Чтобы накопленные знания могли принести пользу не только мне, я решил написать данную статью. Но в статье я хочу рассказать не про абстрактные диаграммы сигналов и кодирование данных — перепечаток такого материала есть достаточно, а хочу рассказать про более практические вещи. А именно: рассмотрю проверенные лично схемы адаптеров, собранные из простых и доступных деталей, и расскажу, как из Linux получить доступ к устройствам 1-wire. Попутно расскажу про сам протокол, будет и пример низкоуровневой работы, и пример доступа из JavaScript, а также рекомендации владельцам Raspberry Pi. Эта статья в первую очередь для тех, кто хочет разобраться с протоколом практически с нуля, чтобы начать его использовать в своих проектах. Возможно те, кто уже хорошо знаком с протоколом, также найдут что-то новое для себя.
        Читать дальше →
      • Как устроен билд APK файла внутри

        • Translation

        Процесс создания APK и компиляции кода


        Рассматриваемые темы


        • Архитектура процессоров и необходимость для виртуальной машины
        • Понимание Java виртуальной машины
        • Компиляция исходного кода
        • Виртуальная машина Андроид
        • Процесс компиляции в .dex файл
        • ART против Dalvik
        • Описание каждой части билд процесса
        • Исходный код
        • Файлы ресурсов
        • AIDL файлы
        • Модули библиотек
        • AAR библиотеки
        • JAR библиотеки
        • Android Asset Packaging Tool
        • resources.arsc
        • D8 и R8
        • Dex и Multidex
        • Подписывание APK файла
        • Ссылки

        Читать дальше →
      • Бюджетный отладчик к ESP-32 и его настройка

        Недавно при написании библиотеки к ESP-32 возникла необходимость ловить дедлоки, которые возникали иногда из-за моей криворукости, что породило необходимость покупки платы-отладчика с интерфейсом JTAG. Что из этого вышло — читайте под катом.

        Читать дальше →
      • Квантовая теория. Вселенная из волн вероятностей

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

          image Что будет, если по аналогии с двущелевым опытом, все пространство на пути частицы до экрана будет заполнено щелями?
          Читать дальше →
        • Доступен NGINX Service Mesh

          • Translation


          Мы рады представить предварительную версию NGINX Service Mesh (NSM), связанную легковесную service mesh, использующую data plane на основе NGINX Plus для управления трафиком контейнеров в окружениях Kubernetes.


          NSM можно бесплатно скачать здесь. Мы надеемся, что вы попробуете его использовать для dev и test окружений — и ждем ваших отзывов на GitHub.

          Читать дальше →
        • Аппаратный взлом жёсткого диска

          • Translation

          Жёсткие диски: если вы читаете эту статью, то с большой вероятностью у вас есть одно или несколько таких устройств. Они довольно просты и, по сути, представляют собой набор 512-байтных секторов, пронумерованных возрастающими адресами, также называемыми LBA (Logical Block Address). Компьютер, к которому подключен жёсткий диск (hard drive, HD), может считывать и записывать данные в эти сектора. Обычно используется файловая система, абстрагирующая все эти сектора до файлов и папок.

          Неспециалисту может показаться, что оборудование HD должно быть довольно простым: достаточно всего лишь устройства, подключаемого к порту SATA, которое может позиционировать свои головки чтения/записи и считывать или записывать данные на пластины. Однако их работа намного сложнее: разве жёсткие диски не занимаются обработкой сбойных блоки и атрибутов SMART, и не имеют кэша, с которым тоже каким-то образом нужно работать?

          Всё это подразумевает, что в жёстком диске есть что-то умное, а умность устройства подразумевает возможность его взлома. Меня всегда интересовали возможности взлома, поэтому я решил узнать, как жёсткие диски работают на немеханическом уровне. Подобные исследования уже проводились с разными видами оборудования, от PCI-карт расширения и встроенных контроллеров до ноутбуков и даже клавиатур Apple. Обычно исследования проводились для того, чтобы доказать, что возможность взлома этих устройств может привести к компрометации ПО, поэтому я захотел воспользоваться тем же подходом: создавая этот хак, я стремился создать жёсткий диск, способный обходить программную защиту.
          Читать дальше →
        • Прости, OpenShift, мы недостаточно ценили тебя и принимали как должное

          • Translation
          Этот пост написан поскольку у наших сотрудников было довольно много разговоров с клиентами о разработке приложений на Kubernetes и о специфике такой разработки на OpenShift.



          Начинаем мы обычно с тезиса, что Kubernetes – это просто Kubernetes, а OpenShift – это уже Kubernetes-платформа, как Microsoft AKS или Amazon EKS. У каждой из этих платформ есть свои плюсы, ориентированные на ту или иную целевую аудиторию. И после этого разговор уже перетекает в сравнение сильных и слабых сторон конкретных платформ.
          Читать дальше: Прости, OpenShift, мы недостаточно ценили тебя и принимали как должное
          • +11
          • 3.7k
          • 2
        • Низкоуровневое программирование микроконтроллеров tinyAVR 0-series

          • Translation


          Вы — 8-битный или 32-битный программист? Мы, в компании OMZLO, сосредоточили основные усилия на новых 32-битных ARM Cortex-чипах (STM32 и SAMD), которые, в сравнении с более старыми 8-битными микроконтроллерами (Micro Controller Unit, MCU) обычно предлагают больше RAM, более высокую производительность, поддержку большего количества периферийных устройств. И всё это — за ту же, или за более низкую цену. Но 8-битные MCU ещё не утратили своей актуальности. В частности, компания Microchip выпустила новую серию чипов, «tinyAVR 0-series», которые, в сравнении с AVR-чипами, выпущенными ранее, дают возможность работать с более современной периферией. Новые чипы, при этом, отличаются весьма привлекательной ценой. Возникает такое ощущение, что эти чипы отлично подойдут для разработки простых устройств, которым не нужны те возможности, что предлагают более новые 32-битные MCU. 8-битные микроконтроллеры, кроме того, значительно легче программировать, что приводит к увеличению скорости разработки программной части устройств, создаваемых на их основе.

          Благодаря успеху Arduino UNO в интернете можно найти множество руководств, разъясняющих особенности программирования 8-битных микроконтроллеров ATmega328 и их собратьев вроде ATtiny85. Речь идёт о прямом доступе к регистрам без использования языка программирования, используемого для Arduino, и без применения IDE, созданных производителями чипов, вроде Atmel Studio. Чтобы в этом убедиться — просто поищите в Google по словам «atmega328 blinky». Для программирования микроконтроллеров вам понадобится лишь C-компилятор для AVR, текстовой редактор, avrdude и AVR-программатор. На некоторых ресурсах даже можно найти руководства, посвящённые тому, как, пользуясь универсальными макетными платами, «завести» ATmega328. Правда, если говорить о более новых чипах tinyAVR 0-series, по ним найти информацию такого рода непросто.
          Читать дальше →
        • Javascript фреймворк разработки бизнес приложений

            Мысль о своем фреймворке зародилась когда я еще активно работал с 1С. Хотелось иметь простую и открытую платформу для создания несложных бизнес приложений (простые системы учета, CRM и прочие).Не раз искал open source решения, но ничего подходящего не находил.

            Весной 2011-го открыл здесь полемику на тему свободного ПО в области систем учета. Решили даже делать HabraERP. Мне пришлось по состоянию здоровья выпасть на два месяца, а по возвращению я ожидаемо увидел что все заглохло.

            Хоть с HabraERP дальше обсуждений дело не пошло, я понял, что создание нужной мне платформы-фреймворка - возможно.

            Спустя неполных 10 лет я готов представить вам KateJS - открытый javascript фреймворк разработки бизнес приложений.

            Читать далее
          • Программирование устройств на основе модуля ESP32

              Микроконтроллер — это интегральная схема, способная выполнять программы. Сегодня на рынке представлено множество таких моделей от самых разных производителей. Цены на эти устройства продолжают падать. Однокристальные чипы находят широкое применение в самых разнообразных сферах: от измерительных приборов до изделий развлечений и всевозможной домашней техники. В отличие от персональных компьютеров микроконтроллер сочетает в одном кристалле функции процессора и периферийных устройств, содержит оперативную память и постоянное запоминающее устройство в для хранения кода и данных, однако обладает значительно мешьшими вычислительными ресурсами. ESP32 — это микроконтроллер, разработанный компанией Espressif Systems. ESP32 представляет собой систему на кристалле с интегрированным Wi-Fi и Bluetooth контроллерами. В серии ESP32 используется ядро Tensilica Xtensa LX6. Платы с ESP32 обладают хорошей вычислительной способностью, развитой периферией и при этом весьма популярны ввиду низкой цены в диапазоне 7$ – 14$: Aliexpress, Amazon.

              image
              Читать дальше →
              • +28
              • 9.9k
              • 5
            • Самые важные архитектурные шаблоны, которые нужно знать

              • Translation

              Рассказываем о самых распространенных шаблонах в архитектуре ПО. Разбираемся с контекстом и решаемыми задачами, обсуждаем достоинства и недостатки.

              - Многоуровневая архитектура

              - Каналы и фильтры

              - Клиент — сервер

              - Модель — представление — контроллер

              - Управляемая событиями архитектура

              - Архитектура на основе микросервисов

              Читать далее
              • +19
              • 12.2k
              • 5
            • Как генерируются UUID

              • Translation

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

              Современную реализацию UUID можно проследить до RFC 4122, в котором описано пять разных подходов к генерированию этих идентификаторов. Мы рассмотрим каждый из них и пройдёмся по реализации версии 1 и версии 4.
              Читать дальше →
            • Взлом ESP32 путём обхода Secure Boot и Flash Encryption (CVE-2020-13629)

              • Translation
              Мы провели исследование микроконтроллера Espressif ESP32 на предмет устойчивости к атакам, выполняемым методом внесения сбоев в работу чипов (Fault Injection). Мы постепенно шли к тому, чтобы найти уязвимости, которые позволят нам обойти механизмы защищённой загрузки (Secure Boot) и шифрования флеш-памяти (Flash Encryption) посредством всего одного сбоя, вызванного электромагнитным полем. Более того, мы, успешно проведя атаку, не только смогли выполнить произвольный код, но и получили данные флеш-памяти в расшифрованном виде.



              Компания Espressif зарегистрировала эту уязвимость в базе данных CVE под кодом CVE-2020-13629. Знакомясь с атакой, описанной в этой статье, учитывайте то, что она применима к чипам ESP32 ревизий 0 и 1. Более новые ESP32 V3 поддерживают функционал отключения загрузчика UART, который использован в этой атаке.
              Читать дальше →
              • +43
              • 6.2k
              • 6
            • Шифрование в MySQL: хранилище ключей

              • Translation
              В преддверии старта нового набора на курс «Базы данных» подготовили для вас перевод полезной статьи.





              Прозрачное шифрование данных (Transparent Data Encryption, TDE) появилось в Percona Server for MySQL и MySQL довольно давно. Но задумывались ли вы когда-нибудь о том, как оно работает под капотом и какое влияние TDE может оказывать на ваш сервер? В этой серии статей мы рассмотрим, как TDE работает внутри. Начнем с хранения ключей, так как оно требуется для работы любого шифрования. Затем подробно рассмотрим как работает шифрование в Percona Server for MySQL/MySQL и какие дополнительные возможности есть в Percona Server for MySQL.
              Читать дальше →
            • Передача аналогового тв сигнала с помощью STM32

                Помните как некто cnlohr запустил передачу ТВ сигнала на ESP8266?

                Недавно мне попалось к просмотру это видео, стало интересно как это возможно и выяснил что автор видео разогнал частоту I2S до телевизионного диапазона, а затем с помощью DMA генерировал AM сигнал. Мне захотелось повторить это, но или прошивка криво собирается, или ESP модуль оказался неподходящий. Запустить передачу телесигнала не получалось.

                Затем я вспомнил что STM32 умеет выводить свой тактовый сигнал на один из пинов.
                Читать дальше →
              • Сказ о том, как я автоматизировал квартиру с помощью Node-RED. Часть II

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


                  Читать дальше →
                • Знакомство с Node-RED и потоковое программирование в Yandex IoT Core

                  • Tutorial


                  В этой статье я хочу разобрать один из самых популярных опенсорс-инструментов, Node-RED, с точки зрения создания простых прототипов приложений с минимумом программирования. Проверим гипотезу о простоте и удобстве таких средств, а также рассмотрим взаимодействие Node-RED с облачной платформой на примере Yandex.Cloud.

                  Читать дальше →
                  • +19
                  • 5.8k
                  • 9
                • Враг не пройдёт, или как помочь командам соблюдать стандарты разработки

                    Подход governance as a code обеспечивает контроль соблюдения архитектурных принципов как в части конфигураций инфраструктуры, так и в части программного кода. Правила проверки каждого артефакта, будь то конфигурация k8s, список библиотек или даже описание сценария CI/CD, описаны специальным кодом проверки правил, имеют свой жизненный цикл, могут тестироваться и ничем не отличаются от обычного программного продукта.

                    Александр Токарев (Сбербанк) расскажет, как и что можно проверять в процессе разработки программного обеспечения, чтобы разрабатывать более безопасные и качественные приложения, и почему Сбербанк решил не использовать такие очевидные решения как SonarQube, а разработать собственное решение на базе Open Policy Agent без дополнительных пакетов над ним. Также Александр покажет, когда выбирать admission controller, когда использовать «чистый» Open Policy Agent, а когда можно обойтись без какого-либо контроля.

                    Александр поговорит о том, нужны ли стандарты, что такое язык Rego и что за крутой продукт Open Policy Agent, а также рассмотрит нетиповые кейсы его применения, как с ним работать, и как его использовать для контроля. Email Александра.


                    Читать дальше →
                    • +20
                    • 5.5k
                    • 3