Lab8 Preview Report - oboywei/ee240500 GitHub Wiki

Lab8 Preview Report

Topics

  • Linux device driver
  • GPIO and I2C

Linux device driver

  • Introduction
    驅動程式可允許高階軟體與硬體的互動,可以做為硬體與硬體或是硬體與軟體之間的一個橋樑,有了驅動程式之後,不同硬體之間的資訊便可以藉由匯流排或其他溝通子系統互相傳送。因此我們若要在Linux上使用其他的硬體設備,便需要編寫可以驅動該硬體的driver。
    驅動程式是kernel的一部分,在linux裝置中主要有兩種類型:
    **Character Device字元裝置:**常見的字元裝置有鍵盤、滑鼠、印表機等,這些裝置所傳遞的並非一定要是字元訊息,只要可以用串流型式表式即可。因此字元裝置又被稱為串流裝置 (Stream Device)。而其傳送時data的數量是不固定的。
    **Block Device區塊裝置:**區塊裝置形成檔案系統的基礎,與字元裝置不同,其傳送的data數量是不固定的。

  • Related parts of our lab
    本次實驗我們在linux上compile Scull,並將其cross-compile後於板子上測試。
    Scull全名為Simple Character Utility for Loading Localities,可讓使用者可把一塊記憶區當成字元裝置來使用,因此其驅動的目標裝置為一塊記憶區,故只需要有linux平台便可以編譯執行,不需任何其他裝置。但其只展示核心與char driver之間軟體介面,未提供任何實用功能。

  • Questions about the topic or our lab
    目前沒有。

GPIO and I2C

  • Introduction
    GPIO全名為General Purpose I/O,可以透過I/O腳來執行訊號的輸入或輸出,可以彈性的受軟體控制。
    GPIO的輸入、輸出信號只有一個bit(0 or 1),所以我們可以利用它來連結一些較低速的周邊設備。舉例來說,一些簡單的周邊設備只需要開、關兩個狀態即可,如LED燈等等,這樣的設備用GPIO控制就非常的方便。
    I2C全名為Inter-Integrated Circuit,積體電路匯流排。它是一種串列通訊匯流排,使用內送流量備援容錯機制從架構,由飛利浦公司在1980年代為了讓主機板、嵌入式系統或手機用以連接低速週邊裝置而發展。主要應用在board-to-board,它的設計並不能應用到長距離裝置的通訊。
  • Related parts of our lab
    本次Lab中我們學習在板子上測試操作GPIO,之後在板子上就可以藉由GPIO操控其他周邊設備。
  • Questions about the topic or our lab 暫時沒有。