首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

基于WindML的VxWorks图形驱动研究 04

基于WindML的VxWorks图形驱动研究 04

3图形驱动的实现
    根据以下步骤实现图形驱动。
    3.1创建源文件及头文件目录
    WIND MEDIA LIBRARY图形驱动目录结构如下:
    ①installDir/target/src/ugl/driver/graphics。图形设备所有的源代码都在此目录下。在此目录下,对应每一个图形设备厂商都有一个子目录,并且在相应的子目录下,根据不同的设备型号或者颜色深度又可建立下一级的子目录。
    ②installDir\target\h\ugl\driver\graphics。图形设备所有的头文件都在此目录下。在此目录下,对应每一个图形设备厂商都一个子目录。除了指定厂商的图形设备驱动程序之外,在同级子目录里还包含了通用的图形驱动程序,通用的驱动程序可以被所有的驱动程序所用。如果要添加新的图形设备驱动程序,只需在此图形驱动结构目录下建立相应厂商子目录。
    3.2创建驱动头文件
    驱动程序头文件是根据设备硬件定义的。部分信息必须在头文件里定义,这些信息注释了WIND MEDIA LIBRARY的其他部分如何访问图形驱动和驱动程序如何获得配置信息。
    (1)图形驱动结构
    图形驱动程序结构必须在头文件中由ugl_ugi_driver结构定义。此结构包含连同2D层接口一起的所有的驱动数据元素以及2D层访问图形驱动的功能指针。下面给出了一个图形结构的定义:
    此结构指定图形设备为Chips。Chips由所用芯片决定,可选。因为它支持多种芯片类型及总线类型,所以此图形驱动结构可扩展多个数据元素,还可扩展多个附加的支持。
    (2)配置管理
    图形驱动程序必须从WIND MEDIA LIBRARY配置过程中获得配置信息。具体配置信息包括:显示解决方案;色彩格式及像素深度;添加、删除附加功能的元素缩放比例。
    3.3实现设备创建程序
    VxWorks操作系统下,所有的设备必须通过调用xxxDevCreate()程序创建。这个函数是设备驱动以及设备最初功能的主要入口,uglInitialize()程序在WIND MEDIA LIBRARY初始化时调用xxxDevCreate()。xxxDevCreate()程序是必需的,也是唯一一个存ugl_ugi_driver结构中没有对应的功能指针的函数。设备创建程序必须返回一个指向已初始化的ugl_ugI_driver数据结构指针,如果驱动创建函数初始化设备失败,则返回NULL指针标识错误。创建函数的功能原型为:

    3.3.1输入参数
    第1个参数instance为图形设备号。第2和第3两个参数可以根据设备驱动程序而改变,设备驱动程序可运用这两个参数做任何用途。
    3.3.2驱动创建程序的必要处理
    (1)分配驱动图形结构此结构已在驱动头文件里定义。
    (2)利用硬件提取层打开图形设备
    分配了驱动结构之后,硬件提取层将被用来打开图形设备,校验是否能被写入和映射设备到虚拟内存。在此过程中,图形没备的基地址和寄存器将被定义。
    (3)初始化驱动控制结构
    在确定图形设备可以被访问之后,初始化驱动控制结构。
    (4)设置设备为静止状态
    校验了设备之后,驱动对图形设备进行最小初始化,并设置其为静止状态。图形设备设置为静止状态需要以下操作:屏蔽图形相关中断;调用uglGenericClutCreate()初始化调色板;仞始化图形芯片的内存控制器;如果需要,则关闭显示。
    (5)返回指向驱动结构的指针
    如果xxxDevCreate()函数执行成功,则返回一个指向ugLugi_driver结构的指针。如果xxxDevCreate()函数执行失败,则返回NULL。
    3.4实现信息控制程序
    每一个驱动都必须支持一个信息控制程序,xxxinfo()。这个程序允许应用质问驱动提供的支持并且控制各种选项。在很多方面,xxxinfo()与标准控制函数ioctl()程序相似。以下应用会用到xxxinfo():
    ①获得画面缓冲器的特征,比如画面缓冲器的地址、视频存储的数量、显示的宽度和高度;
    ②获得基色的信息,比如索引的或直接的颜色模式、RGB或YUV色彩空间、色彩深度和索引色彩系统下的颜色查找表的大小;
    ③为图形设备例示一个扩展。
    3.5实现设备销毁程序
    每一个驱动都必须支持一个。xxxDevDestroy()程序。此程序释放系统资源和图形硬件设备。具体执行以下任务:
    ①释放已经分配的颜色表;
    ②释放所有的系统资源;
    ③释放其他指定驱动的资源;
    ④如果合适,则恢复图形硬件到原模式;
    ⑤释放驱动结构;
    ⑥关闭图形设备;
    ⑦返回操作的状态。
    4结论
    VxWorks图形显示有多种解决方案,但WindML其强大的功能不但为嵌入式产品提供了人性化的操作、维护界面,而且还提供了一系列API函数及多种设备通用驱动,可跨越大范围的CPU,有较高的硬件独立性,大大降低了开发人员在开发图形用户界面时的难度。因此,本文只论述了基于VxWorks图形开发组件WindML的图形显示方案。本方案已经成功运用,效果很好。
    原文地址 http://www.dzsc.com/data/html/2009-7-10/77474.html
返回列表