BOOS Core API 2.2
- core::Allocator
- core::Interrupt
- core::InterruptTask
- core::Mutex
- core::Object<Alloc>
- core::Semaphore
- core::Synchronizer
- core::System
- core::Thread
- core::ThreadTask
- core::Timer
- core::TimerInterrupt
- util::AbstractBuffer<Type,Alloc>
- util::AbstractLinkedList<Type,Alloc>
- util::Align<Type,SIZEOF,Alloc>
- util::Allocator
- util::Buffer<Type,COUNT,Alloc>
- util::CircularList<Type,Alloc>
- util::Heap
- util::LinkedList<Type,Alloc>
- util::LinkedNode<Type,Alloc>
- util::Memory
- util::Object<Alloc>
- util::Stack<Type,Alloc>
- util::Toggle<Alloc>
BOOS Core представлено для ARM микропроцессоров Texas Instruments семейства AM18x
Проект Baigudin Software представил операционное ядро BOOS Core для ARM микропроцессоров семейства AM18x компании Texas Instruments.
Введение в BOOS Core
Какую операционную систему (ОС) использовать? Пожалуй, этим вопросом задавался каждый разработчик встраиваемых систем. На сегодняшний день, найти встраиваемую систему, не использующую ОС – это большая редкость, разве что самые простые решения могут быть построены без её использования. Давайте разберёмся в этом на примере зависимости сложности архитектуры процессора от сложности исполняемого на нём программного обеспечения.
Первая схема, на рисунке выше, разделена на четыре области. Верхний правый блок определяет производительный процессор и сложное программное обеспечение, что обычно подразумевает использование операционной системы при построении программ. Медленный процессор может выполнять сложное программное обеспечение, построенное на простом ядре, если это программное обеспечение максимально адаптировано к архитектуре. Иногда, производительные чипы используются для того, чтобы исполнять достаточно простые программы, например, если необходимо добиться высокой скорости исполнения. В этом случае, простое ядро используется с целью сохранения гибкости исполняемой программы и возможности её расширения. И лишь в случае простого программного обеспечения, исполняемого на низко-производительном процессоре, использование какой-либо операционной системы обычно неуместно.
Операционное ядро BOOS Core позволяет строить высококачественное программное обеспечение для процессоров любой производительности, при этом предоставляет собственный мощный функционал для организации многопоточных приложений, работающих в реальном масштабе времени, позволяет сохранить гибкость пользовательских программ и возможность их качественного расширения.
Выбрав BOOS Core, вы забудете о компромиссах в разработке встраиваемого программного обеспечения!
Архитектура операционного ядра
Операционное ядро BOOS Core предоставляет пользовательской программе собственные ресурсы для доступа к аппаратной составляющей системы.
Как видно из рисунка выше, пользовательская программа в праве получить прямой доступ к не контролируемым ядром аппаратным ресурсам. Это позволяет не только создавать гибкие алгоритмы работы, но и использовать уже имеющиеся наработки.
Сборка пользовательской программы
Ядро построено на основе объектов. Все объекты распределены по группам. Каждая группа – это программная библиотека, реализующая логический или аппаратный функционал.
Пользовательская программа совместно с ядром BOOS Core образуют исполняемый файл, который исполняется целевым процессором. Такой подход – включение только тех компонент, которые необходимы – позволяет в значительной степени сократить объём конечной программы.
Выполнение пользовательской программы
После подачи питания, процессор начинает выполнять код ядра. Ядро выполняет инициализацию необходимых аппаратных ресурсов и данных программы.
Как видно из рисунка выше, после инициализации, ядро передаёт полное управление пользовательской программе, создавая для неё первый и единственный в системе поток. В ходе выполнения, она может создавать дополнительные потоки, захватывать системные прерывания и другие ресурсы ядра. Таким образом, программа полностью контролирует процессорное время. После завершения пользовательской программы, ядро деинициализирует систему и завершает выполнение.
Простейшая пользовательская программа
Выполнение пользовательской программы всегда начинается с метода main. Ниже приведён пример простейшей программы.
/**
* Основной пользовательский класс.
*/
#include "boos.Main.hpp"
/**
* Основной пользовательский метод.
*/
int Main::main(int argc, char* argv[])
{
// Простейшая программа, делающая нечто и ничего
return argc > 0 && argv != NULL ? 1 : 0;
}
Метод main – это основной и всегда единственный поток в системе, созданный ядром BOOS Core. После его создания ядро более не вмешивается в работу приложения, а лишь предоставляет ему свои ресурсы. Это позволяет разработчику построить прогнозируемое приложение, выполняющее исключительно необходимые действия.