熟女俱乐部五十路二区av,又爽又黄禁片视频1000免费,国产卡一卡二卡三无线乱码新区,中文无码一区二区不卡αv,中文在线中文a

新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 嵌入式Linux下的LCD驅動程序設計與實現(xiàn)

嵌入式Linux下的LCD驅動程序設計與實現(xiàn)

作者: 時間:2011-02-25 來源:網絡 收藏

2.3 驅動程序設計與實現(xiàn)
2.3.1 LCD驅動的模塊加載與卸載

LCD作為一個相對獨立的硬件單元,被認定為平臺設備,在驅動模塊加載和卸載函數(shù)中,就分別注冊和注銷對應的platform_driver。
2.3.2 LCD驅動的探測與移除函數(shù)
探測函數(shù)probe主要完成LCD控制器初始化的工作,包括對fb_info結構成員的初始化、內存分配、寄存器的配置、Framebuffer的注冊等。模塊卸載函數(shù)中對平臺驅動的注銷會導致其中移除函數(shù)的執(zhí)行,這個函數(shù)釋放顯示緩沖區(qū)并注銷幀緩沖設備。
2.3.3 LCD驅動的fb_ops成員函數(shù)
在程序設計里,定義LCD驅動的fb_ops結構體和相關函數(shù)功能如下所示

可以看出,fb_ops()結構體類似于file_opera tions()結構體,提供了一個幀緩沖設備的統(tǒng)一接口。s3c2410_ops()函數(shù)給出了標準接口到針對具體硬件操作函數(shù)的跳轉指針。
2.3.4 Framebuffer設備驅動程序的設計
驅動程序主要完成的工作有以下5部分:
(1)編寫初始化函數(shù)
Framebuffer驅動首先要初始化LCD控制器,通過相關寄存器來設置LCD相對應的顯示模式和顏色數(shù),然后分配顯示緩沖區(qū)。通常用vmall-oc()函數(shù)分配一段連續(xù)空間,緩沖區(qū)的大小可以用“點陣行數(shù)×點陣列數(shù)×一個像素的位數(shù)/8”計算得到。
如果使用模塊化加載方式,加載LCD驅動模塊時,系統(tǒng)調用fb_init()函數(shù)。卸載LCD驅動模塊時,系統(tǒng)首先調用unregister_framebuffer()取消注冊,然后釋放顯示緩沖區(qū)的內存。
(2)編寫成員函數(shù)
主要負責編寫fb_ops()對應的底層操作函數(shù)。
(3)讀/寫(read/write)
完成對幀緩沖區(qū)的讀寫操作。
(4)映射(map)
Linux有內核空間和用戶空間,平時工作在保護模式,每個應用程序進程都有自己的虛擬地址空間,應用程序不能直接訪問物理緩沖地址。但是,Linux在文件操作接口(file_operations)中提供了地址映射(mmap)操作,它可以將文件的內容映射到用戶空間,這樣用戶就可以通過讀寫這段地址來訪問緩沖區(qū),并在屏幕上繪圖。
(5)輸入/輸出控制
設備文件的ioctl()調用可以讀取和設置顯示設備的參數(shù),如分辨率、支持顏色數(shù)、屏幕大小等。

3 結束語
在編寫完驅動程序后,將該驅動程序以加載模塊的方式進行編譯,并將編譯好的LCD設備驅動下載到目標板上,通過編寫一個簡單的測試Framebuffer設備驅動的應用程序,實現(xiàn)了設備的打開、關閉、內存映射和iotcl等具體操作,完成了在LCD液晶屏不同行上繪制不同顏色,通過編譯此程序,在目標板上運行,即可在LCD上顯示彩色條紋,這就完成了驅動程序的設計要求。

本文引用地址:http://www.bjwjmy.cn/article/151000.htm

上一頁 1 2 下一頁

關鍵詞:

評論


相關推薦

技術專區(qū)

關閉