---
url: https://hackmd.io/nixXMCyNQFyaTSX8dsj5VQ
title: Hardware
lastSync: 2025-06-05T06:13:19.072Z
hackmd:
url: https://hackmd.io/nixXMCyNQFyaTSX8dsj5VQ
title: Hardware
lastSync: 2025-06-05T06:14:57.640Z
---
## 電子電路
- 電學基礎
- 電壓 / 電流 / 歐姆定律
- 被動元件
- 電阻 / 電容 / 電感 / RC電路
- 主動元件
- 二極體 / 電晶體 / 運算放大器
- 模擬電路
- 濾波器 / 放大器 / 震盪器
- 數位電路
- 邏輯閘 / 555 / 計數器
- PCB設計與整合
- KiCad / Arduino 實作
| 比較項目 | 主動元件(Active) | 被動元件(Passive) |
| ---------- | ------------------------------ | -------------------- |
| **是否提供能量** | ✔ 需要外部電源,可放大或產生能量 | ✘ 不提供能量,只吸收或儲存能量 |
| **能量轉換功能** | ✔ 可以將電能轉換為其他形式(例如放大、開關控制) | ✘ 只能消耗或暫存能量 |
| **控制能力** | ✔ 能控制電流(例如開關、訊號調整) | ✘ 無法主動控制,響應取決於輸入 |
| **非線性性質** | 常為**非線性元件**(如電晶體、二極體) | 多為**線性元件**(如電阻、電容) |
| **舉例** | 電晶體(BJT, MOSFET)、二極體、IC、運算放大器等 | 電阻器(R)、電容器(C)、電感器(L) |
## 分壓電路
> [Lab ADC](#Lab-ADC-voltage)
## EEPROM
是儲存單元,負責存放硬體描述(如 FRU 資訊)或 BMC 的設定數據。



M24C64-RMN6TP-2-GP




## FRU
是硬體資訊,描述伺服器硬體模組,用於資產追蹤與維修。
## I2C
- 一種低速的雙線通信協議,用於連接主機(如 BMC)和多個外設(如 EEPROM、溫度感測器等)。有主從架構,主機發起通信,從機回應。在 BMC 的應用:用來監控硬體設備的狀態,例如存取 EEPROM 儲存韌體資訊、讀取溫度感測器數據,或控制 GPIO 擴展器。
- BMC 的應用:用來監控硬體設備的狀態,例如存取 EEPROM 儲存韌體資訊、讀取溫度感測器數據,或控制 GPIO 擴展器。
- Philips (現為 NXP)
- 適用 低成本 簡單的通訊

- Feature
- [synchronous](https://en.wikipedia.org/wiki/Synchronous_circuit)
- multi-controller/multi-target
- [serial communication](https://en.wikipedia.org/wiki/Serial_communication)
- Usecase
- 感測器
- 記憶體(e.g. EEPROM)
- 優缺點
- Pros
- 通用性高,協議簡單
- Cons
- 沒有內建錯誤檢測(例如 CRC)
- 缺乏嚴格的時間約束。
- Protocol

- Cmd
- 操作範例
1. 找到 I2C bus 和地址:
```
i2cdetect -y <bus-number>
```
2. 從地址 `0x00` 讀取 8 bytes 的數據(例如:儲存韌體版本):
```bash
i2ctransfer -y <bus-number> w1@<device-address> 0x00 r8
```
3. 寫入一筆資料到地址 `0x10`:
```bash
i2ctransfer -y <bus-number> w2@<device-address> 0x10 0xAA
```
- 掃有哪些I2C:
- `i2cdetect -l`
- `ls /sys/class/i2c-dev`
- 看哪些連結的有回應
```
root@ums120:~# i2cdetect -y 14
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- UU -- -- -- -- -- -- --
50: -- -- -- -- UU -- -- -- -- -- -- -- -- -- -- --
60: 60 -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --
```
- 一個 Byte 操作
- example
```bash
i2cget -y 1 0x50 0x10
```
- example
```bash
i2cset -y 1 0x50 0x10 0x20
```
- 複雜 Byte 操作
寫入兩個byte(0x10, 0x20) 到 地址 0x50 讀取 128 bytes
```bash
i2ctransfer -y 1 w2@0x50 0x10 0x20 r128
```
### Lab Temp Sensor




### Lab FRU

### Lab IPMI

## SMBus
- (常用)
- **簡單解釋:** I²C 的延伸版,加入更多系統管理功能,例如封包錯誤檢查(PEC)和時序控制,用於更可靠的數據通信。
- **在 BMC 的應用:** 常用於與智慧電池(Smart Battery)或溫度感測器等關鍵設備通信,幫助 BMC 進行更可靠的系統健康監控。
- protocol


- common cmd

## PMBus
- 通常用於電源
- PMBus:基於 I²C/SMBus 的高階協議,專門用於電源管理,允許對電源設備進行監控和控制,例如調節電壓、電流或讀取溫度。用於監控電源供應器(PSU)的狀態,確保伺服器的電源供應正常,並在異常時發出告警。
### I2C vs SMBus vs PMBus
| | | | |
| -------- | ------------------------------ | ---------------------------------------- | -------------------------------------------------------------- |
| | I2C | SMBus | PMBus |
| 改進 | | 資料格式,時間約束, CRC 檢查和裝置發現,標準化的命令 | 基於 SMBus,標準化的電源管理指令集。裝置間的互操作性(Interoperability)。精細的控制(如數字電源模組) |
| | Philips (現為 NXP) | Intel | |
| | Multi-Master, Multi-Slave | | |
| Use case | 感測器,記憶體(如 EEPROM) | 系統關鍵元件的通訊(如溫度監控、電源管理)溫度監控。電壓監控。晶片健康狀態監測。 | |
| Pros | 通用性高,協議簡單 | 穩定,內建的錯誤檢測 | 標準化的指令集,減少不同廠商之間的兼容問題。源參數監控與配置 |
| Cons | 1.沒有內建錯誤檢測(例如 CRC)2.缺乏嚴格的時間約束。 | 1.不如 I²C 靈活。2.傳輸速度限制較低 | 電源管理裝置,不具備通用性。 |

## SPI
- SPI (Serial Peripheral Interface) is a synchronous serial communication protocol used for short-distance communication between a master device (e.g., microcontroller) and one or more slave devices (e.g., sensors, flash memory).
- 同步
- 短距離
- application: for interfacing flash memory (e.g., NOR/NAND), sensors, and display modules.



- Usecase
- **韌體更新(Firmware Update)**:BMC 通過 SPI 接口在系統運行時更新 BIOS。
- **系統啟動(Boot)**:在伺服器啟動時,CPU 通過 SPI 讀取 SPI Flash 內的韌體。
- **遠端修復(Recovery)**:BMC 通過 SPI 幫助恢復受損的固件。
- Protocol

### Lab 更新 flash






## UART
### UART Controller and COM Port
- **Universal Asynchronous Receiver/Transmitter**
是一種**序列通訊協定的硬體控制器**,將資料從「平行資料匯流排(如 CPU 寄存器)」轉換成「位元流(bit stream)」以便透過 TX/RX 腳位傳送。
| 名稱 | 是什麼? | 本質角色 |
| ------------------- | ------------------------------------------- | ------------------------------ |
| **UART Controller** | 一種硬體模組或電路(通常在 SoC、南橋晶片、MCU 裡) | **負責「位元」與「字元」的轉換、傳輸控制邏輯** |
| **COM Port** | 作業系統中對 UART 裝置的名稱(如 `/dev/ttyS0` 或 `COM1:`) | **OS 抽象出來的裝置節點,用來存取 UART 控制器** |
### UART Controller 的功能:
- **位元編碼與解碼**:例如 8N1 → 8 個資料位、無 parity、1 個停止位
- **波特率設定**:如 115200 bps(即每秒可傳 11.5 萬個 bit)
- **中斷控制**:傳完/收完一個字元觸發 IRQ 通知 CPU
- **FIFO buffer**:硬體緩衝避免漏資料
### 存在位置:
- MCU 內部(如 STM32 的 USART)
- SoC(如 Raspberry Pi 的 miniUART、PL011)
- PC 主機板南橋晶片或 LPC-to-UART
- PCIe/UART 擴充卡上的 16550 UART 晶片
#### COM Port 是什麼?
- 作業系統為了讓軟體存取 UART 而提供的**裝置節點**或「入口名稱」。
#### windows
| 裝置名稱 | 對應意義 |
| ------ | --------------------------------- |
| `COM1` | 第一個 UART 控制器(通常對應 0x3F8 I/O port) |
| `COM2` | 第二個 UART 控制器(通常對應 0x2F8) |
#### Linux
| 裝置節點 | 解釋 |
| -------------- | --------------------------------- |
| `/dev/ttyS0` | 第一個傳統 UART 控制器 |
| `/dev/ttyUSB0` | 透過 USB-to-Serial 裝置產生的虛擬 UART |
| `/dev/ttyAMA0` | 特定 ARM SoC(如 Raspberry Pi)上的 UART |
| | |
```mermaid
graph TD
A[CPU Program] --> B[COM Port]
B --> C[UART Driver]
C --> D[UART Controller]
D --> E[TX/RX Pins]
```
| 項目 | UART Controller | COM Port |
| ------ | --------------- | ------------------------------- |
| 本質 | 硬體模組 | OS 上的裝置名稱 |
| 功能 | 傳輸控制、編碼解碼、FIFO | 提供使用者層讀寫介面 |
| 類型 | 嵌入式/外接晶片 | Windows: COM1、Linux: /dev/ttyS0 |
| 與使用者關係 | 背後黑盒 | 使用者直接讀寫的對象 |
### 什麼是 UART routing?
- UART routing 是在 DTS 中定義每條 UART 的角色與接腳對應,讓 kernel 知道怎麼初始化它。
- 對 OpenBMC 來說,這樣的路由資訊關鍵於:
1. **哪個 UART 提供給主機作為 serial console**?(如 ttyS0 → SoL)
2. **哪個 UART 用來與外部裝置通訊**?(如 MCU、CPLD、sensor)
3. **哪些 UART 是無用或要 disabled**?
## GPIO
- GPIO (General Purpose Input/Output) is a versatile pin on a microcontroller or System on Chip (SoC) that can be configured as either an input or an output. Key features include input mode, output mode, and additional functionalities such as pull-up/pull-down resistors and interrupt generation.






### Lab Blinking LED


### Lab ADC voltage



- read schmantic 看astspeed 2600 spec
可以去 `/sys/bus/platform/drivers/gpio_aspeed` 下 `devmem {}`
- 驗證去 `/sys/class/hwmon/hwmon5` 可以看掛載在 hwmon 的值 ``



## MCTP
**MCTP (Management Component Transport Protocol)**
**管理元件傳輸協議**
- **功能**:MCTP 是一種定義在不同物理介質(如 I²C/SMBus、PCIe、Ethernet 等)上傳輸管理資訊的標準協議。它提供了在不同系統管理元件之間的高效通訊方法。
- **特點**:
- 支援多種底層傳輸介質。
- 提供通用的封包格式,讓不同的管理協議(如 PLDM、SPDM)可以共存。
- 提供分層結構,讓傳輸層與應用層分離。
- **應用場景**:
- 用於傳遞設備管理指令、狀態報告或固件更新。
- 在 BMC 中,MCTP 經常作為管理通訊的骨幹。
## PLDM
**PLDM (Platform Level Data Model)**
**平台級數據模型**
- **功能**:PLDM 是用於系統管理的一套協議集合,旨在統一管理功能的數據結構和通訊方式。
- **核心特點**:
- 提供了標準化的管理命令和響應格式。
- 支援多種功能模組(例如:Firmware Update、Event Logging、Monitoring 等)。
- **模組分類**:
1. **PLDM for Firmware Update**:提供標準化的固件更新方法。
2. **PLDM for Sensor and Control**:用於傳感器數據讀取和控制。
3. **PLDM for Redfish Device Enablement**:將 PLDM 與 Redfish 整合,方便系統管理。
4. **PLDM for Event Logging**:用於記錄系統事件。
- **應用場景**:
- 將 BMC 與其他系統管理元件(如電源管理模組)進行交互。
- 為硬體廠商提供標準化的管理協議,減少客製化開發的工作量。
## SPDM
**SPDM (Security Protocol and Data Model)**
**安全協議與數據模型**
- **功能**:SPDM 是一個用於設備間安全通信的協議,主要用於身份驗證、機密性和完整性保護。
- **特點**:
- 提供雙向身份驗證:設備之間可以相互驗證其身份。
- 支援基於硬體信任根(如 TPM)的安全機制。
- 提供數據加密與完整性保護,確保敏感數據不被竄改或洩露。
- **應用場景**:
- 用於硬體設備之間的可信通信,例如 BMC 與其他管理模組之間的安全連線。
- 在固件更新中確保數據來源可信。
- 應對硬體供應鏈中的安全挑戰(如防範偽造設備)。
## SoC
### ast 2600
**AST2600 的主要特點**
1. **處理器架構**
- 搭載 **雙核心 ARM Cortex-A7** 處理器作為主核,運行速度高達 1.2GHz,提供高效能。
- 內建一個 **ARM Cortex-M3** 協處理器,用於即時控制和節省能耗。
- 採用 28nm 製程,功耗更低,性能更佳。
2. **內存和存儲支持**
- 支援 DDR4 和 DDR3 記憶體,容量最高可達 8GB。
- 提供 SPI、eMMC、SD 等多種存儲接口,滿足多樣化存儲需求。
3. **網絡功能**
- 集成 **雙 GbE 網卡(PHY)**,支持 NC-SI(Network Controller Sideband Interface)。
- 提供多通道網絡虛擬化功能,實現更靈活的網絡管理。
4. **顯示和圖形**
- 支援 2D 硬體加速引擎,提供基本的圖形渲染能力。
- 支援 HDMI 和 VGA 接口,分辨率最高可達 **1920x1200**。
5. **安全功能**
- 集成 **TPM(Trusted Platform Module)2.0**,提供硬體級安全保護。
- 支援 **Secure Boot** 功能,保證固件來源可信。
- 支援加密引擎,用於硬體加速的 AES、SHA 和 RSA 演算法。
6. **系統管理與協議支持**
- 支援業界主流的管理協議,包括 **IPMI 2.0**、**Redfish**、**MCTP**、**PLDM** 和 **SPDM**。
- 兼容多種操作系統,如 Linux(常見於 OpenBMC 平台)。
7. **I/O 和擴展性**
- 提供多種 I/O 接口,包括 PCIe、USB、I²C、SPI、UART 和 GPIO。
- 支援多個 I²C 控制器,方便連接外部感測器和其他元件。
**AST2600 的應用場景**
1. **伺服器管理**
- 作為 BMC,用於監控伺服器硬體狀態(如溫度、電壓、風扇速度等)。
- 支援遠端開關機、固件更新和事件日誌管理。
2. **雲端資料中心**
- 通過 Redfish API 實現統一的伺服器管理和自動化。
- 高性能和低功耗特性適合高密度伺服器部署。
3. **嵌入式控制**
- ARM Cortex-M3 核心可用於即時任務(如電源控制或嵌入式監測)。
- 提供強大的硬體加密能力,用於敏感數據處理。
4. **高效能計算(HPC)**
- 通過 MCTP 和 PLDM 進行高效的硬體管理。
- 提供可靠的安全機制以保護運算環境。
**
## 邏輯分析儀
## JTAG
## Sensors
### TMP75
- TMPx75 Temperature Sensor spec




0x1027
0x027
16*2+7
39
