framebuffer驅動全篇(三)

2021-09-30 10:03:47 字數 1428 閱讀 3147

color map 剖析

在framebuffer驅動程式設計中,cmap這個東東太暈了。現在我要把他赤裸裸的剖析給大家:)

1. struct fb_cmap

/*顏色對映表*/

struct fb_cmap ;

該結構在fb.**件中定義,在struct fb_ops結構中有兩個成員函式與其相關:

/*獲取顏色表*/

int (*fb_get_cmap)(struct fb_cmap *cmap, int kspc, int con, struct fb_info *info);

/*設定顏色表*/

int (*fb_set_cmap)(struct fb_cmap *cmap, int kspc, int con, struct fb_info *info);

在struct fb_info結構中有變數:

struct fb_cmap cmap; /* current cmap */

在fpgen基礎操作下提供:

extern int fbgen_get_cmap(struct fb_cmap *cmap, int kspc, int con, struct fb_info *info);

extern int fbgen_set_cmap(struct fb_cmap *cmap, int kspc, int con, struct fb_info *info);

在檔案/* drivers/video/fbcmap.c */中提供更多的cmap應用

extern int fb_alloc_cmap(struct fb_cmap *cmap, int len, int transp);

extern void fb_copy_cmap(struct fb_cmap *from, struct fb_cmap *to, int fsfromto);

extern int fb_get_cmap(struct fb_cmap *cmap, int kspc,

int (*getcolreg)(u_int, u_int *, u_int *, u_int *,u_int *, struct fb_info *),

struct fb_info *fb_info);

extern int fb_set_cmap(struct fb_cmap *cmap, int kspc,

int (*setcolreg)(u_int, u_int, u_int, u_int, u_int,struct fb_info *),

struct fb_info *fb_info);

extern struct fb_cmap *fb_default_cmap(int len);

extern void fb_invert_cmaps(void);

2. 通過檔案解析

在anakinfb.c檔案中,cmap如圖

在stifb.c

Linux下Framebuffer驅動簡介

version v0.1 time 09 06 2008 author green waste 163.com 最近接觸了一些關於linux下framebuffer方面的東西和lcd的framebuffer驅動,所以去了解了一些相關基礎知識。為了避免其他人走我走過的彎路,所以就把我的一些很少的心得,...

Linux中Framebuffer驅動詳解1

之前看過很多書籍和網上資料,了解了linux中framebuffer的框架和一些結構體以及必備的硬體知識。但令本人深感 痛恨 的是,這些資料無不是點到為止 有些深入一些有些只介紹大概 貼 的時候總是省略了很多內容,難道就不能有一本書或一篇文章將整個framebuffer 全部講完嗎?在這裡我想 挑戰...

framebuffer驅動相關結構詳解2010

framebuffer對應的原始檔在linux drivers video 目錄下,總的抽象裝置檔案為fbcon.c,在這個目錄下還有其他各種顯示卡驅動相關的原始檔。framebuffer裝置驅動主要基於如下兩個檔案 1 linux include linux fb.h 2 linux driver...