使用硬件定义
本主题介绍如何在高级应用程序中使用硬件定义。 有关 硬件定义 的详细信息,包括如何创建自己的硬件定义文件,请参阅硬件定义。
注意
包含 JSON 硬件定义的目录还包含等效头文件定义的 inc/hw 子目录。
使用 SDK 中的硬件定义
Azure Sphere SDK 中的 HardwareDefinitions 目录包含常见 Azure Sphere 板及其使用的芯片的定义。 此目录位于 %ProgramFiles(x86)%\Microsoft Azure Sphere SDK\HardwareDefinitions
Windows 和 /opt/azurespheresdk/HardwareDefinitions
Linux 上。
在 CMakelists.txt 搜索 函数
azsphere_target_hardware_definition
并将TARGET_DEFINITION
参数设置为目标板的硬件定义 JSON 文件。 以下示例演示如何在应用程序使用 MT3620 参考开发板 (RDB) 时设置TARGET_DEFINITION
参数:azsphere_target_hardware_definition(${PROJECT_NAME} TARGET_DEFINITION "mt3620_rdb.json")
在 main.c 中,包括目标板的相应硬件定义头文件:
#include "hw/mt3620_rdb.h"
请参阅头文件或 JSON 文件,获取有关应用程序中使用的外围设备的标识符和类型的信息。 相应地创建或修改应用程序代码。
例如,面向 MT3620 参考开发板 (RDB) 的应用程序使用板载 LED。 用于标识 LED 的常量在头文件 mt3620_rdb.h 中定义,如下所示:
// LED 1 Red channel uses GPIO8. #define MT3620_RDB_LED1_RED MT3620_GPIO8
以下行使用硬件定义中提供的信息初始化 LED。
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")
用双引号指定每个目标目录,并用空格分隔目录名称。 在此示例中, <path> 表示 my_app 文件夹的路径。
在 main.c 中包括目标板的硬件定义头文件。 生成过程将按列出的顺序在目标目录的“inc”子目录中搜索此文件及其包含的文件,然后在 SDK 本身中搜索。 因此,按照约定,以下将在目标目录的 inc/hw 子目录中找到 contoso_board.h:
#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" ]},
编译并打包应用程序。