新闻中心

EEPW首页 > 光电显示 > 设计应用 > 基于DM6446的Windows CE显示驱动设计实现

基于DM6446的Windows CE显示驱动设计实现

作者:时间:2012-09-18来源:网络收藏

摘 要: 是一款有着丰富外设资源和强大计算能力的多媒体处理芯片,一般需要通过操作系统对其复杂资源进行有效管理。由于多数多媒体应用需要有图形界面,但现有平台操作系统Linux 其内核和图形界面是分离的,需要另外移植,相比之下WIN本身自带了较为优秀的图形界面,只需对其进行的开发就能拥有一个优秀的图形界面。详细阐述了WIN原理和在上的。系统启动后WIN图形界面运行稳定,表明程序良好。

本文引用地址:http://www.amcfsurvey.com/article/167501.htm

  作为一款多媒体处理芯片,TI公司推出的 采用ARM+DSP 的双内核架构,有着丰富的外设资源和强大的计算能力,因此一般通过操作系统对其复杂资源进行有效管理。DM6446现有平台操作系统主要嵌入式linux 系统,但同时也有支持其他主流嵌入式操作系统的能力。

  由于多媒体应用常常需要有图形界面,而现有平台操作系统Linux其内核和图形界面是分离的,需要进行另外移植,相比之下 CE本身自带了较为优秀的图形界面,只需对其进行驱动的开发就能拥有一个优秀的图形界面。因此选择在DM6446进行其他系统的移植开发无疑能使该平台程序开发具有更多的选择余地和更高的性价比。

   CE是Microsoft公司专门针对嵌入式产品领域开发的嵌入式操作系统,具有图形用户界面出色、多任务处理能力、可裁剪性和可移植性、应用软件支持丰富、实时性良好等特点。本文选用的 CE版本为Windows CE.NET 5.0,以下简称为WINCE.

  1 DM6446芯片及其显示模块介绍

  1.1 DM6446芯片简介

  DM6446 芯片,如下图1所示,由ARM子系统、DSP子系统、VICP协处理器、视频处理子系统和众多的芯片外设组成。其中ARM 核用作整个系统的控制功能,DSP 子系统用于复杂的数据和图像处理功能,视频处理子系统用于和图像输入和输出。这些模块的联系通过中心资源交换通道(Switch CentralResources,SCR) 进行管理。

图1 DM6446 芯片总体架构

图1 DM6446 芯片总体架构

  1.2 芯片显示模块功能介绍

  DM6446 显示模块又称为视频处理后端(VPBE,Video Processing Back End),为芯片视频处理子系统的一部分。VPBE 总体结构如图2 所示。由图2 可以看出,VPBE主要由1 个OSD (On Screen Display)引擎和1 个视频编码器(VENC,Video ENCoder)组成。OSD引擎可以处理2个独立的视频窗口和两个独立的OSD窗口,VENC视频编码器则能提供四路视频数据转换,工作频率高达54MHz,兼容NTSC/PAL制式视频和S-Video.

图2 DM6446 显示模块总体架构

图2 DM6446 显示模块总体架构。

  DM6446 视频编码器还能够向RGB888 的显示设备提供24 bit的数字视频输出接口,支持8/16为的BT.656 输出和垂直/水平同步分离的CCIR.601.

  OSD 模块的视频信号在输出之前会经过合成然后送到VENC最终转变成YCbCr格式输出。视频数据是建立在外部存储器DDR2的,并直接送到显示设备作显示。从DAC出来就可以通过RCA端子接上LCD液晶电视。更详细的硬件说明可参考TI 的官方数据手册TMS320DM644x DMSoC Video Processing BackEnd (VPBE) User's Guide.pdf.

2 WINCE驱动架构分析

  将WINCE 移植到DM6446 上面除了需要进行OAL层的代码和源码配置文件的编写以外,还需进行大量的设备驱动程序开发。

  2.1 WINCE驱动原理

  设备驱动程序作为一个抽象物理设备或虚拟设备的功能程序,它管理设备的操作,并将设备的功能导出给应用程序和操作系统。因此用户程序访问这些硬件设备只需要通过调用驱动程序提供的接口函数。

  WINCE 的所有设备驱动程序都是以用户态下动态链接库(Dynamic Linkable Library,DLL)文件形式存在的。像所有的Windows DLL一样,DLL是无法单独被加载和运行的。如果要运行DLL 中的代码,必须有一个EXE 进程首先把该 DLL 加载到自己的地址空间内,然后才可以执行DLL 中的代码。WINCE 下的驱动程序也必须被其他EXE加载。

  2.2 WINCE驱动分类

  WINCE的驱动程序有两种模型:本地设备驱动程序(Native Device Driver) 和流接口驱动( Streams Device Driver) 程序。本机设备驱动程序适用于集成到WINCE平台的设备,总是在WINCE的平台启动时被加载;流接口驱动程序也称为可安装的驱动程序,它们使用流接口驱动并借助于文件系统调用(如Createfile,DeviceIoControl等)从设备管理器或应用程序获得命令。本文讨论的显示驱动属于本地设备驱动程序。

  而从驱动方式来区分,无论流接口驱动还是本地驱动设备驱动,都可以采用两种实现方式:单体结构方式和分层结构方式,它们都向上提供DDI (Device Driver Interface)调用,供其他模块或应用程序调用。无论采用哪种结构,驱动程序都必须与其控制设备的DDI 相一致。DDI是与WINCE 系统的接口,流接口设备的DDI 都是流接口函数。

  3 显示驱动的实现

  3.1 显示驱动的加载管理

图3 WINCE显示驱动主体架构示意图

图3 WINCE显示驱动主体架构示意图。

  WINCE下的驱动程序必须被其他EXE加载,显示驱动也不例外。WINCE 显示驱动在系统启动时由GWES.exe 加载和管理,并驻留在GWES 的进程地址空间内。如图3 所示,GWES 子系统,由GDI 和DirectDraw两部分组成,为运行在操作系统之上的应用程序提供图形功能的系统调用,例如CreateDC,ReleaseDC等等。GWES加载显示驱动的具体过程如下:GWES启动时将去访问候选显示设备列表(该列表在注册表HKEY_LOCAL_MACHINESystemGDIDisplayCandidates下面),看看是否有驱动程序已经在本机上实例化,如果有的话GWES 会使用它找到的第一个已经实例化的驱动;如果驱动程序没有在本机上实例话或者找不到合适的驱动程序,接下来GWES尝试加载Ddi.dll.默认情况下加载的是Ddi.dll,但如果存在KEY_LOCAL_MACHINESystemGDIDriversDisplay项,GWES会加载此注册表项所指定的显示驱动。


上一页 1 2 下一页

评论


相关推荐

技术专区

关闭