Пример spi_check_regs

Пример демонстрирует работу с SPI (Serial Peripheral Interface) на плате расширения Sense HAT в KasperskyOS.

Директория примера в SDK

Код примера и скрипты для сборки находятся по следующему пути:

/opt/KasperskyOS-Community-Edition-<platform>-<version>/examples/spi_check_regs

Список программ

При сборке примера для целевой аппаратной платформы в решение автоматически включаются платформенно-зависимые драйверы:

Описание инициализации

Файл описания инициализации решения init.yaml генерируется в процессе сборки решения на основе шаблона ./einit/src/init.yaml.in. Макросы вида @INIT_*@, которые содержатся в шаблоне, автоматически раскрываются в итоговом файле init.yaml. Подробнее см. "Шаблон init.yaml.in".

Описание политики безопасности

Файлы описания политики безопасности решения на базе KasperskyOS находятся в директории ./einit/src.

Файл security.psl содержит описание политики безопасности решения. Этот файл является файлом верхнего уровня, в который через декларацию use включены части описания политики безопасности решения в виде PSL-файлов: dynld.psl и trusted.psl. (Декларации в PSL-файлах снабжены комментариями, которые поясняют назначение деклараций.) Файл dynld.psl содержит часть описания политики безопасности, используемую при динамической компоновке компонентов решения. Файл trusted.psl содержит часть описания политики безопасности, регулирующую взаимодействия между инициализирующей программой Einit и ядром KasperskyOS.

Ресурсы

В директории ./resources/xdl/spi_check_regs содержится файл Client.edl – EDL-описание для программы Client.

Сценарий работы

Программа Client выполняет следующие действия:

  1. Инициализирует драйверы: PinCtrl для Radxa ROCK 3A или BSP для Raspberry Pi 4 B, а также драйверы GPIO и SPI. Открывает GPIO-порт.
  2. Настраивает на вывод GPIO-пин, заданный макросом HW_GPIO_RESET_PIN_NUM, и устанавливает его в состояние логической единицы (деактивация сигнала сброса RESET микроконтроллера ATTiny).
  3. Открывает SPI-канал, заданный макросом HW_SPI_MODULE_CHANNEL, получает характеристики этого канала и выводит их в стандартный вывод ошибок. Далее устанавливает для этого канала режим работы, заданный в структуре cfg.
  4. Устанавливает GPIO-пин, заданный макросом HW_GPIO_RESET_PIN_NUM, в состояние логического нуля (активация сигнала сброса RESET микроконтроллера ATTiny).
  5. Отправляет микроконтроллеру ATTiny по SPI-каналу команду Programming Enable. Для Radxa ROCK 3A дополнительно выполняется чтение сигнатурных байтов микроконтроллера.
  6. Возвращает GPIO-пин, заданный макросом HW_GPIO_RESET_PIN_NUM, в состояние логической единицы.
  7. Выводит результаты обмена по SPI в стандартный вывод ошибок и сравнивает с ожидаемыми значениями.
  8. Закрывает SPI-канал и GPIO-порт.

Сборка и запуск примера

Для сборки и запуска примера используется система CMake из состава KasperskyOS Community Edition.

Для корректной работы примера выполните следующие действия:

См. "Сборка и запуск примеров".

В начало