ioaddr = dev->base_addr;
lp = (struct net_local *)dev->priv;
while((status = readword(dev,ISQ_PORT))){ switch(status & ISQ_EVENT_MASK){ 类型*/
case ISQ_RECEIVER_EVENT: net_rx(dev); break;
case ISQ_TRANSMITTER_EVENT: lp->stats.tx_packets++; dev->tbusy = 0; mark_bh(NET_BH);
/*通知上层*/
/*获取信息包*/ /*判断中断
if((status & TX_OK) == 0) lp->stats.tx_errors++; if
(
status
&
TX_LOST_CRS
)
lp->stats.tx_carrier_errors++; if
(
status
&
TX_SQE_ERROR
)
lp->stats.tx_heartbeat_errors++; if
(
status
&
TX_LATE_COL
)
lp->stats.tx_window_errors++;
if(status & TX_16_COL) lp->stats.tx_aborted_errors++; break;
case ISQ_BUFFER_EVENT:
if(status & READY_FOR_TX){ dev->tbusy = 0; mark_bh(NET_BH);
/*通知上层*/
}
if(status & TX_UNDERRUN){ lp->send_underrun++;
if(lp->send_underrun > 3) lp->send_cmd TX_AFTER_ALL; } break;
case ISQ_RX_MISS_EVENT:
lp->stats.rx_missed_errors += (status >>6); break;
case ISQ_TX_COL_EVENT:
lp->stats.collisions += (status >>6); break; } }
dev->interrupt = 0; return;}
= 第8章 用户图形接口GUI
1、简述嵌入式系统对GUI的基本要求。(P206)
答:GUI在嵌入式系统或者实时系统中的地位将越来越重要,这些系统对GUI的基本要求包括:轻型、占用资源少、高性能、高可靠性、可配置、可移植等特点。 ? 体积小
谈到“嵌入”,真的是除了小还是小,现在PC的存储器动辄就是以GB论,对于嵌入式的硬件来说根本是不可能的奢求,大部分的嵌入式系统用的Flash大都以16MB或者32MB为主,与PC简直是天壤之别,所以这样苛刻的环境底下只有尽量减小软件的体积了。 ? 消耗系统资源少
对于手持式设备如PDA、手机等,最注重的就是系统资源及省电功能,在省电的前提下CPU速度就不能太高,运算速度越快越耗电,而且散热也会成为很大的问题。对于非手持式设备如Set Top Box、部份WebPAD等,这类系统主要考虑的是硬件的成本,所以嵌入式系统的CPU速度不如PC机,存储容量也小得多,因此GUI系统面临着另一种挑战,必须谨慎使用系统资源,不能有任何无谓的浪费。 ? 系统独立
嵌入式系统的一大特色就是硬件差异很大,不像PC机全部都是X86架构。尽管底层硬件差异很大,上层的GUI系统仍然需要表现出统一的界面,所以嵌入式GUI系统必须尽量与硬件划清界限,最好的设计是在GUI系统与硬件中间有一层系统负责隔离,在这方面,
Linux Kernel已经可以扮演这个角色。 ? 可配置、可移植
嵌入式系统往往是一种定制设备,它们对GUI的需求也各不相同。举个简单的例子,有的系统只要求一些图形功能,而有些系统要求完备的GUI支持。因此,GUI自身也必须是可定制的。
2、简述目前常见的嵌入式GUI系统的特点。(P207~210)
答:目前主流的嵌入式GUI系统主要有MicroWindows、Qt/Embedded、Tiny-X Windows、OpenGUI和MiniGUI等。由于嵌入式系统之间在特定应用环境下的差异,这些GUI系统在其结构、实现方法、使用方法、应用范围等方面也都有各自的特点。
(1)MicroWindows
MicroWindows是一个著名的开源嵌入式GUI软件,目的是把现代图形视窗环境引入到运行Linux的小型设备和平台上,作为X Windows的替代品。它支持多线程,但必须使用PThread库。MicroWindows是一个典型的基于Client/Server体系结构的GUI系统,采用分层结构。 (2)OpenGUI
OpenGUI分为三层:最低层是由汇编编写的快速图形引擎;中间层提供了图形绘制API,包括线条、矩形、圆弧等,并且兼容于Borland的BGI API;第三层用C++编写,提供完整的GUI对象集。OpenGUI采用LGPL条款发布。OpenGUI比较适合于基于x86平台
的实时系统,可移植性稍差,目前的发展也基本停滞。 (3)Tiny-X Windows
以X Windows System搭配Tiny-X Server架构来说,最大的优点就是弹性与开发速度。因为与桌面的X Windows架构相同,因此相对于很多以Qt、GTK+、FLTK等开发的软件来说,移植更容易。但因为X Windows系统的运行还需要其他程序和库的支持,包括X Windows管理器、XLib、建立在XLib之上的GTK和Qt等函数库,因此,即使是Tiny-X Windows系统,在运行期间所占用的系统资源也很多,国外使用Tiny-X Windows的环境也多是比较高端的平台。此外,Tiny-X Windows是一个多进程的GUI,它无法运行在很多仅支持多任务(线程)的RTOS上,因此它对于操作系统的兼容性较差,实时性不高。
(4)Qt/Embedded
Qt/Embedded延续了Qt在X上的强大功能,但在底层摒弃了XLib,仅采用FrameBuffer作为底层图形接口。同时,将外部输入设备抽象为keyboard和mouse等输入事件,底层接口支持键盘、鼠标、触摸屏以及用户自定义的设备等。 (5)MiniGUI
MiniGUI是由北京飞漫软件技术有限公司主持的自由软件,遵循GPL条款发布(1.2.6及之前的版本以LGPL条款发布),其目标是为实时嵌入式Linux系统建立一个快速、稳定和轻量级的图形用户界面支持系统。
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说教育文库嵌入式系统设计大学教程 - 习题与解答(9)在线全文阅读。
相关推荐: