嵌入式linux系统GUI设计方案

2010-05-19 11:26:00来源:21IC电子网 作者:赵少鹏,刘笃仁热度:

嵌入式linux操作系统的快速发展,迫切需求一种简洁的人机交互界面,为此,本文介绍了如何在FrameBuffer基础上设计自己的嵌入式GUI的简单方法。

1 显示原理

1.1 颜色表示

颜色是所有绘图操作的基础。16位的LCD屏一般需要2个字节来表示。16位RGB格式一般可分为RGB565与RGB5551两种格式。其中RGB565格式如表1所列,而其RGB5551格式如表2所列。表中的R为红色分量,G为绿色分量,B为蓝色分量。

由于颜色采用的是RGB565规则。因此。基本颜色,即红色、绿色、蓝色按照RGB565规则可分别为0xf800、0x07e0、Ox001f。由此可见,如果用十六进制直接表示颜色会非常不便。目前,普遍为软件工程师所接受的颜色表示方式为24位的RGB,其中R、G、B三个分量各占用一个字节,范围是0~255。因此,应该为MIS软件系统提供一个从24位RGB转化为16RGB的接口。该接口用宏来实现的具体方式如下:

#define RGB(r,g,b) (((r>>3)<<11)∣((g>>2)<<5)∣(b>>3))

1.2 画点操作

图形设备接口的最基本操作为画点,任何其它绘图函数都是基于画点来完成的。其原理是以屏的左上角第一个像素点为(0,0)点,向右为x轴,向下为y轴建立坐标系,只要提供某点的横坐标x,纵坐标y和颜色值,就可以通过一定的算法找到(x,y)所表示的地址,然后将该地址上的2个字节替换为指定的颜色值。例如有一块640×480×16的LCD,像素的首地址为0x40000000,那么,其中的第2行、第3列的像素位置如图1所示。

如果要把第2行、第3列的像素由原来的白色(0xfff)变为黑色(0x0000)。那么,就可以根据下面的寻址方式找到地址:

最终地址=首地址+y×2×屏的宽度+x×2

其中,首地址表示第1行第1列像素所对应的地址。由上式,该点的地址=0x40000000+2×2×0x280+3×2=0x40000A06。那么0x40000A06地址对应的数据应为十六位颜色的低字节部分,而0x40000A07地址对应的数据应为十六位颜色的高字节部分。

例如,画点函数可用下面的代码来实现:

其中m_pScreen_Addr是屏的首地址,m_nSereen_Width和m_nScreen_Height则分别为屏宽和屏高。这样,就可以在画点的基础上根据Bresenham算法延伸出各种各样的基本绘图操作来,比如画直线、画矩形和画圆等。

2 FrameBuffer接口

FrameBuffer是出现在2.2.xx内核当中的一种驱动程序接口。Linux抽象出FrameBuffer这个设备可供用户态进程实现直接写屏。FrameBuffer机制模仿显卡的功能是将显卡硬件结构抽象掉,然后通过FrameBuffer的读写直接对显存进行操作。用户可以将FrameBuffer看成是显示内存的一个映像。在将其映射到进程地址空间之后,就可以直接进行读写操作,而且写操作还可以立即反映在屏幕上。这种操作是抽象的、统一的。用户不必关心物理显存的位置和换页机制等具体细节,而这些都可由FrameBuffer设备驱动来完成。

作者:赵少鹏,刘笃仁(西安电子科技大学,710071)

责任编辑:chengxi

为您推荐

PC巨头纷纷“转投”互联网 加快三网融合

此外,联想、戴尔、宏碁等PC厂商都希望在互联网应用激活的全球智能手机市场上一试身手。究其实质,PC厂商看好的并非只是手机,而是庞大的移动互联网市场。种种迹象表明,通信设备商们已进入多行业嵌入式发展时代。但要全面激活这一新时代,加强产业链各方的合作是基础。PC巨头纷纷“转投”互联网作为IT产业的“大佬”之一,英特尔的一举一动都备受瞩目,在PC领域难觅对手之后,英特尔开始大玩创新概念,发力互联网战略。据悉,英特尔已经与诺基亚、华泰、汉王等产商开始了跨界合作,按步骤向个性化互联网新市场转型。此番举动,英特尔的野心并不只是让笔记本、上网本装上“英特尔芯”,而是深入手机、电视和汽车等广泛领域。据英特尔数

基于B/S模式的嵌入式视频监控系统的设计

视频监控系统将被监控现场的实时图像和数据等信息准确、清晰、快速地传送到监控中心服务器,监控中心将实时、直接地掌握各个被监控现场的当前情况(包括图像、声音及其他敏感数据),从而对敏感事件进行快速反应[1]。视频监控正朝着数字化、网络化、集成化的嵌入式视频监控方向蓬勃发展。相比传统的视频采集监控系统,嵌入式视频监控系统具有可靠性高、组网方便、可远程监控等优点,因而更适用于工业控制、银行、政府部门的安防系统中[2]。本文设计了一种具有用户零维护、价格低廉、性能稳定等特点的嵌入式视频监控系统。该系统以ARM处理器S3C2440和嵌入式Linux操作系统为核心平台,通过USB摄像头采集视频数据,基于TC

基于DM642的嵌入式网络视频服务器的设计

引言目前的安防监控领域的主流产品是DVR(数字硬盘录像机),它的主要特点是适合监控点集中的局域监控应用。但是,随着对于远程分布式监控需求的增长,嵌入式网络视频服务器以其可靠性高,组网方便等优点越来越受到安防领域厂商和客户的重视。视频服务器的解决方案有多种选择,但是市场产品的主流一般选择两种方案:(1)CPU+ASIC。该方案选择以ARM为核的CPU和专用媒体处理芯片搭建。优点是开发时间相对较短,但由于采用ASIC,灵活性较差,产品一旦定型,很难更改。(2)采用面向媒体处理的专用DSP。其开发时间不长,优点是由于算法是软件代码,所以可以不断对产品性能进行升级,重复开发成本较低。基于以上几点,本系

嵌入式Linux下的USB设备驱动技术

Linux以其稳定、高效、易定制、硬件支持广泛、源代码开放等特点,已在嵌入式领域迅速崛起,被国际上许多大型的跨国企业用作嵌入式产品的系统平台。USB是UniversalSerialBus(通用串行总线)的缩写,是1995年由Microsoft、Compaq、IBM等公司联合制定的一种新的PC串行通信协议。它是一种快速、灵活的总线接口。与其它通信接口相比较,USB接口的最大特点是易于使用,这也是USB的主要设计目标。USB的成功得益于在USB标准中除定义了通信的物理层和电器层标准外。还定义了一套相对完整的软件协议堆栈。这使得多数USB设备都很容易在各种平台上工作。作为一种高速总线接口,USB适用