SerCx2 架構概觀
SerCx2 可與序列控制器驅動程式搭配運作,以啟用周邊驅動程式與序列連線周邊裝置之間的通訊。 一般而言,序列控制器會整合到 Chip (SoC) 晶片上的系統,以提供與 SoC 晶片外部的週邊設備進行低針腳計數通訊,但會進入相同的印刷電路板。
下圖顯示序列連線周邊裝置與此裝置驅動程式之間的通訊路徑。 此周邊驅動程式會在核心模式或使用者模式中執行,並將 I/O 要求傳送至周邊裝置所連接的序列埠。
SerCx2 和序列控制器驅動程式都會以核心模式執行,並透過 SerCx2 設備磁碟機介面彼此通訊, (DDI) 。 序列控制器驅動程式會呼叫 SerCx2 所實作的驅動程式支援方法。 SerCx2 會呼叫串列控制器驅動程式所實作的事件回呼函式。
一般而言,串列控制器的硬體暫存器會對應記憶體。 序列控制器驅動程式會直接存取這些暫存器來設定序列埠,以及將資料傳送至連線到序列埠的周邊裝置或從周邊裝置傳送資料。 針對較長的資料傳輸,SerCx2 通常會使用 DMA 傳輸 (上圖) 中未顯示。
周邊驅動程式需要開啟周邊裝置邏輯連線的資訊會封裝在稱為連線 識別碼的特殊硬體資源類型中。 如需詳細資訊,請參閱 串列連線周邊裝置的連線識別碼。
一般而言,只有驅動程式會將 I/O 要求直接傳送至序列控制器。 當使用者模式應用程式需要與序列連線的周邊裝置通訊時,裝置的周邊驅動程式會作為應用程式與裝置之間的媒介。 如果應用程式需要將資料傳送至周邊裝置或從周邊裝置傳送寫入 ( (IRP_MJ_WRITE) 要求或讀取 (IRP_MJ_READ) 要求給周邊驅動程式,而周邊驅動程式會藉由將對應的寫入或讀取要求傳送至序列控制器來回應。 此外,周邊驅動程式可以傳送裝置 I/O 控制要求, (IOCTLs) 來設定序列埠。 如需 SerCx2 支援的 IOCTL 清單,請參閱 序列 I/O 要求介面。
將 I/O 要求傳送至序列控制器的周邊驅動程式是使用 Kernel-Mode Driver Framework (KMDF) ,或使用 使用者模式驅動程式 Framework (UMDF) 的使用者模式驅動程式。 SerCx2 會管理周邊驅動程式傳送至序列控制器的 I/O 要求佇列。
為了回應讀取或寫入要求,SerCx2 會起始一或多個 I/O 交易,以在序列控制器與要求中的資料緩衝區之間移動資料。 每個 I/O 交易都會使用程式化 I/O (PIO) 或 DMA,在序列控制器與要求中的資料緩衝區之間傳輸資料。 序列控制器驅動程式支援的 I/O 交易類型取決於序列控制器的硬體功能。 如需詳細資訊,請參閱 SerCx2 I/O 交易概觀。