公告版位

在 Linux 中,所有的設備都是一個檔案,每個檔案都有自己特殊的編號和型態,我們可以在 /dev 中找到目前系統所有的 device ,這些 device 不一定是實際存在的硬體,也有可能是以虛擬的方式掛載上去的。例如,如果想要了解目前系統中總共有多少的 SATA 硬碟以及分割區,可以在終端機下鍵入:

ls -l /dev/sd*

 


pcman 發表在 痞客邦 留言(0) 人氣()

作者/陳俊宏
www.jollen.org

I/O 存取的觀念

I/O device必須透過I/O port來存取與控制,每個I/O port都會被指定一個memory address,稱為I/O port address(或port address),此即所謂的memory mapped I/O。

memory mapped I/O的意義為,我們可以透過I/O port被指定的memory address來存取I/O device如此可將複雜的I/O device存取變成簡單的memory存取,也不需要使用 assembly 來存取 I/O device。

Memory-mapped I/O的觀念是將I/O port或I/O memory “mapping” 到 memory address上,此位址稱為I/O port address。採用memory-mapped I/O觀念的主要好處是可以將I/O device的存取變成記憶體存取。因此,對使用者而言,存取I/O裝置就會變成跟CPU的記憶體存取一樣。

RISC 架構的處理器,在 system design 方面,也都採取 memory-mapped I/O (I/O memory) 的觀念。

Linux I/O Port 存取介面

在 x86 平臺上,I/O port與I/O memory可以看成是一樣的東西。但在學習Linux驅動程式實作時,則是要把二者清楚的分開來。若是要存取I/O port,Linux提供以下的I/O port存取介面

˙ unsigned inb(unsigned port);

pcman 發表在 痞客邦 留言(0) 人氣()

根據Linux驅動程式的一般化設計流程,我們來設計一個真正可以動的驅動程式。

作者/陳俊宏
www.jollen.org

根據流程寫程式

定義 file_operations

struct file_operations card_fops = 
{
open: card_open,
write: card_write,
release: card_release,

pcman 發表在 痞客邦 留言(0) 人氣()

一般化設計流程

依照驅動程式本身的實作,可以將 Linux 驅動程式分為 2 大部份:

virtual device driver與physical device driver。

 

struct file_operations

struct file_operations 是 kernel 提供的一個重要資料結構

Linux 驅動程式建構在 file_operations 之上。file_operations定義驅動程式的system call與實作system call的函數

file_operations能切成virtual device driver與physical device driver二個部份。

 

流程解說

pcman 發表在 痞客邦 留言(0) 人氣()

打開電腦主機電源時主機板上的BIOS就開始測試電腦硬體及周邊設備,此時螢幕
左上角處將會看到RAM  數字從 0開始累加直至主機板上DRAM的數目為止,之後
你會聽到硬碟測試的聲音,且硬碟指示燈亮一下表示硬碟測試沒有問題,接下來
依序載入MBR(主開機程式)、DBR(DOS啟動記錄)、IO.SYS、MSDOS.SYS、
CONFIG.SYS、COMMAND.COM、AUTOEXEC.BAT等,待螢幕出現C:>或A:>時
即表示開機 成功。以圖式如下。


┌────┐  ┌────┐  ┌────┐
│POWER ON├→│BIOS測試├→│載入 MBR├→
└────┘  └────┘  └────┘

pcman 發表在 痞客邦 留言(0) 人氣()

什麼是 Device File

Device files 是 UNIX 系統的獨特觀念,在 UNIX 系統底下我們把外部的周邊裝置均視為一個檔案,並透過此檔案與實體硬體溝通,這樣的檔案就叫做 device files,或 special files。

 

可以去 /dev目錄下觀察

ls -l /dev

 

major number 為 1 為 null 虛擬裝置

Major number 主裝置

Minor number 代表裝置上的子裝置

pcman 發表在 痞客邦 留言(0) 人氣()

System call 是 user application 與 Linux device driver 的溝通介面。

User application 透過呼叫 system call 來「叫起」driver 的 task,user application 要呼叫 system call 必須呼叫 GNU C 所提供的「wrapper function」,每個 system call 都會對應到 driver 內的一個 task,此 task 即是 file_operation 函數指標所指的函數。

 

Linux 驅動程式與 user application 間的溝通方式是透過 system call,實際上 user application 是以 device file 與裝置驅動程式溝通。要達成此目的,驅動程式必須建構在此「file」之上,因此 Linux 驅動程式必須透過 VFS(virtual file system)層來實作 system call。

一個簡單的範例

 

點此 看device file的介紹

/dev目錄下的檔案稱為device file,是 user application 用來與硬體裝置溝通的介面。以下是一個簡單的範例:

 

pcman 發表在 痞客邦 留言(0) 人氣()

智慧型手機作業系統包括有Symbian OS、BlackBerry OS、Windows Mobile、Linux、Palm webOS、iOS與Android

其中Symbian OSBlackBerry OS分別來自於通訊產業當中的巨擘NOKIA與RIM。

Windows Mobile(已改名為Windows Phone)、iOS、Linux與Palm webOS則分別源於資訊產業當中的重量級公司微軟、

蘋果、Linux(非營利組織)與Palm。


pcman 發表在 痞客邦 留言(0) 人氣()

很多朋友都用vmware來測試不同的系統,我結合自己的經驗談一下對網絡設置的理解,不對的地方請指正。

  bridge:

 

  這種方式最簡單,直接將虛擬網卡橋接到一個物理網卡上面,和linux下一個網卡 綁定兩個不同地址類似,實際上是將網卡設置為混雜模式,從而達到偵聽多個IP的能力。

在此種模式下,虛擬機內部的網卡(例如linux下的eth0)直接連到了物理網卡所在的網絡上,可以想像為虛擬機和host機處於對等的地位,在網絡關係上是平等的,沒有誰在誰後面的問題。

  使用這種方式很簡單,前提是你可以得到1個以上的地址。對於想進行種種網絡實驗的朋友 不太適合,因為你無法對虛擬機的網絡進行控制,它直接出去了。

  nat方式:

  這種方式下host內部出現了一個虛擬的網卡vmnet8(默認情況下),如果你有過 做nat服務器的經驗,這裡的vmnet8就相當於連接到內網的網卡,而虛擬機本身則相當於運 行在內網上的機器,虛擬機內的網卡(eth0)則獨立於vmnet8

  你會發現在這種方式下,vmware自帶的dhcp會默認地加載到vmnet8界面上,這樣虛擬機就可以使用dhcp服務。更為重要的是,vmware自帶了nat服務,提供了從vmnet8到外網的地址轉 換,所以這種情況是一個實實在在的nat服務器在運行,只不過是供虛擬機用的。

  很顯然,如果你只有一個外網地址,此種方式很合適。

pcman 發表在 痞客邦 留言(0) 人氣()

1.  ENA 、STB---- 使能控制 積體電路啟動端 ON/OFF功能

2.  REF、 VREF、Vref、REG -----基準電壓輸出端

3.  SS 、SST -----軟啟動控制 外接電容器

4.  RT------  外接振盪頻率定時電阻

5.  CT、CTOSC -----  外接背光燈管工作振盪頻率定時電容

pcman 發表在 痞客邦 留言(0) 人氣()