当前位置:首页 > 嵌入式 > 嵌入式软件
[导读] 1 引言如今随着信息化、智能化、网络化的迅速发展,嵌入式系统已被广泛应用在消费电子、工业应用、军事国防、网络设备等领域。μC/GUI作为一个通用的嵌入式应用的图形模

 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);[!--empirenews.page--]

/* 关LCD显示 */

for(i=0; i<320*240; i++)

/* 初始化显存 */

*(pLCDBuffer256+i) = 0x0;

rPDATD = 0xff;;

/* PDATD[7 :0]: 此处初始化为0xff */

rPCOND = 0xaaaa;

/* PCOND[15:0]: 配置为功能端 */

rPUPD = 0x00;

/* PUPD [7 :0]: 允许相应位的上拉电阻(0=允许, 1=禁止) */

rLCDCON1 = (0)|(DISMODE<<5)|(WDLY<<8)|(WLH<<10)|(CLKVAL<<12);

/* disable,8B_SNGL_SCAN,WDLY=16clk,WLH=16clk, CLKVAL="10"*/

rLCDCON2 = (LINEVAL)|(HOZVAL<<10)|(LINEBLANK<<21);

/* 彩色模式, LCDBANK="0xc000000", LCDBASEU="0x0" */

rLCDSADDR1= (MODESEL<<27) | (((U32)pLCDBuffer256>>22)<<21) |

M5D((U32)pLCDBuffer256>>1);

rLCDSADDR2= M5D(((U32)pLCDBuffer256+(LCDWIDTH*LCDHEIGHT))>>1) |

(MVAL<<21);

rLCDSADDR3= PAGEWIDTH | (OFFSIZE<<9);

rREDLUT = 0xfdb97531;

/* 设置红绿蓝三色的颜色值*/

rGREENLUT = 0xfdb97531;

rBLUELUT = 0xfb73;

rDITHMODE = 0x0;

rDP1_2 = 0xa5a5;

rDP4_7 = 0xba5da65;

rDP3_5 = 0xa5a5f;

rDP2_3 = 0xd6b;

rDP5_7 = 0xeb7b5ed;

rDP3_4 = 0x7dbe;

rDP4_5 = 0x7ebdf;

rDP6_7 = 0x7fdfbfe;

/* enable,8B_SNGL_SCAN,WDLY=16clk,WLH=16clk, CLKVAL="10"*/

rLCDCON1 = (1)|(DISMODE<<5)|(WDLY<<8)|(WLH<<10)|(CLKVAL<<12);

Delay(5000);

LCD_BkLight(TRUE);

/* 开背光 */

LCD_DisplayOpen(TRUE);

/* 打开LCD显示 */

}

完成如上LCD驱动以后, 再设置相应的中断服务子程序(IS), μC/GU I就可以稳定地运行在μC/OS-II和目标平台之上了。

3.4 μC/GUI配置文件参数的修改

主要是LCDConf.h配置文件的修改,如果LCD选用320×240彩色,就要作如下修改LCDConf.h的内容:

/*LCDConf.h*/

#ifndef LCDCONF_H

#define LCDCONF_H

#define LCD_XSIZE (320)

/* LCD水平分辨率 */

#define LCD_YSIZE (240)

/* LCD竖直分辨率 */

#define LCD_BITSPERPIXEL (8)

#endif

另外,还涉及到LCD寄存器常量的设置等这里不一一详述。

到这里μc/GUI的移植基本完成。本文只介绍了μc/GUI结合LCD在基于S3C44B0X的μC/OS-II上的移植。如果涉及到输入设备键盘、鼠标以及触摸屏的移植还要编写相应的驱动程序和其相关参数的修改。

4 结束语

本文详细介绍了嵌入式图形用户界面在基于μC/OS-II目标平台上的移植过程,实际表明在具有图形界面的嵌入式系统的开发中,采用基于μC/OS-II的图形系统μc/GUI,移植简便、使用方便灵活,目前基于 μC/OS-II的μc/GUI系统已成功移植到了系统效率测试仪上,系统的电能参数(电流、电压、功率)可以实时采集和实时波形显示;参数设置以菜单、编辑框的形式实现,界面的切换以窗口的形式实现。充分利用了μc/GUI强大的图形功能,使人机界面更加丰富、友好。实践表明系统具有良好的实时性和稳定性。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

9月2日消息,不造车的华为或将催生出更大的独角兽公司,随着阿维塔和赛力斯的入局,华为引望愈发显得引人瞩目。

关键字: 阿维塔 塞力斯 华为

加利福尼亚州圣克拉拉县2024年8月30日 /美通社/ -- 数字化转型技术解决方案公司Trianz今天宣布,该公司与Amazon Web Services (AWS)签订了...

关键字: AWS AN BSP 数字化

伦敦2024年8月29日 /美通社/ -- 英国汽车技术公司SODA.Auto推出其旗舰产品SODA V,这是全球首款涵盖汽车工程师从创意到认证的所有需求的工具,可用于创建软件定义汽车。 SODA V工具的开发耗时1.5...

关键字: 汽车 人工智能 智能驱动 BSP

北京2024年8月28日 /美通社/ -- 越来越多用户希望企业业务能7×24不间断运行,同时企业却面临越来越多业务中断的风险,如企业系统复杂性的增加,频繁的功能更新和发布等。如何确保业务连续性,提升韧性,成...

关键字: 亚马逊 解密 控制平面 BSP

8月30日消息,据媒体报道,腾讯和网易近期正在缩减他们对日本游戏市场的投资。

关键字: 腾讯 编码器 CPU

8月28日消息,今天上午,2024中国国际大数据产业博览会开幕式在贵阳举行,华为董事、质量流程IT总裁陶景文发表了演讲。

关键字: 华为 12nm EDA 半导体

8月28日消息,在2024中国国际大数据产业博览会上,华为常务董事、华为云CEO张平安发表演讲称,数字世界的话语权最终是由生态的繁荣决定的。

关键字: 华为 12nm 手机 卫星通信

要点: 有效应对环境变化,经营业绩稳中有升 落实提质增效举措,毛利润率延续升势 战略布局成效显著,战新业务引领增长 以科技创新为引领,提升企业核心竞争力 坚持高质量发展策略,塑强核心竞争优势...

关键字: 通信 BSP 电信运营商 数字经济

北京2024年8月27日 /美通社/ -- 8月21日,由中央广播电视总台与中国电影电视技术学会联合牵头组建的NVI技术创新联盟在BIRTV2024超高清全产业链发展研讨会上宣布正式成立。 活动现场 NVI技术创新联...

关键字: VI 传输协议 音频 BSP

北京2024年8月27日 /美通社/ -- 在8月23日举办的2024年长三角生态绿色一体化发展示范区联合招商会上,软通动力信息技术(集团)股份有限公司(以下简称"软通动力")与长三角投资(上海)有限...

关键字: BSP 信息技术
关闭
关闭