Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學
您现在的位置: Windows教程網 >> Windows教程 >  >> Linux 系統教學 >> Linux 教學

Linux 設備驅動基礎問答:塊/字符設備分類、驅動程式角色、I/O 端口暫存器與存取方式

編輯:Linux 教學

Linux 設備驅動入門核心概念整理,以問答形式釐清設備分類、驅動定義、I/O 端口架構。

Q1:為什麼將設備分為「塊設備」與「字符設備」?

A:

  1. 一切皆檔案:每個設備對應一個檔案節點 (inode),系統呼叫 (open/read/write/ioctl) 統一介面,應用程式視其為線性位元組流。
  2. 傳輸單位不同:
    • 塊設備:以區塊/扇區 (512B/4KB) 為單位,可隨機存取,支援檔案系統掛載。例:硬碟、SSD、USB 隨身碟。
    • 字符設備:以字元/位元組為單位,串流存取,通常不可隨機定位。例:鍵盤、滑鼠、序列埠、終端機。
  3. 檔案系統通常建立在塊設備之上。

Q2:什麼是設備驅動程式?

A:核心中負責控制、管理特定硬體控制器的軟體模組,提供標準檔案操作介面給 VFS (Virtual File System),處理中斷、DMA、電源管理等硬體細節。

Q3:I/O 端口包含哪三類暫存器?CPU 存取方式有幾種?

A:

  • 三類暫存器:
    1. 控制暫存器 — 下發命令、設定模式。
    2. 狀態暫存器 — 讀取裝置狀態 (就緒/錯誤/忙碌)。
    3. 資料暫存器 — 實際資料輸入/輸出緩衝。
  • CPU 存取方式:
    1. 記憶體映射 I/O (Memory-Mapped I/O):裝置暫存器映射至實體記憶體位址空間,用 load/store 指令存取 (ARM、RISC-V、x86_64 主流)。
    2. I/O 映射 I/O (Port-Mapped I/O):獨立 I/O 位址空間,需專用 IN/OUT 指令 (x86 傳統)。

補充:Linux 核心提供的存取函數

類型函數適用
I/O Port (x86)inb/outb, inw/outw, inl/outl8/16/32-bit 端口讀寫
I/O Memory (MMIO)ioread8/16/32, iowrite8/16/32映射後虛擬位址讀寫
舊版相容readb/writeb, readw/writew, readl/writel2.6 仍支援

掌握分類與存取基礎,是撰寫或分析驅動程式的起點。

Copyright © Windows教程網 All Rights Reserved