Использование определений оборудования

В этом разделе описывается использование определений оборудования в высокоуровневом приложении. Дополнительные сведения об определениях оборудования, включая создание собственных файлов определения оборудования, см. в разделе Определения оборудования.

Примечание

Каталог, содержащий определения оборудования JSON, также содержит вложенный каталог inc/hw для эквивалентных определений файлов заголовков.

Использование определения оборудования из пакета SDK

Каталог HardwareDefinitions в пакете SDK для Azure Sphere содержит определения для распространенных досок Azure Sphere и микросхем, которые они используют. Этот каталог находится в %ProgramFiles(x86)%\Microsoft Azure Sphere SDK\HardwareDefinitions Windows и /opt/azurespheresdk/HardwareDefinitions Linux.

  1. В CMakelists.txt найдите функцию azsphere_target_hardware_definition и задайте TARGET_DEFINITION для параметра JSON-файл определения оборудования для целевой платы. В следующем примере показано, как задать параметр, TARGET_DEFINITION если приложение использует эталонную доску разработки MT3620 (RDB):

    azsphere_target_hardware_definition(${PROJECT_NAME} TARGET_DEFINITION "mt3620_rdb.json")

  2. В main.c добавьте соответствующий файл заголовка определения оборудования для целевой платы:

    #include  "hw/mt3620_rdb.h"
    
  3. Просмотрите файл заголовка или 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);
    
  4. Обновите манифест приложения , чтобы включить периферийные устройства, которые сейчас используются приложением:

    "Capabilities": {  "Gpio": [ "MT3620_RDB_LED1_RED" ]},
    
  5. Скомпилируйте и упаковывая приложение.

Использование определения оборудования, которое не установлено вместе с пакетом SDK

  1. В CMakelists.txt найдите функцию azsphere_target_hardware_definition .

  2. TARGET_DIRECTORY Задайте параметр с относительным или абсолютным путем или путями к каталогу или каталогам, содержащим нужные файлы определения оборудования.

  3. Задайте для 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.

  4. В main.c включите файл заголовка определения оборудования для целевой платы. Процесс сборки будет искать этот файл и файлы, которые он включает, в подкаталоге inc целевых каталогов в указанном порядке, а затем в самом пакете SDK. Таким образом, в соответствии с соглашением ниже приводится поиск contoso_board.h в подкаталоге inc/hw целевых каталогов:

    #include   "hw/contoso_board.h"
    
  5. Просмотрите файл заголовка или JSON-файл, чтобы получить сведения об идентификаторе и типе периферийных устройств, используемых в приложении. Создайте или измените код приложения соответствующим образом.

    int fd = GPIO_OpenAsOutput(CONTOSO_BOARD_LED_RED, GPIO_OutputMode_PushPull, GPIO_Value_High);
    
  6. Обновите манифест приложения (app_manifest.json), чтобы включить периферийные устройства, которые сейчас используются приложением:

    "Capabilities": {  "Gpio": [ "CONTOSO_BOARD_LED_RED" ]},
    
  7. Скомпилируйте и упаковывая приложение.