Baigudin Software avatar
Baigudin Software logo
home
ru region
en region

BOOS Core

Объектно-ориентированное операционное ядро реального времени для встраиваемых систем, разработанное на языке программирования C++.

PHP DOM Builder

Библиотека, разработанная на языке программирования PHP, для формирования валидных HTML документов и работы с ними.

Проект Baigudin Software успешно стартовал в программе Касперский Старт

Проект Baigudin Software успешно стартовал и представил операционное ядро BOOS Core в рамках программы «Касперский Старт» от «Лаборатории Касперского».

BOOS Core для сигнальных процессоров Texas Instruments семейства TMS320C64x

Дата: 10.08.2016

Проект Baigudin Software представил операционное ядро BOOS Core для одноядерных сигнальных процессоров семейства TMS320C64x компании Texas Instruments. Ядро разработано на языке C++ стандарта ISO/IEC 14882:1998 с применением объектно-ориентированного подхода и построено по принципу однокорневой иерархии. Оно обладает аппаратно-независимым прикладным интерфейсом программирования, что даёт возможность для переноса пользовательских приложений на другие аппаратные платформы семейства TMS320C64x.

Почему BOOS Core

Ядро BOOS Core разработано для использования его при постарении высоко нагруженных, многопоточных приложений, исполняющихся в реальном масштабе времени. Общий объём исходного код и данных ядра, в зависимости от средств компиляции и линковки, не превышает 100 Кбайт, что легко позволяет его использовать в процессорах с ограниченным объёмом памяти. Ядро полностью не зависимо от внешних библиотек и осуществляет полную инициализацию, как аппаратной части процессора, так и инициализированных секций данных, созданных компилятором. Встроенные алгоритмы работы с динамической памятью, контроль аппаратной части, динамическое выделение всех ресурсов ядра, таких как потоки, семафоры, прерывания и так далее – всё это делает ядро удобным механизмом для построения новых приложений, которые, используя аппаратно-независимым API ядра, могут быть легко перенесены на другие аппаратные платформы.

Резюмируя выше сказанное нужно отметить следующие основные свойства BOOS Core:

  • Ядро разработано на языке C++ стандарта ISO/IEC 14882:1998;
  • Оно выполняет полную инициализацию аппаратной части процессора;
  • Инициализирует все инициализируемые секции данных;
  • Вызывает конструкторы глобальных объектов системы;
  • Использует встроенные менеджер работы с динамической памятью для выделения объектов и ресурсов системы;
  • Осуществляет контроль выделенных ресурсов;
  • Имеет гибкий механизм базовой конфигурации ядра;
  • Не зависит от внешних библиотек.

Таким образом, всё, что необходимо разработчику – это реализовать метод main класса Main, и простейшая программа готова.

Простейшая программа с BOOS Core

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

BOOS Core executable file building

Простейшая программа – это программа, которая не делает ничего, но исправно компилируется и линкуется. Вот её пример:

/** 
 * User main class.
 * 
 * @author    Sergey Baigudin
 * @copyright Sergey Baigudin, BAIGUDIN SOFTWARE, 2016
 * @license   http://baigudin.software/license/
 * @link      http://baigudin.software
 */
#include "boos.Main.hpp"

/**
 * User method which will be stated as first.
 *
 * @param argc count of array elements.
 * @param argv array of arguments.
 * @return error code or zero.
 */   

int Main::main(int argccharargv[])
{
  
// The simplest application which does some things and does no things
  
return argc && argv != NULL 0;
}

И так, всё, что необходимо для создания простого приложения, используя ядро BOOS Core – это создать файл, который мы, обычно, именуем как boos.Main.cpp, и добавить его в проект, вместе с библиотеками ядра и RTS библиотекой от компании Texas Instruments. Тут стоит отметить, что RTS библиотека используется исключительно для доступа к процедурам, описывающих реализацию стандартных операторов языка C++, например таких, как деление или умножение длинных чисел.

BOOS Core и пользовательское приложение

Операционное ядро BOOS Core, разработанное для одноядерных сигнальных процессоров Texas Instruments, позволяет создавать многопоточные пользовательские приложения с временным разделением потоков. На рисунке ниже приведён пример выполнения абстрактного приложения.

BOOS Core threads scheduling

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

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

BOOS Core thread state machine

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

Наше абстрактное приложение создаёт ещё два дополнительных потока, которые, выполнив свою функцию, завершаются. Завершенные потоки удаляются потоком, создавшим их – это есть ключевое правило: кто создал, тот и удалил. И эта рекомендация применима не только к потокам, а и к любым объектам в целом. Таким образом, родительский поток всегда должен существовать дольше дочернего.

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

BOOS Core и завтрашний день

Сегодня мы рассказали об операционном ядре BOOS Core для одноядерных сигнальных процессоров семейства TMS320C64x компании Texas Instruments. Мы создали его, как продукт, который позволит взглянуть на мир разработки встраиваемого программного обеспечения с новой стороны, со стороны объектов, со стороны объектно-ориентированного подхода к программированию – с той стороны, с которой мы видим будущее. Мы ежедневно делаем шаги, чтобы улучшить его, раскрыть новые возможности и потенциал, увеличить количество объектов, описывающих аппаратные блоки, и конечно, мы стремимся расширить область его применения. Следите за нами, мы изменяем привычное.

К списку cобытий

Подписаться на события проекта Baigudin Software

*E-mail:

* — поле, обязательное для заполнения