下列章節概述將 PCMCIA 設備插入您的電腦時,Linux 系統的反應行為。若要支援 PCMCIA 設備,元件必須能夠互動,而且必須符合許多需求。
Linux 中 PCMCIA 初始化程序的極簡大綱如下:
必須依節 26.2.1, 橋接器初始化所述方式正確設定 PCMCIA 橋接器 (或插槽)。需求為:
供橋接器使用的適當驅動程式
供 PC 卡使用的額外 I/O 和記憶體範圍
正確設定橋接器後,橋接器驅動程式會偵測卡片的存在,並依節 26.2.2, 卡片初始化所述觸發其初始化:
決定卡片類型。
供應適當的電壓。
為卡片指定 I/O 和記憶體範圍以及 IRQ 線路。
繫結適當的卡片驅動程式,以觸發卡片或設備的初始化。
有些介面卡必須上傳「卡片資訊結構」(CIS)。
最後,設定介面本身,並做好使用的準備。如需此詳細資料,請參閱節 26.2.3, 介面設定。
大部分 PCMCIA 橋接器都是 PCI 設備,而且會被視為是 PCI 設備。橋接器初始化程序可摘要說明如下:
Hotplug 建立 PCI 事件。
udev 呼叫 /sbin/hwup 載入驅動程式。/sbin/hwup 檢查 /etc/sysconfig/hardware 中有沒有現有的設備組態。如果找到適當的組態,便使用該組態。否則,/sbin/hwup 用核心提供的 modalias 字串呼叫 modprobe 載入驅動程式模組。
傳送新的熱插拔事件 (每個 PCMCIA 插槽各一個)。
如果只用 CardBus 卡,則省略下列步驟:
pcmcia_socket 事件觸發 udev,以呼叫 /sbin/hwup 並載入 pcmcia 核心模組。
將 /etc/pcmcia/config.opts 中指定的所有 I/O 和記憶體範圍新增到插槽。
核心中的卡片服務檢查這些範圍。如果 /etc/pcmcia/config.opts 中的記憶體範圍錯誤,此步驟可能會導致電腦當機。如需關於如何偵錯和解決此問題的資訊,請參閱 節 26.3.1, 機器因 PCMCIA 而當機。
成功完成這些步驟後,橋接器就已完全初始化。之後,卡片本身會依下一節所述進行初始化。
插入 PCMCIA 卡所引發的事件可摘要說明如下:
發生熱插拔事件。對 PC 卡而言,這是 pcmcia 事件。對 CardBus 卡而言,這是 pci 事件。
udev 為任何事件呼叫 /sbin/hwup,以載入驅動程式模組。模組名稱可在 /etc/sysconfig/hardware 下的 hwcfg* 檔案中指定,也可經由 modprobe modalias 指定。
如有必要,設備初始化會觸發韌體熱插拔事件。這會搜尋韌體並載入。
設備驅動程式註冊登錄介面。
完成這些步驟後,系統會依下一節所述繼續進行介面設定。
如果您的卡片是 PC 卡,則您的 /etc/sysconfig/pcmcia 中可能需要以下部分參數,該 PC 卡才能完全受到支援,正常運作:
PC 上的韌體被稱為 CIS (卡片資訊結構)。它提供了卡片額外的執行細節。hwup 會檢查卡片內建 CIS 的完整性,如果卡片的 CIS 經證實確有瑕疵,它會嘗試從磁碟載入其他 CIS。預設值是 yes。若要關閉從磁碟載入 CIS,請將此變數設定為 no。
Linux 設備驅動程式包含設備 ID 表,可告訴驅動程式要處理哪些設備。這意味著,系統只支援核心已知其 ID 的設備。若要支援 ID 不在表格中的卡片,您可以使用功能配對。這是指不依照 ID,而依照卡片的功能 (例如網路卡) 選取驅動程式,而且它必須負責處理具有該功能的任何插入 PC 卡 (例如網路卡)。預設值是 yes。若要停用功能配對,請將此變數設定為 no。
系統有時候會偵測不到開機前已插入的卡片。為了防止這樣的情形發生,請將 PCMCIA_COLDPLUG_REINSERT 設定為 yes,使系統執行卡片的軟退出和軟插入。預設值是 no。
成功完成初始化後,會根據卡片類型註冊不同的介面。介面註冊由 udev 的 hotplug 處理。如需有關 udev 和 hotplug 的詳細資訊,請參閱 節 21.0, 使用 udev 進行動態核心設備管理。