Lab8 Preview Report - Jian-PingWang/EE2405 GitHub Wiki
Topics
- Linux device driver
- GPIO and I2C
Linux device driver
- Introduction
device driver是一種令PC可以和周邊設備(如硬碟等)通訊的軟體。而對於不同的設備需要不同的驅動程式,設備驅動程序則存儲在PC的硬碟中,並且會在電腦啟動時加載到記憶體裡。 而Linux 驅動程式的整體架構如下:
application 透過 system call 介面與 kernel 溝通。
透過 kernel 的 VFS 層與 Linux 驅動程式物件溝通。
而Linux 驅動程式可分為 3 大類型,如下:
character device driver
block device driver
network device driver
另外,驅動程式本身可分成 2 個層面來討論:
virtual device driver
physical device driver
- Related parts of our lab
本次Lab會使用到scull driver,其作用是“讓使用者可把一塊記憶區當成字元裝置來使用”。 也就是說,scull所驅動的目標裝置是一塊記憶區,而不需依賴任何“特殊”硬體 ,只要有linux平台就可以編譯與執行,但未提供任何實用功能,只展示核心與char driver之間軟體介面。
- Questions about the topics or our lab
目前尚無。
GPIO and I2C
- Introduction
GPIO為通用型之輸入輸出(General Purpose I/O)的簡稱,功能類似8051的P0—P3,其接腳可以供使用者由程式控制自由使用, PIN腳則依現實考量可作為通用輸入(GPI)或通用輸出(GPO)或通用輸入與輸出(GPIO),如當clk generator, chip select等。 GPIO的用途大概有以下幾種:
-
alternative function: 這是特定的function,如camera,hdmi,keypad。以hdmi為例,可以接到hdmi的hpd當hot plug detect,或是cec做進階控制,不過這些gpio都會有另外的driver來控制。以keypad為例,就可以藉由gpio的high/low來mapping按了哪個key。
-
GPI: input/output的方向是對CPU而言,因此GPI就是從外部給CPU signal,比如說EC。舉個例好了,EC控制power button,按下後,EC就將某個GPI拉high,此時CPU收到high後,trigger wakeup source,系統就resume。
-
GPO: 對照GPI,GPO就是由CPU發出來的。同樣用EC當例子,EC也控了LED。當系統進入suspend,就把某根接到EC的GPO拉low。EC收到後,就把LED變成橘色。
I²C(Inter-Integrated Circuit)字面上的意思是積體電路之間,它其實是I²C Bus簡稱,中文為積體電路匯流排,它是一種串列通訊匯流排,使用內送流量備援容錯機制從架構,由飛利浦公司在1980年代為了讓主機板、嵌入式系統或手機用以連接低速週邊裝置而發展。自2006年11月1日起,使用I²C協定已經不需要支付專利費,但製造商仍然需要付費以取得I²C從屬裝置位址。
- Related parts of our lab
本次lab主要是熟悉板子的GPIO的PIN腳位置。
- Questions about the topics or our lab
目前尚無。