硬體韌體相關協議了解
目錄
PCIe
以前有北橋負責讓 CPU -> RAM/GPU,南橋負責到 USB/SATA/PCI/Audio 等,現在南北橋晶片直接融合到 CPU 裡面,並且透過 PCIe 連接,像是:
- CPU -> GPU
- CPU -> SSD
- CPU -> 網卡
- CPU -> USB Controller
以 CPU -> GPU,常常會用 MMIO,MMIO 就是使用 PCIe 實作,並且還會有 DMA。
MESI
MESI 協議是一個基於失效的快取一致性協議,是支持寫回(write-back)快取的最常用協議。
中斷
- x86 APIC/IOAPIC
- ARM GIC (Generic Interrupt Controller)
現代 PCIe device(GPU / NIC)不用傳線 IRQ,直接用 MSI/MSI-X,用 PCIe transaction 觸發 interrupt。
MCU 協定
- UART: 最簡單的協定,不能遠距離傳且通信速度慢,一對一,要設定 baud rate
- RS232, RS485: 因為 UART 使用 TTL,不能遠距離傳輸,所以多了這兩個協定,其中 RS485 可以一對多 他是 UART 的「電氣規格升級」
- SPI: 因為 UART 是要設定兩方共同的通訊速度,但這會導致不能送太快,所以 SPI 使用 clock 讓他可以送很快 每 bit 都有 timing guarantee,沒有 start/stop bit overhead,全雙工
- I2C: 一對多 master/slave 架構,兩條線,半雙工,每個 device 有 address,共享 bus arbitration
- Canbus: 多個 master 架構,主要用在車用跟工業控制
- GPIO + EXTI(interrupt system)
- ADC / DAC
- PWM / Timer
- SDIO / MMC
- QSPI / OSP
- Ethernet
UART
只有三條線:
- TX
- RX
- GND
沒有 Clock,非同步,主要用在 Console/Debug log,會用在各種地方,像是:
- Boot ROM
- GPU ROM
- BMC 也有
以電腦可能要用 USB 連接,所以會有 USB-UART bridge chip。
I2C
低速,控制、板級管理(management / control plane)協議,使用兩條線通訊 SDA(data)/SCL(clock),像是:
- GPU 透過 I2C 讀取外部 sensor 溫度
- GPU -> I2C -> EEPROM
- GPU -> I2C -> fan controller
- CPU -> I2C -> PMIC 控制器