目錄

硬體韌體相關協議了解

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 協定

  1. UART: 最簡單的協定,不能遠距離傳且通信速度慢,一對一,要設定 baud rate
  2. RS232, RS485: 因為 UART 使用 TTL,不能遠距離傳輸,所以多了這兩個協定,其中 RS485 可以一對多 他是 UART 的「電氣規格升級」
  3. SPI: 因為 UART 是要設定兩方共同的通訊速度,但這會導致不能送太快,所以 SPI 使用 clock 讓他可以送很快 每 bit 都有 timing guarantee,沒有 start/stop bit overhead,全雙工
  4. I2C: 一對多 master/slave 架構,兩條線,半雙工,每個 device 有 address,共享 bus arbitration
  5. Canbus: 多個 master 架構,主要用在車用跟工業控制
  6. GPIO + EXTI(interrupt system)
  7. ADC / DAC
  8. PWM / Timer
  9. SDIO / MMC
  10. QSPI / OSP
  11. Ethernet

UART

只有三條線:

  1. TX
  2. RX
  3. GND

沒有 Clock,非同步,主要用在 Console/Debug log,會用在各種地方,像是:

  1. Boot ROM
  2. GPU ROM
  3. 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 控制器

Reference