Как стать автором
Обновить
  • по релевантности
  • по времени
  • по рейтингу

Mybuild — система сборки для модульных приложений

Блог компании Embox Разработка веб-сайтов *Программирование *
Недавняя статья про новую систему сборки для Qt напомнила мне ситуацию, которая была в нашем проекте несколько лет назад — тогда мы тоже искали подходящую систему сборки. Проект довольно комплексный и ему необходимо иметь гибкую систему конфигурирования. В результате сейчас мы используем и развиваем собственную систему сборки Mybuild.

Кому интересно узнать, что у нас получилось, и что это за проект такой, которому понадобилась собственная система сборки, добро пожаловать под кат.
Читать дальше →
Всего голосов 16: ↑13 и ↓3 +10
Просмотры 5.6K
Комментарии 19

Системные вызовы MIPS

Блог компании Embox Assembler *Системное программирование *
Этим летом appplemac опубликовал статью, посвященную изучению ассемблера MIPS. В ней, в частности, была рассмотрена команда syscall, генерирующая системный вызов. Автор сосредоточился на объяснении ассемблера MIPS, и на мой взгляд, недостаточно подробно рассказал, что же это такое — системный вызов. Я в тот момент занимался переносом проекта под архитектуру MIPS, разбирался с прерываниями, исключениями и системными вызовами.

Сейчас, когда код уже написан и отлажен, я решил написать статью, которая бы более подробно раскрывала, как работает механизм системных вызовов в MIPS. Можно рассматривать ее как дополнение к той статье об ассемблере.
Читать дальше →
Всего голосов 33: ↑32 и ↓1 +31
Просмотры 20K
Комментарии 7

Организация многозадачности в ядре ОС

Блог компании Embox Open source *C *
Из песочницы
Волею судеб мне довелось разбираться с организацией многозадачности, точнее псевдо-многозадачности, поскольку задачи делят время на одном ядре процессора. Я уже несколько раз встречала на хабре статьи по данной теме, и мне показалось, что данная тема сообществу интересна, поэтому я позволю себе внести свою скромную лепту в освещение данного вопроса.
Сначала я попытаюсь рассказать о типах многозадачности (кооперативной и вытесняющей). Затем перейду к принципам планирования для вытесняющей многозадачности. Рассказ рассчитан скорее на начинающего читателя, который хочет разобраться, как работает многозадачность на уровне ядра ОС. Но поскольку все будет сопровождаться примерами, которые можно скомпилировать, запустить, и с которыми при желании можно поиграться, то, возможно, статья заинтересует и тех, кто уже знаком с теорией, но никогда не пробовал планировщик “на вкус”. Кому лень читать, может сразу перейти к изучению кода, поскольку код примеров будет взят из нашего проекта.
Ну, и многопоточные котики для привлечения внимания.

Читать дальше →
Всего голосов 92: ↑92 и ↓0 +92
Просмотры 70K
Комментарии 19

fork() vs. vfork()

Блог компании Embox Системное программирование *C *
Из песочницы
Послушайте!
Ведь, если звезды зажигают — значит — это кому-нибудь нужно?

В. В. Маяковский, 1914


Я занимаюсь программированием для встроенных систем, и данную статью решил написать для того, чтобы лучше разобраться с проблемой использования системных вызовов fork() и vfork(). Второй из них часто советуют не использовать, но ясно, что появился он не просто так.

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

В качестве бонуса будет приведено описание реализаций vfork()/fork() в нашем проекте. Прежде всего, мой интерес связан с применением этих вызовов во встроенных системах, и главной особенностью приведённых реализаций является отсутствие виртуальной памяти. Возможно, хабровчане, хорошо разбирающиеся в системном программировании и во встроенных системах, дадут советы и поделятся опытом.

Кому интересно, прошу под кат.
Читать дальше →
Всего голосов 80: ↑74 и ↓6 +68
Просмотры 36K
Комментарии 29

Тестирование встроенных систем

Блог компании Embox Разработка веб-сайтов *Системное программирование *TDD *
Из песочницы
image Я являюсь участником проекта по разработке ОСРВ Embox для встроенных систем. Чаще всего ОС для встроенных систем поддерживает множество аппаратных платформ, и мы не исключение. Также в проекте имеется множество сервисов и библиотек: ssh, telnet, Qt и т.д. Все эти сервисы и библиотеки хотелось бы иметь в рабочем состоянии на различных платформах.

Я хорошо помню то время, когда именно мне приходилось поддерживать в рабочем состоянии Qt. Это был ужас! Вот я пришел днем на работу, что-то опять сломано. Начинаю разбираться. Оказывается, что кто-то пофиксил багу в сетевом стеке и теперь Qt не может создать сокет. Короче говоря, Qt ломалось практически ежедневно и по самым неожиданным причинам.

Естественно, напрашивалось решение внедрить в проект некоторое автоматизированное тестирование различных сервисов. В чем же проблема сделать сервер, который будет все это тестировать?

Основная проблема заключается в специфике встроенных систем. А именно, в отличие от систем общего назначения, тестам приходится выполняться в среде со специфической аппаратной поддержкой. Например, у них мало памяти, и поставить средство интеграционного тестирования внутрь такой железки не представляется возможным. То есть нужно тестировать «снаружи». Итак, давайте ближе к делу.
Читать дальше →
Всего голосов 25: ↑25 и ↓0 +25
Просмотры 23K
Комментарии 16

[Питер] Встреча с техлидом OpenSource ОС Embox: Современное встроенное ПО и классика Таненбаума

Блог компании JUG Ru Group Системное программирование *
В последнее время все более активно развивается тематика встроенных (embedded) систем и многие крупные компании такие как Google, Microsoft, Intel вкладывают огромные ресурсы в исследования и разработки в данной области. Взять, например, проект Майкрософт по созданию специализированной ОС для умных домов homeos или процессоры от Intel для встроенных решений Intel Quark, а о различных исследовательских проектах от Google по робототехнике и говорить не стоит, они и так на слуху.

Подобные системы всегда имели свои особенности: ограниченность вычислительных ресурсов, различные процессорные архитектуры, порядок байт и многое другое. Всё это накладывает отпечаток на процесс разработки встроенного ПО. Несмотря на то, что в последнее время для создания встроенных систем все чаще применяются принципы и технологии из области “обычных” десктопных систем, сам процесс остается специфичным. Поэтому считается, что порог вхождения при разработке системного и встроенного ПО очень высокий. Для подготовки хороших специалистов в этой области на Мат-Мехе СПбГУ организовали исследовательский проект по созданию ОС реального времени для встроенных применений Embox, в котором активную роль играют студенты.



В четверг, 27 ноября, в 20:00 в бизнес-инкубаторе «Ингрия» состоится встреча CodeFreeze с Антоном Бондаревым, техническим руководителем проекта Embox. В докладе будет раскрыты аспекты разработки встроенного ПО на примере этой ОС.
Читать дальше →
Всего голосов 27: ↑25 и ↓2 +23
Просмотры 7.9K
Комментарии 12

Как мы строили систему аварийной сигнализации дата-центра

Блог компании Embox Разработка веб-сайтов *Промышленное программирование *
Из песочницы
image
Так получилось, что в команде проекта Embox у меня больше всех опыта в области АСУ: на предыдущем месте работы я разрабатывал промышленные контроллеры. Поэтому не удивительно, что когда возникла задача сделать систему автоматического управления светодиодами в датацентре, именно меня попросили проработать архитектуру проекта. Изначально планировалось закупить готовые контроллеры удаленного управления портами ввода-вывода, но после более тщательной проработки требований стало ясно, что для заказчика более предпочтителен вариант разработки заказного контроллера. Собственно его вы и видите на фотографии.
Тем, кому интересно узнать о том, на какие грабли мы наступили, как выглядят взорвавшиеся микросхемы, как правильно подключать землю на DC/DC конвертере, ну и, конечно, почему мы применили наш проект, прошу под кат. Осторожно, много картинок!
Читать дальше →
Всего голосов 15: ↑13 и ↓2 +11
Просмотры 20K
Комментарии 20

Железячники vs. Программисты

Блог компании Embox Open source *Программирование *
imageВсем привет!

Я — один из основателей открытого проекта Embox, и по совместительству являюсь генеральным директором компании ООО “Ембокс”. Как не трудно догадаться, её основная цель — это оказание коммерческих услуг на базе нашего проекта.

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

Эта статья первая в нашем блоге, и мне кажется, что будет уместно рассказать не столько о технических решениях и находках, которые мы применяем в нашем проекте, это, безусловно, будет в последующих статьях, а сделать своего рода статью-приветствие. И поскольку Embox — операционная система для встраиваемых решений, речь в статье пойдет прежде всего о сфере embedded systems. По сути дела, в статье я хочу поделиться своим представлением о возможном направлении развития встраиваемого ПО, конечно, подкреплять всё это я буду реальными ситуациями, с которыми мы сталкивались в процессе работы над проектом. Поэтому те, кто интересуется встраиваемыми системами и кому не лень прочитать пару страниц жалоб на трудное детство рассуждений, прошу под кат.
Читать дальше →
Всего голосов 54: ↑47 и ↓7 +40
Просмотры 44K
Комментарии 65

Организация виртуальной памяти

Блог компании Embox Программирование *Системное программирование *
Привет, Хабрахабр!

В предыдущей статье я рассказал про vfork() и пообещал рассказать о реализации вызова fork() как с поддержкой MMU, так и без неё (последняя, само собой, со значительными ограничениями). Но прежде, чем перейти к подробностям, будет логичнее начать с устройства виртуальной памяти.

Конечно, многие слышали про MMU, страничные таблицы и TLB. К сожалению, материалы на эту тему обычно рассматривают аппаратную сторону этого механизма, упоминая механизмы ОС только в общих чертах. Я же хочу разобрать конкретную программную реализацию в проекте Embox. Это лишь один из возможных подходов, и он достаточно лёгок для понимания. Кроме того, это не музейный экспонат, и при желании можно залезть “под капот” ОС и попробовать что-нибудь поменять.
Читать дальше →
Всего голосов 39: ↑39 и ↓0 +39
Просмотры 54K
Комментарии 4

Легкие потоки в Embox

Блог компании Embox Open source *Системное программирование *C *

Сегодня, как и обещала, я продолжу тему планирования легких сущностей, которую уже начала в своем цикле статей. В нем я рассказала о внутреннем устройстве tasklet, workqueue и protothread. Конечно, тема не ограничивается лишь этими примерами: есть еще FreeRTOS с ее coroutine, или GNU Portable threads; или можно отойти от структур и библиотек, применяющихся в ОС, и вспомнить различные green threads, которых становится все больше и больше.

На этот раз я хочу поделиться тем, как мы реализовали легкие потоки в проекте Embox. С одной стороны мы постарались учесть опыт предыдущих разработок, с другой — привнести что-то новое.
Мышь Embot не несет ответственности за код в статье
Всего голосов 23: ↑21 и ↓2 +19
Просмотры 8.5K
Комментарии 3

OS Day в Иннополисе

Блог компании Embox Open source *
Недавно я посетил конференцию разработчиков операционных систем OS Day. Организаторами были Дмитрий Завалишин, автор ОС Фантом, и ИСП РАН. Это уже вторая конференция, и на этот раз она проходила совместно с РИФ. Оба эти мероприятия были приурочены к официальному открытию города Иннополис, в котором, собственно, всё и происходило.

Я расскажу только о мероприятиях OS Day, поскольку сам в большинстве из них участвовал.

Отдавая должное гостеприимному Иннополису, я скажу, что по моим ощущениям, результаты гораздо заметнее, чем в Сколково. Стройка идёт очень активно, уже вовсю работает университет, и вообще жизнь в городе действительно есть, что не может не вселять надежду на светлое будущее.
Читать дальше →
Всего голосов 21: ↑17 и ↓4 +13
Просмотры 9.8K
Комментарии 13

Fault detection на примере определения поверхности автономной машинкой

Блог компании Embox Алгоритмы *Математика *
Всем привет!

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

Так случилось, что в Новый Год у меня в руках оказалась китайская машинка на радиоуправлении. К сожалению, она не ездила. Чека из магазина у меня не было (машинка была подарком), да и, честно говоря, хотелось её разобрать и посмотреть на элементы схемы. Обычным способом схему было не достать, нужно было выпаивать. Пожалуй, в тот самый момент, когда я взялся за паяльник, я и понял, что вернуть машинку в магазин уже точно не получится. Короче говоря, всю зиму на моём подоконнике так и пылились запчасти, пока однажды мне на глаза не попалась статья от NASA про обнаружение разладки в марсоходе.

Только представьте на минуту: где-то далеко на красной планете едет марсоход, обвешанный датчиками, по поверхности, которую едва ли можно назвать дружелюбной. Поэтому нужно следить за тем, чтобы он не перевернулся, не застрял в песках, не скатился с горки, или наоборот на нее не заехал. Как это сделать? Вот на такой непростой вопрос мне и хотелось ответить.
Читать дальше →
Всего голосов 32: ↑32 и ↓0 +32
Просмотры 15K
Комментарии 9

Существует ли отечественный процессор Мультиклет?

Блог компании Embox Системное программирование *Компиляторы *C *
В этом посте я хочу рассказать о наших усилиях по использованию российского процессора с оригинальной архитектурой Мультиклет. Нам интересен перенос нашей ОСРВ Embox на данную платформу, так как это даст возможность использовать довольно большое количество приложений, которые у нас имеются — например, SIP-телефон, о котором мы уже рассказывали.

Речь пойдёт о проблемах, с которыми мы столкнулись в процессе переноса, и о том, как мы эти проблемы устраняли. Возможно, это будет интересно не только тем, кто планирует использовать данный процессор, но и тем, кому по каким-то причинам будет необходимо перейти со стандарта c99 и gcc на стандарт c89 и какой-нибудь несовместимый с gcc компилятор. Также в заключении я позволю себе добавить личные ощущения от взаимодействия с данной платформой.
Читать дальше →
Всего голосов 76: ↑74 и ↓2 +72
Просмотры 44K
Комментарии 95

Ещё один способ автоматического вызова unit-тестов на языке Си

Блог компании Embox Ненормальное программирование *Системное программирование *TDD *C *
На Хабре уже есть несколько статей о том, как разрабатывать модульные тесты на языке Си. Я не собираюсь критиковать описанные подходы, а лишь предложу ещё один — тот, которым мы пользуемся в проекте Embox. Пару раз мы уже ссылались на него на Хабре.

Кому интересно, прошу подкат! Но предупреждаю: там много портянок из макросов и «линкерской» магии.
Читать дальше →
Всего голосов 33: ↑29 и ↓4 +25
Просмотры 12K
Комментарии 3

Использование библиотеки stm32cube для создания платформо независимых драйверов

Блог компании Embox Open source *Системное программирование *C *Программирование микроконтроллеров *
Всем привет! В данной статье я бы хотел поделиться опытом создания драйверов для платформ серии stm32. Идея заключается в том, чтобы в ОС Embox, не приходилось создавать драйвера для каждой серии платформ STM32F3, STM32F4 и так далее. Ведь кроме того, что это занимает время, новый код неизбежно будет содержать новые ошибки.
Читать дальше →
Всего голосов 21: ↑19 и ↓2 +17
Просмотры 13K
Комментарии 33

Отечественный процессор от компании ЭЛВИС

Блог компании Embox Open source *Системное программирование *

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

В этой статье речь пойдёт об отечественных производителях процессоров (микроконтроллеров). Сейчас эта тема достаточно популярна: например, этому была посвящена конференция OSDay. В общем, в этот раз к нам попала плата от компании «Электронные вычислительно-информационные системы» ЭЛВИС. Мы затащили туда свой Embox и решили, что пользователям хабра было бы интересно узнать и об этой эпопее.
Читать дальше →
Всего голосов 52: ↑52 и ↓0 +52
Просмотры 30K
Комментарии 47

Почему стоило посетить OS Day 17

Блог компании Embox Open source *Программирование *Системное программирование *
Читая комментарии к статье о конференции OS Day 2017, я как разработчик одной из представленных в России ОСРВ Embox, был немного в шоке. Нет, в России все знают, что кроме BolgenOS и каких-то очередных распилов у нас ничего не умеют!
Но во-первых, мероприятие проходило в главном здании РАН, и вряд ли такая солидная организация пропустила бы поделки школьников, а во-вторых, комментарии писали пользователи хабра, а значит, технически грамотные люди, и в их осведомлённости об Alt Linux, KolibriOS, PhantomOS, ReactOS вряд ли можно усомниться. Я решил не вмешиваться в обсуждение, а написать собственное мнение о происходившем по итогам этой конференции.

Статья ни в коем случае не официальная, все официальные отчеты и пресс-релизы сделают организаторы. Здесь будут освещены только запомнившиеся лично мне моменты.
Читать дальше →
Всего голосов 22: ↑20 и ↓2 +18
Просмотры 6.4K
Комментарии 37

Как сделать context switch на STM32

Блог компании Embox Open source *Системное программирование *C *Программирование микроконтроллеров *
Добрый день!

Потоки… Переключение контекстов… Базовая сущность ОС. И конечно, при разработке библиотек и приложений мы всегда полагаемся на то, что реализация потоков безошибочна. Поэтому было неожиданно найти грубую ошибку в переключении потоков для STM32 на ОСРВ Embox, когда уже продолжительное время работали и сеть, и файловая система и многие сторонние библиотеки. И мы даже успели похвастаться о своих достижениях на Хабре.

Я бы хотел рассказать про то, как мы делали переключение потоков для Cortex-M, и тестировали на STM32. Кроме того, постараюсь рассказать о том как это сделано в других ОС — NuttX и FreeRTOS.
Читать дальше →
Всего голосов 27: ↑27 и ↓0 +27
Просмотры 20K
Комментарии 22

Как с помощью трех открытых проектов написать диплом

Блог компании Embox Open source *Графические оболочки *C *Программирование микроконтроллеров *
Не секрет, что в у нас в проекте используют обучают студентов. Точнее, студенты на базе проекта осваивают практические аспекты системного программирования: пишут дипломы, курсовые, занимаются исследовательской деятельностью и так далее. Вот об одном дипломе, успешно защищённом прошлым летом, и пойдет речь в данной статье.

Автором является Александра Бутрова AleksandraButrova, тема “Разработка графической подсистемы для встроенных операционных систем”. При написании диплома были использованы три открытых проекта: Embox, Nuklear и stb. Последний использовался только для загрузки картинок, а вот Nuklear являлся, по сути, виновником торжества. Можно сказать, что работа свелась к интеграции Nuklear и Embox. Первый предоставлял лёгкую графическую библиотеку, а Embox отвечал за встроенные системы.
Читать дальше →
Всего голосов 18: ↑18 и ↓0 +18
Просмотры 8.1K
Комментарии 14

Как поймать программиста на списывании и стоит ли этим заниматься?

Блог компании Embox Open source *Учебный процесс в IT


Побывал я тут в славном городе Переславле-Залесском на 13-й конференции “Открытое программное обеспечение в высшей школе”, организованной Базальт СПО и ИПС РАН. И показалось мне, что на данной конференции поднимались вопросы, которые могут быть интересны читателям Хабра. Среди них:
  • Как построить более эффективную систему высшего образования?
  • Как, и стоит ли вообще, контролировать списывание при обучении программированию?
  • Можно ли внести вклад в открытый проект не изменяя его исходный код?

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