Использование определений оборудования
В этом разделе описывается использование определений оборудования в высокоуровневом приложении. Дополнительные сведения об определениях оборудования, включая создание собственных файлов определения оборудования, см. в разделе Определения оборудования.
Примечание
Каталог, содержащий определения оборудования JSON, также содержит вложенный каталог inc/hw для эквивалентных определений файлов заголовков.
Использование определения оборудования из пакета SDK
Каталог HardwareDefinitions в пакете SDK для Azure Sphere содержит определения для распространенных досок Azure Sphere и микросхем, которые они используют. Этот каталог находится в %ProgramFiles(x86)%\Microsoft Azure Sphere SDK\HardwareDefinitions
Windows и /opt/azurespheresdk/HardwareDefinitions
Linux.
В CMakelists.txt найдите функцию
azsphere_target_hardware_definition
и задайтеTARGET_DEFINITION
для параметра JSON-файл определения оборудования для целевой платы. В следующем примере показано, как задать параметр,TARGET_DEFINITION
если приложение использует эталонную доску разработки MT3620 (RDB):azsphere_target_hardware_definition(${PROJECT_NAME} TARGET_DEFINITION "mt3620_rdb.json")
В main.c добавьте соответствующий файл заголовка определения оборудования для целевой платы:
#include "hw/mt3620_rdb.h"
Просмотрите файл заголовка или JSON-файл, чтобы получить сведения об идентификаторе и типе периферийных устройств, используемых в приложении. Создайте или измените код приложения соответствующим образом.
Например, приложение, предназначенное для платформы MT3620 Reference Development Board (RDB), использует встроенный светодиодный индикатор. Константы, используемые для идентификации индикатора, определяются в файле заголовка mt3620_rdb.h следующим образом:
// LED 1 Red channel uses GPIO8. #define MT3620_RDB_LED1_RED MT3620_GPIO8
Следующая строка инициализирует светодиодный индикатор, используя сведения, указанные в определении оборудования.
int fd = GPIO_OpenAsOutput(MT3620_RDB_LED1_RED, GPIO_OutputMode_PushPull, GPIO_Value_High);
Обновите манифест приложения , чтобы включить периферийные устройства, которые сейчас используются приложением:
"Capabilities": { "Gpio": [ "MT3620_RDB_LED1_RED" ]},
Скомпилируйте и упаковывая приложение.
Использование определения оборудования, которое не установлено вместе с пакетом SDK
В CMakelists.txt найдите функцию
azsphere_target_hardware_definition
.TARGET_DIRECTORY
Задайте параметр с относительным или абсолютным путем или путями к каталогу или каталогам, содержащим нужные файлы определения оборудования.Задайте для
TARGET_DEFINITION
параметра имя JSON-файла определения оборудования. Процесс сборки ищет этот файл и импортируемые файлы в целевых каталогах в указанном порядке, а затем в самом пакете SDK.azsphere_target_hardware_definition(${PROJECT_NAME} TARGET_DIRECTORY "<path>/my_app/contoso_hardware_definitions" TARGET_DEFINITION "contoso_board.json")
Укажите каждый целевой каталог в двойных кавычках и разделите имена каталогов пробелами. В этом примере <путь> представляет путь к папке my_app.
В main.c включите файл заголовка определения оборудования для целевой платы. Процесс сборки будет искать этот файл и файлы, которые он включает, в подкаталоге inc целевых каталогов в указанном порядке, а затем в самом пакете SDK. Таким образом, в соответствии с соглашением ниже приводится поиск contoso_board.h в подкаталоге inc/hw целевых каталогов:
#include "hw/contoso_board.h"
Просмотрите файл заголовка или JSON-файл, чтобы получить сведения об идентификаторе и типе периферийных устройств, используемых в приложении. Создайте или измените код приложения соответствующим образом.
int fd = GPIO_OpenAsOutput(CONTOSO_BOARD_LED_RED, GPIO_OutputMode_PushPull, GPIO_Value_High);
Обновите манифест приложения (app_manifest.json), чтобы включить периферийные устройства, которые сейчас используются приложением:
"Capabilities": { "Gpio": [ "CONTOSO_BOARD_LED_RED" ]},
Скомпилируйте и упаковывая приложение.