《精通linux裝置驅動程式開發》 第12章視訊驅動程式 學習筆記
阿新 • • 發佈:2020-10-12
主要內容:
- 顯示框架
- Linux視訊子系統
- 顯示引數
- 幀緩衝API
1.顯示框架
VGA(Video Graphics Array,視訊圖形陣列)是IBM提出的早期顯示標準,現在更多體現為解析度規範。嵌入式SoC通常有一個片上LCD控制器,在LCD控制器上輸出的是TTL訊號,許多手持裝置和電話使用QVGA型別的內部LCD面板,他們直接接收LCD控制器輸出的TTL平板視訊資料。
2.Linux視訊子系統
幀緩衝(frame buffer)是Linux視訊系統的核心概念,它進行了一般化的抽象並規定程式設計介面,可以與平臺無關的方式編寫應用層和較高核心層的程式。
因此,核心的幀緩衝介面允許應用程式與底層圖形硬體的變化無關,通用幀緩衝程式設計介面也使核心層與硬體無關。
3.顯示引數
有時,為了讓裝置能播放視訊,在編寫驅動程式的時候,只需要配置與顯示面板相關的屬性即可。
4.幀緩衝API
幀緩衝核心層向用戶空間輸出裝置結點,以便應用程式能訪問每個支援的視訊裝置。使用幀緩衝API主要要關心的資料結構定義在核心的include/linux/fb.h檔案中,而使用者側的定義在/usr/include/linux/fb.h檔案中。
4.1視訊卡的各個屬性儲存在struct fb_var_screeninfo內,該結構包含了很多欄位,比如X向解析度、一個畫素的位數、pixclock、HSYNC範圍、VSYNC範圍和空邊長度。
struct fb_var_screeninfo { __u32 xres; __u32 yres;/* ... */ __u32 bits_per_pixel; /* ... */ __u32 pixclock; __u32 left_margin; __u32 right_margin; /* ... */ __u32 hsync_len; __u32 vsync_len; /* ... */ };
4.2視訊硬體的固定資訊
struct fb_fix_screeninfo { char id[16]; unsigned long smem_start; __u32 smem_len;/* ... */ };