老式硬體開發面板

警告

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 > 部署和映射工具環境]。 以系統管理員身分開啟此命令提示字元視窗。 當您輸入這些指示中提供的命令時,請使用這個命令提示字元視窗。

您將需要此硬體:

  • 含有內含電源線和適配卡的三維板。
  • USB 集線器
  • USB 鍵盤
  • USB 滑鼠
  • USB 網路配接器
  • 監視和 HDMI 纜線 (和可能適配卡)

您可以在 RCS 元件Kynix 取得一個「聖人」面板。

步驟 2:下載套件和工具

驅動程式開發環境有兩部計算機: 主計算機目標計算機。 目標計算機也稱為 測試計算機。 您可以在主電腦上的 Microsoft Visual Studio 中開發及建置驅動程式。 調試程式會在主計算機上執行,而且可在 Visual Studio 使用者介面中使用。 當您測試和偵錯驅動程式時,驅動程式會在目標計算機上執行。 在此案例中,「聖人」面板是目標計算機。

若要開發「澳大利亞」面板的硬體和驅動程式,您需要主電腦上的這些套件和工具:

在主計算機上,先下載 Visual Studio,然後下載 WDK,然後下載 WDK 測試套件。 您不需要個別下載適用於 Windows 的偵錯工具,因為它包含在 WDK 中。

文件

  • 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 驅動程式指南

  1. 將 x86 版的 ASL.exe 複製到[管理者] 面板。 WDK 中包含 ASL.exe。

    範例:C:\Program Files (x86) \Windows Kits\8.1\Tools\x86\ACPIVerify\ASL.exe

  2. 以系統管理員身分開啟命令提示字元視窗。 輸入下列命令來反編譯 SSDT:

    asl /tab=ssdt

    這會建立 Ssdt.asl 檔案。

  3. 例如,在記事本) 中開啟 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.
    
    }
    
  4. 插入 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。

  1. 將自己的裝置專案新增至 Ssdt.asl 之後,請輸入下列命令來編譯 Ssdt.asl:

    asl ssdt.asl

    這會將編譯的輸出放在名為 Ssdt.aml 的檔案中。

  2. 請確認已針對[新創者] 面板開啟測試簽署。

注意

布建期間會自動開啟測試簽署。

在 [管理者] 面板上,以系統管理員身分開啟 [命令提示字元] 視窗。 輸入此命令。

bcdedit /enum {current}

確認您在 testsigning Yes 輸出中看到。

Windows Boot Loader
-------------------
identifier              {current}
...
testsigning             Yes
...

如果您需要手動開啟測試簽署,以下是下列步驟:

  1. 以系統管理員身分開啟命令提示字元窗口,然後輸入此命令。

    bcdedit /set TESTSIGNING ON

  2. 重新啟動 [新創者] 面板。 當面板重新啟動時,請按住 [音量] 按鈕。 移至 [裝置管理員 > 系統設定>開機]。 將 [UEFI 安全性開機] 設定為 [已停用]。

  3. 儲存變更並繼續開機至 Windows。

  4. 若要載入更新的 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 中,您可以從驅動程式範本開始,也可以從驅動程式範例開始。

當您準備好在[擷取者] 面板上測試驅動程式時,請遵循下列步驟:

  1. 在主計算機上,在 Visual Studio 中,以滑鼠右鍵按鍵按兩下您的套件專案,然後選擇 [ 屬性]。 移至 驅動程式安裝 > 部署。 在部署之前,請檢查 [啟用部署 ] 和 [移除先前的驅動程式版本]。 在 [目標計算機名稱] 中,選取您的[您的客戶] 面板名稱。 選取 [安裝並驗證]。

  2. 仍在屬性頁中,移至 驅動程序簽署 > 一般。 針對 [簽署模式],選取 [測試簽署]。 按一下 [確定]。

  3. 在驅動程序專案中,開啟您的 INF 檔案。 編輯硬體識別碼,使其符合您在 SSDT 中建立的硬體識別碼 (_HID) 。 例如,假設您將此裝置專案放在 SSDT 中。

    Device(SPBA)
    {
       Name(_HID, "SpbAccelerometer")
       ...
    

    然後,INF 檔案中的硬體標識碼會是 ACPI\SpbAccelerometer。

    [Standard.NT$ARCH$]
    %KMDFDriver1.DeviceDesc%=KMDFDriver1_Device, ACPI\SpbAccelerometer
    
  4. 在 Visual Studio 的 [ 偵錯 ] 功能表上,選擇 [ 開始偵錯]。

  5. Microsoft Visual Studio 會先在 [ 輸出 ] 視窗中顯示進度。 然後它會開啟 調試程式即時運算視窗 ,並繼續顯示進度。

    請等到驅動程式部署、安裝及載入至「聖馬克」面板。 這可能需要一或兩分鐘的時間。

  6. 如果調試程式未自動中斷,請從 [錯] 功能表中選擇 [全部中斷]。 主電腦上的調試程式會進入目標計算機, (核心模式) 或 Wudfhost.exe (UMDF 的正確實例) 。 在調試程式 即時運算視窗中,您會看到調試程式命令提示字元。

  7. 若要檢視載入的模組,請輸入 lm。 確認您的驅動程式出現在已載入的模組清單中。

使用 WinDbg 偵錯擷取盤

除了使用 Visual Studio 來設定核心模式偵錯,您也可以手動進行設定。

除了使用 Visual Studio 進行偵錯,您也可以使用 WinDbg。

無論您使用 Visual Studio 還是 WinDbg,這些實際操作指南都有助於學習調試程式命令:

範例驅動程式程式代碼

了解簡單的周邊總線

若要瞭解 Windows 驅動程式如何使用簡單的 周邊總線,請參閱簡單周邊總線

適用於所有驅動程式開發人員的概念

開發、測試和部署驅動程式

Windows 驅動程序架構

Windows 硬體開發人員中心

適用於 Windows 的 WDK 範例

技術支援