<dfn id="is4kg"></dfn>
  • <ul id="is4kg"></ul>
  • <abbr id="is4kg"></abbr>
  • <ul id="is4kg"></ul>
    <bdo id="is4kg"></bdo>

    曙海教育集團論壇Linux專區(qū)Linux驅(qū)動開發(fā) → Linux液晶屏驅(qū)動開發(fā)


      共有7337人關(guān)注過本帖樹形打印

    主題:Linux液晶屏驅(qū)動開發(fā)

    美女呀,離線,留言給我吧!
    wangxinxin
      1樓 個性首頁 | 博客 | 信息 | 搜索 | 郵箱 | 主頁 | UC


    加好友 發(fā)短信
    等級:青蜂俠 帖子:1393 積分:14038 威望:0 精華:0 注冊:2010-11-12 11:08:23
    Linux液晶屏驅(qū)動開發(fā)  發(fā)帖心情 Post By:2010-11-24 10:30:54

    FrameBuffer設(shè)備驅(qū)動基于Linux/include/linux/fb.h和linux/drivers/video/fbmem.c這兩個文件,下面就詳細分析這兩個文件。

      首先分析linux/include/linux/fb.h文件,幾乎主要的結(jié)構(gòu)都是在這個文件中定義的。這些結(jié)構(gòu)包括:

      fb_var_screeninfo 這個結(jié)構(gòu)描述了顯示卡的特性,記錄了幀緩沖設(shè)備和指定顯示模式的可修改信息。其中變量xres定義了屏幕一行所占的像素數(shù),yres定義了屏幕一列所占的像素數(shù),bits_per_pixel定義了每個像素用多少個位來表示。

      fb_fix_screeninfon 這個結(jié)構(gòu)在顯卡被設(shè)定模式后創(chuàng)建,它描述顯示卡的屬性,并且系統(tǒng)運行時不能被修改;比如FrameBuffer內(nèi)存的起始地址。

      struct fb_info Linux為幀緩沖設(shè)備定義的驅(qū)動層接口。它不僅包含了底層函數(shù),而且還有記錄設(shè)備狀態(tài)的數(shù)據(jù)。每個幀緩沖設(shè)備都與一個fb_info結(jié)構(gòu)相對應(yīng)。其中成員變量modename為設(shè)備名稱,fontname為顯示字體,fbops為指向底層操作的函數(shù)的指針。

      fb_cmap描述設(shè)備無關(guān)的顏色映射信息。可以通過FBIOGETCMAP 和FBIOPUTCMAP 對應(yīng)的ioctl操作設(shè)定或獲取顏色映射信息。然后分析fbmem.h文件。

      幀緩沖設(shè)備屬于字符設(shè)備,采用“文件層-驅(qū)動層”的接口方式。在文件層為之定義了以下數(shù)據(jù)結(jié)構(gòu):
    幀緩沖設(shè)備數(shù)據(jù)結(jié)構(gòu)

      其成員函數(shù)都在Linux/driver/video/fbmem.c中定義,其中的函數(shù)對具體的硬件進行操作,對寄存器進行設(shè)置,對顯示緩沖進行映射。

      對于/dev/fb,對顯示設(shè)備的操作主要有以下幾種:

      讀/寫(read/write)/dev/fb 相當(dāng)于讀/寫屏幕緩沖區(qū)。

      映射(map)操作 由于Linux工作在保護模式和每個應(yīng)用程序里都有自己的虛擬地址空間,在應(yīng)用程序中是不能直接訪問物理緩沖區(qū)地址的。因此,Linux在文件操作file_operaTIons結(jié)構(gòu)中提供了mmap函數(shù),可將文件的內(nèi)容映射到用戶空間。對于幀緩沖設(shè)備,則可通過映射操作,可將屏幕緩沖區(qū)的物理地址映射到用戶空間的一段虛擬地址中,之后用戶就可以通過讀寫這段虛擬地址訪問屏幕緩沖區(qū),在屏幕上繪圖。

      I/O控制 對于幀緩沖設(shè)備,對設(shè)備文件的ioctl操作可讀取/設(shè)置顯示設(shè)備及屏幕的參數(shù),如分辨率、顯示顏色數(shù)和屏幕大小等。ioctl的操作是由底層的驅(qū)動程序來完成的。

      在應(yīng)用程序中,操作/dev/fb的一般步驟為首先打開/dev/fb設(shè)備文件,然后用ioctl操作取得當(dāng)前顯示屏幕的參數(shù),如屏幕分辨率,每個像素點的比特數(shù),根據(jù)屏幕參數(shù)可計算屏幕緩沖區(qū)的大小。接下來,將屏幕緩沖區(qū)映射到用戶空間。最后,映射后就可以直接讀寫屏幕緩沖區(qū),進行繪圖和圖片顯示了。典型程序段如下:
    程序段

      由于準(zhǔn)備在LCD 上顯示一幅256色BMP圖片,關(guān)于BMP 圖片方面的知識請見相關(guān)鏈接。

      4.幀緩沖驅(qū)動的縮寫

      了解了上述知識后,在編寫驅(qū)動的時候就簡單多了。源程序共將程序分為初始化幀緩沖模塊fb_init(),調(diào)色板獲取色彩模塊get_cmap(),圖片顯示模塊display_bmp(),main函數(shù)4個函數(shù)。其中調(diào)色板獲取色彩模塊的功能是從文件中獲得圖像顯示色彩,重置系統(tǒng)調(diào)色板,使圖像能正確的顯示色彩。
    程序

      圖片顯示函數(shù)部分重要代碼為:
    圖片顯示函數(shù)部分重要代碼

      在主函數(shù)中,建立一個進程調(diào)用圖片顯示函數(shù)
    進程調(diào)用圖片顯示函數(shù)

      至此LCD的驅(qū)動程序就編寫完成了,經(jīng)過調(diào)試,編譯鏈接,然后用串口下載到實驗板上,一幅256色BMP圖片就可以出現(xiàn)在液晶屏幕上了。

      5.應(yīng)用價值

      液晶屏點亮了,這只是第一步,我們可以在此基礎(chǔ)上進一步進行應(yīng)用程序的開發(fā),比如筆者將此應(yīng)用在一個視頻監(jiān)控系統(tǒng)中。在這個視頻監(jiān)控系統(tǒng)中,圖像處理占很大的比重,基本的圖像處理構(gòu)成如下:

      圖像采集模塊圖像采集模塊需要兩種裝置,一種是將光信號轉(zhuǎn)換成電信號的物理器件,如攝像機;另一種是能夠?qū)?nobr id="nobr93" style="CURSOR: pointer; COLOR: #cb4bfc; BORDER-BOTTOM: rgb(102,0,255) 1px="1px" dotted; BACKGROUND-COLOR: transparent; TEXT-DECORATION: underline" jquery1290565785015="62">模擬電信號轉(zhuǎn)換成數(shù)字信號的器件,如圖像采集卡。

      圖像處理模塊對圖像的處理一般可用算法的形式描述,但是對于特殊的問題需要特殊的解決方法,圖像處理模塊中不但包含了對圖像的一般處理方法,也包括一些特殊的算法處理。

      圖像顯示模塊對于采集得到的圖像,經(jīng)過處理以后,最終需要顯示給用戶看。在系統(tǒng)的實時采集部分中,需要對展開的圖像進行滾屏顯示:在圖像編輯部分中,需要瀏覽所要拼接的圖像。所以圖像顯示對于系統(tǒng)來說非常重要。

      圖像儲存模塊由于圖像中包含有大量的信息,并且由于系統(tǒng)所采用8位真彩色格式,因此需要大量的空間。因此,在本系統(tǒng)中需要大容量和快速的圖像存儲器


    支持(0中立(0反對(0單帖管理 | 引用 | 回復(fù) 回到頂部

    返回版面帖子列表

    Linux液晶屏驅(qū)動開發(fā)








    簽名
    主站蜘蛛池模板: 免费人成激情视频在线观看冫| 国产网红在线观看| 亚洲免费人成在线视频观看| 真实国产乱子伦在线视频不卡| 国产欧美久久一区二区| 一级午夜免费视频| 日本亚洲色大成网站www久久 | 午夜视频在线观看区二区| 鸥美一级黄色片| 国模吧双双大尺度炮交gogo| 中文字幕精品无码亚洲字| 日韩毛片免费看| 亚洲欧美日韩综合久久久久| 看看屋在线看看电影| 国产午夜福利100集发布| 91成人免费版| 天堂а√在线地址| 丰满少妇高潮惨叫久久久一| 日韩亚洲欧美综合一区二区三区| 亚洲精品成人网站在线播放 | 美女免费精品高清毛片在线视 | 亚洲男人第一av网站| 白白国产永久免费视频| 国产人与禽zoz0性伦| 2019中文字幕免费电影在线播放| 在线观看亚洲av每日更新| 中文字幕国产一区| 日本免费精品一区二区三区| 亚洲国产精品成人午夜在线观看| 波多野结衣办公室jian情| 啊灬啊别停灬用力啊公阅读| 色宅男午夜电影在线观看| 国产激情电影综合在线看| 99在线观看视频免费精品9| 女人张开腿让男人桶个爽| 久久久久成人精品无码中文字幕| 日韩字幕一中文在线综合| 亚洲欧洲专线一区| 欧美福利在线观看| 免费啪啪社区免费啪啪手机版| 精品午夜福利在线观看|