老式硬體開發面板
警告
Windows IoT 核心版不再支援「老式」硬體開發面板。 如需目前支援面板的清單,請參閱 SoC和自定義面板。
聖馬克是一個 硬體開發面板 ,可用來開發適用於 Windows 的硬體和驅動程式。
IntelAires 一般面板支援使用各種介面的裝置驅動程序開發,包括 GPIO、I2C、I2S、UART、SDIO 和 USB。 您也可以使用「聖人」面板來開發相機和觸摸屏的驅動程式。
開始之前
此處提供的指示會要求您執行 Windows 10、Windows 8.1 或 Windows 7。 如果您執行 Windows 8,這些指示將無法運作。
如果您執行 Windows 7,則必須安裝 PowerShell 4.0 和 下載並安裝 Windows ADK。 然後在 [ 開始 ] 功能表上,移至 [所有程式 > ][Windows > ADK > 部署和映射工具環境]。 以系統管理員身分開啟此命令提示字元視窗。 當您輸入這些指示中提供的命令時,請使用這個命令提示字元視窗。
步驟 1:取得面板和相關硬體
您將需要此硬體:
- 含有內含電源線和適配卡的三維板。
- USB 集線器
- USB 鍵盤
- USB 滑鼠
- USB 網路配接器
- 監視和 HDMI 纜線 (和可能適配卡)
您可以在 RCS 元件 或 Kynix 取得一個「聖人」面板。
步驟 2:下載套件和工具
驅動程式開發環境有兩部計算機: 主計算機 和 目標計算機。 目標計算機也稱為 測試計算機。 您可以在主電腦上的 Microsoft Visual Studio 中開發及建置驅動程式。 調試程式會在主計算機上執行,而且可在 Visual Studio 使用者介面中使用。 當您測試和偵錯驅動程式時,驅動程式會在目標計算機上執行。 在此案例中,「聖人」面板是目標計算機。
若要開發「澳大利亞」面板的硬體和驅動程式,您需要主電腦上的這些套件和工具:
在主計算機上,先下載 Visual Studio,然後下載 WDK,然後下載 WDK 測試套件。 您不需要個別下載適用於 Windows 的偵錯工具,因為它包含在 WDK 中。
文件
適用於 Windows 之偵錯工具的在線檔。
Windows 的偵錯工具檔也可作為安裝目錄中的 CHM 檔案使用。 範例:C:\Program Files (x86) \Windows Kits\10\Debuggers\x64\debugger.chm。
步驟 3:將 Windows 安裝於澳大利亞人節面板上
您可以在您的[您的客戶] 面板上安裝下列其中一個版本的 Windows:
詞彙 | 描述 |
---|---|
Windows Embedded 8.1 產業專業版評估 | 這是 180 天的免費試用。 我們將將此稱為評估版本。 |
Windows Embedded 8.1 Industry Pro with Update (x86) - DVD | 這需要訂用帳戶。 我們會將此稱為完整版本。 |
如果您想要安裝評估版,請閱讀許可協定的增修條款:
硬體開發人員計劃的評估軟體授權條款增修條款
如果使用此軟體支援硬體開發人員計劃,則適用下列條款:
- 您同意 Windows Embedded 8.1 Industry Pro (「評估軟體授權條款」的 Microsoft Evaluation Software 授權條款條款 ) ,除了:
- 第 1.b 節 (評估軟體授權條款的示範權利) 一部分修改,如下所示: - 您可以示範或提供示範使用給潛在客戶,這是示範用途所需的一些合理必要專案,Windows Embedded 8.1 產業專業版裝置是透過您使用軟體 (「示範裝置」) 所開發。 您可以示範並傳遞示範裝置給未受到揭露義務的客戶。
- 第 1.b 節中的所有布建都不應與上述修改的區段直接衝突,則適用。
- 軟體一經使用,即表示 貴用戶同意接受這些授權條款。 如果您不接受並遵守這些條款,您可能無法使用軟體或其功能。
下載 Windows Embedded 8.1 Industry (x86) Pro Evaluation 或 Windows Embedded 8.1 Industry Pro with Update (x86) - DVD。 找出下載的檔案。 例如
9600.17050.WINBLUE_REFRESH...X86FRE_EN US_DV9。Iso。
建立一個資料夾,該資料夾會是您[ (] (的根目錄,例如 C:\PackagessCoveWindows) 。 我們將呼叫此資料夾 根目錄。 在 Root 中,建立下列子資料夾:
- 設定
- MonacosCoveBsp
按兩下您的 ISO 檔案,然後將這些檔案複製到 Root\Setup。
- Boot
- Efi
- 來源
- 支援
- Autorun.inf
- Bootmgr
- Bootmgr.efi
- Setup.exe
注意
如果您執行 Windows 7,請以滑鼠右鍵按下 ISO 檔案,然後選擇 [正在執行磁碟映射 ]。 將影像轉換成可錄製的 DVD。 然後將檔案從 DVD 複製到 Root\Setup。
取得 (BSP) 的「檔案」支援套件。 將套件中的所有檔案複製到 Root\MonacosCoveBsp。
取得 WDK 開發板附加元件套件。 開啟 [SourceCode] 索引標籤 。按兩下 [下載 ] (而非 [下載] 索引標籤) 以取得套件腳本。 開啟 [腳本] 資料夾,然後將這兩個專案複製到 Root。
- Create-DevboardImage.ps1
- DevBoard 資料夾
注意
DevBoard 資料夾包含數個腳本和模組 (DevboardImage.ps1、Devboard.psm1、enable-telnet.ps1,以及其他) 。
以系統管理員身分開啟命令提示字元窗口,然後輸入 Powershell。 流覽至 [根]。 若要將 BSP 新增至您的 Windows 映射,請輸入下列其中一個命令:
如果您使用 Windows 評估版,請輸入下列命令:
.\Create-DevboardImage -SourcePath Setup\sources\install.wim -Index 2 -BspManifest SharksCoveBsp\SharksCoveBsp.xml
如果您使用完整版本的 Windows,請輸入下列命令:
.\Create-DevboardImage -SourcePath Setup\sources\install.wim -Index 1 -BspManifest SharksCoveBsp\SharksCoveBsp.xml
注意 執行 Create-DevboardImage 腳本之前,您可能需要設定執行原則。 例如:
Set-ExecutionPolicy -ExecutionPolicy Unrestricted
既然您已將 BSP 新增至 Windows 映射,請將這些資料夾和檔案從 Root\Setup 複製到 USB 快閃磁碟驅動器, (FAT32) 。
- Boot
- Efi
- 來源
- 支援
- Autorun.inf
- Bootmgr
- Bootmgr.efi
- Setup.exe
設定您的[新創者] 硬體,如下所示:
將快閃磁碟驅動器插入已連線到[新創者] 面板的中樞。 當您啟動或重新啟動 [新創者] 面板時,請按住音量向上按鈕。 向上音量按鈕是面板左側三個按鈕集合中的頂端按鈕,如上圖所示。 (如果面板已啟動,您可以按住電源按鈕數秒關閉它。) 當面板啟動時,您會看到畫面上的 EFI 殼層。
注意
您可能需要流覽至 EFI 殼層。 移至 開機管理員 > EFI 內部殼層。
請注意USB快閃磁碟驅動器的名稱 (,例如 fs1:) 。
(這裏我們將使用 fs1:針對 USB 快閃磁碟驅動器的名稱。) 在殼> 層提示字元中,輸入下列命令:
fs1:cd efi\bootdir 確認 bootia32.efi 位於 目錄中。 輸入此命令:
bootia32.efi 遵循畫面上的 Windows 設定指示。
步驟 4:布建適用於驅動程式部署和測試的[新創者] 面板
布建 是設定計算機以進行自動驅動程式部署、測試和偵錯的程式。
設定硬體,如下所示。
布建新創公司面板類似於布建任何其他電腦。 若要布建「新月節」面板,請遵循本主題中的指示:
和本主題,可在line和 debugger.chm 中使用。
注意
在布建「新創者」面板之前,您必須停用安全開機。 重新啟動 [新創者] 面板。 當面板重新啟動時,請按住 [音量] 按鈕。 移至 [裝置管理員 > 系統設定>開機]。 將 [UEFI 安全性開機] 設定為 [已停用]。
步驟 5:撰寫一個軟體驅動程式,以使用新創公司面板
在撰寫適用於「管理者」面板的裝置驅動程式之前,撰寫軟體驅動程式來熟悉驅動程序開發工具會很有説明。 此程式類似於為任何其他目標計算機撰寫軟體驅動程式。 若要開始使用,請遵循這裡的實際操作練習:
步驟 6: (SSDT) 改變次要系統描述數據表
如果您要為連線到簡單周邊總線的裝置撰寫驅動程式, (SPB) 在[新創者] 面板上,您必須更新 [次要系統描述表] (SSDT) 中的 [基本系統] 韌體中的 SSDT) 。 其中一個範例是撰寫加速計驅動程式,以透過I2C 總線傳輸數據,並透過一般用途 I/O (GPIO) 針腳產生中斷。 如需詳細資訊,請參閱 簡單周邊總線。
以下是改變 SSDT 的範例。 我們將為 ADXL345 加速計新增數據表專案。
注意
如需 SpbAccelerometer 範例驅動程式和ADXL345加速計範例的逐步指南,請參閱 SpbAccelerometer 驅動程式指南。
將 x86 版的 ASL.exe 複製到[管理者] 面板。 WDK 中包含 ASL.exe。
範例:C:\Program Files (x86) \Windows Kits\8.1\Tools\x86\ACPIVerify\ASL.exe
以系統管理員身分開啟命令提示字元視窗。 輸入下列命令來反編譯 SSDT:
asl /tab=ssdt
這會建立 Ssdt.asl 檔案。
例如,在記事本) 中開啟 Ssdt.asl (。
DefinitionBlock("SSDT.AML", "SSDT", 0x01, "Intel_", "ADebTabl", 0x00001000) { Scope() { Name(DPTR, 0x3bf2d000) Name(EPTR, 0x3bf3d000) Name(CPTR, 0x3bf2d010) Mutex(MMUT, 0x0) Method(MDBG, 0x1, Serialized) { Store(Acquire(MMUT, 0x3e8), Local0) If(LEqual(Local0, Zero)) { OperationRegion(ABLK, SystemMemory, CPTR, 0x10) Field(ABLK, ByteAcc, NoLock, Preserve) { AAAA, 128 } Store(Arg0, AAAA) Add(CPTR, 0x10, CPTR) If(LNot(LLess(CPTR, EPTR))) { Add(DPTR, 0x10, CPTR) } Release(MMUT) } Return(Local0) } } // Insert a Scope(_SB_) and a Device entry here. }
插入 Scope (_SB_) 專案。 在您的範圍專案中,插入您自己的 [裝置] 專案。 例如,以下是ADXL345加速計的範圍 (_SB_) 專案和裝置專案。
Scope(_SB_)
{
Device(SPBA)
{
Name(_HID, "SpbAccelerometer")
Name(_UID, 1)
Method(_CRS, 0x0, NotSerialized)
{
Name(RBUF, ResourceTemplate()
{
I2CSerialBus(0x53, ControllerInitiated, 400000, AddressingMode7Bit, "\\_SB.I2C3", 0, ResourceConsumer)
GpioInt(Edge, ActiveHigh, Exclusive, PullDown, 0, "\\_SB.GPO2") {0x17}
})
Return(RBUF)
}
Method(_DSM, 0x4, NotSerialized)
{
If(LEqual(Arg0, Buffer(0x10)
{
0x1e, 0x54, 0x81, 0x76, 0x27, 0x88, 0x39, 0x42, 0x8d, 0x9d, 0x36, 0xbe, 0x7f, 0xe1, 0x25, 0x42
}))
{
If(LEqual(Arg2, Zero))
{
Return(Buffer(One)
{
0x03
})
}
If(LEqual(Arg2, One))
{
Return(Buffer(0x4)
{
0x00, 0x01, 0x02, 0x03
})
}
}
Else
{
Return(Buffer(One)
{
0x00
})
}
} // Method(_DSM ...)
} // Device(SPBA)
} // Scope(_SB_)
在此範例中,下 ResourceTemplate()
的專案會指定加速計需要兩個硬體資源:特定I2C 總線控制器的聯機標識碼 (I2C3) 和 GPIO 中斷。 中斷會在名為 GPO2 的 GPIO 控制器上使用針腳0x17。
將自己的裝置專案新增至 Ssdt.asl 之後,請輸入下列命令來編譯 Ssdt.asl:
asl ssdt.asl
這會將編譯的輸出放在名為 Ssdt.aml 的檔案中。
請確認已針對[新創者] 面板開啟測試簽署。
注意
布建期間會自動開啟測試簽署。
在 [管理者] 面板上,以系統管理員身分開啟 [命令提示字元] 視窗。 輸入此命令。
bcdedit /enum {current}
確認您在 testsigning Yes
輸出中看到。
Windows Boot Loader
-------------------
identifier {current}
...
testsigning Yes
...
如果您需要手動開啟測試簽署,以下是下列步驟:
以系統管理員身分開啟命令提示字元窗口,然後輸入此命令。
bcdedit /set TESTSIGNING ON
重新啟動 [新創者] 面板。 當面板重新啟動時,請按住 [音量] 按鈕。 移至 [裝置管理員 > 系統設定>開機]。 將 [UEFI 安全性開機] 設定為 [已停用]。
儲存變更並繼續開機至 Windows。
若要載入更新的 SSDT,請以系統管理員身分開啟 [命令提示字元] 視窗,然後輸入下列命令:
asl /loadtable ssdt.aml
重新啟動 [新創者] 面板。
步驟 7:將您的裝置連線到[新創者] 面板
使用規格來判斷要用於裝置的針腳。 例如,假設您想要將ADXL345加速計連接到 I2C 總線。 在規格中,您可以看到 J1C1 標頭具有您需要的針腳。 以下是您在 J1C1 標頭上使用的一些釘選,但並非全部。
Pin | 釘選名稱 | 註解 | ACPI 物件 |
---|---|---|---|
7 | GPIO_S5[23] | 加速計插斷訊號 | _某人。GPO2 {0x17} |
13 | SIO_I2C2_DATA | I2C 控制器 2 的 I2C 數據行 | _某人。I2C3 |
15 | SIO_I2C2_CLK | I2C 控制器 2 的 I2C 時鐘線 | _某人。I2C3 |
請注意 SSDT 中裝置項目的關聯性。
I2CSerialBus(... "\\_SB.I2C3", , )
GpioInt(... "\\_SB.GPO2") {0x17}
步驟 8:為您的裝置撰寫、建置及部署驅動程式
撰寫裝置驅動程式以用於「聖地盤」面板類似於為任何其他電腦撰寫裝置驅動程式。 在 Visual Studio 中,您可以從驅動程式範本開始,也可以從驅動程式範例開始。
當您準備好在[擷取者] 面板上測試驅動程式時,請遵循下列步驟:
在主計算機上,在 Visual Studio 中,以滑鼠右鍵按鍵按兩下您的套件專案,然後選擇 [ 屬性]。 移至 驅動程式安裝 > 部署。 在部署之前,請檢查 [啟用部署 ] 和 [移除先前的驅動程式版本]。 在 [目標計算機名稱] 中,選取您的[您的客戶] 面板名稱。 選取 [安裝並驗證]。
仍在屬性頁中,移至 驅動程序簽署 > 一般。 針對 [簽署模式],選取 [測試簽署]。 按一下 [確定]。
在驅動程序專案中,開啟您的 INF 檔案。 編輯硬體識別碼,使其符合您在 SSDT 中建立的硬體識別碼 (_HID) 。 例如,假設您將此裝置專案放在 SSDT 中。
Device(SPBA) { Name(_HID, "SpbAccelerometer") ...
然後,INF 檔案中的硬體標識碼會是 ACPI\SpbAccelerometer。
[Standard.NT$ARCH$] %KMDFDriver1.DeviceDesc%=KMDFDriver1_Device, ACPI\SpbAccelerometer
在 Visual Studio 的 [ 偵錯 ] 功能表上,選擇 [ 開始偵錯]。
Microsoft Visual Studio 會先在 [ 輸出 ] 視窗中顯示進度。 然後它會開啟 調試程式即時運算視窗 ,並繼續顯示進度。
請等到驅動程式部署、安裝及載入至「聖馬克」面板。 這可能需要一或兩分鐘的時間。
如果調試程式未自動中斷,請從 [偵錯] 功能表中選擇 [全部中斷]。 主電腦上的調試程式會進入目標計算機, (核心模式) 或 Wudfhost.exe (UMDF 的正確實例) 。 在調試程式 即時運算視窗中,您會看到調試程式命令提示字元。
若要檢視載入的模組,請輸入 lm。 確認您的驅動程式出現在已載入的模組清單中。
使用 WinDbg 偵錯擷取盤
除了使用 Visual Studio 來設定核心模式偵錯,您也可以手動進行設定。
除了使用 Visual Studio 進行偵錯,您也可以使用 WinDbg。
無論您使用 Visual Studio 還是 WinDbg,這些實際操作指南都有助於學習調試程式命令:
範例驅動程式程式代碼
了解簡單的周邊總線
若要瞭解 Windows 驅動程式如何使用簡單的 周邊總線,請參閱簡單周邊總線。
相關主題
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應