使用硬件定义
重要
这是 Azure Sphere(旧版)文档。 Azure Sphere(旧版)将于 2027 年 9 月 27 日停用,用户此时必须迁移到 Azure Sphere(集成)。 使用位于 TOC 上方的版本选择器查看 Azure Sphere(集成)文档。
本主题介绍如何在高级应用程序中使用硬件定义。 有关硬件定义的详细信息,请参阅 硬件定义 ,包括如何创建自己的硬件定义文件。
注意
包含 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 文件。 以下示例演示如何设置TARGET_DEFINITION
参数(如果应用程序使用 MT3620 参考开发板(RDB):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")
用双引号指定每个目标目录,并用空格分隔目录名称。 在此示例中, <路径> 表示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" ]},
编译并打包应用程序。