精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

常見eSPI通訊數據包的分析

CHANBAEK ? 來源: 吃面小哥 ? 作者: Morgen ? 2023-11-18 15:35 ? 次閱讀

eSPI 通訊一般來說無需特別關注,因為通訊都是 PCH(eSPI_Master)和 EC(eSPI_Slave)硬件完成的,軟件不參與。

但是實際開發中經常會遇到 SLP_S3/4 不拉高導致無法開機,8042鍵盤無功能,6266無法通信等問題。因此了解常見的通訊流程,分析抓取的 eSPI 通訊數據包,對異常定位有很大的幫助。

eSPI 初始化通訊

通用參數配置

圖片

eSPI_Master 第一步會讀取 eSPI_Slave 的 0x08 寄存器獲取 eSPI_Slave 所支持的通訊能力。有如下參數:

I/O Mode SupportSingle I/O、Single and Dual I/O、Single and Quad I/O、Single, Dual and Quad I/O
Open Drain Alert# SupportedOpen-drain Alert#
Maximum Frequency Supported20、25、33、50、66MHz
Channel SupportedPeripheral、Virtual Wire、OOB、Flash、platform specific channels

圖片

接著 eSPI_Master 會在合適的時候寫 eSPI_Slave 的 0x08 寄存器,以配置不同的通訊參數。如下表:

CRC Checking Enable
Response Modifier Enable
Alert Mode Select
I/O Mode Select
Open Drain Alert# Select
Operating Frequency Select
Maximum WAIT STATE Allowed

圖片

上圖的配置參數中就選擇了 Quad Mode IO、66MHz 通訊,圖中也可以發現緊接著一筆數據通訊變成 66MHz、Quad IO mode。

通道參數配置

eSPI 支持4個 Channel,即 Peripheral(0x10)、Virtual wire(0x20)、OOB(0x30)、Flash(0x40)。

此處僅以 Peripheral Channel(0x10)配置為例。

圖片

通道參數配置,也遵循先讀后寫原則。即 eSPI_Master 先讀取 eSPI_Slave 通道配置寄存器,然后再改寫配置寄存器。

Peripheral Channel (0x10)涉及的參數如下表

Peripheral Channel Maximum Read Request SizeR/W
Peripheral Channel Maximum Payload SizeR/W
Peripheral Channel Maximum Payload Size SupportedRO
Bus Master EnableR/W
Peripheral Channel ReadyRO
Peripheral Channel EnableR/W

eSPI_Master 讀取 Peripheral Channel 0x10 寄存器,發現通道已經 Ready

即 Channel Ready=1。

圖片

eSPI_Master 寫 Peripheral Channel 0x10 寄存器,寫Channel Enable=1。

圖片

Virtual Wire 通訊

Virtual Wire Channel 包攬了 PCH 和 EC 之間所有的信號傳遞,包括 SCI、IRQ、SLP Signal。數據傳遞可以是 eSPI_Master 到 eSPI_Slave,也可以反向。

當然反向通信,需要 eSPI_Slave 先發起 Alert# 信號,等待 eSPI_Master 查詢Status Reg,再根據狀態發起不同的命令讀取 eSPI_Slave 的數據。

Master 向 Slave 發送 pin status。

圖片

如上圖,eSPI_Master 使用 PUT_VWIRW(04)命令,附帶數據包,

向 eSPI_Slave 通知 PCH 虛擬引腳狀態。

Length=03,即傳遞了 4組 Virtual Wire 信號。

index=02,Data=74,即傳遞了 System Event-2。

index=03,Data=30,即傳遞了 System Event-3。

index=41,Data=B9,即傳遞了 Platform Specific-41。

index=42,Data=31,即傳遞了 Platform Specific-41。

如下圖是 System Event Virtual Wire 2 的數據解析。其他 System Event 解析一致。因此 Index=2,data=74,即表示 SLP_S3/4/5 有效,SLP_S3、SLP_S4 為低電平,SLP_S5 為高電平。

圖片

Slave 向 Master 發送 Signal status。

圖片

如上圖,eSPI 通訊采用 Single IO,因此 Alert# 和 IO-1 復用。上圖 IO-1 最開始的 230ns 即為 eSPI_Slave 發起的 Alert# 信號。

eSPI_Master 接到 Alert# 后,首先發送 GET_STATUS(25)命令,獲取 eSPI_Slave 的狀態,可以看到 SLave 端回復的 status 是 0x14F。

即表示 PC/NP/VWIRE/OOB buffer 都是空,BIT6 VWIRE_AVAIL 置位即表示有 Virtual Wire 需要 Master 端讀取。

圖片

Master 發送 GET_VWIRE(05)命令讀取 Virtual Wire 狀態,Slave 端返回 System Event-5 的狀態。index=5,data=99,即表示

SLAVE_BOOT_LOAD_DONE 和 SLAVE_BOOT_LOAD_STATUS 有效,同時置位,即表示 Slave 端成功完成了 Flash 的訪問。

Slave 向 Master 發送 pin status。

圖片

如上圖,就是 Slave 端向 Master 端發送 SCI 的數據包。

index=6,data=10,即表示 SCI 信號有效,同時拉低。

當然,等待 Master 端響應 SCI 后,Slave 必須發送一個 SCI 拉高的數據包。

圖片

Slave 向 Master 發送 IRQ。

IRQ 在 eSPI Virtual wire 里面劃分為 Interrupt Event。占用 Virtual Wire Index 0和1。

圖片

圖片

如上圖,Master 接到 Alert# 信號后,讀取 Virtual 狀態。Slave 返回 IRQ-1信號。index=00,data=81,即表示 IRQ-1 拉高(注意,此處 IRQ-1 是高觸發)。IRQ-1 信號同樣的需要 Slave 端再次發送數據包拉低。

Peripheral Channel IO 通訊

Keyboard 通訊

理解上述 IRQ-1 觸發原理后,EC 端的鍵值發送就非常容易理解了。流程如下:

  1. 鍵盤按鍵按下后,EC 完成掃描以及轉換過程,最終生成一個 ScanCode 寫入 IO-60 數據寄存器。
  2. IO-60 的寫入動作,會觸發 EC 硬件自動發送一個 IRQ-1 通知 PCH,有鍵盤中斷發生。
  3. PCH 識別到 IRQ-1 后,會讀取 IO-64,查看 OBF 狀態,以判斷 IO-60 是否有數據需要讀取。
  4. 緊接著 PCH 會讀取 IO-60 獲取 ScanCode。

鍵盤一次按鍵分為“Press” 和 “Release”,即按下和松開都會給 PCH 端發送一個 ScanCode。如下示例是 “A” 鍵操作,對應 ScanCode 是 1E 和 9E。

按鍵按下數據包。

圖片

按鍵松開數據包

圖片

Q_Event 通訊

EC 發送 Q_Event(A0)流程:

  1. EC 拉低 SCI,同時置位 66 寄存器的 BIT5,即 SCI_EVT。
  2. PCH 讀取 66,發現 SCI_EVT 置位,發送 0x84 命令查詢 Q_Event。
  3. EC 拉高 SCI,同時清除 66寄存器 BIT5。
  4. EC 處理 0x84 查詢命令,把 Q_Event 隊列第一個 num(A0) 寫入 62 寄存器
  5. EC 拉低 SCI,置位 66寄存器 BIT0,即 OBF
  6. PCH 讀取 66 ,發現 OBF 置位,讀取 62 寄存器,獲得 Q_Event Num(A0)。
  7. EC 拉高 SCI。

圖片

圖片

圖片

上述就是常見 eSPI 通訊數據包的分析。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 寄存器
    +關注

    關注

    31

    文章

    5325

    瀏覽量

    120052
  • SPI
    SPI
    +關注

    關注

    17

    文章

    1701

    瀏覽量

    91345
  • 通訊
    +關注

    關注

    9

    文章

    894

    瀏覽量

    34836
  • 數據包
    +關注

    關注

    0

    文章

    253

    瀏覽量

    24367
收藏 人收藏

    評論

    相關推薦

    eSPI協議抓分析

    eSPI 協議在物理層是遵循 SPI 通訊規范的,但是協議層有差異,因此不能使用 SPI 協議去解析(沒有 eSPI 協議分析儀的情況下,可以使用 SPI 協議
    的頭像 發表于 11-18 15:29 ?3155次閱讀
    <b class='flag-5'>eSPI</b>協議抓<b class='flag-5'>包</b><b class='flag-5'>分析</b>

    以太網數據包捕獲與轉發技術

    數據包捕獲技術在網絡安全領域中應用十分廣泛,網絡入侵檢測系統、協議分析軟件、防火墻等都需要捕獲數據包。本文研究了linux 和windows 環境下的數據包捕獲技術,給出了幾種數
    發表于 07-30 11:19 ?63次下載

    網絡數據包捕獲機制研究

    網絡數據包捕獲技術,是實現入侵檢測、網絡安全審計的關鍵技術。本文改進了國外傳統的數據包捕獲函數庫Libpcap 捕獲數據包的方案。原方案在網卡捕獲到數據包后,
    發表于 09-01 10:09 ?9次下載

    基于Jpcap的數據包捕獲器的設計與實現

    本文研究了以太網數據包的捕獲機制,實現了基于JPcap的網絡數據包捕獲工具,其基本原理是通過調用Jpcap庫捕獲本地網絡上的所有數據包,然后對數據包進行協議解碼,從而可以實
    發表于 01-15 13:47 ?38次下載

    數據包過濾原理

    數據包過濾技術數據包過濾原理              數據包過濾技術是防火墻最常用的技術。對于一
    發表于 06-16 23:44 ?4587次閱讀
    <b class='flag-5'>數據包</b>過濾原理

    什么是數據包?

    什么是數據包? 您在互聯網上做的一切都涉及到數據包。例如,您接收的每個網頁都以一系列數據包的形式傳入,您發送的每封電子郵件都以一系列數據包的形式傳出。以
    發表于 08-03 09:13 ?2011次閱讀

    移動IPV6在改進數據包發送路徑模型下性能分析

    針對現有移動IPV6中數據包發送代價較高的問題,對現有移動IPV6協議性能分析模型中數據包發送路徑進行了改進,將訪問路由發送至移動節點的數據包由代價很大的隧道發送改進為直接
    發表于 01-12 10:32 ?35次下載
    移動IPV6在改進<b class='flag-5'>數據包</b>發送路徑模型下性能<b class='flag-5'>分析</b>

    基于數據包長度的網絡隱蔽通道

    在傳統隱蔽通道模型的基礎上,利用數據包的長度域,設計一種基于數據包長度的網絡隱蔽通道模型(LAWB模型),給出其形式化描述。對該模型進行了分析,并分別在IPv4和IPv6上對該模型進行了
    發表于 02-23 15:18 ?23次下載
    基于<b class='flag-5'>數據包</b>長度的網絡隱蔽通道

    ZigBee3.0數據包解析

    ZigBee3.0是ZigBee聯盟推出的可以互聯互通的標準協議,用之前的Packet Sniffer抓包工具是無法解析ZigBee3.0的數據包,因ZigBee3.0的安全機制所有的數據包都是加密
    發表于 02-28 11:48 ?2650次閱讀
    ZigBee3.0<b class='flag-5'>數據包</b>解析

    數據包的發送流程

    一個數據包,從聊天框里發出,消息會從聊天軟件所在的用戶空間拷貝到內核空間的發送緩沖區(send buffer),數據包就這樣順著傳輸層、網絡層,進入到數據鏈路層,在這里數據包會經過流控
    的頭像 發表于 08-19 14:38 ?2616次閱讀

    網絡數據包分析軟件wireshark的基本使用

    Wireshark(前稱Ethereal)是一個網絡數據包分析軟件。網絡數據包分析軟件的功能是截取網絡數據包,并盡可能顯示出最為詳細的網絡
    的頭像 發表于 09-29 14:48 ?3003次閱讀

    wireshark導入數據包進行分析

    linux的tcpdump命令主要用于網絡問題的調試中,通過抓取傳輸過程的數據包進行分析和調試。而wireshark則是一款功能強大,使用方便的數據包分析工具,tcpdump+wire
    的頭像 發表于 12-27 09:37 ?2086次閱讀

    eSPI通訊總線的應用優勢

    eSPI總線是Intel在2016年推出的一種通訊總線,用于x86 CPU平臺和外設之間的通訊。
    的頭像 發表于 02-15 09:05 ?4111次閱讀

    Wireshark網絡數據包分析軟件簡介

    wireshark是一個免費開源的網絡數據包分析軟件,功能十分強大??梢越厝「鞣N網絡數據包,顯示網絡數據包的詳細信息。
    的頭像 發表于 04-26 09:52 ?2755次閱讀
    Wireshark網絡<b class='flag-5'>數據包</b><b class='flag-5'>分析</b>軟件簡介

    艾體寶干貨 OIDA之四:掌握數據包分析-分析的藝術

    本文是OIDA方法系列的最后一部分,重點介紹了數據包分析的“分析”階段。這一最后階段將剖析階段的精煉數據轉化為可操作的見解,使網絡管理員和安全專業人員能夠解決問題、優化性能并增強安全性
    的頭像 發表于 09-24 11:47 ?172次閱讀
    艾體寶干貨 OIDA之四:掌握<b class='flag-5'>數據包</b><b class='flag-5'>分析</b>-<b class='flag-5'>分析</b>的藝術