Рассматриваются общие принципы функционирования подсистемы управления общими элементами платформ
Базовая подсистема управления общими элементами платформ состоит из следующих компонентов:
Их взаимное расположение в архитектуре имеет вид:
┌───────────────────────────┐ │ Аппаратные блоки │ │ (Reset, CLK, PD) │ └─────────────▴─────────────┘ │ ┌─────────────┴─────────────┐ ┌───────────────────────────┐ │ │ │ │ │ Драйвер (devp-*.so) ◂────────┤ Менеджер platform-control │ │ │ ▲ │ │ └───────────────────────────┘ │ └───────────────────────────┘ │ ▲ │ │ │ /dev/platform Интерфейс libplatform-control ─────┘ │ ┌─────────────┴─────────────┐ │ │ │ Клиентское приложение │ │ │ └───────────────────────────┘
Внутреннее устройство подсистемы управления общими элементами платформ состоит из следующих компонентов:
При запуске подсистемы (процесс запуска описан в статье platform-control), менеджер ресурсов platform-control загружает драйвер devp-*.so
и ищет точку входа, которая определяется драйвером с помощью структуры plat_ctrl_funcs_t. Далее, для коммуникации клиента с менеджером platform-control используется клиентское API, функции которого формируют и отправляют команды используя devctl. Менеджер platform-control обрабатывает принятые команды и вызывает функции драйверного API, реализации которых определены в драйвере с помощью структуры plat_ctrl_funcs_t.
Их взаимное расположение в архитектуре имеет вид:
┌─────────────┐ │ │ │ Клиент │ │ │ └──────▴──────┘ │ ◂───────────── Клиентское API ┌────────▴─────────┐ │ │ │ platform-control │ │ │ └────────▴─────────┘ │ * ◂───────────── Драйверное API │ ┌──────────────────▾────────▴───────┐ │ devp-*.so │ │ │ │ │ │ ┌───────────────────────▾───┐ │ │ │ │ │ │ │ plat_ctrl_funcs_t │ │ │ │ │ │ │ └───────────────────────────┘ │ │ │ └──────────────────▴────────────────┘ │ * ◂───────────── Аппаратное взаимодействие │ ┌────────▾────────┐ │ │ │ Аппаратный блок │ │ │ └─────────────────┘
platform-control, plat_ctrl_funcs_t
Предыдущий раздел: Библиотека разработки драйверов подсистемы управления общими элементами платформ