基于PXA270的LCD顯示系統的設計與實(shí)現
這些宏操作都在/drivers/video/pxafb.h文件里。
本文引用地址:http://dyxdggzs.com/article/151121.htm#if defined(CONFIG_FB_LB064v02)
#define LCD_PIXCLOCK 250000//54000//150000
#define LCD_BPP 16
#define LCD_XRES 640
#define LCD_YRES 480
#define LCD_HORIZONTAL_SYNC_PULSE_WIDTH 46
#define LCD_VERTICAL_SYNC_PULSE_WIDTH 1
#define LCD_ BEGIN_OF_LINE_WAIT_COUNT 96
#define LCD_BEGIN_FRAME_WAIT_COUNT 35
#define LCD_END_OF_LINE_WAIT_COUNT 4
#define LCD_END_OF_FRAME_WAIT_COUNT 0
#define LCD_SYNC (FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT)
#define LCD_LCCR0 (LCCR0_OUC | LCCR0_CMDIM | LCCR0_RDSTM | LCCR0_OUM | LCCR0_BM | LCCR0_QDM | LCCR0_PAS |LCCR0_EFM | LCCR0_IUM | LCCR0_SFM | LCCR0_LDM )
#define LCD_LCCR3 (LCCR3_PCP | LCCR3_HSP | LCCR3_VSP)
#endif
最后是通過(guò)register_framebuffer()進(jìn)行各項登記,使幀緩沖區與控制臺設備驅動(dòng)的高層相連。參數fbi是一個(gè)指向fb_info數據結構的指針,通過(guò)這個(gè)數據結構使幀緩沖區與文件系統連接起來(lái)。
3.2 幀緩沖區的操作
對幀緩沖區的操作,應用程序首先要打開(kāi)代表幀緩沖區的設備文件,幀緩沖區的file_operations數據結構是fb_fops。
static struct file_operations fb_fops = {
owner: THIS_MODULE,
read: fb_read, // 讀操作
write: fb_write, // 寫(xiě)操作
ioctl: fb_ioctl, // 控制操作
mmap: fb_mmap, // 映射操作
open: fb_open, // 打開(kāi)操作
release: fb_release, // 關(guān)閉操作
#ifdef HAVE_ARCH_FB_UNMAPPED_AREA
get_unmapped_area: get_fb_unmapped_area,
#endif
};
應用程序層對幀緩沖設備的訪(fǎng)問(wèn)同對文件的訪(fǎng)問(wèn)操作類(lèi)似。在應用程序中,對幀緩沖設備(dev/fb)的操作只需調用文件層的操作函數。首先打開(kāi)/dev/fb設備文件;隨后用ioctl操作取得屏幕的分辨率和bpp值,從而計算出屏幕緩沖區的大小,并將屏幕的緩沖區映射到用戶(hù)空間;最后就可直接對屏幕緩沖區進(jìn)行圖片顯示。對幀緩沖區的打開(kāi)文件操作是由fb_open()完成等。
驅動(dòng)程序編寫(xiě)完成后,開(kāi)發(fā)者可以將其編譯為動(dòng)態(tài)加載模式,或靜態(tài)地編譯入內核中。
4 結束語(yǔ)
隨著(zhù)后PC時(shí)代的到來(lái),嵌入式系統得到了越來(lái)越廣泛的應用?,F在的嵌入式系統一般都需要提供圖形化的人機界面。本文所設計的系統運行良好,性能穩定。在實(shí)際產(chǎn)品中取得了比較滿(mǎn)意的經(jīng)濟效益。
參考文獻:
1. 陳文智《嵌入式系統開(kāi)發(fā)原理與實(shí)踐》清華大學(xué)出版社 2005.8
2. 許慶豐 嵌入式Linux下彩色LCD驅動(dòng)的設計與實(shí)現 電子產(chǎn)品世界 2003.Z2
3. 王同洋,熊偉 嵌入式Linux中圖形用戶(hù)界面的研究與設計 微計算機信息 2006年第3-2期
4. 深圳市億道電子技術(shù)有限公司內部資料
評論