Linux One wire sensor & I2C framebuffer Driver Porting
張 O 杰
Motivation 專題動機
在 Linux 中一般 AP 對硬體的呼叫要先透過
Kernel 再呼叫底層 , 這樣反覆的動作就效能而
言 , 是比較差的 , 如果直接使用底層的 Driver 來
呼叫底層裝置會更有效率
DHT 22 溫溼度 Sensor Driver Porting
Catch data form Interrupt
(1) 使用 do_gettimeofday function 擷取時間
現在的時間 (T2) - 進入中斷時的時間 (T1)= 波形 High
(2) 步驟 1 x 40 times = Total Data
T1 T2
SSD1306 OLED I2C Driver Porting
Driver Structure & Flow Chart
檔案操作介面 (APP)
字元設備驅動程式 ( /dev/fb1 )
Framebuffer 驅動程式 (SSD1306fb.c)
具體的 Framebuffer 驅動程式 (struct
fb_info)
SSD1306 OLED
透過 I/O Open
function 進行
操作
呼叫
Framebuffer
驅動程式
呼叫
Framebuffer
具體實作
對硬體設備進行
實際操作
Framebuffer Mapping
I2C driverI2C driver HDMI
/dev/fb1
Memory
Buffer
mmap(2)mmap(2)
OLED SSD1306
User Program
OLED
I2C
VGA
Framebuffer API
Framebuffer Framework
Memory
Buffer
64
128
/dev/fb0
DHT 22 溫溼度 Sensor Driver Porting
感謝專題期間 Joseph 老師與范老師的指導與幫忙

實作 Linux Driver 移植在樹莓 Pi 上:Linux One wire sensor & I2C framebuffer Driver Porting

  • 1.
    Linux One wiresensor & I2C framebuffer Driver Porting 張 O 杰
  • 2.
    Motivation 專題動機 在 Linux中一般 AP 對硬體的呼叫要先透過 Kernel 再呼叫底層 , 這樣反覆的動作就效能而 言 , 是比較差的 , 如果直接使用底層的 Driver 來 呼叫底層裝置會更有效率
  • 3.
    DHT 22 溫溼度Sensor Driver Porting
  • 5.
    Catch data formInterrupt (1) 使用 do_gettimeofday function 擷取時間 現在的時間 (T2) - 進入中斷時的時間 (T1)= 波形 High (2) 步驟 1 x 40 times = Total Data T1 T2
  • 8.
    SSD1306 OLED I2CDriver Porting
  • 9.
    Driver Structure &Flow Chart 檔案操作介面 (APP) 字元設備驅動程式 ( /dev/fb1 ) Framebuffer 驅動程式 (SSD1306fb.c) 具體的 Framebuffer 驅動程式 (struct fb_info) SSD1306 OLED 透過 I/O Open function 進行 操作 呼叫 Framebuffer 驅動程式 呼叫 Framebuffer 具體實作 對硬體設備進行 實際操作
  • 10.
    Framebuffer Mapping I2C driverI2Cdriver HDMI /dev/fb1 Memory Buffer mmap(2)mmap(2) OLED SSD1306 User Program OLED I2C VGA Framebuffer API Framebuffer Framework Memory Buffer 64 128 /dev/fb0
  • 11.
    DHT 22 溫溼度Sensor Driver Porting 感謝專題期間 Joseph 老師與范老師的指導與幫忙