1 导言
现在跟着信息化、智能化、网络化的迅速发展,嵌入式体系已被广泛运用在消费电子、工业运用、军事国防、网络设备等范畴。μC/GUI作为一个通用的嵌入式运用的图形模块,它在嵌入式体系中的效果也显得的越来越重要。 μC/GUI是一个源代码敞开的图形体系,它供给了丰厚的资源,包含二维绘图库、多字体及可扩大字符集、Unicode、位图显现、多级RGB及灰度调整、动画优化显现、具有Windows风格的对话框和预界说控件(按钮、编辑框、列表框等),以及对键盘、鼠标、触摸屏等输入设备和双LCD输出的支撑,现在在具有图形界面的嵌入式产品中得到越来越广泛地运用。
2 通用嵌入式图形模块uC/GUI
μC/GUI是一个通用的嵌入式运用的图形模块,它是美国Micrium公司开发的一种高效的、与处理器和LCD控制器独立的通用GUI,能够适用各种CPU和LCD,在单使命和多使命操作体系中,它都能够作业得很好。它具有驱动接口层和运用层,悉数代码选用ANSI _C编写,供给源代码,能够便利的移植到各种渠道下。
2.1 μC/GUI特色
(1) 支撑任何8位、16位和32位的CPU,只需求CPU具有相应的ANSI_C编译器即可。
(2) 一切硬件接口界说都运用可装备的宏。
(3) 字符、位图可显现与LCD的恣意点,并不约束与字节长度的整数倍数地址。
(4) 一切程序在长度和速度方面都进行了优化,结构明晰。
(5) 关于慢速的LCD控制器,能够运用缓冲存储器削减拜访时刻,进步显现速度[1]。
因为μC/GUI具有这些长处,它越来越遭到更多嵌入式规划者的喜爱。
2.2 μC/OS-II介绍
在嵌入式体系的开发进程中,挑选操作体系与挑选开发渠道相同的重要。尽管不是一个完好的实时操作体系,仅仅一个实时内核,但与其它操作体系比起来它具有许多长处因而得到了广泛的运用。首要它是一种结构简略、源代码揭露的操作体系,合适一切的开发者运用;它具有可移植性,它的绝大部分源码都是用移植性很强的 ANSI _C编写,与微处理器硬件相关的部分选用汇编语言编写,很简单被移植到各种微处理器上;它还具有可固化和可裁剪等特色,关于嵌入式规划者来讲的,只需具有固化手法(C编译、衔接、下载和固化),就能够很便利将其嵌入到产品中去。规划者还能够依据体系运用程序的需求对μC/OS-II进行相应的裁剪来削减产品中的μC/OS-II所需的存储器空间,这能够经过条件编译来完结。
2.3 μC/GUI接口
μC/GUI 是运转于操作体系之上的程序,它既需求与操作体系的和谐,又需求与各种输入输出设备的和谐,来完结用户层与运用程序层的联合,即经过输入设备接纳用户恳求、经过输出设备反映微处理器的呼应。因而在这一进程中GUI至少要与3个方针打交道:输入设备、输出设备和操作体系。因而μC/GUI接口首要包含2 个,与操作体系的接口和与输入输出设备的接口,这也正是在移植μC/GUI的进程中所要处理的要害问题。
关于操作体系,GUI作为操作体系的一个显现使命承受操作体系的调度,μC/GUI供给了与操作体系的接口支撑。与操作体系的接口首要处理体系实时性的要求。关于用户输入,μC/GUI供给了键盘、鼠标以及触摸屏等支撑,关于输出设备GUI反映微处理器的呼应给用户是经过LCD输出图画来完结的,关于不同类型和显现原理的LCD要编制相应的驱动程序。
3 uC/GUI在根据S3C44B0X的μC/OS-II上移植
3.1 S3C44B0X 微处理器和开发渠道简介
这儿硬件开发渠道的微处理器挑选三星公司的S3C44B0X,实时操作体系挑选移植性较强的μC/OS-II。
S3C44B0X 微处理器是三星公司专为手持设备和一般运用供给的一款高性价比的微处理器处理方案,它选用ARM 7TDM I核,作业在66MHz,为削减外围件, 该芯片集成了8KB的Cache、LCD控制器、5通道PWM定时器和一个内部定时器、71个I/O口、8个外部中止源、实时时钟等[3]。
移植的方针渠道的液晶模块运用320×240分辨率, 经过总线的方式衔接在S3C44B0X的Bank3上, 并在体系的内存区拓荒了一块内存作为液晶显现的后台缓存。
要成功将μC/GUI移植到该渠道上一般要处理以下几方面的问题。
3.2 μC/GUI与操作体系的接口相关部分的修正
μC/GUI 在与μC/OS-II结合运用时通常被分为几个小的显现使命,因为每个显现使命都共用一个GUI_Context上下文变量,在操作体系进行使命切换时一个GUI使命对上下文的操作或许被别的一个GUI使命打断,此时新的GUI使命对上下文的操作是在被中止使命的上下文基础上进行的,这样前一个使命的信息会被后一个使命所运用,有些基本信息作为公用信息需求被共用,而有些信息在处理进程中是不能被打断的。这就存在资源互斥的问题。
μC/GUI在规划时是经过上锁和解锁来处理此问题。其进程是经过在要害区域进口设置GUI_X_Lock()以取得专注拜访权,用完后在出口处设置GUI_X_ Unlock()让出资源,到达多个GUI使命对同一数据在要害区域内拜访的互斥。
在μC/GUI移植到μC/OS-II的进程中,则需求使用操作体系完结资源互斥的体系调用对上述宏进行替换,这涉及到3个使命调度函数的从头界说:
void GUI_X_InitOS (void);
/*使命初始化*/
void GUI_X_Lock (void);
/*使命确定*/
void GUI_X_Unlock (void);
/*使命解锁*/
此外μC/GUI还用到μC/OS-II中的延时调用,经过在GUI_X_Delay()中调用μC/OS-II的OSTimeDly()完结延时和使命切换。这涉及到2个体系时刻接口函数的界说:
int GUI_X_GetTime (void);
/*取体系时刻*/
void GUI_X_Delay (int ms);
/*延时函数*/
3.3 μC/GUI与输入输出设备驱动接口模块规划
本文以LCD驱动接口模块规划为例介绍在μC/GUI移植进程中LCD驱动程序的编写,以终究完结图形显现。
驱动程序首要是LCD初始化,这个函数完结对44B0X LCD控制器的装备、显存的映射等。这儿还是以320×240五颜六色LCD为例介绍一下初始化程序的编写。详细如下:
void LCD_Init(void)
{
int i;
LCD_DisplayOpen(FALSE);