资源描述:
《windml相关知识和图形设备驱动程序开发》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、WindML相关知识和图形设备驱动程序开发WindML相关知识和图形设备驱动程序开发2.5VxWorksBSP需要典型地,必须修改VxWorksBSP来满足能够使用图形和输入设备的需要。由于Vxworks支持的目标板和处理器比较多,不可能详细说明每个BSP所要修改的东西,下面将描述一些通用的修改:2.5.1图形设备内存映射一个图形设备有两个基本组件:n帧缓冲器n一个或多个控制器帧缓冲器是一个内存块,用来存储要显示的图形数据。控制器包括图形处理器、RAMDACs和时钟芯片。取决于图形设备,有的控制器不
2、用或者集成到单个控制器中。帧缓冲器和每个控制器对于处理器必须是可见的,访问它们根据不同的处理器结构,可以是内存访问、IO访问或者二者结合来访问。要使得处理器能够访问图形设备,必须修改BSP的两个部分:n必须使能设备物理映射n必须使能逻辑或虚映射需要根据处理器、图形设备和总线结构类型来做出准确的修改。物理映射物理映射包括使能地址映射器来解码图形设备所驻留的物理地址。图形控制器的映射取决于图形控制器的类型、处理器结构和VxworksBSP。WindML没有限制图形设备所用的总线结构,总线可以是CPU内部
3、总线、ISA、PCI、AGP、VME总线等。PCI总线PCI规范允许使用标准方法来使图形设备被映射到PCI内存空间。系统启动时,初始化程序负责分配PCI内存给每个PCI设备,初始化程序可以是厂商的启动代码或者是包含在Vxworks初始化程序中。有的厂商有类似于BIOS功能的固件,它可以把控制权交给Vxworks引导程序。比如,在X86处理器上,主板上的BIOS来实现内存映射。当BSP支持PCI总线的自动配置时,就可以使用这个功能来映射图形设备到处理器内存。WindML相关知识和图形设备驱动程序开发《
4、续》2.5VxWorksBSP需要典型地,必须修改VxWorksBSP来满足能够使用图形和输入设备的需要。由于Vxworks支持的目标板和处理器比较多,不可能详细说明每个BSP所要修改的东西,下面将描述一些通用的修改:2.5.1图形设备内存映射一个图形设备有两个基本组件:n帧缓冲器n一个或多个控制器帧缓冲器是一个内存块,用来存储要显示的图形数据。控制器包括图形处理器、RAMDACs和时钟芯片。取决于图形设备,有的控制器不用或者集成到单个控制器中。帧缓冲器和每个控制器对于处理器必须是可见的,访问它们根
5、据不同的处理器结构,可以是内存访问、IO访问或者二者结合来访问。要使得处理器能够访问图形设备,必须修改BSP的两个部分:n必须使能设备物理映射n必须使能逻辑或虚映射需要根据处理器、图形设备和总线结构类型来做出准确的修改。物理映射物理映射包括使能地址映射器来解码图形设备所驻留的物理地址。图形控制器的映射取决于图形控制器的类型、处理器结构和VxworksBSP。WindML没有限制图形设备所用的总线结构,总线可以是CPU内部总线、ISA、PCI、AGP、VME总线等。PCI总线PCI规范允许使用标准方法
6、来使图形设备被映射到PCI内存空间。系统启动时,初始化程序负责分配PCI内存给每个PCI设备,初始化程序可以是厂商的启动代码或者是包含在Vxworks初始化程序中。有的厂商有类似于BIOS功能的固件,它可以把控制权交给Vxworks引导程序。比如,在X86处理器上,主板上的BIOS来实现内存映射。当BSP支持PCI总线的自动配置时,就可以使用这个功能来映射图形设备到处理器内存。然而不幸的是,并不是所有的处理器和VxworksBSP都支持这种PCI设备的映射。当PCI设备不能映射到PCI内存空间时,就
7、必须修改sysLib.c文件来映射PCI图形设备到一个可用的PCI内存空间。当为PCI设备发现一个安全的内存区时,就必须设置PCI配置头的基地址(偏移量为0x10)。下面这段代码说明了TviaIGS-5050图形设备该如何分配位置:/*FirstthePCIbusmustbeprobedtolocatethedevice*/if(pciFindDevice(UGL_PCI_IGS_ID,UGL_PCI_IGS5050_CHIP_ID,instance,&busno,&devno,&funcno)==
8、OK){/*Devicefound,setthebaseaddress*/pciConfigOutLong(busno,devno,funcno,PCI_CFG_BASE_ADDRESS_0,baseAdrs);/*EnableI/Oandmemoryaccess*/pciConfigOutWord(busno,devno,funcno,PCI_CFG_COMMAND,PCI_CMD_IO_ENABLE
9、PCI_CMD_MEM_ENABLE);}else/*Error