На написание данной статьи меня побудила длинная ветка комментариев (дискуссией это я назвать, к сожалению, не могу) к моей недавней статье “Многообразный мир embedded systems и место Embox в нем”. Меня в нескольких местах упрекнули в том, что я путаю RTOS и Embedded OS, что я назвал LynxOS, QNX и VxWorks не RTOS, хотя на мой взгляд, я такого, конечно, не делал. Автору данных комментариев я несколько раз предложил написать статью, в которой бы он изложил свое видение понятия “операционная система реального времени”, но он по каким-то причинам отказался. Ну что же, я изложу свое видение данного термина, и давайте обсудим, что же может называться RTOS, а что не может. В конце концов, этот вопрос часто задают применительно к Embox.
Читать полностью »
Рубрика «программирование микроконтроллеров» - 51
RTOS или не RTOS вот в чем вопрос
2019-02-22 в 13:34, admin, рубрики: embox, Realtime, rtos осрв, Блог компании Embox, программирование микроконтроллеров, Промышленное программирование, системное программирование, системы реального времениMQTT-UDP, предвесенние итоги: дистанционная конфигурация и цифровая подпись
2019-02-15 в 12:06, admin, рубрики: C, IoT, mqtt, openhab, python, smart home, программирование микроконтроллеров, Разработка для интернета вещей, умный домЗима кончается, и это повод подвести очередную черту и рассказать, что нового появилось в MQTT/UDP.
Для начала, ссылки на предыдущие введение и статью.
Спасибо всем, кто с интересом отреагировал и отдельно тем, кто делился мыслями. Вы мне очень помогли с подходом к цифровой подписи. Итак, что изменилось по крупному:
- Появился механизм гибкого расширения протокола: Tagged Tail Records, TTRs
- На его базе сделана схема цифровой подписи пакетов
- Сделан механизм дистанционной конфигурации компонент
- Поднят полный цикл CI: сборка, юнит-тесты, сквозные тесты протокола (4*4 языка программирования)
- Реализация на Си теперь поддерживает разные архитектуры и умеет интегрироваться с разными ОС и мониторами.
- Есть публичные пакеты для Питона и Луа, хотя, конечно, они уже устарели.
Ну и многое по мелочи: интеграция с OpenHAB, конфиг-файлы и логгинг, проверка совместимости с облачным MQTT сервисом, сделан тестовый пример для Wemos D1 (NodeMCU), сделан тестовый пример для atmega128+ethernet (не ардуино), сделан пример протокольного коннектора на Яве (CCU825), сделан пример информера-контроллера в desktop tray (наконец-то я могу включать свет в комнате в два клика мышки:), и ещё разное.
Теперь по порядку.
Читать полностью »
Разделяй и властвуй, или медленно пишем — быстро читаем
2019-02-14 в 13:05, admin, рубрики: microSD, sd, stm32, stm32F, USB 2.0, xmega, коммутатор, программирование микроконтроллеров, схемотехника
В одном из моих проектов возникла необходимость последовательной записи оцифрованных наборов данных с 3-х каналов АЦП. Результаты замеров нужно было сохранять со скоростью 6 КБайт/сек, при этом длительность цикла сбора данных могла составлять сутки и более. Таким образом общий объем информации, который необходимо было сохранять, составлял 500 МБайт и более. В качестве устройства хранения было решено выбрать SD карту.
Модуль подводного ультразвукового дальномера
2019-02-13 в 16:36, admin, рубрики: active filter, diy или сделай сам, operational amplifier, rangefinder, stm32, Ultrasonic, underwater, программирование микроконтроллеров, Производство и разработка электроники, прототипирование, схемотехника
Это устройство появилось на свет в процессе работы над проектом компьютера для дайвинга, который в своём составе должен был иметь узколучевой сонар-дальномер. То ли мы плохо искали, то ли, действительно, на рынке ничего подходящего по параметрам нет в продаже, но в итоге, вместо приобретения готового модуля, решили мы для дайвинг-компьютера изобрести свой дальномер. Тем более, что процесс интеграции в компактный корпус компьютера казался проще при разнесении излучателя и электронной схемы в соответствие со свободным пространством внутри корпуса.
Пока дайвинг-компьютер ожидает своего часа, нам пришла в голову мысль: а что если дальномер выделить в отдельный проект? Поскольку у нас возникли сложности с поиском подходящего модуля подводного дальномера, наверняка ещё кто-нибудь сталкивался с подобными трудностями поиска.
Читать полностью »
Перенаправляем printf() из STM32 в консоль Qt Creator
2019-02-12 в 12:57, admin, рубрики: debug, itm, printf, qt creator, retarget, stm32, swo, uart, программирование микроконтроллеров
Нередко при отладке ПО микроконтроллера возникает необходимость вывода отладочных сообщений, логов, захваченных данных и прочего на экран ПК. При этом хочется, чтобы и вывод был побыстрее, и чтобы строки отображались не где-нибудь, а прямо в IDE — не отходя от кода, так сказать. Собственно, об этом и статья — как я пытался printf() выводить и отображать внутри любимой, но не очень микроконтроллерной, среды Qt Creator.
К вопросу о преобразованиях и прочих операциях
2019-02-08 в 15:51, admin, рубрики: программирование микроконтроллеровСиняя Гусеница: А ну нас-то не собьешь. Мы себе сидим, знаем: ждут нас превращения. А что? А ничего! Сидим, курим, ждем…
Алиса- кукла: Чего?
Синяя Гусеница: Чего, чего! Превращений. Дом — в дым, дым- в даму, а дама — в маму. Вот так-то. Не мешайте, не заскакивайте вперед, а то сами еще превратитесь преждевременно в бабочку какую-нибудь.
Просматривая код на одном из форумов, посвященных Ардуино, обнаружил забавный способ работы с числом с плавающей точкой (ПТ). Второе общепринятое название для чисел в таком формате — с плавающей запятой, но возникающее при этом сокращение (ПЗ) лично у меня вызывает совсем другие ассоциации, так что будем пользоваться именно этим вариантом. Первое впечатление (от увиденного кода) — что за фигня тут написана (надо сказать, что и второе такое же, хотя есть нюансы, но об этом позже), но возникает вопрос — а как надо на самом деле — ответ на который и дается в дальнейшем тексте.
Часть первая — постановка вопроса
Формулируем задачу — нам нужно вывести на консоль (превратить в символьное представление) число с плавающей точкой, не используя опции печати, именно для этой цели предназначенные. Почему мы хотим это сделать самостоятельно —
- использование формата %f влечет за собой подключение библиотеки для работы с плавающей точкой и расширенного варианта функции prntf (вернее, делает невозможным использование ее усеченного варианта), что приводит к существенному увеличению размера исполняемого модуля,
- стандартное решение требует значительных временных затрат (оно всегда работает с числом двойной точности), что может быть неприемлемым в данной конкретной ситуации,
- ну и (last, but not least), это просто интересно.
RS-485 на отечественных микроконтроллерах от фирмы Миландр
2019-02-08 в 9:50, admin, рубрики: 1986ве1, 1986ве91т, RS-486, uart, боль и унижение, миландр, программирование микроконтроллеров, Электроника для начинающихНесколько дней назад я имел неосторожность завуалированно пообещать запилить пост про Миландр… Ну что ж, попробуем.
Как вы, вероятно, уже знаете, существует российская компания Миландр, которая, среди прочего, выпускает микроконтроллеры на ядре ARM Cortex-M. Волею судеб я был вынужден с ними познакомиться достаточно плотно, и познал боль.
Небольшая часть этой боли, вызванная работой с RS-485, описана далее. Заранее прошу прощения, если слишком сильно разжевываю базовые понятия, но мне хотелось сделать эту статью доступной для понимания более широкой аудитории.
Так же заранее оговорюсь, что имел дело только с 1986ВЕ91 и 1986ВЕ1, о других уверенно говорить не могу.
Зачем нужна низкоуровневая оптимизация на Эльбрусе или как ускорить распознающую систему в полтора раза
2019-02-06 в 4:06, admin, рубрики: ocr, OCR-технологии, Алгоритмы, Блог компании Smart Engines, машинное обучение, обработка изображений, программирование микроконтроллеров, распознавание образов, ЭльбрусВстретив 2019 год и немного отдохнув от разработки новых фич для Smart IDReader, мы вспомнили, что давно ничего не писали об отечественных процессорах. Поэтому мы решили срочно исправиться и показать еще одну распознающую систему на Эльбрусе.
В качестве распознающей системы была рассмотрена система распознавания объектов живописи “в неконтролируемых условиях методом с обучением по одному примеру” [1]. Эта система строит описание изображения на основе особых точек и их дескрипторов, по которому выполняет поиск в индексированной базе картин. Мы проанализировали производительность данной системы и выделили наиболее времязатратную низкоуровневую часть алгоритма, который затем оптимизировали с помощью инструментов платформы Эльбрус.