一种国产自主嵌入式计算机系统及其显卡驱动方法

文档序号:6634507阅读:440来源:国知局
一种国产自主嵌入式计算机系统及其显卡驱动方法
【专利摘要】本发明公开了一种国产自主嵌入式计算机系统及其显卡驱动方法,包括龙芯2F中央处理单元和SM722显示芯片,SM722显示芯片通过PCI总线与龙芯2F相连。其显卡驱动方法包括对支持SM712的固件层驱动修改和操作系统内核层驱动修改,实现了龙芯搭载原本并不支持MIPS框架和PCI总线的SM722显示芯片,从而具备更强的性能,能提升产品的人机交互性能及图形显控性能,扩展了龙芯2F处理器应用领域。
【专利说明】一种国产自主嵌入式计算机系统及其显卡驱动方法

【技术领域】
[0001]本发明涉及一种嵌入式计算机系统,特别涉及一种国产自主嵌入式计算机系统及其显卡驱动方法。

【背景技术】
[0002]龙芯2F处理器是龙芯中科技术有限公司研制的具有完全自主知识产权的国产高性能、低功耗处理器,主要面向行业电脑终端、云计算终端,三网融合、工业控制、网络安全、特种计算机等应用领域。目前龙芯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年推出的一款面向当时高端笔记本电脑、支持电源动态管理、支持3D图形操作(如Mip Mapping、Alpha Blending、Anti_Aliasing、Specular Highlight和Fog等)的高端显示芯片,曾经被Thinkpad S30笔记本电脑选用,是一款性能较好、支持功耗管理的新一代显卡芯片,而且功能全面、性能强劲、且支持动态电源管理的显卡芯片,能很好的满足现在普通嵌入式显控系统的显示需求。
[0007]龙芯处理器采用简单指令集,类似于MIPS指令集;龙芯平台计算机使用PMON(Prom Monitor)作为基本输入输出系统(B1S)。PMON是一个兼有B1S和BootLoader功能的开源软件,PMON具有强大而丰富的功能,除基本的1/0功能外,还包括硬件初始化与检测、操作系统引导和程序调试等功能。主要应用于MIPS、ARM、PowerPC等平台,不同于X86架构的B1S。而SM722与SM712相比存在较大的差异,没有针对MIPS架构开发的相应软件(包括固件层驱动,内核层驱动和支持显控系统运行的操作系统)可以使用,使得当前业界没有使用SM722显卡与龙芯2F搭建计算机系统的先例。


【发明内容】

[0008]本发明所要解决的技术问题是提供一种国产自主嵌入式计算机系统及其显卡驱动方法,实现了采用MIPS框架的龙芯2F的搭载原本不支持MIPS架构的SM722图形显卡,性能高,功耗低。
[0009]本发明的技术方案为:
[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.将帧缓冲区FrameBuffer的基地址修改为0x18200000 ;
[0017]b.将1寄存器空间的基地址修改为0xl80C0000 ;
[0018]c.将绘图端口寄存器DPR空间的基地址修改为0x18000000 ;
[0019]d.将视频端口寄存器VPR空间的基地址修改为0x18000800 ;
[0020]e.将显存【显示芯片内部内存的一部分,在SM722中,就是指帧缓冲区FrameBuffer]空间大小调整为8MB ;
[0021]f.将显示芯片内部内存【SM722内部集成的存储模块】工作时钟频率MCLK设置在64MHz—129MHz 范围内;
[0022](2)操作系统内核层驱动:
[0023]进入操作系统内核的源码所在目录,使用文本编辑器打开其中的显卡驱动源文件【kernel_dir/drivers/staging/sm7xx/smtcfb.C】并进行如下修改:
[0024]g.将帧缓冲区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进行修改,将巾贞缓冲区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],以保证其它应用程序能获取到正确的帧缓冲区FrameBuffer的基地址;
[0031]所述显示芯片内部内存工作时钟频率MCLK的计算公式为:
[0032]MCLK = 14.31818MHz X MNR+MDR
[0033]其中MNR为MCLK的锁相环分子寄存器,MDR为MCLK的分母寄存器。
[0034]进一步地,通过在pmon的源码所在目录下的显卡驱动源文件【sys\dev\pci\smtc2d.c]中添加以下函数实现固件层2D硬件加速功能和真彩色功能:
[0035]①添加帧缓冲区区域拷贝函数deCopy,驱动显示芯片内部的内存拷贝模块来实现图形移动加速;
[0036]②添加矩形色彩填充函数deFillRect,驱动显示芯片内部的矩形区域色彩填充模块来实现区域填充硬件加速;
[0037]添加上述函数后,在cfb_console.c【彩色帧缓冲控制台驱动】源文件中定义宏VIDEO_HW_BITBLT【图形驱动程序】,开启矩形复制和区域填充加速功能。
[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、本发明的嵌入式计算机系统,使用MIPS框架的龙芯2F处理器,搭载了原本并不支持MIPS框架和PCI总线的SM722显示芯片,从而具备更强的性能,能提升产品的人机交互性能及图形显控性能,扩展了龙芯2F处理器应用领域;
[0043]2、本发明的嵌入式计算机系统使用的SM722显示芯片,具备动态电源管理能力,使得产品的能耗比更高,提升产品的便携性能,拓展产品在移动终端领域的应用范围。

【专利附图】

【附图说明】
[0044]图1本发明硬件设计原理框图;
[0045]图2各模块在SM712、SM722显示芯片内部内存空间的布局。

【具体实施方式】
[0046]以下将结合附图对本发明做进一步详细说明。
[0047]一种国产自主嵌入式计算机系统及其显卡驱动方法,包括龙芯2F中央处理单元,SM722显示芯片,SM722显示芯片通过32位的33MHz/66MHz PCI总线与龙芯2F相连通信。
[0048]要实现搭载SM722显示芯片的龙芯2F嵌入式计算机系统,需要完全自主解决硬件设计、固件驱动和操作系统驱动开发三大部分工作。参考Silicon Mot1n发布的SM722硬件设计指导手册和参考设计完成硬件设计,再利用现有支持SM712的pmon驱动(龙芯中科技术有限公司提供,无详细版本号)和Linux显卡驱动(龙芯中科技术有限公司提供,如内核版本号为2.6.36,显卡驱动版信息为vers1n 0.11.2619.21.0lJuly 27,2008)。参考SM722数据手册完成硬件设计、SM722固件层、内核层显卡驱动调试开发,能正常引导现有基于龙芯2F开发的图形操作系统(如中标麒麟和共创桌面操作系统)并显示正常。
[0049]1、硬件设计
[0050]如图1所示,本发明硬件设计原理框图如图1所示。如图所示,本发明的国产自主嵌入式计算机系统,包括龙芯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走线进行通信,以实现不同的计算机产品形态;显示内容通过VGA接口输出到显示设备上。
[0051]2、固件层驱动
[0052]固件层驱动具备图片和文本显示以及简单2D加速能力,支持简单图形开发、日志打印以及通过菜单选择引导操作系统等功能;
[0053]如图2所示,因SM722较SM712在功能上具有较大差异,如图2,根据各模块在SM712、SM722显示芯片内部内存空间的布局可以看出,各模块在SM712、SM722显示芯片内部内存空间布局完全不一样,且SM722不仅增加了 3D图形加速硬件,还增加了很多新的模块。在驱动开发时需在SM712开源驱动的基础上针对上述差异做出相应的修改。
[0054]在固件中,首先针对固件中需要用到的几个功能模块内存空间基地址进行修改。
[0055]a.SM722的帧缓冲区(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锁相环分子寄存器(MCLKNumerator Register,MNR) (CCR6A)值为0x74,分母寄存器(MCLK Denominator Register, MDR) (CCRB)值为 0x14,从而将 SM722 内置内存频率设置为83.045MHz ο
[0063]如果需要在固件层用到2D硬件加速功能和真彩色,需另外在pmon源码目录下显卡驱动源文件sys\dev\pci\smtc2d.c源文件中实现如下函数:①实现巾贞缓冲区(Framebuffer)区域拷贝函数deCopy,通过驱动显卡芯片内部的内存拷贝操作来完成图形移动加速;②实现矩形色彩填充函数deFillRect,通过驱动显卡芯片内部的矩形区域色彩填充模块完成区域填充硬件加速。
[0064]添加上述函数后,在cfb_console.c【Color Framebuffer Console driverfor8/15/16/24/32bits per pixel.8/15/16/24/32比特每像素的彩色帧缓冲控制台驱动。】文件中定义宏 VIDE0_HW_BITBLT【graphic driver supports hardware bit bit 支持的硬件位BLT的图形驱动程序】即可开启简单加速功能。
[0065]3、操作系统内核层驱动
[0066]Linux操作系统内核层驱动支持Linux终端显示、FrameBuffer图形开发以及基于FrameBuffer开发的图形系统显示。
[0067]在内核驱动层除了要将SM722显卡内部模块内存空间按固件中的修改方式进行调整外,为了保证显示芯片内部内存工作时钟频率MCLK在规定的64MHz-129MHz范围内,需在显卡驱动源文件kernel_dir/drivers/staging/sm7xx/smtcfb.c中,对内核层显卡驱动的消隐模式(blank mode)进行修改。具体如下:
[0068]进入操作系统内核的源码所在目录,使用文本编辑器打开其中的显卡驱动源文件【kernel_dir/drivers/staging/sm7xx/smtcfb.C】并进行如下修改:
[0069]g.将帧缓冲区FrameBuffer的基地址修改为0x18200000 ;
[0070]h.将1寄存器空间的基地址修改为0xl80C0000 ;
[0071]1.将绘图端口寄存器DPR空间的基地址修改为0x18000000 ;
[0072]j.将视频端口寄存器VPR空间的基地址修改为0x18000800 ;
[0073]k.将显存空间大小调整为8MB ;
[0074]1.将显示芯片内部内存工作时钟频率MCLK设置在64MHz — 129MHz范围内;
[0075]设置MCLK 锁相环分子寄存器(MCLK Numerator Register,MNR) (CCR6A)值为0x74,分母寄存器(MCLK Denominator Register, MDR) (CCRB)值为 0x14,从而将 SM722 显示芯片内部内存工作时钟频率设置为83.045MHz。操作系统内核层设置的显示芯片内部内存工作时钟频率和固件层驱动中设置的显示芯片内部内存工作时钟频率不是必须一致的,只要在规定的范围内即可。因为内核对稳定性要求比较高,因此,也可以在固件中设置显示芯片内部内存工作时钟频率为100MHz,在内核中设置显示芯片内部内存工作时钟频率为
83.045MHz,这也是显卡数据手册中推荐的频率。
[0076]Linux内核层显卡驱动是屏幕巾贞缓冲区(FramBufTer)驱动,其它应用程序需要显示图形时,需要通过特定接口将Framebuffer映射到应用程序空间才能进行图形操作的。在 SM722 驱动中,需对 kernel_dir/drivers/staging/sm7xx/smtcfb.c 的映射函数smtc_map_smem进行修改,当显卡芯片ID为0x720 (SM722显卡芯片ID)时,帧缓冲区的起始地址 sfb->fb.fix.smem_start 加上 2MB (0x200000),长度)sfb->fb.fix.smem_len 减去2MB (0x200000),保证其它应用程序能获取到正确的Framebuffer基地址。
[0077]完成上述修改后,对固件和内核进行编译和安装。产品设计完成后,产品可以通过固件启动并进入调试终端或引导操作系统启动,操作系统启动后,可以进入终端模式或图形界面,从而支持上层应用程序图形开发,同时支持Linux动态电源管理。
【权利要求】
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.将帧缓冲区FrameBuffer的基地址修改为0x18200000; b.将1寄存器空间的基地址修改为0xl80C0000; c.将绘图端口寄存器DPR空间的基地址修改为0x18000000; d.将视频端口寄存器VPR空间的基地址修改为0x18000800; e.将显存空间大小调整为8MB; f.将显示芯片内部内存工作时钟频率MCLK设置在64MHz— 129MHz范围内; (2)操作系统内核层驱动: 进入操作系统内核的源码所在目录,使用文本编辑器打开其中的显卡驱动源文件并进行如下修改: g.将帧缓冲区FrameBuffer的基地址修改为0x18200000; h.将1寄存器空间的基地址修改为0xl80C0000; 1.将绘图端口寄存器DPR空间的基地址修改为0x18000000; j.将视频端口寄存器VPR空间的基地址修改为0x18000800 ; k.将显存空间大小调整为8MB ; 1.将显示芯片内部内存工作时钟频率MCLK2设置在64MHz — 129MHz范围内; 对映射函数smtc_map_smem进行修改,将巾贞缓冲区FrameBuffer的起始地址加上2MB,长度减去2MB,以保证其它应用程序能获取到正确的帧缓冲区FrameBuffer的起始地址; 所述显示芯片内部内存工作时钟频率MCLK的计算公式为:
MCLK = 14.31818MHz X MNR+MDR 其中MNR为MCLK的锁相环分子寄存器,MDR为MCLK的分母寄存器。
5.根据权利要求4所述的国产自主嵌入式计算机系统的显卡驱动方法,其特征在于: 通过在pmon的源码所在目录下的显卡驱动源文件中添加以下函数实现固件层2D硬件加速功能和真彩色功能: ①添加帧缓冲区区域拷贝函数deCopy,驱动显示芯片内部的内存拷贝模块来实现图形移动加速; ②添加矩形色彩填充函数deFillRect,驱动显示芯片内部的矩形区域色彩填充模块来实现区域填充硬件加速; 添加上述函数后,在cfb_C0nS0le.c源文件中定义宏VIDEO_HW_BITBLT,开启矩形复制和区域填充加速功能。
6.根据权利要求4所述的国产自主嵌入式计算机系统的显卡驱动方法,其特征在于:所述步骤f和I中,令MNR = 0x74, MDR = 0x14,从而将显示芯片内部内存工作时钟频率MCLK 设置为 83.045MHz ο
【文档编号】G06F9/44GK104360860SQ201410653610
【公开日】2015年2月18日 申请日期:2014年11月17日 优先权日:2014年11月17日
【发明者】赵丹, 许新达, 王元圆, 罗凯, 刘志德, 邹清扬, 龙川, 符鹤, 陈志才 申请人:长城信息产业股份有限公司, 长沙湘计海盾科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1