亚洲狠狠干,亚洲国产福利精品一区二区,国产八区,激情文学亚洲色图

一種國產自主嵌入式計算機系統及其顯卡驅動方法

文檔序號:6634507閱讀:529來源:國知局
一種國產自主嵌入式計算機系統及其顯卡驅動方法
【專利摘要】本發(fā)明公開了一種國產自主嵌入式計算機系統及其顯卡驅動方法,包括龍芯2F中央處理單元和SM722顯示芯片,SM722顯示芯片通過PCI總線與龍芯2F相連。其顯卡驅動方法包括對支持SM712的固件層驅動修改和操作系統內核層驅動修改,實現了龍芯搭載原本并不支持MIPS框架和PCI總線的SM722顯示芯片,從而具備更強的性能,能提升產品的人機交互性能及圖形顯控性能,擴展了龍芯2F處理器應用領域。
【專利說明】一種國產自主嵌入式計算機系統及其顯卡驅動方法

【技術領域】
[0001]本發(fā)明涉及一種嵌入式計算機系統,特別涉及一種國產自主嵌入式計算機系統及其顯卡驅動方法。

【背景技術】
[0002]龍芯2F處理器是龍芯中科技術有限公司研制的具有完全自主知識產權的國產高性能、低功耗處理器,主要面向行業(yè)電腦終端、云計算終端,三網融合、工業(yè)控制、網絡安全、特種計算機等應用領域。目前龍芯2F僅支持PCI高速外設總線。
[0003]PCI是由Intel公司1991年推出的一種局部總線。從結構上看,PCI是在CPU和原來的系統總線之間插入的一級總線,具體由一個橋接電路實現對這一層的管理,并實現上下之間的接口以協調數據的傳送。由于PCI總線只有133MB/S的帶寬,對聲卡、網卡、視頻卡等絕大多數輸入/輸出設備顯得綽綽有余,但對性能日益強大的顯卡則無法滿足其需求。目前PCI接口的顯卡已經不多見了,只有較老的PC上才有,廠商也很少推出此類接口的產品。
[0004]因此當前大部分顯卡的接口都為帶寬更高的AGP或者PC1-E總線接口,支持PCI總線的顯卡芯片十分有限。因此,目前市場上已與2F配套使用的顯卡芯片僅有SiliconMot1n公司的SM712和SiS公司的SiS 315兩款,使得龍芯2F的應用領域相對受限。
[0005]SM712是一款由Silicon Mot1n早在二十世紀90年代推出的嵌入式2D圖形加速芯片,雖然功耗低,僅600mW,但是性能低下,不支持3D圖形加速等致命缺點使得其難以滿足現代嵌入式系統對圖形計算性能的需求。SiS 315是SiS于2000年推出的顯卡產品,雖然其支持3D加速和視頻處理,但其作為當時的通用顯卡,功耗較高,且3D圖形和視頻處理能力仍十分有限。
[0006]而SM722是Silicon Mot1n公司于2001年推出的一款面向當時高端筆記本電腦、支持電源動態(tài)管理、支持3D圖形操作(如Mip Mapping、Alpha Blending、Anti_Aliasing、Specular Highlight和Fog等)的高端顯示芯片,曾經被Thinkpad S30筆記本電腦選用,是一款性能較好、支持功耗管理的新一代顯卡芯片,而且功能全面、性能強勁、且支持動態(tài)電源管理的顯卡芯片,能很好的滿足現在普通嵌入式顯控系統的顯示需求。
[0007]龍芯處理器采用簡單指令集,類似于MIPS指令集;龍芯平臺計算機使用PMON(Prom Monitor)作為基本輸入輸出系統(B1S)。PMON是一個兼有B1S和BootLoader功能的開源軟件,PMON具有強大而豐富的功能,除基本的1/0功能外,還包括硬件初始化與檢測、操作系統引導和程序調試等功能。主要應用于MIPS、ARM、PowerPC等平臺,不同于X86架構的B1S。而SM722與SM712相比存在較大的差異,沒有針對MIPS架構開發(fā)的相應軟件(包括固件層驅動,內核層驅動和支持顯控系統運行的操作系統)可以使用,使得當前業(yè)界沒有使用SM722顯卡與龍芯2F搭建計算機系統的先例。


【發(fā)明內容】

[0008]本發(fā)明所要解決的技術問題是提供一種國產自主嵌入式計算機系統及其顯卡驅動方法,實現了采用MIPS框架的龍芯2F的搭載原本不支持MIPS架構的SM722圖形顯卡,性能高,功耗低。
[0009]本發(fā)明的技術方案為:
[0010]一種國產自主嵌入式計算機系統,包括龍芯2F中央處理單元和SM722顯示芯片,所述SM722顯示芯片通過PCI總線與所述龍芯2F相連;
[0011 ] 進一步地,所述龍芯2F中央處理單元和SM722顯示芯片表貼于同一片電路印制板上或表貼于不同的電路印制板上,基于PCI插槽或背板PCI走線通信連接。
[0012]進一步地,所述PCI總線為32位33MHz/66MHz的PCI總線。
[0013]一種國產自主嵌入式計算機系統的顯卡驅動方法,采用上述的系統,驅動方法包括:
[0014](I)固件層驅動:
[0015]進入pmon的源碼所在目錄,使用文本編輯器打開其中的支持SM712顯示芯片的顯卡驅動源文件【sys\dev\pci\smtc2d.C】并進行如下修改:
[0016]a.將幀緩沖區(qū)FrameBuffer的基地址修改為0x18200000 ;
[0017]b.將1寄存器空間的基地址修改為0xl80C0000 ;
[0018]c.將繪圖端口寄存器DPR空間的基地址修改為0x18000000 ;
[0019]d.將視頻端口寄存器VPR空間的基地址修改為0x18000800 ;
[0020]e.將顯存【顯示芯片內部內存的一部分,在SM722中,就是指幀緩沖區(qū)FrameBuffer]空間大小調整為8MB ;
[0021]f.將顯示芯片內部內存【SM722內部集成的存儲模塊】工作時鐘頻率MCLK設置在64MHz—129MHz 范圍內;
[0022](2)操作系統內核層驅動:
[0023]進入操作系統內核的源碼所在目錄,使用文本編輯器打開其中的顯卡驅動源文件【kernel_dir/drivers/staging/sm7xx/smtcfb.C】并進行如下修改:
[0024]g.將幀緩沖區(qū)FrameBuffer的基地址修改為0x18200000 ;
[0025]h.將1寄存器空間的基地址修改為0xl80C0000 ;
[0026]1.將繪圖端口寄存器DPR空間的基地址修改為0x18000000 ;
[0027]j.將視頻端口寄存器VPR空間的基地址修改為0x18000800 ;
[0028]k.將顯存空間大小調整為8MB ;
[0029]1.將顯示芯片內部內存工作時鐘頻率MCLK設置在64MHz — 129MHz范圍內;
[0030]對映射函數smtc_map_smem進行修改,將巾貞緩沖區(qū)FrameBuffer的起始地址【即變量 sfb_>fb.fix.smem_start】加上 2MB【代碼為:sfb_>fb.fix.smem_start+ = 0x200000】,長度【即變量 sfb_>fb.fix.smem_len】減去 2MB【代碼為:sfb_>fb.fix.smem_len_ = 0x200000],以保證其它應用程序能獲取到正確的幀緩沖區(qū)FrameBuffer的基地址;
[0031]所述顯示芯片內部內存工作時鐘頻率MCLK的計算公式為:
[0032]MCLK = 14.31818MHz X MNR+MDR
[0033]其中MNR為MCLK的鎖相環(huán)分子寄存器,MDR為MCLK的分母寄存器。
[0034]進一步地,通過在pmon的源碼所在目錄下的顯卡驅動源文件【sys\dev\pci\smtc2d.c]中添加以下函數實現固件層2D硬件加速功能和真彩色功能:
[0035]①添加幀緩沖區(qū)區(qū)域拷貝函數deCopy,驅動顯示芯片內部的內存拷貝模塊來實現圖形移動加速;
[0036]②添加矩形色彩填充函數deFillRect,驅動顯示芯片內部的矩形區(qū)域色彩填充模塊來實現區(qū)域填充硬件加速;
[0037]添加上述函數后,在cfb_console.c【彩色幀緩沖控制臺驅動】源文件中定義宏VIDEO_HW_BITBLT【圖形驅動程序】,開啟矩形復制和區(qū)域填充加速功能。
[0038]進一步地,所述步驟f和I中,令MNR = 0x74, MDR = 0x14,從而將顯示芯片內部內存工作時鐘頻率MCLK2設置為83.045MHz ο
[0039]寄存器、顯存空間大小,以及顯卡內部內存工作時鐘頻率都是根據SM722的數據手冊來進行設置的。顯卡內部內存工作時鐘頻率范圍必須是64MHz?129MHz,根據計算公式,MNR和MDR中小于255的整數可以自由組合都可以。其中MNR = 0x74,MDR = 0x14是SM722的一個示例配置。
[0040]固件層驅動和操作系統內核層驅動源文件的修改可以在x86平臺、Linux操作系統下,使用文本編輯器(如vim或gedit等)進行。
[0041]有益效果:
[0042]1、本發(fā)明的嵌入式計算機系統,使用MIPS框架的龍芯2F處理器,搭載了原本并不支持MIPS框架和PCI總線的SM722顯示芯片,從而具備更強的性能,能提升產品的人機交互性能及圖形顯控性能,擴展了龍芯2F處理器應用領域;
[0043]2、本發(fā)明的嵌入式計算機系統使用的SM722顯示芯片,具備動態(tài)電源管理能力,使得產品的能耗比更高,提升產品的便攜性能,拓展產品在移動終端領域的應用范圍。

【專利附圖】

【附圖說明】
[0044]圖1本發(fā)明硬件設計原理框圖;
[0045]圖2各模塊在SM712、SM722顯示芯片內部內存空間的布局。

【具體實施方式】
[0046]以下將結合附圖對本發(fā)明做進一步詳細說明。
[0047]一種國產自主嵌入式計算機系統及其顯卡驅動方法,包括龍芯2F中央處理單元,SM722顯示芯片,SM722顯示芯片通過32位的33MHz/66MHz PCI總線與龍芯2F相連通信。
[0048]要實現搭載SM722顯示芯片的龍芯2F嵌入式計算機系統,需要完全自主解決硬件設計、固件驅動和操作系統驅動開發(fā)三大部分工作。參考Silicon Mot1n發(fā)布的SM722硬件設計指導手冊和參考設計完成硬件設計,再利用現有支持SM712的pmon驅動(龍芯中科技術有限公司提供,無詳細版本號)和Linux顯卡驅動(龍芯中科技術有限公司提供,如內核版本號為2.6.36,顯卡驅動版信息為vers1n 0.11.2619.21.0lJuly 27,2008)。參考SM722數據手冊完成硬件設計、SM722固件層、內核層顯卡驅動調試開發(fā),能正常引導現有基于龍芯2F開發(fā)的圖形操作系統(如中標麒麟和共創(chuàng)桌面操作系統)并顯示正常。
[0049]1、硬件設計
[0050]如圖1所示,本發(fā)明硬件設計原理框圖如圖1所示。如圖所示,本發(fā)明的國產自主嵌入式計算機系統,包括龍芯2F中央處理單元,SM722顯卡芯片,所述SM722顯卡芯片通過PCI總線與所述龍芯2F相連。SM722顯卡芯片通過VGA接口與顯示設備相連。龍芯2F通過內部集成的內存控制器與IGB DDR2內存表貼顆粒相連,其中IGB DDR2內存由8塊128M的內存芯片組成。龍芯2F還通過PCI總線連接雙千兆網絡控制器【82541 (I)和82541 (I),提供兩個LAN接口,LANl和LAN2】和南橋芯片CS5536,通過南橋芯片提供IDE接口和CF接口。龍芯2F還通過Local1控制器連接BOOTROM芯片,BOOTROM為系統啟動ROM。SM722顯卡芯片通過32位33MHz/66MHz PCI總線與龍芯2F通信,它們既可以表貼于同一片電路印制板上,也可以在表貼于不同的電路印制板上,通過PCI插槽或者背板PCI走線進行通信,以實現不同的計算機產品形態(tài);顯示內容通過VGA接口輸出到顯示設備上。
[0051]2、固件層驅動
[0052]固件層驅動具備圖片和文本顯示以及簡單2D加速能力,支持簡單圖形開發(fā)、日志打印以及通過菜單選擇引導操作系統等功能;
[0053]如圖2所示,因SM722較SM712在功能上具有較大差異,如圖2,根據各模塊在SM712、SM722顯示芯片內部內存空間的布局可以看出,各模塊在SM712、SM722顯示芯片內部內存空間布局完全不一樣,且SM722不僅增加了 3D圖形加速硬件,還增加了很多新的模塊。在驅動開發(fā)時需在SM712開源驅動的基礎上針對上述差異做出相應的修改。
[0054]在固件中,首先針對固件中需要用到的幾個功能模塊內存空間基地址進行修改。
[0055]a.SM722的幀緩沖區(qū)(FrameBuffer)的基地址從SM712原來的0x18000000偏移2MB,設置為 0x18200000 ;
[0056]b.SM722 的 1 寄存器空間從 SM712 原來的 0x18700000 更改為 0xl80C0000 ;
[0057]c.SM722的繪圖端口寄存器(DPR)空間從SM712原來的0x18408000更改為0x18000000 ;
[0058]d.SM722的視頻端口寄存器(VPR)從SM712原來的0xl840C000更改為0x18000800 ;
[0059]e.顯存空間大小從SM712原來的2MB調整為8MB。
[0060]另外,還需要調整顯示芯片內部內存工作時鐘頻率在64MHz?129MHz范圍內。MCLK時鐘頻率計算公式為:
[0061]MCLK = 14.31818MHz X MNR+MDR
[0062]通過設置MCLK鎖相環(huán)分子寄存器(MCLKNumerator Register,MNR) (CCR6A)值為0x74,分母寄存器(MCLK Denominator Register, MDR) (CCRB)值為 0x14,從而將 SM722 內置內存頻率設置為83.045MHz ο
[0063]如果需要在固件層用到2D硬件加速功能和真彩色,需另外在pmon源碼目錄下顯卡驅動源文件sys\dev\pci\smtc2d.c源文件中實現如下函數:①實現巾貞緩沖區(qū)(Framebuffer)區(qū)域拷貝函數deCopy,通過驅動顯卡芯片內部的內存拷貝操作來完成圖形移動加速;②實現矩形色彩填充函數deFillRect,通過驅動顯卡芯片內部的矩形區(qū)域色彩填充模塊完成區(qū)域填充硬件加速。
[0064]添加上述函數后,在cfb_console.c【Color Framebuffer Console driverfor8/15/16/24/32bits per pixel.8/15/16/24/32比特每像素的彩色幀緩沖控制臺驅動?!课募卸x宏 VIDE0_HW_BITBLT【graphic driver supports hardware bit bit 支持的硬件位BLT的圖形驅動程序】即可開啟簡單加速功能。
[0065]3、操作系統內核層驅動
[0066]Linux操作系統內核層驅動支持Linux終端顯示、FrameBuffer圖形開發(fā)以及基于FrameBuffer開發(fā)的圖形系統顯示。
[0067]在內核驅動層除了要將SM722顯卡內部模塊內存空間按固件中的修改方式進行調整外,為了保證顯示芯片內部內存工作時鐘頻率MCLK在規(guī)定的64MHz-129MHz范圍內,需在顯卡驅動源文件kernel_dir/drivers/staging/sm7xx/smtcfb.c中,對內核層顯卡驅動的消隱模式(blank mode)進行修改。具體如下:
[0068]進入操作系統內核的源碼所在目錄,使用文本編輯器打開其中的顯卡驅動源文件【kernel_dir/drivers/staging/sm7xx/smtcfb.C】并進行如下修改:
[0069]g.將幀緩沖區(qū)FrameBuffer的基地址修改為0x18200000 ;
[0070]h.將1寄存器空間的基地址修改為0xl80C0000 ;
[0071]1.將繪圖端口寄存器DPR空間的基地址修改為0x18000000 ;
[0072]j.將視頻端口寄存器VPR空間的基地址修改為0x18000800 ;
[0073]k.將顯存空間大小調整為8MB ;
[0074]1.將顯示芯片內部內存工作時鐘頻率MCLK設置在64MHz — 129MHz范圍內;
[0075]設置MCLK 鎖相環(huán)分子寄存器(MCLK Numerator Register,MNR) (CCR6A)值為0x74,分母寄存器(MCLK Denominator Register, MDR) (CCRB)值為 0x14,從而將 SM722 顯示芯片內部內存工作時鐘頻率設置為83.045MHz。操作系統內核層設置的顯示芯片內部內存工作時鐘頻率和固件層驅動中設置的顯示芯片內部內存工作時鐘頻率不是必須一致的,只要在規(guī)定的范圍內即可。因為內核對穩(wěn)定性要求比較高,因此,也可以在固件中設置顯示芯片內部內存工作時鐘頻率為100MHz,在內核中設置顯示芯片內部內存工作時鐘頻率為
83.045MHz,這也是顯卡數據手冊中推薦的頻率。
[0076]Linux內核層顯卡驅動是屏幕巾貞緩沖區(qū)(FramBufTer)驅動,其它應用程序需要顯示圖形時,需要通過特定接口將Framebuffer映射到應用程序空間才能進行圖形操作的。在 SM722 驅動中,需對 kernel_dir/drivers/staging/sm7xx/smtcfb.c 的映射函數smtc_map_smem進行修改,當顯卡芯片ID為0x720 (SM722顯卡芯片ID)時,幀緩沖區(qū)的起始地址 sfb->fb.fix.smem_start 加上 2MB (0x200000),長度)sfb->fb.fix.smem_len 減去2MB (0x200000),保證其它應用程序能獲取到正確的Framebuffer基地址。
[0077]完成上述修改后,對固件和內核進行編譯和安裝。產品設計完成后,產品可以通過固件啟動并進入調試終端或引導操作系統啟動,操作系統啟動后,可以進入終端模式或圖形界面,從而支持上層應用程序圖形開發(fā),同時支持Linux動態(tài)電源管理。
【權利要求】
1.一種國產自主嵌入式計算機系統,其特征在于,包括龍芯2F中央處理單元和SM722顯示芯片,所述SM722顯示芯片通過PCI總線與所述龍芯2F相連。
2.根據權利要求1所述的國產自主嵌入式計算機系統,其特征在于,所述龍芯2F中央處理單元和SM722顯示芯片表貼于同一片電路印制板上或表貼于不同的電路印制板上,基于PCI插槽或背板PCI走線通信連接。
3.根據權利要求1所述的國產自主嵌入式計算機系統,其特征在于,所述PCI總線為32 位 33MHz/66MHz 的 PCI 總線。
4.一種國產自主嵌入式計算機系統的顯卡驅動方法,其特征在于,采用權利要求1-3任一項所述的系統,驅動方法包括: (1)固件層驅動: 進入pmon的源碼所在目錄,使用文本編輯器打開其中的支持SM712顯示芯片的顯卡驅動源文件并進行如下修改: a.將幀緩沖區(qū)FrameBuffer的基地址修改為0x18200000; b.將1寄存器空間的基地址修改為0xl80C0000; c.將繪圖端口寄存器DPR空間的基地址修改為0x18000000; d.將視頻端口寄存器VPR空間的基地址修改為0x18000800; e.將顯存空間大小調整為8MB; f.將顯示芯片內部內存工作時鐘頻率MCLK設置在64MHz— 129MHz范圍內; (2)操作系統內核層驅動: 進入操作系統內核的源碼所在目錄,使用文本編輯器打開其中的顯卡驅動源文件并進行如下修改: g.將幀緩沖區(qū)FrameBuffer的基地址修改為0x18200000; h.將1寄存器空間的基地址修改為0xl80C0000; 1.將繪圖端口寄存器DPR空間的基地址修改為0x18000000; j.將視頻端口寄存器VPR空間的基地址修改為0x18000800 ; k.將顯存空間大小調整為8MB ; 1.將顯示芯片內部內存工作時鐘頻率MCLK2設置在64MHz — 129MHz范圍內; 對映射函數smtc_map_smem進行修改,將巾貞緩沖區(qū)FrameBuffer的起始地址加上2MB,長度減去2MB,以保證其它應用程序能獲取到正確的幀緩沖區(qū)FrameBuffer的起始地址; 所述顯示芯片內部內存工作時鐘頻率MCLK的計算公式為:
MCLK = 14.31818MHz X MNR+MDR 其中MNR為MCLK的鎖相環(huán)分子寄存器,MDR為MCLK的分母寄存器。
5.根據權利要求4所述的國產自主嵌入式計算機系統的顯卡驅動方法,其特征在于: 通過在pmon的源碼所在目錄下的顯卡驅動源文件中添加以下函數實現固件層2D硬件加速功能和真彩色功能: ①添加幀緩沖區(qū)區(qū)域拷貝函數deCopy,驅動顯示芯片內部的內存拷貝模塊來實現圖形移動加速; ②添加矩形色彩填充函數deFillRect,驅動顯示芯片內部的矩形區(qū)域色彩填充模塊來實現區(qū)域填充硬件加速; 添加上述函數后,在cfb_C0nS0le.c源文件中定義宏VIDEO_HW_BITBLT,開啟矩形復制和區(qū)域填充加速功能。
6.根據權利要求4所述的國產自主嵌入式計算機系統的顯卡驅動方法,其特征在于:所述步驟f和I中,令MNR = 0x74, MDR = 0x14,從而將顯示芯片內部內存工作時鐘頻率MCLK 設置為 83.045MHz ο
【文檔編號】G06F9/44GK104360860SQ201410653610
【公開日】2015年2月18日 申請日期:2014年11月17日 優(yōu)先權日:2014年11月17日
【發(fā)明者】趙丹, 許新達, 王元圓, 羅凱, 劉志德, 鄒清揚, 龍川, 符鶴, 陳志才 申請人:長城信息產業(yè)股份有限公司, 長沙湘計海盾科技有限公司
網友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1