欢迎来到天天文库
浏览记录
ID:38025000
大小:34.50 KB
页数:4页
时间:2019-05-24
《Microwindows在ARM平台的移植》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、Microwindows在ARM平台的移植 摘 要:本文介绍了Microwindows在ARM平台的移植、图形编程机制及Microwindows在基于ARM的嵌入式系统上的图形编程方法。关键词:嵌入式系统;Microwindows;ARM引言 由于受系统内存大小的限制,在运行Linux的ARM平台上直接运行桌面的XWindows系统不太现实。Microwindows是一个开放源码的嵌入式GUI软件,目的是把图形视窗环境引入到运行Linux的小型设备和平台上。作为XWindows系统的替代品,Microwindows可以用更少的RAM和文件存储空
2、间(100K~600KB)提供相似的功能,允许设计者轻松加入各种显示设备、鼠标、触摸屏和键盘等。同时,Microwindows的可移植性非常好,现已成功移植到MIPS、ARM等多种平台上。Microwindows在ARM平台的移植 尽管Linux的arch目录下有对ARM处理器支持的代码,但由于Linux是在X86平台上实现的,很多方面都没有考虑到ARM平台的特殊性。将Microwindows移植到运行ARM-Linux操作系统的ARM硬件平台上,需要如下几个步骤。1)替换fork()系统调用。由于ARM-Linux不同于标准Linux,所以以标
3、准Linux内核为支持目标开发的Microwindows源代码也必须作出相应的修改才能适应ARM-Linux系统。最主要的问题是ARM-Linux不提供fork()系统调用,而以vfork()调用取代。所以在ARM-Linux代码中fork()的使用需要进行修改。可利用宏定义简便地将所有的fork()调用用vfork()来替代。修改Microwindows的编译设置文件,并采用ARM交叉编译器arm-elf-gcc。2)确定传递给显示屏驱动程序的参数。具体地说,就是需要在打开FrameBuffer设备/dev/fb0时将显示屏的基本参数传递给设备驱动程序。在s
4、cr_fb.c中的fb_open(PSDpsd)函数中修改如下:psd->xres=psd->xvirtres=320;psd->yres=psd->yvirtres=240;psd->linelen=40;psd->size=320×320;3)编译Microwindows。在RedHat9.0下建立ARM交叉编译环境,修改Makefile文件,将$(CC)编译参数指定为交叉编译环境安装目录下的arm-elf-gcc,重新编译代码,就可以生成能够在ARM平台下运行的程序。ARM系列处理器的指令系统相互兼容,经arm-elf-gcc编译过的代码可在基于ARM核
5、的各种处理器上运行。Microwindows中文化 为了使Microwindows实现对简体汉字的支持,需要对引擎层的devfont.c做相应修改。在devfont.c文件中定义了Microwindows关于字体操作的核心数据结构和操作函数。由于Microwindows采用面向对象的设计方法,因而只要重新定义一系列对简体中文的数据结构和操作函数,并向系统注册,就可以完成系统的中文化。需要重新定义的数据结构和函数是:staticMWFONTPROCShzk_procs={MWTF_ASCII,/*routinesexpectASCII*/Hzk_ge
6、tfontinfo,Hzk_gettextsize,NULL,Hzk_destroyfont,Hzk_drawtext,Null,Null,};Microwindows图形编程机制 Microwindows从原理上采用分层设计的方法,每层次完成特定的功能,并且能够在不影响其它层次的基础上针对不同的应用进行改编或者重写。在最底层,显示屏、鼠标、触摸屏等的驱动程序提供了与交互相关的硬件设备的访问;中间层是一个精简的图形引擎,提供了划线、区域填充、多边形等多种基本的图形功能;最上层为图形应用程序提供了丰富的编程接口函数(API),通过这些接口函数可以定制
7、桌面和窗口的外观。目前Microwindows提供两套API接口,以便能够更好地适应不同平台应用程序的移植,即与Win32/WinCE基本兼容的API以及采用X体系的Nano-XAPI。设备驱动层 设备驱动程序的接口定义在device.h文件中。中间层提供的与设备无关的图形引擎例程就是通过调用设备驱动程序跟硬件设备交互。这就保证了当平台硬件设备发生变化的时候,只需要改写相应的驱动程序,而无需修改上层代码。Microwindows提供基于Linux2.4.X内核的FrameBuffer设备驱动程序。FrameBuffer在Linux系统中通过/dev
8、/fb0设备文件进行工作,通过mmap
此文档下载收益归作者所有