linux系統移植 書

第五章

flash硬件方案比較,nor,nand。基於flash的文件系統有jffs2(日誌文件系統,主要用於nor,基於mtd驅動層),yaffs(主要用於nand),cramfs(使用時解壓縮到ram,因此寫操作困難,它是隻讀的),romfs(只讀,順序)。

ramdisk是劃分一塊內存作分區使用,不是一個實際的FS,而是將實際FS裝入內存的一種策略。

第六章 LCD驅動程序移植

struct fb_info 記錄幀緩衝的全部信息,參數,狀態,操作函數指針等。唯一內核可見。

struct fb_info{

struct fb_var_screeninfo var;//當前可變參數

struct fb_fix_screeninfo fix;//當前固定參數

struct fb_monspecs monspecs;//當前的顯示器模式

struct work_struct queue;//事件隊列

...

struct fb_ops *fbops;//一些操作集指針

struct device *device;//指向 struct platform_device 中的dev成員

...

struct __iomem *screen_base;

...

};

 

fb_var_screeninfo 屏幕的分辨率,每像素比特數,時序變量等。

strcut fb_var_screeninfo{

__u32 xres;//實際分辨率

__u32 xres_virtual;//虛擬分辨率

__u32 xoffset;//虛擬分辨率到實際分辨率的偏移

__u32 bits_per_pixel;//BPP

__u32 height;//圖像高度

//一些時序

__u32 pixclock;//像素時鐘

__u32 left_margin;//幀同步時鐘

__u32 hsync_len;//一行的像素數

__u32 vsync_len;//一幀的行數

...

};

fb_fix_screeninfo {

char id[16];//驅動中定義的設備名字

unsigned long smem_start;//frame buffer 的開始地址,這是物理地址

...

};

 

fbmem.c爲上層提供調用,爲下層提供接口。

struct fb_ops{

struct module *owner;

int (*fb_open)(struct fb_info *info, int user);

//設備屬性的設置和獲取

...};

註冊註銷:register_framebuffer(struct fb_info *fb_info);

瞭解LCD驅動結構,參考已有代碼,修改。

初始化函數(初始化寄存器,分配顯示緩衝)和fb_info的填充。

編寫成員函數:讀寫,映射,IO控制。

 

 

 

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章