KasperskyOS Community Edition 1.1
- Что нового
- О KasperskyOS Community Edition
- Обзор KasperskyOS
- Начало работы
- Разработка под KasperskyOS
- Запуск процессов
- Файловые системы и сеть
- Состав компонента VFS
- Создание IPC-канала до VFS
- Сборка исполняемого файла VFS
- Объединение клиента и VFS в один исполняемый файл
- Обзор: аргументы и переменные окружения VFS
- Монтирование файловой системы при старте
- Разделение файловых и сетевых вызовов с помощью бэкендов VFS
- Написание пользовательского бэкенда VFS
- IPC и транспорт
- KasperskyOS API
- Библиотека libkos
- Общие сведения о библиотеке libkos
- Память
- Аллокация памяти
- Потоки
- Дескрипторы
- Уведомления
- Процессы
- Динамическое создание каналов
- Примитивы синхронизации
- KosCondvarBroadcast()
- KosCondvarDeinit()
- KosCondvarInit()
- KosCondvarSignal()
- KosCondvarWait()
- KosCondvarWaitTimeout()
- KosEventDeinit()
- KosEventInit()
- KosEventReset()
- KosEventSet()
- KosEventWait()
- KosEventWaitTimeout()
- KosMutexDeinit()
- KosMutexInit()
- KosMutexInitEx()
- KosMutexLock()
- KosMutexLockTimeout()
- KosMutexTryLock()
- KosMutexUnlock()
- KosRWLockDeinit()
- KosRWLockInit()
- KosRWLockRead()
- KosRWLockTryRead()
- KosRWLockTryWrite()
- KosRWLockUnlock()
- KosRWLockWrite()
- KosSemaphoreDeinit()
- KosSemaphoreInit()
- KosSemaphoreSignal()
- KosSemaphoreTryWait()
- KosSemaphoreWait()
- KosSemaphoreWaitTimeout()
- DMA-буферы
- IOMMU
- Порты ввода-вывода
- IoReadIoPort8(), IoReadIoPort16(), IoReadIoPort32()
- IoReadIoPortBuffer8(), IoReadIoPortBuffer16(), IoReadIoPortBuffer32()
- IoWriteIoPort8(), IoWriteIoPort16(), IoWriteIoPort32()
- IoWriteIoPortBuffer8(), IoWriteIoPortBuffer16(), IoWriteIoPortBuffer32()
- KnIoPermitPort()
- KnRegisterPort8(), KnRegisterPort16(), KnRegisterPort32()
- KnRegisterPorts()
- Ввод-вывод через память (MMIO)
- Прерывания
- Освобождение ресурсов
- Время
- Очереди
- Барьеры памяти
- Получение сведений об использовании процессорного времени и памяти
- Отправка и прием IPC-сообщений
- Поддержка POSIX
- Компонент MessageBus
- Коды возврата
- Библиотека libkos
- Сборка решения на базе KasperskyOS
- Разработка политик безопасности
- Формальные спецификации компонентов решения на базе KasperskyOS
- Описание политики безопасности решения на базе KasperskyOS
- Общие сведения об описании политики безопасности решения на базе KasperskyOS
- Синтаксис языка PSL
- Описание глобальных параметров политики безопасности решения на базе KasperskyOS
- Включение PSL-файлов
- Включение EDL-файлов
- Создание объектов моделей безопасности
- Привязка методов моделей безопасности к событиям безопасности
- Описание профилей аудита безопасности
- Описание и выполнение тестов политики безопасности решения на базе KasperskyOS
- Типы данных в языке PSL
- Примеры привязок методов моделей безопасности к событиям безопасности
- Примеры описаний простейших политик безопасности решений на базе KasperskyOS
- Примеры описаний профилей аудита безопасности
- Примеры описаний тестов политик безопасности решений на базе KasperskyOS
- Модели безопасности KasperskyOS
- Модель безопасности Pred
- Модель безопасности Bool
- Модель безопасности Math
- Модель безопасности Struct
- Модель безопасности Base
- Модель безопасности Regex
- Модель безопасности HashSet
- Модель безопасности StaticMap
- Объект модели безопасности StaticMap
- Правило init модели безопасности StaticMap
- Правило fini модели безопасности StaticMap
- Правило set модели безопасности StaticMap
- Правило commit модели безопасности StaticMap
- Правило rollback модели безопасности StaticMap
- Выражение get модели безопасности StaticMap
- Выражение get_uncommited модели безопасности StaticMap
- Модель безопасности Flow
- Модель безопасности Mic
- Объект модели безопасности Mic
- Правило create модели безопасности Mic
- Правило execute модели безопасности Mic
- Правило upgrade модели безопасности Mic
- Правило call модели безопасности Mic
- Правило invoke модели безопасности Mic
- Правило read модели безопасности Mic
- Правило write модели безопасности Mic
- Выражение query_level модели безопасности Mic
- Методы служб ядра KasperskyOS
- Служба виртуальной памяти
- Служба ввода-вывода
- Служба потоков исполнения
- Служба дескрипторов
- Служба процессов
- Служба синхронизации
- Службы файловой системы
- Служба времени
- Служба слоя аппаратных абстракций
- Служба управления контроллером XHCI
- Служба аудита
- Служба профилирования
- Служба управления памятью для ввода-вывода
- Служба соединений
- Служба управления электропитанием
- Служба уведомлений
- Служба гипервизора
- Службы доверенной среды исполнения
- Служба прерывания IPC
- Служба управления частотой процессоров
- Паттерны безопасности при разработке под KasperskyOS
- Приложения
- Дополнительные примеры
- Пример hello
- Пример echo
- Пример ping
- Пример net_with_separate_vfs
- Пример net2_with_separate_vfs
- Пример embedded_vfs
- Пример embed_ext2_with_separate_vfs
- Пример multi_vfs_ntpd
- Пример multi_vfs_dns_client
- Пример multi_vfs_dhcpcd
- Пример mqtt_publisher (Mosquitto)
- Пример mqtt_subscriber (Mosquitto)
- Пример gpio_input
- Пример gpio_output
- Пример gpio_interrupt
- Пример gpio_echo
- Пример koslogger
- Пример pcre
- Пример messagebus
- Пример i2c_ds1307_rtc
- Пример iperf_separate_vfs
- Пример uart
- Пример spi_check_regs
- Пример barcode_scanner
- Пример perfcnt
- Дополнительные примеры
- Лицензирование программы
- Предоставление данных
- Информация о стороннем коде
- Уведомления о товарных знаках
Пример gpio_output
Пример использования драйвера GPIO.
Этот пример позволяет проверить функциональность вывода GPIO пинов. Используется порт "gpio0". Начальное состояние всех пинов GPIO должно соответствовать логическому нулю (напряжение на пине отсутствует). Все пины, кроме указанных в массиве exceptionPinArr
, будут настроены на вывод. Каждый пин, начиная с GPIO0 (с учетом указанных в массиве exceptionPinArr
), будет последовательно переведен в состояние логической единицы (появление на пине напряжения), а затем в состояние логического нуля. Задержка между изменениями состояния пинов определяется макроопределением DELAY_S
(время указывается в секундах). Включение/выключение пинов производится от GPIO0
до GPIO27
и обратно до GPIO0
.
exceptionPinArr
- массив номеров GPIO пинов, которые необходимо исключить из примера. Это может понадобиться в случае, если часть пинов уже задействована для других функций, например, если пины используются для UART соединения при отладке.
При сборке и запуске этого примера на QEMU возникает ошибка. Это ожидаемое поведение, поскольку драйвера GPIO для QEMU нет.
При сборке и запуске этого примера на Raspberry Pi 4 B ошибка не возникает.
Файлы примера
Код примера и скрипты для сборки находятся по следующему пути:
/opt/KasperskyOS-Community-Edition-<version>/examples/gpio_output
Сборка и запуск примера
См. "Сборка и запуск примеров".