Рубрика «программирование микроконтроллеров» - 85

После подряд 2х поломок кондиционера в серверной и последующего перегрева помещения в течение нескольких суток, встал вопрос о слежении за температурой в ней. Можно было бы ежедневно(ежечасно/ежеминутно) смотреть температуру со встроенных в сервера датчиков температуры используя интерфейс управления IPMI. Но в этом случае присутствует человеческий фактор на который, в данном случае, оказывает свое негативное осознание того, что можно было бы автоматизировать все гораздо лучше. Так случилось, что я как раз не так давно увлекся такой крайне интересной штукой как микроконтроллеры, поэтому задача автоматизации с использованием МК была новой и интересной возможностью реализовать накопленные знания в полезном для мира проекте. Читать полностью »

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

image

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

Всем привет. Несколько дней назад мне достался экземпляр ESP32 Demo Board V2, о чем я сразу радостно заявил у себя на FB. Конечно, ведь получить его сейчас не очень просто: первая партия (штук 600), которая поступила на продажу на Seeed Studio разлетелась за считанные часы!

ESP32: знакомимся, пишем и запускаем первую прошивку - 1

Но как разработчик и hardware интегратор Open-Source библиотеки для Blynk, я часто получаю ранний доступ к различным девайсам. Blynk позволяет быстро прототипировать и строить iOS/Android Apps для интернета вещей, используя drag'n'drop блоки прямо на телефоне.
Читать полностью »

enter image description here

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

Читать полностью »

На Geektimes летом была статья про Megaprocessor — процессор из дискретных транзисторов и светодиодов, который весит полтонны и занимает всю гостиную в обычном таунхаусе под Кембриджем. Я решил воспользоваться своей географической близостью к этому мегапроекту, и запрограммировать для него что-нибудь презентабельное — например, спортировать для Megaprocessor мою предыдущую хабрапрограммку «Digital Rain».

Программируем «Мегапроцессор» - 1

Система команд Megaprocessor описана на сайте разработчика. Большинство команд состоят из одного байта, за которым может следовать непосредственный операнд (один или два байта). Регистров общего назначения всего четыре (R0-R3), при этом они не равноправны: например, для команд доступа к памяти адрес должен быть либо в R2, либо в R3; а операнд — в одном из двух оставшихся регистров. Программистам, привыкшим к системе команд x86 или ARM, набор команд Megaprocessor покажется крайне бедным: нет ни косвенной адресации «база+смещение», ни непосредственных операндов у арифметических команд (за исключением addq ±1, addq ±2). Зато есть пара неожиданных возможностей: отдельная команда sqrt, и режим .wt для команд сдвига, который заменяет результат суммой выдвинутых битов. Таким образом можно, например, парой команд ld.b r1, #15; lsr.wt r0, r1 вычислить количество единичных битов в r0 (вопрос, столь любимый собеседователями на работу!). Мнемоника ld для команды, загружающей в регистр непосредственное значение (вместо привычной по x86 или ARM мнемоники mov) указывает на способ её выполнения: фактически, с точки зрения процессора, выполняется ld.b r1, (pc++).

Итак, приступим. Читать полностью »

О чем эта статья

На Хабре уже несколько раз упоминали о SMM — режиме процессора x86/64 который имеет больше привилегий чем даже режим гипервизора. Нечто подобное есть и в процессорах архитектуры ARMv7 и ARMv8. Вычислительные ядра этих архитектур могут иметь опциональное расширение под названием ARM Security Extensions, которое позволит разделить исполняемый код, память и периферию на два домена — доверенный и недоверенный. Официальное маркетинговое название этой технологии — ARM TrustZone. Но технари чаще предпочитают говорить о security extensions.

Это будет обзорная статья, поэтому я не буду вдаваться в глухие технические дебри. Тем не менее технические детали будут присутствовать. Первая часть статьи будет посвящена вопросу зачем это всё вообще нужно, а вторая — как это работает в общих чертах. Если общество заинтересуется — следующая статья будет содержать больше технических деталей. Кому интересно — добро пожаловать под кат.

Читать полностью »

Про интернет вещей и полупроводниковую индустрию в краю, где пьют верблюжье молоко. День первый - 1

Несколько месяцев назад мой коллега Тимур Палташев, менеджер в графическом отделении Advanced Micro Devices (AMD) в Саннивейл, Калифорния, предложил мне съездить и устроить семинар в Казахстане. Он будет рассказывать про гетерогенный компьютинг и большие процессоры AMD для игровых приставок и виртуальной реальности, а я буду рассказывать про маленькие процессоры MIPS для встроенных процессоров и машинного видения. Кроме этого мне было обещано попробовать конину, ферментированное молоко кобылицы (кумыс) и ферментированное молоко верблюдицы (шубат). «А тянь-шанские ели там будут?», — спросил я, и получив утвердительный ответ, воскликнул «я готов».

«А под каким соусом будет делаться данное мероприятие?», — спросил я у Тимура и его казахской одноклассницы Гульфариды Тулемиссовой, которая делала всю работу по организации в Almaty Management University. Выяснилось, что казахский народ в настоящее время заинтересовала тематика интернета вещей. Сети из сенсоров с беспроводной связью уже используются чтобы присматривать за шахтерами в казахстанских шахтах, не случилось ли с ними чего. Кроме этого в стране есть качественные программисты микроконтроллеров и инженеры встроенных систем, которые делают сейсмоанализаторы и телекоммуникационные ящики (в кооперации с россиянами и китайцами).

«Хорошо», — сказал я, у Imagination Technologies и ее отделения MIPS Business Unit, в котором я работаю, есть продукты в области интернета вещей, в частности ядра MIPS microAptiv, которые Samsung использует в платформе для интернета вещей Samsung Artik 1. Кроме этого, у нас есть и материалы по микроконтроллерам, а также то, чего в Казахстане пока не хватает — знание ПЛИС-ов и проектирования микросхем, чем казахстанцы могли бы заняться в кооперации с россиянами, которые сейчас хорошо прогрессируют в данном направлении.

После этой беселы я поймал в коридоре нашего компанейского аналитика в области интернета вещей и спросил у него, что собственно такое интернет вещей.
Читать полностью »

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

Сегодня мы расскажем о проекте, нацеленном на распознавание некоторых видов физической активности человека. Делается это с помощью платы Intel Edison, к которой подключён акселерометр ADXL345.

Идёт? Бежит? Поднимается по лестнице? Intel Edison знает ответ - 1

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

В нашем проекте для анализа данных акселерометра используется метод опорных векторов (Support Vector Machine, SVM). Программная часть реализована с применением популярной библиотеки LIBSVM. Код написан в двух вариантах: на Python и Node.js.
Читать полностью »

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

Загрузчик — это удобно и полезно, не правда ли? А если загрузчик собственной реализации, то это еще более удобно, полезно и гибко и не стабильно. Ну и конечно же, очень круто!

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

На самом деле, загрузчик — это проще, чем кажется на первый взгляд. В доказательство, под cut'ом соберём свой собственный USB Mass Storage Bootloader!

imageЧитать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js