使用硬體定義
本主題說明如何在您的高階應用程式中使用硬體定義。 如需硬體定義的詳細資訊,包括如何建立您自己的硬體定義檔案,請參閱 硬體 定義。
注意
包含 JSON 硬體定義的目錄也包含對等頁首檔案定義的 inc/hw 子目錄。
使用 SDK 的硬體定義
Azure 球體 SDK 中的 HardwareDefinitions 目錄包含常見 Azure 球體板及其使用的晶片的定義。 此目錄位於 %ProgramFiles(x86)%\Microsoft Azure Sphere SDK\HardwareDefinitions
Windows 和 /opt/azurespheresdk/HardwareDefinitions
Linux 上。
在 CMakelists.txt 中搜尋函數
azsphere_target_hardware_definition
,TARGET_DEFINITION
並將參數設定為目標面板的硬體定義 JSON 檔案。 下列範例示範如果您的TARGET_DEFINITION
應用程式使用 MT3620 Reference Development Board (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) 的應用程式會使用內部部署 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資料夾的路徑。
In main.c include the hardware definition header file for the target board. 組建程式會在所列順序的目標目錄的 'inc' 子導向區中搜尋此檔案及其包含的檔案,然後在 SDK 本身中搜尋。 因此,遵循慣例後,下列會找到目標目錄的 contoso_board.h in 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" ]},
編譯並封裝應用程式。