Пример spi_check_regs
Пример демонстрирует работу с SPI (Serial Peripheral Interface) на плате расширения Sense HAT в KasperskyOS.
Директория примера в SDK
Код примера и скрипты для сборки находятся по следующему пути:
/opt/KasperskyOS-Community-Edition-<platform>-<version>/examples/spi_check_regs
Список программ
Client– прикладная программа, которая использует интерфейс драйвера SPI.SPI– драйвер SPI. Клиентская библиотека драйвера SPI статически компонуется с программойClient.DCM– системная программа, позволяющая динамически создавать IPC-каналы.
При сборке примера для целевой аппаратной платформы в решение автоматически включаются платформенно-зависимые драйверы:
GPIO– драйвер поддержки GPIO для Radxa ROCK 3A и Raspberry Pi 4 B.BSP– пакет поддержки аппаратной платформы (Board Support Package), обеспечивающий кросс-платформенную настройку периферии для Radxa ROCK 3A и Raspberry Pi 4 B.PinCtrl– драйвер низкоуровневой конфигурации мультиплексирования пинов (pinmux) для Radxa ROCK 3A.Bcm2711MboxArmToVc– драйвер для работы с сопроцессором VideoCore (VC6) через технологию mailbox для Raspberry Pi 4 B.
Описание инициализации
Файл описания инициализации решения 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 выполняет следующие действия:
- Инициализирует драйверы: PinCtrl для Radxa ROCK 3A или BSP для Raspberry Pi 4 B, а также драйверы GPIO и SPI. Открывает GPIO-порт.
- Настраивает на вывод GPIO-пин, заданный макросом
HW_GPIO_RESET_PIN_NUM, и устанавливает его в состояние логической единицы (деактивация сигнала сброса RESET микроконтроллера ATTiny). - Открывает SPI-канал, заданный макросом
HW_SPI_MODULE_CHANNEL, получает характеристики этого канала и выводит их в стандартный вывод ошибок. Далее устанавливает для этого канала режим работы, заданный в структуреcfg. - Устанавливает GPIO-пин, заданный макросом
HW_GPIO_RESET_PIN_NUM, в состояние логического нуля (активация сигнала сброса RESET микроконтроллера ATTiny). - Отправляет микроконтроллеру ATTiny по SPI-каналу команду
Programming Enable. Для Radxa ROCK 3A дополнительно выполняется чтение сигнатурных байтов микроконтроллера. - Возвращает GPIO-пин, заданный макросом
HW_GPIO_RESET_PIN_NUM, в состояние логической единицы. - Выводит результаты обмена по SPI в стандартный вывод ошибок и сравнивает с ожидаемыми значениями.
- Закрывает SPI-канал и GPIO-порт.
Сборка и запуск примера
Для сборки и запуска примера используется система CMake из состава KasperskyOS Community Edition.
Для корректной работы примера выполните следующие действия:
- Подключите плату расширения Sense HAT к 40-контактному GPIO-разъему выбранной аппаратной платформы.
На Raspberry Pi 4 B требуется полное совмещение всех контактов, а на Radxa ROCK 3A – ручное подключение пинов согласно схеме подключения в таблице ниже.
Схема подключения Sense HAT к аппаратным платформам
Пин
Sense HAT
Raspberry Pi 4 B
Radxa ROCK 3A
17
3V3 Power
3V3 power
+3.3V
19
GPIO10 (SPI0 MOSI)
GPIO 10 (MOSI)
GPIO 147 (SPI3_MOSI_M1)
20
Ground
Ground
GND
21
GPIO9 (SPI0 MISO)
GPIO 9 (MISO)
GPIO 149 (SPI3_MISO_M1)
22
GPIO25 (Atmel Prog Reset)
GPIO 25
GPIO 17
23
GPIO11 (SPI0 SCLK)
GPIO 11 (SCLK)
GPIO 146 (SPI3_CLK_M1)
24
GPIO8 (Atmel Chip Select)
GPIO 8 (CE0)
GPIO 150 (SPI3_CS0_M1)
- Для Radxa ROCK 3A примените DTBO-оверлей
rk3568-spi3-m1-cs0-spidev.dtboк бинарному файлу описания аппаратной конфигурацииrk3568-rock-3a.dtbсогласно инструкции по применению оверлеев в разделе "Сборка драйверов для аппаратной платформы Radxa ROCK 3A".
См. "Сборка и запуск примеров".