共用方式為


新式待命平台的 GNSS 接收者電源管理

本主題討論適用於新式待命平臺的全域導航衛星系統 (GNSS) 電源管理。

實作新式待命電源模型的 Windows 電腦也可能包含全域導航衛星系統 (GNSS) 裝置。 GNSS 裝置可讓使用者從衛星導航系統取得高精確度定位資訊,例如全球定位系統(GPS)或全球軌道導航衛星系統(GLONASS)。 硬體平臺進入新式待命之後,GNSS 裝置必須進入低功率的作業模式,其耗電量不超過 1 mW。 然後,GNSS 裝置必須維持在此模式中,直到平台結束新式待命為止。

支援GPS和全球軌道導航衛星系統的GNSS裝置已經提供一段時間,但較新的GNSS裝置支援衛星導航系統,如北鬥導航衛星系統(BDS)和伽利略。

新式待命平臺通常建置在晶元 (SoC) 積體電路上的系統周圍。 Windows 支援將 GNSS 裝置新增至這類平臺的下列選項:

  • 納入包含整合式 GNSS 裝置的行動寬頻 (MBB) 模組。 此方法在行動電話中很常見。
  • 選取包含整合式 GNSS 裝置的 SoC。
  • 使用 I2C、SPI 或 UART 等低功率總線,將獨立 GNSS 裝置連線到 SoC。

可能的話,系統整合者應該選取 GNSS 裝置,以實作低功率睡眠模式,讓裝置耗用不超過 1 mW 的電源。 GNSS 裝置廠商必須提供位置感測器驅動程式,以將位置數據從 GNSS 裝置轉譯為用戶端應用程式所需的表單。 這些應用程式會透過 Windows 位置 API 連線到 GNSS 裝置。 GNSS 裝置的位置感測器驅動程式會追蹤下列資訊:

  • 目前透過位置 API 連線到 GNSS 裝置的用戶端數目。
  • GNSS 裝置的無線電開啟/關閉開關狀態。 用戶會透過 Windows 設定 應用程式控制此參數。 如需詳細資訊,請參閱整合無線電管理。

位置感測器驅動程式會使用這項資訊來判斷 GNSS 裝置何時閒置,以便將其置於低功率模式中。 只有在一或多個用戶端連線到裝置時,才會主動使用 GNSS 裝置。 否則,裝置處於閑置狀態。

為了延長系統電池使用時間,GNSS 裝置的存取會在新式待命期間受到限制。 鎖定畫面應用程式可以在新式待命期間存取地理柵欄和位置資訊。 不過,非鎖定畫面應用程式只能在開啟顯示器且平臺與用戶互動時,才能使用位置 API 從 GNSS 裝置取得位置數據。 顯示器關閉且平臺進入新式待命后不久,任何連線到 GNSS 裝置的非鎖定畫面應用程式都會由 Windows 自動中斷連線,並暫停應用程式。

電源管理模式

GNSS 接收器應該有 4 種電源管理模式,如下所述。

GNSS 接收者電源模式

裝置電源模式 描述 裝置電源狀態 (Dx) 無線電狀態(如使用者所示) 連線客戶端數目 平均耗電量 (mW) 轉換機制

主動(收購)

GNSS 接收器正在取得衛星修正。

D0

另一

>= 1

~200 mW

N/A

主動式 (1 Hz 追蹤)

GNSS 接收器已取得衛星修正,並定期向一或多個應用程式提供數據。

D0

另一

>= 1

~100 mW (裝置特定)

N/A

Sleep

GNSS 接收器沒有連線的用戶端 GNSS 接收者硬體仍已套用電源來保留裝置上的內容,並減少作用中模式的繼續延遲時間。

D3(D3hot)

關閉或開啟

0

<1 mW (裝置特定)

軟體起始。 這是直接連接至通用序列總線 (USB) 總線或 USB 複合裝置之 GNSS 無線電的選擇性暫停狀態。

已移除電源

GNSS 接收器沒有連線的用戶端,無線電已關閉電源,而來自 GNSS 接收器的所有電源已由外部實體移除。

D3(D3cold)

關閉或開啟

0

0 mW

軟體起始且需要硬體協調才能移除電源。

GNSS 接收器的軟體驅動程式也需要處理無線電管理,如下所述。

平台實作需求

新式待命平臺具有多個實際整合 GNSS 接收器的選項。 GNSS 接收器可能是獨立裝置的一部分,由低功率通信總線連接到 SoC。 GNSS 接收器也可以整合到行動寬頻(MBB)無線電中,因為GNSS接收器在行動電話中很常見。 最後,GNSS 接收器可以整合到 SoC 本身。

當判斷要針對需要 GNSS 功能的平台選取哪個實作時,這些多個選項對系統整合者提出了挑戰。 針對 Windows 新式待命平臺,建議系統整合者以下列優先順序整合 GNSS:

  1. 如果系統配備 MBB 無線電,請使用整合至 MBB 模組的 GNSS 接收器。
  2. 如果系統配備具有上線 GNSS 接收器的 SoC,請使用整合至 SoC 的 GNSS 接收器。
  3. 透過低功率通信總線整合連接至 SoC 的獨立 GNSS 接收器(例如 UART、SPI 或 I2C)。

系統整合者不應將任何多餘的 GNSS 接收器公開給 Windows。 在操作系統公開的多個 GNSS 接收者存在的情況下,Windows 不會匯總所有 GNSS 裝置的位置資訊。

軟體電源管理機制

Windows 平臺中的 GNSS 裝置應該由使用 Windows 感測器類別擴充模型的使用者模式驅動程序架構 (UMDF) 驅動程式管理,並實作 ISensorDriver 介面。 此 GNSS 驅動程式稱為位置感測器驅動程式,並預期會為基礎 GNSS 接收器提供電源管理,並提供數據給應用程式要求位置資訊。

概觀和應用程式模型

位置感測器驅動程式會使用連線的應用程式用戶端數目作為主要機制,以判斷 GNSS 裝置何時可以進入睡眠或電源移除模式。 位置感測器驅動程式也負責與 GNSS 廠商提供的無線電管理員連結庫通訊,讓用戶能夠控制是否啟用或停用 GNSS 無線電。 位置感測器驅動程式可以使用連線的用戶端數目和使用者對無線電狀態的喜好設定,以確保 GNSS 裝置盡可能處於低功率睡眠或移除電源模式。

Microsoft Store 應用程式會管理前景和背景應用程式的存留期,因此對連線到位置感測器驅動程式的應用程式用戶端數目有重大影響。 前景應用程式會透過 Windows 位置 API 要求位置資訊。 當使用者將前景應用程式切換至背景時,Microsoft Store 應用程式模型可確保用戶端應用程式與 GNSS 接收器中斷連線。

此應用程式模型機制可讓位置感測器驅動程式輕鬆地追蹤連線的應用程式客戶端數目。 每當有零個連線的應用程式用戶端時,位置感測器驅動程式就可以將 GNSS 裝置轉換成睡眠或電源移除模式。

當系統進入新式待命時,Windows 會自動暫停所有前景應用程式,導致位置感測器驅動程序觀察連線的用戶端數目轉換為零。

整合無線電管理

位置感測器驅動程式也必須實作介面,以便與廠商提供的無線電管理員連結庫通訊。 無線電管理員連結庫可讓 Windows 在 Windows 設定 應用程式中公開 GNSS 裝置無線電「開啟/關閉」控制件。

位置感測器驅動程序實作需求

當 GNSS 裝置未使用時,位置感測器驅動程式必須將 GNSS 裝置置於低功率 D3 狀態。 當目前沒有連線的用戶端,或已透過無線電管理員停用 GNSS 時,GNSS 裝置不會使用中。

當 GNSS 裝置已透過無線電管理員停用時,位置感測器驅動程式必須隨時以 D3 狀態保存 GNSS 裝置。 這項需求可防止驅動程式使用受電源管理的佇列,並只轉送來自已連線用戶端的要求。 位置感測器驅動程式必須使用非電源管理的佇列進行 I/O,並使用 StopIdleResumeIdle 方法直接管理閑置。 位置感測器必須是 GNSS 裝置驅動程式堆疊的電源原則擁有者。 驅動程式必須在呼叫 IWDFDevice::CreateIoQueue 時,將 bPowerManaged 的值設定為 FALSE,才能建立 I/O 佇列。

如上所述,驅動程式會使用連線的用戶端數目,以及來自無線電管理員的無線電狀態來判斷 GNSS 裝置是否閑置。 當 GNSS 裝置閒置時,驅動程式會呼叫 ResumeIdle 方法,導致驅動程式架構起始 D3 轉換。 驅動程式架構會執行驅動程式的 OnD0Exit 方法實作

當 GNSS 裝置因新的連線用戶端或無線電電源而重新啟動時,驅動程式會呼叫 StopIdle 方法。 驅動程式架構會執行驅動程式的 OnD0Entry 方法實作。 請注意,驅動程式必須執行 StopIdle 方法,並將 WaitForD0 參數設定為 FALSE。

下面提供的狀態圖表說明此關聯性,並作為驅動程序開發人員何時呼叫 StopIdle 和 ResumeIdle 方法的指南。

因為驅動程式負責追蹤裝置是否閑置,所以它必須直接管理 I/O 佇列和產生的硬體裝置存取。

位置感測器驅動程式必須同時實 作 IPnpCallbackSelfManagedIo::OnSelfManagedIoSuspendIPnpCallbackSelfManagedIo::OnSelfManagedIoRestart 方法。 請注意,驅動程式架構會在裝置啟動時呼叫 IPnpCallbackSelfManagedIo::OnSelfManagedIoInit,包括系統開機時。 後續呼叫的是 IPnpCallbackSelfManagedIo::OnSelfManagedIoRestart 回呼。 當驅動程式架構呼叫 CreateDevice 方法時,必須註冊這些介面。

IPnpCallbackSelfManagedIo::OnSelfManagedIoRestart 會發出位置感測器驅動程式訊號,要求到驅動程式的位置感測器驅動程式可能會直接與 GNSS 裝置硬體互動,包括來自 ISensorDriver:: 回呼的要求。 請注意,驅動程式架構保證可以在 OnD0ExitOnD0Entry 方法中存取裝置硬體。

同樣地,當 架構呼叫 IPnpCallbackSelfManagedIo::OnSelfManagedIoSuspend 方法時,驅動程式必須在從 OnSelfManagedIoSuspend 傳回之前立即完成所有 ISensorDriver 要求。 如果這樣做,驅動程式將無法存取裝置硬體,這可能會防止上述任何要求在一秒內完成。 如果位置感測器驅動程式有 GNSS 裝置硬體的擱置要求,則如果無法以任何其他方式完成要求,則要求必須取消,而不會違反此時間條件約束。

如果驅動程式未直接與硬體裝置互動,或保證所有未完成的硬體要求都會在一秒內完成,驅動程序應該使用下列程式來實 作 OnSelfManagedIoSuspend 方法:

  1. 設定全域旗標,指出裝置為非使用中狀態。
  2. Windows Driver Frameworks (WDF) 佇列上呼叫 StopSynchronously 方法。
  3. 停止存取 GNSS 裝置硬體的任何其他異步工作。
  4. 在 WDF 佇列上呼叫 Start 方法。
  5. 清除步驟 1 中設定的全域旗標。

如需執行這些作業的程式代碼範例,請參閱 Sensors 地理位置範例驅動程式 (UMDF 第 1 版) 中的 OnSelfManagedIoSuspend 實作。

如果驅動程式直接與硬體裝置互動,則必須取消對硬體的任何未處理要求,才能排清 I/O 佇列。 驅動程序應該使用下列程序來實 作 OnSelfManagedIoSuspend 方法:

  1. 設定全域旗標,指出裝置為非使用中狀態。
  2. 在 WDF 佇列上呼叫 Stop 方法。
  3. 取消所有擱置的硬體要求,以允許所有 ISensorDriver 回呼線程完成。
  4. 在 WDF 佇列上呼叫 StopSynchronously 方法。
  5. 停止存取 GNSS 裝置硬體的任何其他異步工作。
  6. 在 WDF 佇列上呼叫 Start 方法。
  7. 清除步驟 1 中設定的全域旗標。

所有位置感測器驅動程式都必須在 OnSelfManagedIoFlush 方法的實作中同步清除 I/O 佇列。

睡眠和電源移除模式

當裝置保留本機內容時,GNSS 裝置可同時支援睡眠模式和已移除電源模式,而且仍然可以在通訊總線上回應要求,而不需要外部訊號。 (通常,電源移除模式中的裝置無法回應總線要求。必須寫入位置感測器驅動程式,以瞭解基礎裝置是否能夠移除電源模式。 只有當基礎裝置能夠移除電源模式,且驅動程式能夠儲存/還原內容並重新初始化裝置時,位置感測器驅動程式才應該啟用 D3cold。 否則,位置感測器應該繼續使用 D3 做為其閑置狀態,但不啟用 D3cold。 這可讓基礎總線和篩選驅動程式將裝置置於睡眠低功率模式,而不是移除電源模式。

當位置感測器驅動程式指出其支援 D3cold 並開始 D3 轉換時,基礎總線和篩選驅動程式會負責從裝置移除電源。 如果 UART 連線的 GNSS 裝置,ACPI 可以實作機制。 或者,如果 USB 列舉的 GNSS 裝置,可以透過 USB 中樞驅動程式和 ACPI 驅動程式的組合來啟用機制。

如果 GNSS 裝置位於 SoC 上,則來自基礎驅動程式中實作之 SoC 廠商的專屬驅動程式和韌體負責從 GNSS 裝置移除電源。 如果 GNSS 裝置在其睡眠電源模式中耗用大於 1 mW,則必須設計 GNSS 驅動程式、平臺韌體和硬體,以在所有用戶端中斷連線時將裝置置於已移除電源模式。

閑置偵測

GNSS 裝置的位置感測器驅動程式必須盡可能將裝置轉換為睡眠電源模式。 如果應用程式要求長報告間隔,位置感測器驅動程式應該將 GNSS 裝置轉換為睡眠電源模式,直到要求下一個修正程序為止。 位置感測器驅動程式必須有足夠的時間將 GNSS 裝置轉換為使用中電源模式,以三角處理修正程式,並提供應用程式的位置數據。

例如,假設最短要求的報表間隔為 30 分鐘,且裝置需要一分鐘才能熱身並取得位置修正。 在此案例中,位置感測器驅動程序必須:

  • 在提供位置信息之後,立即呼叫 ResumeIdle,將 GNSS 裝置轉換為睡眠模式 (D3)。
  • 讓定時器在未來 28 分鐘到期。 (TimerExpiration = ReportInterval – WarmUpTime)。
  • 定時器到期時,請呼叫 StopIdle,將 GNSS 裝置轉換為 D0。
  • 當裝置取得修正程式時,請將位置資訊提供給應用程式。 注意 位置感測器驅動程序必須仔細設定 D3cold。

如果裝置需要持續電源才能達到 WarmUpTime 的繼續延遲,則不得啟用 D3cold。 您可以在運行時間動態啟用 D3cold,方法是變更 WDF_DEVICE_POWER_POLICY_IDLE_SETTINGS 結構中的 ExcludeD3Cold 值。

當 USB 連結的 GNSS 裝置轉換為已停用 D3cold 的睡眠模式 (D3)時,裝置會轉換為 USB 暫停狀態,以節省大量晶片組和處理器電源。 如果位置感測器驅動程式啟用 D3cold 並轉換至睡眠模式 (D3),即使透過 USB 總線連接,基礎平臺仍可能會從裝置移除電源。

支援的硬體組態

Windows 支援 GNSS 裝置的四個實體硬體設定。 線上總線會區分每個硬體組態。

透過 UART 連線到 SoC 的 GNSS

在此設定中,GNSS 無線電是連線到 SoC 上 UART 的獨立裝置。 GNSS 無線電在無線電與 SoC 之間可能有一或多個 GIO,目的是在作用中和睡眠電源模式之間轉換,或處理重設和啟動排序條件。

如果 GNSS 無線電在其睡眠電源模式中耗用小於 1 mW,GNSS 無線電可能會連接到符合裝置規格的任何系統電源軌。

GNSS 裝置必須在 ACPI 命名空間中宣告,而用於電源管理的 GIO 應該由 ACPI 命名空間中裝置下的_PS3和_PS0控制方法控制。 ACPI 驅動程式會執行_PS3和_PS0方法,以回應位置感測器驅動程式起始的 D3 和 D0 轉換。 系統整合者必須將 GPIO 作業區域宣告為 ACPI 命名空間中 GPIO 作業區域的一部分。

如果 GNSS 接收器在其睡眠電源模式中耗用超過 1 mW,則 GNSS 接收器必須連線到電源軌,才能使用 SOC 上 ACPI 韌體控制的 GPIO 來開啟和關閉。 在此設定中,位置感測器驅動程序必須啟用 D3cold。 用於控制可切換電源軌的 GPIO 必須公開在 ACPI GPIO 作業區域中。 系統整合者必須描述可切換電源軌的電源資源,包括_OFF和_ON方法,以及命名空間中 GNSS 裝置下電源資源的參考。

當位置感測器驅動程式轉換成 D3 時,Windows ACPI 驅動程式會評估_OFF方法。 當位置感測器驅動程式轉換成 D0 時,Windows ACPI 驅動程式會評估電源資源下_ON方法。 實作_OFF和_ON方法應該切換 GPIO,以控制可切換的電源軌,並實作所需的任何電源排序延遲。

整合至 SoC 的 GNSS

如果 GNSS 裝置實際整合到 SoC 中,通訊和電源管理的實作會專屬於 SoC 本身。

GNSS 裝置仍必須透過 ACPI 列舉,不過與基礎 GNSS 接收者的通訊可能會透過 SoC 廠商提供的傳輸驅動程式進行。 在此設定中,當所有用戶端中斷連線時,位置感測器驅動程式仍必須實作 D3 轉換,以進入睡眠或移除電源模式。 D3 轉換可確保 Windows OS 電源管理工具和診斷可以輕鬆地觀察 GNSS 裝置的電源狀態。

計劃利用整合至系統 SoC 之 GNSS 無線電的系統整合者應與 SoC 廠商密切合作,以取得韌體、驅動程式和電源管理支援。

GNSS 整合至 USB 連接的 MBB 無線電作為 USB 複合裝置

系統設計工具可以選擇整合包含內嵌 GNSS 接收器的 USB 連結 MBB 模組。 在此硬體設定中,位置感測器驅動程式會直接透過USB總線與內嵌的 GNSS 接收器通訊,做為 USB 複合裝置中的一個功能。

注意 MBB 模組上具有 GNSS 裝置的系統需要仔細整合考慮。 請連絡您的 Microsoft 代表,以檢閱這些解決方案的硬體、軟體和韌體設計。

在此設定中,GNSS 裝置是 MBB 模組的整合部分。 GNSS 無線電可能會與 MBB 無線電共用處理、電源供應和 RF 天線元件。 GNSS 無線電會直接公開至軟體,作為 USB 複合裝置上的一個介面。 位置感測器驅動程式會使用位置感測器驅動程式內實作的 USB 驅動程式介面,直接透過 USB 總線與 GNSS 無線電通訊。

GNSS 硬體的電源管理是由 GNSS 模組的頻內通訊所驅動。 GNSS 模組和位置感測器驅動程式必須支援頻內機制,才能開啟和關閉 GNSS 無線電。 此機制不得依賴從 SoC 到 MBB+GNSS 模組的任何 PIO 使用。

同樣地,GNSS 模組和位置感測器驅動程式必須支援將裝置轉換為 D3 狀態,讓 USB 複合裝置可以進入 USB 暫停(選擇性暫停)狀態。 USB 複合裝置上的所有功能都必須暫停,才能讓複合裝置暫停。 GNSS 裝置必須處於睡眠 (D3) 模式,才能讓 GNSS 函式和整個 USB 複合裝置處於暫停狀態。

注意 GNSS 裝置和驅動程式必須支援選擇性暫停,否則 SoC 上的 USB 主機控制器無法進入低功率模式,並防止在新式待命期間省電。

在此設定中,GNSS 裝置是透過 USB 和 USB 複合驅動程式列舉,但會在 ACPI 命名空間中描述。 在此設定中,MBB 模組和 SoC 上的 GNSS 裝置之間不支援 GPIO 通訊。 即使使用者停用無線電,GNSS 裝置在平台維持在 S0 系統電源狀態的整個期間,仍必須透過 ACPI 向 Windows 列舉。 GNSS 裝置絕不會在系統的任何部分準時從 USB 總線消失。

GNSS 已使用裝置服務整合到 USB 連接的 MBB 無線電

系統設計工具可以選擇整合包含內嵌 GNSS 接收器的 USB 連結 MBB 模組。 在此硬體組態中,位置感測器驅動程式會透過行動寬頻裝置服務介面與內嵌 GNSS 接收器通訊,而不是公開為獨立 USB 功能的 GNSS 裝置,做為代表整個 MBB 模組之複合裝置的一部分。

注意 不建議使用此設定。 選擇這個 GNSS 裝置整合方法的系統整合者應連絡其 Microsoft 代表,以驗證正確的實作。 偏好將 GNSS 裝置公開為代表 MBB 模組的 USB 複合裝置的一部分。

在此設定中,GNSS 裝置是 MBB 模組的整合部分。 GNSS 無線電可能會與 MBB 無線電共用處理、電源供應和 RF 天線元件。 GNSS 無線電會透過可使用 WindowsIMbnDeviceServices COM 介面存取的裝置服務介面間接公開給軟體。 位置感測器驅動程式會透過 IMbnDeviceServices 介面與 GNSS 無線電通訊。

GNSS 硬體的電源管理是由透過裝置服務介面與 MBB 模組的頻內通訊所驅動。 GNSS 硬體必須透過裝置服務介面支援頻內機制,以關閉無線電並讓 GNSS 裝置處於低功率模式。 這些機制必須由位置感測器驅動程式透過裝置服務介面存取。

在此設定中,GNSS 裝置必須由 ACPI 列舉,並在 ACPI 命名空間中描述為行動寬頻模組的子系。 GNSS 裝置不會在 ACPI 命名空間中的裝置下描述任何硬體資源。

位置感測器驅動程式仍必須執行一組相同的電源管理實作指導方針,如先前的驅動程序實作需求一節所述。

在此設定中,MBB 模組和 SoC 上的 GNSS 裝置之間不支援 GPIO 通訊。 所有電源管理和無線電通信都會透過USB總線實際執行,並透過裝置服務介面向位置感測器驅動程序公開。 即使使用者停用無線電,GNSS 裝置仍必須透過 ACPI 隨時透過 ACPI 向 Windows 列舉。

實作此硬體組態時,鼓勵系統整合者與 MBB 模組廠商密切合作,以確保 GNSS 裝置在 ACPI 命名空間中正確公開。

喚醒考慮

GNSS 裝置沒有喚醒考慮。 GNSS 裝置不應支援從低功率狀態喚醒 SoC。

測試和驗證

GNSS 裝置廠商、MBB 模組廠商和系統整合者應遵循這些建議來測試及驗證 GNSS 裝置及其相關軟體元件的電源管理實作。 如需詳細資訊,請參閱全域導航衛星系統 (GNSS) 測試指引。

位置感測器電源管理

系統整合者應該驗證 GNSS 裝置的位置感測器驅動程式執行電源管理轉換,並在所有用戶端中斷連線或已停用無線電時進入 D3 狀態。

基本測試案例如下:

  • 觀察位置感測器驅動程式會在螢幕關閉新式待命的 10 秒內轉換為 D3。
  • 觀察位置感測器驅動程式會在 Windows 設定 應用程式中關閉無線電的 10 秒內轉換為 D3。
  • 觀察位置感測器驅動程式在結束新式待命后立即轉換為 D0,並啟動使用位置 API 的應用程式。

觀察位置感測器驅動程式的 Dx 狀態轉換最簡單的方式,就是使用 Windows Performance Toolkit 與其他 Windows 感測器裝置進行比較。 此方法會使用 Windows 檢測來驗證 D3 IRP 正在透過包含 GNSS 裝置的裝置驅動程式堆疊轉換。 Windows 電源管理員包含內建的 Windows 事件追蹤 (ETW) 檢測,包括裝置電源 (Dx) IRP 的檢測。 若要以手動模式檢視這項資訊,請在受測的系統上取得並安裝 Windows Performance Toolkit (WPT)。

使用下列指令開始使用者模式 XPerf 追蹤:

  1. 開啟 管理員 istrator 命令提示字元。

  2. 流覽至 \%ProgramFiles%\Windows Kits\8.0\Windows Performance Toolkit\ 資料夾。

  3. 啟動 Xperf: xperf.exe -start power_session -on Microsoft-Windows-Kernel-Power

  4. 使用電源按鈕將系統轉換為新式待命。

  5. 等候120秒。

  6. 使用電源按鈕,將系統從新式待命移出。

  7. 等候 60 秒。

  8. 執行下列命令來停止事件記錄: xperf.exe -stop power_session

  9. 將二進位追蹤檔案轉換成 .csv 和人類可讀取的格式: xperf.exe –i \user.etl > power.txt

  10. 在文本編輯器中開啟power.txt檔案,並搜尋 GNSS 裝置的硬體識別碼。 GNSS 裝置的硬體識別碼可以從 [裝置實例路徑] 下 裝置管理員 裝置屬性的 [詳細數據] 索引標籤中判斷。 在下列範例中,GNSS 裝置的裝置實例路徑是 ACPI\MST0731\2&daba3ff&0

  11. GNSS 裝置的 D3 IRP 是由類型為 Microsoft-Windows-Kernel-Power/IRP/Stop 的事件,其中包含 GNSS 裝置的裝置實例路徑,以及 D3 狀態的最後一個事件值 3。 power.txt 檔案下方的事件輸出會顯示 D3 IRP 的開頭。

    Microsoft-Windows-Kernel-Power/Irp/Start , 7605393, "Unknown" ( 4), 256, 0, , , , , 0x868e2728, 1, 2, 0x85fb56e0, 25, "ACPI\MSFT0731\2&daba3ff&0", 3

  12. 此事件應該會在 power.txt 輸出檔案的開頭附近記錄。 上述範例中的參數 0x868e2728 是 D3 IRP 結構的指標。 藉由尋找具有這個相同 IRP 指標的後續事件,即可探索流經包含 GNSS 裝置之驅動程式堆疊的 D3 IRP 檢視。 請注意,IRP 指標會是系統和開機存留期的特定指標。

  13. Microsoft-Windows-Kernel-Power/Irp/Start , 7605393, "Unknown" ( 4), 256, 0, , , , , 0x868e2728, 1, 2, 0x85fb56e0, 25, "ACPI\ATML1000\2&daba3ff&0", 3

  14. Microsoft-Windows-Kernel-Power/Driver/Start , 7605416, "Unknown" ( 4), 20, 0, , , , , 0x868e2728, 0x85fb56e0, "\Driver\gpsdrv"

  15. Microsoft-Windows-Kernel-Power/Driver/Stop , 7605515, "Unknown" ( 4), 20, 0, , , , , 0x868e2728, 0x85fb56e0

  16. Microsoft-Windows-Kernel-Power/Driver/Start , 7608351, "Unknown" ( 4), 20, 0, , , , , 0x868e2728, 0x857ffb90, "\Driver\ACPI"

  17. Microsoft-Windows-Kernel-Power/Driver/Stop , 7608416, "Unknown" ( 4), 20, 0, , , , , 0x868e2728, 0x857ffb90

  18. Microsoft-Windows-Kernel-Power/Driver/Start , 7608424, "Unknown" ( 4), 20, 0, , , , , 0x868e2728, 0x85fb56e0, "\Driver\sensdrv"

當屏幕開啟時,驗證 GNSS 裝置會返回 D0,這是類似的程式。 GNSS 裝置的 Microsoft-Windows-Kernel-Power/IRP/Start 事件將會記錄為 0 (D0) 目標狀態。 D0 IRP 會以與 D3 IRP 類似的方式,流經 GNSS 裝置堆疊的驅動程式。

GNSS 電源管理檢查清單

系統整合者、GNSS 無線電廠商和 SoC 廠商應該使用下列檢查清單,以確保其系統電源管理設計與 Windows 8 和更新版本相容。

  • 以下列組態喜好設定順序,將 GNSS 裝置整合到支援新式待命的平臺:

    1. 與 MBB 模組整合(適用於配備 MBB 的系統),透過 USB 連線。
    2. 整合至 SoC (適用於 SoC 上具有 GNSS 的系統)。
    3. 聯機到UART、I2C或其他低功率總線的SoC外部獨立。
  • 選取具有睡眠 (無線電關閉) 平均耗電量小於 1 mW 的 GNSS 裝置,包括任何總線連線介面。

  • 如果 GNSS 裝置的睡眠(無線電關閉)平均耗電量大於 1 mW,系統整合者和 GNSS 裝置廠商必須支援在沒有連線的應用程式用戶端或使用者關閉無線電時,完全從 GNSS 裝置移除電源。

  • 請確定 GNSS 裝置廠商提供位置感測器驅動程式,可根據連線的用戶端數目和 GNSS 無線電的狀態,實作運行時間電源管理。

  • 請確定 GNSS 裝置廠商提供無線電管理員連結庫,以公開 Windows 設定 應用程式中的 GNSS 無線電。

    位置感測器驅動程式必須實作私人介面,以在廠商提供的無線電管理員連結庫與廠商提供的位置感測器驅動程式之間通訊無線電開啟/關閉狀態。

  • 如果 GNSS 是透過 UART、I2C 或其他低功率總線連線的 SoC 外部獨立裝置,系統整合器和 GNSS 裝置廠商必須:

    1. 記錄 GNSS 裝置與 SoC 本身之間的任何 GPO。
    2. 在 ACPI 命名空間的 GPIO 作業區域中公開任何 GIO 以進行電源管理。
  • 如果 GNSS 是透過 UART、I2C 或其他低功率總線連線的 SoC 外部獨立裝置,且睡眠電源模式中 GNSS 裝置的平均耗電量大於 1 mW,系統整合器和 GNSS 裝置廠商必須:

    1. 提供 ACPI 電源資源和_ON/_OFF控制方法來描述 GNSS 電源網域。
    2. 提供 ACPI 命名空間中 GNSS 裝置底下的_PR0和_PR3方法,以參考所述的 ACPI 電源資源。
    3. 確定位置感測器驅動程式會執行 D3 轉換,並在驅動程式中啟用 D3cold。
  • 如果 GNSS 是 MBB 模組的一部分,系統整合者和 GNSS 裝置廠商必須:

    1. 將 GNSS 裝置公開為 USB 複合裝置的一部分。
    2. 提供位置感測器驅動程式,以透過USB總線直接與 GNSS 裝置通訊。
    3. 確定 GNSS 裝置的所有電源管理都可以透過 USB 總線在頻內執行無線電開啟/關閉。 在此硬體設定中,無法使用任何 GIO 來變更 GNSS 無線電或電源狀態。
    4. 確定描述 MBB 模組的 USB 裝置或描述 MBB 和 GNSS 無線電的 USB 複合裝置在新式待命期間進入 USB 暫停狀態。
    5. 即使透過裝置服務介面與裝置通訊,位置感測器驅動程式必須進入 D3 (睡眠)模式,否則所有用戶端都已中斷連線,或已關閉無線電。
    6. 如果 GNSS 裝置是透過行動寬頻裝置服務介面控制(不建議這麼做),則必須在系統 ACPI 命名空間中描述 GNSS 裝置,且沒有硬體資源。 GNSS 裝置必須描述為 ACPI 命名空間中行動寬頻模組的子系。
  • 測試並驗證 GNSS 裝置和位置感測器驅動程式是否正確執行電源管理。 請至少驗證下列測試案例:

    • 觀察位置感測器驅動程式會在螢幕關閉新式待命的 10 秒內轉換為 D3。
    • 觀察位置感測器驅動程式會在 Windows 設定 應用程式中關閉無線電的 10 秒內轉換為 D3。
    • 觀察位置感測器驅動程式在結束新式待命后立即轉換為 D0,並啟動使用位置 API 的應用程式。
  • 驗證 GNSS 裝置處於睡眠狀態 (D3) 狀態的耗電量,並確定平均小於 1 mW。