0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

常見eSPI通訊數(shù)據(jù)包的分析

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

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

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

eSPI 初始化通訊

通用參數(shù)配置

圖片

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

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 會在合適的時候?qū)?eSPI_Slave 的 0x08 寄存器,以配置不同的通訊參數(shù)。如下表:

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

圖片

上圖的配置參數(shù)中就選擇了 Quad Mode IO、66MHz 通訊,圖中也可以發(fā)現(xiàn)緊接著一筆數(shù)據(jù)通訊變成 66MHz、Quad IO mode。

通道參數(shù)配置

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

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

圖片

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

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

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 寄存器,發(fā)現(xiàn)通道已經(jīng) Ready

即 Channel Ready=1。

圖片

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

圖片

Virtual Wire 通訊

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

當(dāng)然反向通信,需要 eSPI_Slave 先發(fā)起 Alert# 信號,等待 eSPI_Master 查詢Status Reg,再根據(jù)狀態(tài)發(fā)起不同的命令讀取 eSPI_Slave 的數(shù)據(jù)。

Master 向 Slave 發(fā)送 pin status。

圖片

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

向 eSPI_Slave 通知 PCH 虛擬引腳狀態(tài)。

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 的數(shù)據(jù)解析。其他 System Event 解析一致。因此 Index=2,data=74,即表示 SLP_S3/4/5 有效,SLP_S3、SLP_S4 為低電平,SLP_S5 為高電平。

圖片

Slave 向 Master 發(fā)送 Signal status。

圖片

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

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

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

圖片

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

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

Slave 向 Master 發(fā)送 pin status。

圖片

如上圖,就是 Slave 端向 Master 端發(fā)送 SCI 的數(shù)據(jù)包。

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

當(dāng)然,等待 Master 端響應(yīng) SCI 后,Slave 必須發(fā)送一個 SCI 拉高的數(shù)據(jù)包。

圖片

Slave 向 Master 發(fā)送 IRQ。

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

圖片

圖片

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

Peripheral Channel IO 通訊

Keyboard 通訊

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

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

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

按鍵按下數(shù)據(jù)包。

圖片

按鍵松開數(shù)據(jù)包

圖片

Q_Event 通訊

EC 發(fā)送 Q_Event(A0)流程:

  1. EC 拉低 SCI,同時置位 66 寄存器的 BIT5,即 SCI_EVT。
  2. PCH 讀取 66,發(fā)現(xiàn) SCI_EVT 置位,發(fā)送 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 ,發(fā)現(xiàn) OBF 置位,讀取 62 寄存器,獲得 Q_Event Num(A0)。
  7. EC 拉高 SCI。

圖片

圖片

圖片

上述就是常見 eSPI 通訊數(shù)據(jù)包的分析。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 寄存器
    +關(guān)注

    關(guān)注

    31

    文章

    5254

    瀏覽量

    119294
  • SPI
    SPI
    +關(guān)注

    關(guān)注

    17

    文章

    1673

    瀏覽量

    90816
  • 通訊
    +關(guān)注

    關(guān)注

    9

    文章

    881

    瀏覽量

    34689
  • 數(shù)據(jù)包
    +關(guān)注

    關(guān)注

    0

    文章

    240

    瀏覽量

    24272
收藏 人收藏

    評論

    相關(guān)推薦

    eSPI協(xié)議抓分析

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

    以太網(wǎng)數(shù)據(jù)包捕獲與轉(zhuǎn)發(fā)技術(shù)

    數(shù)據(jù)包捕獲技術(shù)在網(wǎng)絡(luò)安全領(lǐng)域中應(yīng)用十分廣泛,網(wǎng)絡(luò)入侵檢測系統(tǒng)、協(xié)議分析軟件、防火墻等都需要捕獲數(shù)據(jù)包。本文研究了linux 和windows 環(huán)境下的數(shù)據(jù)包捕獲技術(shù),給出了幾種數(shù)
    發(fā)表于 07-30 11:19 ?63次下載

    網(wǎng)絡(luò)數(shù)據(jù)包捕獲機(jī)制研究

    網(wǎng)絡(luò)數(shù)據(jù)包捕獲技術(shù),是實現(xiàn)入侵檢測、網(wǎng)絡(luò)安全審計的關(guān)鍵技術(shù)。本文改進(jìn)了國外傳統(tǒng)的數(shù)據(jù)包捕獲函數(shù)庫Libpcap 捕獲數(shù)據(jù)包的方案。原方案在網(wǎng)卡捕獲到數(shù)據(jù)包后,
    發(fā)表于 09-01 10:09 ?9次下載

    基于Jpcap的數(shù)據(jù)包捕獲器的設(shè)計與實現(xiàn)

    本文研究了以太網(wǎng)數(shù)據(jù)包的捕獲機(jī)制,實現(xiàn)了基于JPcap的網(wǎng)絡(luò)數(shù)據(jù)包捕獲工具,其基本原理是通過調(diào)用Jpcap庫捕獲本地網(wǎng)絡(luò)上的所有數(shù)據(jù)包,然后對數(shù)據(jù)包進(jìn)行協(xié)議解碼,從而可以實
    發(fā)表于 01-15 13:47 ?38次下載

    數(shù)據(jù)包過濾原理

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

    什么是數(shù)據(jù)包?

    什么是數(shù)據(jù)包? 您在互聯(lián)網(wǎng)上做的一切都涉及到數(shù)據(jù)包。例如,您接收的每個網(wǎng)頁都以一系列數(shù)據(jù)包的形式傳入,您發(fā)送的每封電子郵件都以一系列數(shù)據(jù)包的形式傳出。以
    發(fā)表于 08-03 09:13 ?1986次閱讀

    移動IPV6在改進(jìn)數(shù)據(jù)包發(fā)送路徑模型下性能分析

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

    基于數(shù)據(jù)包長度的網(wǎng)絡(luò)隱蔽通道

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

    ZigBee3.0數(shù)據(jù)包解析

    ZigBee3.0是ZigBee聯(lián)盟推出的可以互聯(lián)互通的標(biāo)準(zhǔn)協(xié)議,用之前的Packet Sniffer抓包工具是無法解析ZigBee3.0的數(shù)據(jù)包,因ZigBee3.0的安全機(jī)制所有的數(shù)據(jù)包都是加密
    發(fā)表于 02-28 11:48 ?2582次閱讀
    ZigBee3.0<b class='flag-5'>數(shù)據(jù)包</b>解析

    數(shù)據(jù)包的發(fā)送流程

    一個數(shù)據(jù)包,從聊天框里發(fā)出,消息會從聊天軟件所在的用戶空間拷貝到內(nèi)核空間的發(fā)送緩沖區(qū)(send buffer),數(shù)據(jù)包就這樣順著傳輸層、網(wǎng)絡(luò)層,進(jìn)入到數(shù)據(jù)鏈路層,在這里數(shù)據(jù)包會經(jīng)過流控
    的頭像 發(fā)表于 08-19 14:38 ?2500次閱讀

    網(wǎng)絡(luò)數(shù)據(jù)包分析軟件wireshark的基本使用

    Wireshark(前稱Ethereal)是一個網(wǎng)絡(luò)數(shù)據(jù)包分析軟件。網(wǎng)絡(luò)數(shù)據(jù)包分析軟件的功能是截取網(wǎng)絡(luò)數(shù)據(jù)包,并盡可能顯示出最為詳細(xì)的網(wǎng)絡(luò)
    的頭像 發(fā)表于 09-29 14:48 ?2885次閱讀

    wireshark導(dǎo)入數(shù)據(jù)包進(jìn)行分析

    linux的tcpdump命令主要用于網(wǎng)絡(luò)問題的調(diào)試中,通過抓取傳輸過程的數(shù)據(jù)包進(jìn)行分析和調(diào)試。而wireshark則是一款功能強(qiáng)大,使用方便的數(shù)據(jù)包分析工具,tcpdump+wire
    的頭像 發(fā)表于 12-27 09:37 ?1960次閱讀

    eSPI通訊總線的應(yīng)用優(yōu)勢

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

    Wireshark網(wǎng)絡(luò)數(shù)據(jù)包分析軟件簡介

    wireshark是一個免費開源的網(wǎng)絡(luò)數(shù)據(jù)包分析軟件,功能十分強(qiáng)大。可以截取各種網(wǎng)絡(luò)數(shù)據(jù)包,顯示網(wǎng)絡(luò)數(shù)據(jù)包的詳細(xì)信息。
    的頭像 發(fā)表于 04-26 09:52 ?2535次閱讀
    Wireshark網(wǎng)絡(luò)<b class='flag-5'>數(shù)據(jù)包</b><b class='flag-5'>分析</b>軟件簡介

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

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