色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

基于SEP4020微處理器平臺實現Framebuffer驅動程序的設計

電子設計 ? 來源:電子技術 ? 作者:康英濤,胡晨,王超 ? 2020-09-14 17:29 ? 次閱讀

引言

隨著世界經濟的迅速發展,液晶顯示屏廣泛應用于手機、PDA、金融終端等電子產品上,而在嵌入式電子領域,Linux操作系統占有越來越大的市場份額。因而本文提出在嵌入式Linux平臺上實現液晶顯示器的功能,詳細敘述了液晶顯示屏在SEP4020微處理器為基礎的平臺上的 Framebuffer驅動程序設計。

1 液晶顯示器原理

1.1 液晶顯示器種類

液晶顯示器(LCD) 根據驅動方式可以分為靜態驅動、簡單矩陣驅動以及主動矩陣驅動三種。其中,簡單矩陣型又可以再分為扭轉向列(TN)和超扭轉式向列型(STN)兩種,而主動矩陣則以薄膜式晶體管TFT)為主流。

TN型技術是LCD中最基本的,其他種類的LCD都以TN型為基礎改進而得。TN型LCD顯示質量很差,色彩單一、對比度低,反應速度很慢,故主要應用于簡單的數字符與文字的顯示,如電子表以及電子計算器等。STN LCD的顯示原理與TN類似,區別在于TN型的液晶分子將入射光旋轉90°,而STN可將入射光旋轉180°到270°。STN改善了TN視角狹小的缺點,并提高了對比度,顯示品質較TN高。

TFT型LCD中,晶體管矩陣依顯示信號開啟或者關閉液晶分子的電壓,使液晶分子軸轉向而成“ 亮”或者“暗”的對比,避免了顯示器對電場效應的依靠。因此,TFTLCD顯示質量較TN/STN更佳,畫面顯示對比度可達150:1以上,反應速度逼近 30ms甚至更快,適用于PDA、筆記本電腦數碼相機、MP4等。

1.2 液晶顯示器時序

圖1為LCD的典型時序圖。時序圖中VFRAME為幀同步信號,VLINE為行同步信號,VCLK為像素時鐘信號(用于鎖存圖像數據的像素時鐘),VM為數據有效標志信號,VD為圖像的數據信號。

作為幀同步信號的VFRAME,每發出一個脈沖,都意味著新的一屏圖像數據開始發送。而作為行同步信號的VLINE,每發出一個脈沖都表明新的一行圖像資料開始發送。在幀同步以及行同步的頭尾都必須留有回掃時間。

2 硬件平臺

本設計采用的硬件平臺是基于東南大學國家專用集成電路系統工程中心研發的SEP4020微處理器的開發板。該處理器是使用0.18μ m標準CMOS的工藝設計,內嵌ASIX CORE(32位RISC內核兼容ARM720T,帶8 kB指令數據cache和全功能MMU),采用馮諾依曼結構的一款微處理器。該處理器集成了液晶控制模塊(LCDC),此模塊兼容AMBA規范,有AHB MASTER和AHB SLAVE接口,分別用于讀取需要顯示的數據和軟件配置。經過軟件配置后,LCDC能自己獨立工作,而不再需要內核的再次參與,從而節省內核的處理時間。工作過程是LCDC使能后申請系統總線,獲得總線使用權后讀取需要顯示的數據,數據經過相應算法的處理就得到滿足時序要求的信號,送到LCDC顯示驅動器

LCDC使用內嵌的DMA方式進行數據操作,配備一個深度為16的32位FIFO用于緩存顯示數據,支持1、2、4位的STN灰度顯示和16位TFT彩色顯示,分辨率軟件可配置。相關的需要配置的寄存器有:

SSA為屏幕起始寄存器;SIZE為屏幕尺寸寄存器;PCR為面板配置寄存器;HCR為水平配置寄存器;VCR為垂直配置寄存器:PWMR為對比度控制器;LECR為使能控制寄存器;DMACR為DMA控制寄存器。

3 L i nux驅動軟件設計實現

3.1 驅動核心結構體的介紹

3.1.1.fb_jnfo結構體

幀緩沖設備最關鍵的一個數據結構體是fb info結構體,其中包含了關于幀緩沖設備屬性和操作的完整描述,定義如下:

限于篇幅,只列出了部分成員,其中 fb_var_screeninfo記錄用戶可以修改的顯示控制器參數,包括屏幕分辨率和每個像素的比特數等;fb_fix_screeninfo記錄用戶不能修改的顯示控制器參數;cmap為目前的顏色表;fb_ops為幀緩沖操作函數集;screen_base為幀緩沖的虛擬基地址;i oremapped的虛擬內存大小;pseudo_palette為偽16色的顏色表。

3.1.2.fb_ops結構體

本結構體為指向底層操作的函數的指針,這些函數是需要驅動程序開發人員編寫填充的,部分成員定義如下

fb_check_var ()用于調整可變參數,并修整為硬件支持的值;fb_set_par()則根據屏幕參數設置具體讀寫LCD控制器的寄存器以使得LCD控制器進入相應的工作狀態,使用戶設置的屏幕參數在硬件上有效;f bsetcolreg ()成員函數實現偽顏色表和顏色表的填充。

3.1.3.fb_var_screeni nfo

本結構體定義了用戶可以修改的顯示控制器參數,部分成員如下:

本結構體中,xres為屏幕的水平像素數;yres為屏幕垂直寬度:bits_per_pixel定義每個像素由多少個位表示;pixclock定義了像素時鐘;left_margin是表示行切換中從同步到繪圖之間的延遲;right_margin表示行切換中從繪圖到同步之間的延遲;upper_margin表示幀切換中從同步到繪圖之間的延遲;lower_margin表示幀切換中從繪圖到同步之間的延遲;hsyn_len表示水平同步的長度;vsync_len表示垂直同步的長度。

3.2 Linux幀緩沖設備的模塊加載和卸載函數

由于LCD控制器被集成在SOC芯片上作為一個獨立的硬件模塊,也就是 platform_device而存在,因此本驅動中包含平臺驅動。首先我們要定義platform_driver結構體:

定義了此結構體之后,在幀緩沖設備的模塊加載函數 sep4020fb_init(void)中,我們只需要使用函數 platform_driver_register(&sep4020fb_driver)注冊平臺驅動,而其余大部分的初始化工作移交到平臺驅動的探測函數sep4020fb_probe中完成。

在函數sep4020fb_probe(struct platform_device*pdev)中,首先要申請SEP4020的幀緩沖信息結構體:structsep4020fb_info*info,在此結構體中,成員sep4020fb_ma c h_i n f o記錄了seP4020幀緩存的機器信息,sep4020fb_hw包含了sep4020微處理器LCD控制器所涉及到的所有寄存器的信息,screen_dma表示幀緩存的物理地址,而screen_cpu代表了幀緩存的虛擬地址。之后要為sep4020fb_mach_info申請內存空間,申請完畢之后就要初始化fb_info結構體中的固定和可變參數,即填充fb_var_screeninfo var和fb_fix_screeninfo fix成員。首先通過fb_info一》fbops=&sep4020fb_ops將為sep4020微處理器定義的函數操作結構體賦予幀緩存信息結構體中對應的成員,sep4020fb_ops定義了指向底層操作的一系列函數,本文將在后面詳細介紹;由于本課題選用的液晶屏為320×240TFT 彩屏,所以fb_info-》var.xres賦值為320,fb_info一》var.yres賦值為240,fb_info 一》var.bits_per_pixel賦值為16,這樣就可以算出幀緩存的長度為320×240×16/8個字節,將此值賦給 fbinfo-》fix.smem_len成員。

完成可變參數和固定參數的填充之后,要為本驅動申請中斷資源,具體函數為 requestirq(irq,sep4020fb_irq,SA INTERRUPT,pdev一》name,info),irq為請求的中斷號,sep4020fb_irq為中斷處理服務子程序,SA_INTERRUPT表示為一個快速中斷處理,在執行中斷的過程中禁止所有在當前處理器上的其他中斷。申請中斷完畢之后,就要完成本驅動關鍵步驟,調用sep4020fb_map_video_memory()函數申請顯示緩沖區。在該函數中,首先調用PAGE_ALIGN()函數對齊申請的緩沖區的大小,使即將申請的顯示緩沖區大小為頁的整數倍;然后調用函數dma_all oc_writecombine(fbi-》dev,fbi一》map_size,&fbi 一》map_dma,GFP_KERNEL), 分配一塊寫合并的內存區域作為幀緩存,函數返回值為申請的幀緩存的起始位置的虛擬地址,fbi一》map_dma代表的是該位置的物理地址,fbi 一》map_si ze為此內存區的大小。

完成上面的工作之后,驅動程序在就有了一塊內存區域作為幀緩沖,向此區域寫入數據就能顯示在液晶屏上。后面還要調用sep4020fb_init_registers(info)函數初始化L C D控制器的寄存器;然后調用sep4020fb_check_var(&fbinfo一》var,fbinfo)檢查可變參數,最后調用 register_framebuffer(fbinfo)注冊幀緩沖設備。

3.3 提供給應用程序的接口

本驅動設計定義了如下幾個接口供應用程序調用:fb_ioctl,fb_blank,fb_fillrect.

部分代碼如下:

sep4020_blank函數主要實現了將液晶屏清屏的功能。

sep4020fb_fillrect函數實現了填充液晶屏一塊矩形區域的功能。

sep4020fb_ioctl 函數則為上層應用提供了更多的功能,部分可供上層調用的命令如下:

FBIOGET_VSCREENINFO表示用戶獲取屏幕的可變參數;

FBIOPUT_VSCREENINFO 表示用戶設置可變的屏幕參數;

FBIOGET_FSCREENINFO表示用戶獲得屏幕的固定參數;

FBIOBLANK 表示調用sep4020fb_blank函數清空液晶屏;

FBIOPUTCMAP表示設置屏幕的顏色表;

FBIOGETCMAP 表示獲得顏色表。

3.4 用戶空間對幀緩沖設備進行訪問

驅動程序經過編譯并加載為模塊后,成為/dev/fb0設備,在應用程序中,操作/dev/fb0一般遵循如下步驟:1)打開/dev/fb0設備文件;2)調用ioctl()操作取得屏幕的參數,如屏幕分辨率和每個像素所占的比特數,進而計算出顯示緩沖區的大小;3)將屏幕緩沖區映射到用戶空間;4)映射之后就可以向緩沖區寫入或者讀出數據,進行繪圖了。

4 測試與結論

根據前面論述的步驟向屏幕緩沖區寫入數據,將每個像素的值設為0xF0F0,在屏幕上顯示如下圖像:

測試結果顯示,在本課題驅動模塊的支持下,可以向屏幕緩沖區寫入數據并正確地在屏幕上顯示出來,工作完全正常。本文所提出的設計方案已經應用在本單位某產品上。

責任編輯:gt

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • lcd
    lcd
    +關注

    關注

    34

    文章

    4437

    瀏覽量

    168072
  • 微處理器
    +關注

    關注

    11

    文章

    2273

    瀏覽量

    82642
  • 液晶顯示屏
    +關注

    關注

    1

    文章

    208

    瀏覽量

    27666
收藏 人收藏

    評論

    相關推薦

    #微處理器與嵌入式系統設計 基于操作系統的驅動程序設計

    嵌入式微處理器驅動程序
    電子技術那些事兒
    發布于 :2022年10月21日 22:01:03

    基于ARM720T的SEP4020嵌入式處理器的動作控制MP3的設計

    的晃動就能進行所有最基本的控制操作,既靈動又時尚,這應當是一種全新的操作體驗。本文將探討如何設計這種通過動作來進行正常控制的MP3。1 硬件平臺1.1 SEP4020嵌入式處理器本文所述驅動程
    發表于 09-18 16:09

    嵌入式處理器SEP4020電子資料

    概述:SEP4020 由東南大學國家專用集成電路系統工程技術研究中心設計,采用 0.18um 標準 CMOS 的工藝設計,內嵌 ASIX CORE(32 位 RISC 內核,帶 8KB 指令數據 Cache)...
    發表于 04-14 07:26

    AMD Cool and Quiet 處理器效能驅動程序

    AMD Cool and Quiet 處理器效能驅動程序.zip
    發表于 01-29 16:12 ?15次下載

    SEP4020處理器Data sheet

    本文檔介紹東南大學國家專用集成電路系統工程技術研究中心所設計之嵌入式微處理器SEP4020的電氣、機械及熱力學方面的各項參數。本文檔在對一些用到的表達方式進行了規約后,
    發表于 05-28 15:10 ?61次下載

    基于SEP4020的嵌入式Linux音頻驅動程序設計

    論述了Linux操作系統中聲卡驅動程序的設計方法,主要介紹了基于OSS的聲卡驅動設計原理以及Linux操作系統中聲卡驅動程序的接口函數。針對具體硬件平臺編寫了相應的
    發表于 07-06 15:30 ?37次下載

    SEP4020微處理器的動作控制MP3的設計

    SEP4020微處理器的動作控制MP3的設計 0 概述     動作識別是一個很熱門的話題。蘋果公司繼推出具有轟動效應的多點觸控技術后又籌備申請自己的動作
    發表于 04-12 12:03 ?1106次閱讀
    <b class='flag-5'>SEP4020</b><b class='flag-5'>微處理器</b>的動作控制MP3的設計

    SEP4020嵌入式微處理器解析

    應對嵌入式處理器發展的趨勢以及市場對嵌入式微處理器芯片的需求逐漸增加。作為SOC芯片及解決方案的專業提供商, 南京博芯電子技術有限公司日前發布了東芯IV+ SEP4020嵌入式微處理
    發表于 07-06 10:55 ?1364次閱讀

    SEP4O2O在Linux下實現動作控制MP3

    本文介紹了針對SEP4020處理器等硬件在Linux操作系統下的動作控制MP3的設計流程,為這種控制方式的MP3設計提供了一個范例。
    發表于 09-08 12:01 ?1057次閱讀
    <b class='flag-5'>SEP</b>4O2O在Linux下<b class='flag-5'>實現</b>動作控制MP3

    Linux下的LCD驅動程序實現

    通過對LCD和Framebuffer原理的說明,以ARM處理器S3C2410嵌入式芯片為平臺,設計了嵌入式Linux下的基于幀緩沖的LCD設備驅動程序。通過測試
    發表于 02-09 15:10 ?68次下載
    Linux下的LCD<b class='flag-5'>驅動程序</b><b class='flag-5'>實現</b>

    Linux設備驅動程序平臺驅動程序和字符驅動程序介紹

    了解Linux設備驅動程序的基礎知識,重點介紹平臺驅動程序和字符驅動程序。 提出了簡單的平臺驅動程序
    的頭像 發表于 11-27 06:32 ?4339次閱讀

    解析SEP4020微處理器的動作控制MP3的設計

    本文介紹了針對SEP4020處理器等硬件在Linux操作系統下的動作控制MP3的設計流程,為這種控制方式的MP3設計提供了一個
    發表于 03-15 14:00 ?1066次閱讀
    解析<b class='flag-5'>SEP4020</b><b class='flag-5'>微處理器</b>的動作控制MP3的設計

    基于SEP4020和嵌入式Linux的DNC通信及監控平臺研究和開發

    基于SEP4020和嵌入式Linux的DNC通信及監控平臺研究和開發(學嵌入式開發培訓機構哪個好)-首先針對客戶需求,結合DNC系統發展現狀和生產現場實際情況,提出利用嵌入式技術,結合開源、穩定
    發表于 08-04 14:06 ?3次下載
    基于<b class='flag-5'>SEP4020</b>和嵌入式Linux的DNC通信及監控<b class='flag-5'>平臺</b>研究和開發

    基于SEP4020微處理器的動作控制MP3的設計

    本文介紹了針對SEP4020處理器等硬件在Linux操作系統下的動作控制MP3的設計流程,為這種控制方式的MP3設計提供了一個范例。
    的頭像 發表于 11-03 18:05 ?578次閱讀

    怎么編寫Framebuffer驅動程序

    Framebuffer 驅動程序框架 分為上下兩層: fbmem.c:承上啟下 實現、注冊 file_operations 結構體 把 APP 的調用向下轉發到具體的硬件
    的頭像 發表于 03-22 09:13 ?598次閱讀
    怎么編寫<b class='flag-5'>Framebuffer</b><b class='flag-5'>驅動程序</b>
    主站蜘蛛池模板: 国产乱码精品一区二区三区四川| 国产在线播放KKK| 国产精品网红女主播久久久| 欧美色图天堂网| 666永久视频在线| 狼群影院视频在线观看WWW| 亚洲精品美女久久久久99| 国产伦精品一区二区免费| 婷婷精品国产亚洲AV在线观看 | 羞羞答答影院在线| 国产一区二区内射最近更新 | 健身房被教练啪到腿软H| 亚洲精品成人在线| 国外成人电台| 一区不卡二区卡| 免费被靠视频动漫| jj插入bb| 手机在线免费| 好爽胸大好深好多水| 伊人久久综合影院首页| 蜜桃传媒星空传媒在线播放| no视频在线观看| 天天影视网网色色欲| 果冻传媒在线播放| 最近日本MV字幕免费观看在线 | 亚洲精品国产第一区第二区| 久草在线在线精品观看99| 最近最新的日本字幕MV| 青青草国产精品| 国产香蕉视频| 2021久久精品免费观看| 日本一本在线播放| 国内精品免费久久影院| 正在播放国产尾随丝袜美女| 欧美最猛12teevideos| 国产精品久久大陆| 永久免费无码AV国产网站| 祺鑫WRITEAS流出来了| 国产午夜电影在线观看不卡| 坠落的丝袜美人妻| 无码国产伦一区二区三区视频|