Как стать автором
Обновить

Pine64 анонсировала продажи одноплатного компьютера Ox64 в форм-факторе Raspberry Pi Pico W

Время на прочтение 1 мин
Количество просмотров 4.3K
Производство и разработка электроники *Гаджеты Компьютерное железо IT-компании

Компания Pine64 анонсировала в ноябре 2022 года продажи одноплатного компьютера Ox64. С помощью него можно создавать интеллектуальные IoT-устройства(AIoT), робототехнические системы, гаджеты для умного дома и прочие подобные устройства.

В устройстве стоит процессор Bouffalo Lab BL808 с архитектурой RISC-V, содержащий ядро Alibaba T-head C906 64 бита с частотой 480 МГц и ядро Alibaba T-head E907 32 бита с частотой 320 МГц, а также установлен ИИ-ускоритель NPU BLAI-100 (Bouffalo Lab AI Engine).

Читать далее
Всего голосов 6: ↑6 и ↓0 +6
Комментарии 3

ChibiOS: легковесная RTOS

Время на прочтение 4 мин
Количество просмотров 29K
Программирование микроконтроллеров *
Из песочницы

В этой статье я хочу представить и вкратце описать члена семейства ОС реального времени — ChibiOS.
Подробности
Всего голосов 32: ↑31 и ↓1 +30
Комментарии 14

OpenMCAPI: одновременный запуск Linux и RTOS на многоядерных процессорах

Время на прочтение 10 мин
Количество просмотров 15K
Блог компании Promwad Open source *Системное программирование *Производство и разработка электроники *


В повседневной практике разработчика встраиваемых систем приходится сталкиваться с необходимостью запуска двух и более разноплановых ОС на n-ядерных системах на кристалле. Это, как правило, Linux и специализированная RTOS. На плечи Linux ложится работа с тяжеловесными стеками протоколов, а RTOS же занимается задачами реального времени.
 
Одна из основных задач, которая встает при такой организации системы — обеспечение механизма взаимодействия, то есть межъядерный обмен данными. Если вам интересно узнать один из вариантов решения на базе открытой библиотеки OpenMCAPI, пролистать пару десятков строк программного кода и увидеть реальные цифры пропускной способности при использовании этой библиотеки, добро пожаловать под кат.
Читать дальше →
Всего голосов 33: ↑33 и ↓0 +33
Комментарии 15

Новый курс по микроконтроллерам — совместный проект индустрии и университетов

Время на прочтение 2 мин
Количество просмотров 20K
Assembler *Параллельное программирование *Программирование микроконтроллеров *
Британская компания, две американские компании и 18 университетов (включая российские МИЭТ, ИТМО, СГАУ, ННТУ) сотрудничали, чтобы выпустить современный курс по микроконтроллерам c небольшой привязкой к интернету вещей. Об этом – сегодняшний пресс-релиз Imagination Technologies, Microchip Technology и Digilent (отделения National Instruments). Главный автор — профессор Александр Дин из университета Северной Каролины. В отличие от более легковестных курсов интернета вещей, новый курс подводит под предмет твердую инженерную базу – в нем подробно обсуждается использование RTOS-ов, архитектура микропроцессорного ядра микроконтроллера, протоколы периферии и даже оптимизация алгоритмов при программировании.

07_Communications

Скачать курс можно здесь:

https://community.imgtec.com/downloads/connected-microcontroller-lab-v1.2/

В пресс-релизе, помимо цитат из США, Великобритании, Германии, Китая, есть и цитата из России:
“MIET is part of Imagination’s MIPSfpga and Connected MCU Lab beta-testing programs. Our students have benefited from the MIPSfpga hands-on workshops and we are looking forward to implementing the Connected MCU Lab at our university because this course offers an up-to-date and well-structured curriculum for teaching embedded solutions to future engineers.”

– Alexey Pereverzev, Head of Computer Engineering, National Research University of Electronic Technology (MIET), Russia



Пару десятков слайдов из курса, чтобы вы почувствовали его вкус:

Читать дальше →
Всего голосов 16: ↑16 и ↓0 +16
Комментарии 37

NRF51822: дружим BLE и RTOS

Время на прочтение 13 мин
Количество просмотров 8.4K
Беспроводные технологии *Программирование микроконтроллеров *
Из песочницы


Современные тенденции в технике идут по пути все большей интеграции – прогресс позволяет делать процесс разработки электронных устройств все больше похожим на сборку конструктора. Одним из наиболее ярких примеров является огромное количество так называемых «систем на чипе» — SoC, связка из микроконтроллера и периферии практически на любой вкус. Сегодня мы с вами рассмотрим одну из таких систем, чип NRF51822 от Nordic Semiconductor — решение для систем, заточенных под работу с технологией BLE, включенной в стандарт Bluetooth 4.0.

А поскольку электронные устройства все больше увеличивают уровень интеграции, то почему бы и в программировании не подняться на более высокий уровень абстракции и сделать Bluetooth приложение под управлением операционной системы реального времени – RTOS.
Нашей целью в рамках этой статьи будет сделать простое встроенное приложение для NRF51822 под управлением RTOS Keil-RTX которое будет опрашивать АЦП раз в секунду и записывать полученные значения в характеристики BLE. Если Вас заинтересовала эта тема — добро пожаловать под кат.
Читать дальше →
Всего голосов 25: ↑25 и ↓0 +25
Комментарии 8

ARM MBED OS. Работа с произвольным МК STM32 под PlatformIO

Время на прочтение 13 мин
Количество просмотров 30K
Программирование микроконтроллеров *
imageКогда в январе сего года я писал материал о файловой системе LittleFS (интегрированной в состав arm mbed os), то обещал в скорейшем времени описать создание проекта с arm mbed os для произвольного микроконтроллера STM32. Как известно, онлайн IDE от ARM (а точнее, выделенного подразделения Arm mbed) поддерживает, во-первых, строго определенное число отладочных плат, и число их невелико; во-вторых, экспортирует онлайн-примеры, на базе которых можно строить какие-то свои проекты, только для наиболее известных IDE: ARM, uVision KEIL и IAR. Более того, некоторые примеры не экспортируются вовсе. То есть, доступны для экспорта или только варианты для IAR, или только для KEIL, и так далее. Так что, как в то время показалось, научиться “прикручивать” arm mbed os к любому МК было бы не лишним вовсе.

Однако, жизнь вносит свои коррективы в любые планы, и работать в этом направлении длительное время не получалось. Но вопрос оставался открытым, и теперь, по прошествии значительного времени, я возвращаюсь к тематике.
Читать дальше →
Всего голосов 20: ↑20 и ↓0 +20
Комментарии 7

Свой task switch logging за один день

Время на прочтение 3 мин
Количество просмотров 1.9K
Программирование микроконтроллеров *
Еще на заре своей карьеры мне довелось поработать с RTOS VxWorks и средой разработки Tornado. Впечатления остались крайне положительные (тем более что сейчас есть с чем сравнивать), но пост не об этом. Составной частью системы тогда была система сбора и визуализации информации о переключении задач в реальном времени. Сразу скажу, что вещь крайне полезная, не зря ведь говорят, что лучше один раз увидеть. Скажем, если у вас в системе есть хотя бы два десятка задач, то с уверенностью в 99% можно сказать, что вы сильно удивитесь, когда увидите визуализацию переключения задач — она будет совсем не такой, какой вы ее себе представляли.

О пользе же, например, того, что в случае неожиданного сбоя, зависания или перезагрузки вы сможете увидеть последние мгновения жизни системы, даже и говорить не приходится!

Но что же делать, если приходится работать с RTOS и окружением, где такого удобного механизма нет? Конечно же, сделать его самому!

Читать дальше →
Всего голосов 4: ↑4 и ↓0 +4
Комментарии 6

Quantum Leaps QP и UML statecharts

Время на прочтение 6 мин
Количество просмотров 7.3K
Разработка веб-сайтов *UML Design *
Из песочницы

Предисловие


Данная статья, как мне кажется, будет интересна тем, кто знаком с UML диаграммами состояний и последовательности (statecharts diagram и sequence diagram), а также с событийно-ориентированным программированием (event-driven programming).

Вступление


Кроссплатформенный фреймворк QP (Quantum Platform) от компании Quantum Leaps представлен его создателями как средство разработки RTOS на C/C++. Он позволят существенно увеличить скорость разработки и надежность приложений, а также имеет мощный инструментарий по отладке и логированию. Ко всему этому добавляется еще и то, что QP является очень гибким и легким: разделен на множество модулей, почти каждый из которых можно реализовать самому при сборке фреймворка или воспользоваться предложенным решением; множество настроек выполняется во время прекомпиляции.
Читать дальше →
Всего голосов 17: ↑15 и ↓2 +13
Комментарии 8

Два подхода к проектированию ПО для embedded

Время на прочтение 9 мин
Количество просмотров 35K
Программирование микроконтроллеров *
Хочу немного рассказать о двух подходах проектирования ПО в embedded. Два подхода эти – c использованием суперцикла или же с использованием RTOS (Real-Time Operation System, операционная система реального времени).

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

Надеюсь, будет интересно всем тем, кто хочет заглянуть в мир разработки для встраиваемых систем. Для тех, кто в embedded уже собаку съел, скорее всего, не будет ничего нового.
Читать дальше →
Всего голосов 43: ↑43 и ↓0 +43
Комментарии 49

Альтернативный подход к проектированию ПО для Embedded

Время на прочтение 7 мин
Количество просмотров 15K
Программирование микроконтроллеров *
Из песочницы
Данный топик я решил написать после ознакомления со статьей «Два подхода к проектированию ПО для embedded». При прочтении которой я наткнулся на фразу: «Если же система собирается стать большой, соединяющей в себе много разных действий и реакций, которые к тому же критичны ко времени – то альтернативы использования ОС реального времени нет». «Как это нет?», — подумал я. Конечно, если речь идет о больших высоконагруженных системах реального времени, где используются большие процессоры, то без ОС может не обойтись, а вот для более скромных микроконтроллерных решений вполне существует альтернативный вариант. Ведь задачки можно выполнять при помощи обычного switch-case и при этом обеспечивать необходимое время реакции.

В данной статье я расскажу как это бывает
Всего голосов 24: ↑19 и ↓5 +14
Комментарии 47

Разработка коммерческого электронного устройства с нуля

Время на прочтение 6 мин
Количество просмотров 82K
Программирование микроконтроллеров *
Из песочницы
Приветствую!

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

С чего все начиналось


Изначально мы занимались разработкой программного обеспечения для чип-тюнинга. Одна из основных задач которого — считать прошивку из ЭБУ (электронный блок управления двигателем) и записать ее обратно. Понятное дело, что для этих целей нужно каким-то образом связать компьютер и ЭБУ при помощи адаптера. Когда раньше подавляющее количество ЭБУ использовало простейший способ приема-передачи данных, достаточно было использовать простейший адаптер на транзисторах или специализированной микросхеме. Однако на сегодняшний день большинство автомобилей для «общения» своих компонентов со внешней средой используют CAN шину. Адаптер для CAN шины на транзисторах уже не соберешь, и тут однозначно нужен процессор, который будет управлять всем по определенной программе.
Так возникла первая проблема — как побороть CAN шину. Для того, чтобы не изобретать велосипед выбор сделан на использовании готового адаптера, который работает по стандарту J2534. Для тех, кто не в курсе, стандарт J2534 это стандарт, описывающий аппаратную и программную части устройства, с помощью которого можно произвести подключение к ЭБУ посредством компьютера. Разработали его американцы. Основной причиной его разработки стало законодательное закрепление возможности обновление прошивки ЭБУ не специализированным дилерским сервисом, а любым желающим. Собственно, если каждый желающий может обновить прошивку на своем телефоне, то почему он не может это сделать со своим автомобилем.

Самый доступный импортный аналог стоит в районе 200 долл. США. Как впоследствии оказалось, два одинаковых устройства, удовлетворяющие стандарту J2534, могут работать по-разному с одним и тем же программным обеспечением. Поэтому изначально пришлось привязаться к конкретному производителю и его устройству.
Читать дальше →
Всего голосов 61: ↑57 и ↓4 +53
Комментарии 44

Носимая новогодняя гирлянда. С управлением по Bluetooth LE

Время на прочтение 2 мин
Количество просмотров 23K
Программирование микроконтроллеров *Носимая электроника DIY или Сделай сам Электроника для начинающих


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

Представляю открытый проект новогодней гирлянды на основе LED ленты со светодиодами WS2812B. Гирлянда питается от 4-х AA аккумуляторов. С текущими настройками проект поддерживает 122 светодиода на ленте, но легко может быть расширен до 1000 светодиодов и более. Гибкий перенастраиваемый алгоритм генерации световых эффектов. Проект содержит программу управления гирляндой с телефонов или планшетов, компилируемую без модификаций под iOS, Android и Windows.
Читать дальше →
Всего голосов 23: ↑22 и ↓1 +21
Комментарии 21

Вся правда об ОСРВ от Колина Уоллса

Время на прочтение 9 мин
Количество просмотров 17K
Программирование микроконтроллеров *
Вся правда об ОСРВ. Статья #1.

Операционные системы реального времени: введение

Эта серия статей посвящена тщательному изучению всех аспектов операционных систем реального времени (ОСРВ). Статьи ориентированы на разработчиков, которым любопытно узнать, как работают ОСРВ и как ими пользоваться. Отправной точкой станет рассуждение о системах реального времени в общем, далее речь пойдет о том, как ОСРВ могут упростить их реализацию и сделать полученный код более надежным.

Заглянув во внутрь ОСРВ, мы посмотрим, как работает планировщик задач. Благодаря многопоточности создается впечатление, что ЦП выполняет несколько операций одновременно. Это не магия, понимание принципов работы планировщика задач доступно даже неопытному инженеру-программисту. Мы поговорим и о других объектах ОСРВ: о взаимодействии между задачами и синхронизации, о режиме реального времени, об управлении памятью и т. д., все будет точно описано и подкреплено примерами кода.
Читать дальше →
Всего голосов 8: ↑7 и ↓1 +6
Комментарии 2

Вся правда об ОСРВ от Колина Уоллса. Статья #3. Задачи и планирование

Время на прочтение 8 мин
Количество просмотров 6.7K
Программирование микроконтроллеров *
Перевод


Мы рассмотрели многозадачность, свойство операционной системы выполнять несколько квазинезависимых программ одновременно. Перед тем, как мы более подробно рассмотрим задачи, необходимо разобраться с терминами.
Читать дальше →
Всего голосов 8: ↑8 и ↓0 +8
Комментарии 9

Вся правда об ОСРВ от Колина Уоллса. Статья #4. Задачи, переключение контекста и прерывания

Время на прочтение 8 мин
Количество просмотров 4.1K
Программирование микроконтроллеров *
Перевод

Идентификаторы задач (Task Identifiers)


Необходимо уметь идентифицировать каждую задачу в системе. Это требование важно и для других объектов ядра, но в задачах есть некоторые нюансы, которые соответствуют теме данной статьи.



Разработчики ОСРВ используют разные подходы к идентификации задач, но можно выделить четыре общие стратегии:

  • Задача идентифицируется с помощью указателя (pointer) на свой «блок управления» (“control block”). Указатели всегда уникальны, а также удобны в использовании, поскольку доступ к блоку управления требуется при многих вызовах API. Это подразумевает, что все данные о задаче хранятся в оперативной памяти (RAM), что может быть неэффективно. Указатель обычно занимает около 32 бит памяти.
  • Задача может быть определена с помощью произвольного «порядкового числа» (index number). Это значение может пригодиться при предоставлении доступа к записям в определенных таблицах. Такой идентификатор может занимать восемь или меньше бит памяти, в зависимости от ограничений по количеству задач, которые поддерживаются ОСРВ.
  • Некоторые ОСРВ разрешают только одну задачу на каждый уровень приоритета и, следовательно, используют приоритет для уникальной идентификации задачи. Это означает, что приоритет задачи не может быть изменен. Этот подход является разновидностью предыдущего подхода.
  • Задачи могут иметь имена, которые являются символьными строками (character string). Это может быть полезно для отладки, но вряд ли будет эффективным средством уникальной идентификации задачи. ОСРВ, которые поддерживают именование задач, как правило, имеют дополнительный идентификатор (например, указатель), который используется вызовами API и т. д. Для большинства встраиваемых систем текстовые имена — это накладные расходы; хороший отладчик позволяет называть их локально на хосте.
Читать дальше →
Всего голосов 10: ↑10 и ↓0 +10
Комментарии 1

Вся правда об ОСРВ от Колина Уоллса. Статья #5. Взаимодействие между задачами и синхронизация

Время на прочтение 7 мин
Количество просмотров 3.3K
Программирование микроконтроллеров *
Перевод


В предыдущих статьях мы рассмотрели многозадачную модель, и выяснили, что каждая задача является квазинезависимой программой. Хотя задачи во встраиваемых системах имеют определенную степень независимости, это не означает, что они не «знают» друг о друге. Некоторые задачи будут действительно изолированы от других, но взаимодействие и синхронизация между ними является распространенным требованием. Этот механизм является одной из ключевых функций ОСРВ. Диапазон функций может варьироваться в зависимости от ОСРВ, поэтому в этой статье мы рассмотрим общедоступные варианты.
Читать дальше →
Всего голосов 8: ↑6 и ↓2 +4
Комментарии 0

Открытый проект модуля управления электрическими моторами. Технология разработки ПО

Время на прочтение 5 мин
Количество просмотров 14K
Программирование микроконтроллеров *Производство и разработка электроники *DIY или Сделай сам Электроника для начинающих

Прошивку для внутренностей современной встраиваемой электроники написать с нуля практически нереально. На это просто не дают времени. Поэтому ПО для встраиваемых систем создается на базе
готовых программных платформ — фреймворков. Чем более развит фреймворк, тем быстрее идет разработка. Здесь пойдет речь о фреймворке созданном мной специально для модулей управления моторами и успешно применяемом уже в течении некоторого времени.
Читать дальше →
Всего голосов 18: ↑17 и ↓1 +16
Комментарии 3

Embox RTOS на Raspberry Pi

Время на прочтение 4 мин
Количество просмотров 11K
Блог компании Embox Open source *Системное программирование *Разработка на Raspberry Pi *
image Привет!

У нас часто спрашивают есть ли в Embox поддержка Raspberry Pi. Да, есть. Описание как запустить теперь тут. В этой статье я хочу чуть подробней об этом рассказать.
Читать дальше →
Всего голосов 23: ↑21 и ↓2 +19
Комментарии 9

MitM-like поддержка RTOS в GDB

Время на прочтение 10 мин
Количество просмотров 1.4K
Программирование *Отладка *Программирование микроконтроллеров *

Долго думал, можно ли переопубликовывать статью на Хабре, проштудировал правила, вроде как сейчас это не возбраняется. Если ошибся — исправлюсь :)


Итак...


Какое-то время назад я писал код прошивки для грабберов Epiphan линейки AV.io:


  • AV.io HD — наш пилот, на котором многое было отлажено и сформирована архитектура
  • AV.io SDI — закрепляем позиции
  • AV.io 4K — уже новое железо и новые подходы, теперь запускаемся практически мгновенно
  • KVM2USB 3.0 — глубокое переосмысление AV.io HD. По сути, благодаря заложенному потенциалу для модернизации в базовую модель, практически без модификации железа, чисто софтом смогли сделать новый продукт.

Там был задействован Cypress FX3, а SDK был построен поверх ThreadX. В качестве JTAG отладчика можно использовать Olimex ARM-USB-OCD-H в связке с OpenOCD. К сожалению, OpenOCD ничего не знает про треды в RTOS и, хотя, базовая поддержка присутствует в коде, конкретно для нашего процессора использовалась схема стекинга регистров, которая отличалась от того, что было уже реализовано. Пришлось разбираться и дорабатывать. Профиты от использования JTAG для разработки трудно переоценить, как минимум в случае распределённой работы.


Итак, время идёт. Теперь очередь за FPGA от Xilinx и его софтовым процессором MicroBlaze, где можно запустить портированый FreeRTOS версии 10.x. Но проблема ровно такая же: поддержки тредов в отладчике нет!

Читать дальше →
Всего голосов 13: ↑13 и ↓0 +13
Комментарии 8

Уязвимости real-time операционок

Время на прочтение 5 мин
Количество просмотров 11K
Блог компании НПП ИТЭЛМА Информационная безопасность *Промышленное программирование *Программирование микроконтроллеров *Транспорт
Перевод
В июле 2019 года в операционной системе реального времени VxWorks, на которой работают более 2 миллиардов устройств, найдены критические уязвимости. На Хабре про это не написали ни слова, хотя это важная новость в области промышленного программирования, RTOS и automotive.


Wind River VxWorks используется для ежедневной работы множества устройств интернета вещей, таких как веб-камеры, сетевые коммутаторы, роутеры, файрволлы, VOIP телефоны, принтеры и устройства видеосвязи, а также в светофорах.

Кроме того VxWorks используется в safety-critical системах, включая SCADA-системы, поезда, лифты, промышленные контроллеры, мониторы состояния пациентов, полетные Wi-Fi системы и даже марсоходы.

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

Согласно новому отчету Armis, совокупность уязвимостей называют URGENT/11, так как в данной группе 11 элементов, 6 из которых критически важны и уязвимы к разрушительным кибератакам.
Всего голосов 17: ↑15 и ↓2 +13
Комментарии 0
1