framebuffer的架構
見到的宋寶華老師總結的乙個圖表,覺得很清晰,直接移過來了
關鍵點點析
例項**
檔案drivers/video/mxc/mxc_ipuv3_fb.c
static struct fb_ops mxcfb_ops = ;
......
static struct fb_info *mxcfb_init_fbinfo(struct device *dev, struct fb_ops *ops) /* 333333333 */
......
static int mxcfb_probe(struct platform_device *pdev)
檔案driver/video/fbmem.c
int
register_framebuffer(struct fb_info *fb_info)
static int do_register_framebuffer(struct fb_info *fb_info)
else
fb_init_device(fb_info); /* 裡面構建所有的屬性檔案,賦予使用者空間操作 */
if (fb_info->pixmap.addr == null)
} fb_info->pixmap.offset = 0;
if (!fb_info->pixmap.blit_x)
fb_info->pixmap.blit_x = ~(u32)0;
if (!fb_info->pixmap.blit_y)
fb_info->pixmap.blit_y = ~(u32)0;
if (!fb_info->modelist.prev || !fb_info->modelist.next)
init_list_head(&fb_info->modelist);
if (fb_info->skip_vt_switch)
pm_vt_switch_required(fb_info->dev, false);
else
pm_vt_switch_required(fb_info->dev, true);
fb_var_to_videomode(&mode, &fb_info->var);
fb_add_videomode(&mode, &fb_info->modelist);
registered_fb[i] = fb_info; /**************** 連線關鍵點,下面的圍繞它來找出 fb_info中的操作 和
file_operation 中的操作的連線關係 ***********/
event.info = fb_info;
if (!lock_fb_info(fb_info))
return -enodev;
console_lock();
fb_notifier_call_chain(fb_event_fb_registered, &event);
console_unlock();
unlock_fb_info(fb_info);
return 0;
}extern struct fb_info *registered_fb[fb_max]; /********** 就是乙個陣列 (檔案include/linux/fb.h中)**********/
static const struct file_operations fb_fops = ;
static ssize_t
fb_read(struct file *file, char __user *buf, size_t count, loff_t *ppos) /* 1111111111 */
static struct fb_info *file_fb_info(struct file *file) /* 222222222222 */
重要結構體
struct fb_info
struct fb_info ;
struct fb_ops
struct fb_ops ;
乙個簡單的驅動,重要的是摸清脈絡,搞清呼叫關係,這樣有問題或者想靈活操作(例如更改等)可以找準下手點。本文主要目的是弄清軟體流程,至於裡面的具體實施跟具體的晶元有關,例如本文提到的例子,用的fsl的**,而這裡面糅合了ipu來進行framebuffer來處理,它的ipu操作並沒有在這裡進行分析,做顯示的東西比較多,對他的ipu也有一定的了解,有時間會另外寫出來。本文留做快速回憶或者稍微幫大家理理,希望有用。 顯示裝置framebuffer
分配 設定 註冊dispopr結構體,由display manager.c通過鍊錶管理。dispopr結構體包含顯示裝置的屬性和操作函式。其中fbshowpixel主要用於顯示字型點陣,showpage主要用於視訊記憶體管理。typedef struct dispopr t dispopr,pt d...
framebuffer驅動全篇(三)
color map 剖析 在framebuffer驅動程式設計中,cmap這個東東太暈了。現在我要把他赤裸裸的剖析給大家 1.struct fb cmap 顏色對映表 struct fb cmap 該結構在fb.件中定義,在struct fb ops結構中有兩個成員函式與其相關 獲取顏色表 int ...
Linux下Framebuffer驅動簡介
version v0.1 time 09 06 2008 author green waste 163.com 最近接觸了一些關於linux下framebuffer方面的東西和lcd的framebuffer驅動,所以去了解了一些相關基礎知識。為了避免其他人走我走過的彎路,所以就把我的一些很少的心得,...