Lab8 Preview Report - Holapoya/ee240500 GitHub Wiki

Topic

Linux device driver

GPIO and I2C

Linux device driver

Introduction

device driver

device driver,就是大家常常聽到的驅動程式,是一個允許高階電腦軟體與硬體互動的程式,它建立了一個硬體與硬體,或硬體與軟體溝通的介面,經由主機板上的bus或其它子系統與硬體形成連接的機制,使得user program 可以透過 driver 來使用實體設備,也使得硬體裝置之間可以互相交換資料;透過driver提供一組標準的介面存取硬體,如此使用者的程式便不需要直接與硬體溝通,當更換了不同的硬體,也只需載入不同的driver即可。

Linux device driver

Linux將driver分為三種型態,分別是字元(character device driver)、區塊(block device driver)和網路設備(network device driver),最常用的是字元裝置,一般而言可當作一般檔案存取,包含基本的open、close、I/O control、read和write等等,以不定長度的字元傳送資料,並依循先後順序存取資料的設備,如印表機、終端機等;而Block Device Driver則不同於character device driver,是以固定大小長度來傳送轉移資料,且大致是可以隨機存取(Random Access)資料的設備,如硬碟機或光碟機等等;而network device driver則是透過TCP/IP做I/O傳輸的裝置,廣義來說並不僅限於網路卡裝置。

Related parts of our lab

這次的lab目標就是了解Linux device driver的結構,會先使用scull來測試、瀏覽driver,然後再在Nitrogen6X板子重複測試。

Questions about the topic or our lab

目前沒有問題。

GPIO and I2C

Introduction

GPIO

GPIO是General Purpose I/O的縮寫,是一種控制軟體的數位訊號,功能類似8051的P0—P3,其接腳可以供使用者由程式控制自由使用,功能可以大致分為以下三種:

GPI:從外部給CPU訊號,CPU可藉由讀取訊號了解外部狀況。

GPO:與GPI相反,由CPU發出訊號進行控制。

Alternative functon:特定的function,如camera、hdmi、keypad等等,以keypad為例,可以藉由gpio的high or low來mapping按了哪個key。

I²C

I²C是Inter-Integrated Circuit的縮寫,後面其實省略了bus,所以可以翻譯為積體電路匯流排,是一種串列通訊匯流排,使用內送流量備援容錯機制從架構。I2C僅有兩條線路:SDA(Serial Data Line)資料線、SCL(Serial Clock Line)時脈線,所有 I2C 裝置 都並接這兩條線路,連接的(Open Drain)的 I/O 接腳;而I²C在傳送資料過程中共有以下三種類型的信號:

開始信號:SCL為高電位時,SDA由高電位降為低電位,開始傳送資料。

結束信號:SCL為高電位時,SDA由低電位升為高電位,結束傳送資料。

應答信號:接收資料的 IC 在接收到 8bit 資料後,向發送資料的IC發出特定的低電位脈衝,表示已收到資料。 CPU 向受控單元發出一個信號後,等待受控單元發出一個應答信號,CPU 接收到應答信號後,根據實際情況判斷是否 繼續傳遞信號,若未收到應答信號,則判斷受控單元故障。

Related parts of our lab

這次的lab中會學習如何使用Nitrogen6X板子的GPIO,以及其pin腳的位置編號。

Questions about the topic or our lab

目前沒有問題。