Pull to refresh
  • by relevance
  • by date
  • by rating

Почти ОС реального времени: event-driven

Programming microcontrollers *
Пару слов введения:
Делаю систему контроля на базе AtMega32. Цель — отслеживать значение датчиков температуры и давления, управление нагрузкой и сброс отладочных логов в компьютер.

Плюс экранчик 2х16 символов и клавиатура на 7 клавиш. Аппаратную часть использовал готовую — набор NM8036 от МастерКита. А вот с программной частью засада: стандартный алгоритм, уже прошитый в наборе, примитивен и универсален, исходных кодов прошивки нет, обновления выходят в зашифрованном виде. Пришлось писать самому.

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

На форумах, посвященных программированию микроконтроллеров, наткнулся на упоминание об rtos — операционных системах реального времени. Почитал, скачал пару бесплатных, попробовал и принял решение: написать свое.

Читать дальше →
Total votes 75: ↑72 and ↓3 +69
Views 7.4K
Comments 36

Quantum Leaps QP и UML statecharts

Website development *UML Design *
Sandbox

Предисловие


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

Вступление


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

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

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

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

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

Читать дальше →
Total votes 4: ↑4 and ↓0 +4
Views 1.2K
Comments 6

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

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

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

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

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

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

В данной статье я расскажу как это бывает
Total votes 24: ↑19 and ↓5 +14
Views 9.1K
Comments 47

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

Promwad corporate blog Open source *System Programming *Manufacture and development of electronics *


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

Операционные системы реального времени для начинающих

C++ *
Tutorial
Привет, Хабр!
Сегодня я расскажу о такой интересной штуке как операционная система реального времени(ОСРВ). Не уверен, что это будет интересно для бывалых программистов, но, думаю, новичкам понравится.

Что такое ОСРВ?


Если мы посмотрим в Википедию, то увидим аж 4 определения.
Если же говорить вкратце — то ОСРВ — это операционная система, реагирующая на внешние события в определенный промежуток времени. Отсюда мы и можем понять основное предназначение ОСРВ — приборы, в которых необходима быстрая реакция на события (однако ни в коем случае не путайте работу ОСРВ с прерываниями).
Читать дальше →
Total votes 56: ↑19 and ↓37 -18
Views 80K
Comments 14

Time Triggered design — еще один подход к проектированию ПО для встраиваемых систем

Programming microcontrollers *
Когда-то давно я написал статью о принципах проектирования приложения для встраиваемых систем. Тогда я сказал, что есть два основных принципа — бесконечный цикл и ОС реального времени. А вот совсем недавно услышал, что есть еще и третий подход — так называемый Time Triggered Design.

В качестве ознакомления с подходом был использована книга «Patterns for time-triggered embedded systems» автора Michael J. Pont, для заинтересовавшихся — www.safetty.net/publications/pttes
Попытаюсь здесь коротко изложить концепцию.
Читать дальше →
Total votes 4: ↑4 and ↓0 +4
Views 4.6K
Comments 4

Первое публичное выступление RTOS Systemicus + видео

Website development *Assembler *
image

Доброй ночи, хабр!

Думаю, что пришло время выложить первое видео и первую информацию о своей операционной системе, полностью написанной на flat assembler. Знаю, что уже много написано и сделано подобного, но думаю, что любителям данной темы это будет немного интересно.

Читать дальше →
Total votes 53: ↑43 and ↓10 +33
Views 23K
Comments 53

Systemicus чаcть 2: GUI

Website development *Assembler *


Пост в продолжение данной темы. Чуть более месяца назад я показал ОС Systemicus и ее медленное подобие графического интерфейса. Всё это время (когда оно было в моем распоряжении) я работал над улучшениями и теперь представляю на суд общественности результаты. Быть может, данная статья поможет кому-нибудь в разработке своей GUI, т.к. я не нашел хороших материалов по некоторым аспектам данной темы.
Читать дальше →
Total votes 62: ↑54 and ↓8 +46
Views 22K
Comments 20

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

Programming microcontrollers *
Sandbox
Приветствую!

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

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


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

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

Примеры использования машины реального времени (MATLAB, Simulink, Программно-аппаратный симулятор)

Self Promo
Добрый день, уважаемая Аудитория!
В своей практике я часто сталкиваюсь с ситуацией, когда при упоминании мною в разговоре некой «машины реального времени» в глазах собеседника проскакивает миллион ассоциаций, к сожалению, не имеющих отношения к теме разговора.
В первой статье я хочу немного пролить свет на данную тему со столь необычно звучащим для русскоязычной инженерной аудитории названием.



Всех интересующихся запуском алгоритмов управления и физических моделей в виде моделей Simulink в режиме жесткого реального времени с минимальными трудозатратами — прошу под кат!
Внимание, много изображений!
Читать дальше →
Total votes 12: ↑11 and ↓1 +10
Views 16K
Comments 8

Открытый проект универсального микроконтроллерного модуля

Industrial Programming *Programming microcontrollers *Manufacture and development of electronics *


После беглого знакомства в прошлой статье с микроконтроллерами семейства Kinetis от фирмы Freescale я хотел бы представить проект микроконтроллерного модуля на этих чипах.
Читать дальше →
Total votes 13: ↑13 and ↓0 +13
Views 16K
Comments 15

Компактная ОС для ARM процессоров

Assembler *C *SCADA *
Sandbox
“Кажется, что совершенство достигается не тогда, когда нечего более добавить, а тогда, когда нечего больше убрать."

(Антуан де Сент-Экзюпери)

image


По теме изучения программирования встроенных систем, ОС реального времени, Ассемблера и С позвольте представить очень простую операционную систему StartOS.

Предназначение:

— если вам необходимо создать устройство, начинающее работать через 1-2 секунды после включения питания и способное реагировать на сигналы из внешнего мира в течение микросекунд;
— для быстрого создания систем управления объектами с выводом данных в Интернет;
— отработка идей, алгоритмов, изготовлении прототипов устройств;
— приобретение опыта программирования встроенных систем на языках C и Assembler;
— получение полного доступа к «железу» компьютерного устройства, например, для разработки самомодифицирующихся программ.

Некоторые свойства системы:

Время готовности после включения питания: < 1 сек
Объем двоичного кода программы: < 40 kB
Читать дальше →
Total votes 46: ↑43 and ↓3 +40
Views 36K
Comments 40

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

Assembler *Concurrent computing *Programming microcontrollers *
Британская компания, две американские компании и 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



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

Читать дальше →
Total votes 16: ↑16 and ↓0 +16
Views 19K
Comments 37

Обзор одной российской RTOS, часть 2. Ядро ОСРВ МАКС

C++ *Programming microcontrollers *
Я продолжаю выкладывать главы «Книги знаний» ОСРВ МАКС. Первая часть была общей. Сегодня вторая часть, посвященная ядру и приоритету задач.

Содержание (опубликованные и неопубликованные статьи):

Часть 1. Общие сведения
Часть 2. Ядро ОСРВ МАКС (настоящая статья)
Часть 3. Структура простейшей программы
Часть 4. Полезная теория
Часть 5. Первое приложение
Часть 6. Средства синхронизации потоков
Часть 7. Средства обмена данными между задачами
Часть 8. Работа с прерываниями

Задача


Как уже упоминалось, задача в ОСРВ МАКС является аналогом потока в ОС общего назначения. Одновременно в системе может исполняться произвольное число задач (в рамках доступных ресурсов, разумеется). В ОС общего назначения на этом можно было бы прекратить теоретизировать и переходить к практике, но в случае с ОС реального времени программист должен быть уверен, что он сделал всё верно и задачи будут гарантированно получать столько процессорного времени, сколько им требуется. А чтобы всё сделать верно, необходимо знать кое-какую теорию. Поэтому рассмотрим работу задач более подробно.
Читать дальше →
Total votes 12: ↑10 and ↓2 +8
Views 12K
Comments 11

Загрузка ОС на ARM

Аладдин Р.Д. corporate blog Information Security *Cryptography *System Programming *Development for Linux *
Недавно попросили в двух словах рассказать серьезным людям о загрузке операционной системы на ARM и дать оценку угроз безопасности этого процесса. Вообще ARM-процессоров и вообще ОС. Вы понимаете, все ведь слышали про эти ARM, и что такое ОС тоже все знают. Желательно, на уровне квадратиков со стрелками.

Загрузка ARM в четырех прямоугольниках — под катом.
Читать дальше →
Total votes 42: ↑38 and ↓4 +34
Views 52K
Comments 52