王宗超,马建设,周 倩,王伟能,赵 诣
(清华大学光盘国家工程研究中心深圳分中心,深圳 518055)
微型投影机是一种便于携带的手持投影或口袋式投影。微型投影具有尺寸小、质量小、投影屏幕大等优点,便于外出商务展示、教学、医疗成像显示等。普通微型投影机控制系统简单,只具有基本的显示和外接接口功能,外出使用时其功能相对不足。该设计实现的是微型投影系统的嵌入式控制平台。该平台基于高性能的ARM11主控芯片,搭载WinCE 6.0嵌入式操作系统,不仅实现了对常用(如USB、HDMI等)接口的扩展,还配置了大容量固态硬盘SSD(solid state disk),具有Wi-Fi模块,能实现高清播放等功能。
如图1所示,微型投影系统主要由嵌入式控制平台、光机驱动与微型投影光机3部分组成。该嵌入式控制平台通过RGB888接口与微型投影光机驱动相连,大多数微型投影驱动均支持该接口,因此控制平台方案有很好的通用性。控制平台主要包括ARM11主控芯片、固态硬盘、各种接口模块、电源和时钟等,控制平台通过光机驱动和微型投影光机相联[1]。软件系统采用WinCE 6.0操作系统。WinCE 6.0具有良好的集成开发环境,可以提供适合本方案的良好的用户界面,并且在该操作系统上应用程序编程效率较高。
图1 微型投影嵌入式控制平台总体方案
在该方案中,系统主控芯片设计方案如图2所示[2],具体配置为:
1)核心处理器。主控芯片是基于ARM11内核由Telechips公司生产的高性能、低功耗、应用于数字媒体领域的 TCC8900芯片,其核心采用ARM1176JZF-S处理器,可搭载嵌入式操作系统(本硬件平台可搭载WinCE、Linux或Android),主频可达800 MHz。该主控芯片视频解码通过专门的硬件模块来完成,提供1080P高清硬件解码。TCC8900的通用 GPIO 口分为 A、B、C、D、E、F六组,各部分接口与主控芯片间的连接如图2所示[3]。
2)存储设备。存储设备主要使用了SDRAM、FLASH。本方案中使用256MB的 DDR2作为SDRAM,嵌入式操作系统需要加载到SDRAM后才能正常运行。FLASH是1GB的NAND FLASH,用来存放BootLoader启动程序和操作系统。
图2 控制平台主控芯片设计方案
3)人机交互模块。显示输出设备是微型投影光机,通过RGB888总线与微型投影的光机驱动传输信号。输入设备采用USB外接鼠标,另外嵌入式操作系统提供软键盘或者USB外接键盘。
4)固态硬盘SSD模块。SSD由于具有高速、容量大、功耗低、体积小、抗震性好等优点,正好适应了微型投影便携式的使用特点,能作为微型投影系统良好的存储设备。固态硬盘原理如图3所示,主要由主控系统、高速缓存、闪存存储阵列和接口系统组成。主控系统是系统核心部分,主要功能是接收外部系统发送的读、写请求,控制闪存阵列完成相应的读、写、擦等操作,实现数据存取。闪存芯片组成数据储存系统,多个闪存芯片组成多通道闪存阵列,各通道经各自独立的闪存控制器与SSD主控系统相连。SSD高速缓存的主要作用是数据暂存,用于存储闪存阵列中经常使用的数据镜像,以提高系统的访问速度。接口系统实现SSD与主控芯片ARM之间的数据传输,本方案采用SATA2.0接口系统。固态硬盘可提供64G或128G等不同大小的存储空间,将大大扩展投影系统的存储空间。投影系统不仅能进行图文展示,还能播放存储在固态硬盘内的高清视频。
5)其他模块。音频模块采用IIS总线实现处理器与音频数字信号编译码器之间的数据传输;HDMI模块用于高清视频的输入和输出;SD卡模块外接TF/SD卡;内置了Wi-Fi模块;USB模块有USB Host和 USB OTG两个接口;调试模块中,JTAG用来下载 BootLoader和在线调试程序,RS232接口用来输出打印信息。
图3 固态硬盘模块原理框图
为了加快开发进度,获得ARM芯片厂商的技术支持,本方案选择WinCE 6.0操作系统,也可在硬件平台上进一步进行Linux或Android操作系统的开发。软件部分的开发主要包括WinCE最小内核系统的实现、驱动开发、应用程序开发。
嵌入式操作系统开发需要硬件厂商提供对应的BSP(board surppot package),即板级支持包。BSP由启动程序(Boot loader)、OEM适配层程序(OAL)及驱动程序和配置文件组成。Windows CE 6.0开发平台上进行开发的主要工具是Platform Builder。Platform Builder是微软公司提供给开发人员进行基于Windows CE平台下嵌入式操作系统定制的集成开发环境,它提供了所有进行设计、创建、编译、测试和调试Windows CE操作系统平台的工具。应用 Platform Builder,根据特定 BSP,可以生成针对不同开发板(SDB)的特定的操作系统镜像。基于Windows CE的嵌入式系统可分为4个层次,从底层到上层分别是硬件层、OEM层、操作系统层和应用程序层。软件开发主要包括最小内核系统开发、驱动开发、应用程序开发3部分。
1)最小内核系统的实现。将BSP开发包导入搭建好的WinCE6.0 Platform Builder中,运行程序生成最小内核系统,将生成的映像文件烧录到开发板。当系统上电或是复位时,Boot Loader启动加载程序,用于引导Windows CE操作系统内核加载到目标硬件系统的内存,并开始跳转到操作系统的入口地址。根据实际情况,该部分需要修改分辨率参数、虚拟内存空间地址等[4]。
2)驱动开发。在最小内核系统运行正常后,分别进行音频、USB、HDMI、SD卡、固态硬盘等模块驱动开发,开发者可以在WinCE操作系统中定制常用模块的驱动[5-6]。硬件设备制造商一般会为设备提供驱动软件支持。如果有专门针对WinCE6.0系统编写的设备驱动程序,将其加入到操作系统中就可以使用;如果没有,则应根据厂商提供的驱动程序开发包编写。通常需要对驱动部分的硬件接口进行测试,若接口地址发生变化,则需要对软件的相应部分进行修改。在各部分驱动调试均正常的情况下,将所有驱动程序共同定制,集成测试。
3)应用程序开发。在Platform Builder中生成SDK(software development kit),安装 SDK,编写应用程序,编译生成.exe文件,将应用程序同步至设备。应用程序开发主要进行用户界面(UI)、音视频播放软件、办公软件以及其他应用程序(如图像畸变的软件校正程序)的开发等。该平台也支持同一操作系统下的应用程序的下载和安装使用,这也大大扩展了微型投影系统功能的实用性。
在Telechips芯片公司提供芯片资料的基础上,设计电路原理图,绘制PCB和制版,对电路板进行调试,完成硬件平台的搭建。在硬件平台搭建完成的情况下,进行操作系统软件开发。首先实现Win CE 6.0最小内核系统的顺利运行,然后进行主要模块的驱动开发工作,在驱动开发完成之后,进行用户界面和其他应用程序的开发。最终在硬件平台和软件开发实现之后,根据微型投影系统配置参数(表1所示)。嵌入式平台最高可以支持1080P高清等多种规格的视频,实现了显示面板最佳分辨率800×600下的视频播放。微型投影系统具有Wi-Fi无线上网功能,支持HDMI、USB、SD卡等主要的接口方式,能外接鼠标和键盘,配置64G大容量固态硬盘,容量和数据传输速度均有明显优势,优化了用户界面,并自带office、PDF等办公软件。在该嵌入式平台上可以进一步进行游戏、移动互联网服务程序等应用软件的开发,进一步拓展微型投影的具体应用领域。产品样机如图4所示。产品开发完成后进行了实验,实验结果如图5所示,实验达到了预期的设计目的。
表1 微型投影系统配置参数
图4 产品样机
图5 实验结果
基于ARM11芯片的强大功能和存储空间、数据传输速度均有明显优势的固态硬盘,外加WinCE 6.0操作系统丰富的软件接口,该微型投影的通用嵌入式控制平台设计方案具有架构合理、功能齐全、接口丰富、可裁剪性强的特点,使微型投影具有掌上电脑的主要功能,大大扩展了微型投影的使用功能和应用领域,有助于推动微型投影的商业化。
[1]赵星,方志良,崔继承.微型投影机光学引擎的研究[J].光学学报,2007,27(5):913-918.
[2]贾振波.基于ARM的车载GPS系统的研究[D].北京:中国农业大学,2007.
[3]Telechips.TCC8900_FULL_SPEC_V1.03[S].Telechips,2009.
[4]李大为.Windows CE工程实践完全解析[M].北京:中国电力出版社,2008.
[5]罗健飞,吴仲城,沈春山.基于ARM和WinCE下的设备接口驱动设计与实现[J].自动化与仪表,2009,24(3):1-3.
[6]Microsoft.Microsoft Windows CE Device Driver Kit[M].北京:北京希望电子出版社,2006.