使用硬體定義
重要
這是 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")
以雙引號指定每個目標目錄,並以空格分隔目錄名稱。 在此範例中, <path> 代表my_app資料夾的路徑。
在main.c中,包含目標面板的硬體定義頭檔。 建置程式會依列出的順序,搜尋此檔案及其包含的檔案,並依列出的順序,在目標目錄的 'inc' 子目錄中搜尋。 因此,下列慣例會在目標目錄的 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" ]},
編譯並封裝應用程式。