第十三章 GUI和文件系统

本文探讨了嵌入式设备对GUI的限制,嵌入式系统GUI设计的三个方面,以及流行的嵌入式GUI模块、特点及实例。深入介绍了Tiny-X系统框架、QT及其与X11的关系,同时涉及QtEmbedded结构、KDE简介、嵌入式存储介质和常见文件系统的设计。文章还讨论了嵌入式文件系统的可靠性设计和日志结构文件系统(JFFS2)的使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1 嵌入式设备对GUI的限制
  CPU速度相对来说较慢,一般不具备浮点运算功能或浮点运算功能较弱。
  内存,外存容量小,电量有限。

2 嵌入式系统GUI设计包括三个方面
  硬件设计:通过LCD控制器把LCD显示器和开发系统连接起来。
  驱动程序设计:为输入输出设备如LCD设计驱动程序,使硬件能驱动起来。
  用户界面程序设计:使用嵌入式系统提供的函数库进行图形化程序设计。

3 嵌入式GUI模块
  GUI用户接口模块:为上层应用软件开发人员提供方便,易用的API接口函数,屏蔽了GUI的设备实现细节。
  GUI对象模块:对窗口环境中的逻辑对象进行组织管理。如窗口切换,焦点切换,对象的隐藏和恢复等操作引发的对象属性的更新。还有对不同控件的各种事件的响应。
  GUI基本图形模块:实现对显示输出设备的操作,如画线,画点,画矩形等基本功能
  GUI消息驱动模块:负责GUI的消息接受和与其它任务的通讯以及消息队列的维护。

4 嵌入式GUI的特点
  可移植性,较高的稳定性和可靠性,系统开销小,较高的可配置性。

5 目前在嵌入式系统比较流行的GUI
  Qt/Embedded 是一个C++函数库,支持真正的组件编程。
  MicroWindows:开放源代码,C/S结构,三层,LGPL。
  Tiny-X:是标准X-windows系统的简化版。
  OpenGUI:适合于x86,可移植性比较差。
  MiniGUI:中国的自由软件项目,LGPL。

6
Tiny-X系统框架
  标准X-windows系统的简化版。设计目标:在小容量内存的环境下运行。适合用作嵌入式linux的GUI系统。

7 QT
  Qt是一种跨平台的GUI工具包,软件能非常方便地应用于绝大多数操作系统。
  面向对象,构件支持,方便性,国际化,丰富的API,完整地组件,优越的绘图功能。
  Linux上流行的桌面环境KDE是基于Qt开发出来的。
 
8 Qt与X11的关系
  硬件平台,操作系统,X-windows系统/Xlib,Qt库,KDE。

9 Qt基础
  QObject:它是所有能够处理signal,slot和事件的Qt对象的基类。Qt为对象的通信以及signal/slot连接提供了强大的机制,signal/slot机制比传统的回调规则更先进。所有的Qt组件都继承QObject和使用signal/slot机制。
  QApplication:负责GUI应用程序的控制流程和主要的设置,它包含主事件循环体,负责处理和调度所有来自窗口系统和其他资源的事件,并且处理应用程序的开始,结束以及会话管理,还包括应用程序方面的设置。
   QApplication主要的功能:
   1)初始化应用程序,并设置用户桌面的一些特性。如字体设置等。
   2)执行事件处理,从当前的窗口系统接受事件并将其送给目标组件。
   3)解析命令行的变元和设置相应的内部状态。
   4)定义应用程序的外观和感受。
   5)指明应用程序如何分配颜色。
   6)指明默认的文本编码。
   7)管理应用程序的鼠标,光标。
   8)提供完善的会话管理,使用户注销时终止应用程序。
  QWidget:是所有用户接口对象的基类,它继承QObject类的属性。
   组件是用户界面的单元组成部分,它接收鼠标,键盘和其他从窗口系统来的事件,并把它自己画在屏幕上。
   一个不能移植到其父组件的组件成为顶层组件,QWidget类有很多成员函数,但是一般不直接使用,而是由其子类继承,使用函数功能。
   所有的组件都继承QWidget类,因此它的属性其他组件都可以用。组件通常以QWidget类的抽象子类作为基类,利用基类的属性并加上自己的特征作为它自己特有的属性。如QPushButton以QButton为基类,而QButton是QWidget的抽象子类,它的属性可以被子类所继承,而它却不能自己使用,即一般构建的是QButton的子类。

10 KDE简介
   KDE是一种图形桌面集成环境,使一套使Unix系统拥有图形操作继承环境的软件。
   KDE为用户提供了方便且全面的服务,并有专门的KDE小组维护这套软件。

11 Qt Embedded结构
  从上层到下层:Applications,Qt API,QT for Embedded Linux,Linux Kernel/Framebuffer。

12 Qtopia结构
   从上层到下层:Qtopia,Qt/Embedded,Frame Buffer,Linux。

13 嵌入式手持设备向移动多媒体终端发展
  存储容量越来越大,待机时间越来越长。合理利用电池的容量,延长电池的使用时间已经是制约嵌入式设备发展的一个重要问题。

14 常见的嵌入式存储介质
  ROM,PROM,EPROM,EEPROM
  ROM:只读,存储内容出场时烧成
  PROM:可编程性ROM,支持一次编程。
  EPROM:支持使用紫外线进行擦除。
  EEPROM:支持使用专用电路就可以擦除。

15 常见的嵌入式存储介质-可移动存储介质
  分两大类:晶体管快闪存储器,旋转的磁性媒体。

16 常见的嵌入式存储介质-Flash闪存
  特点:非易失性,高存储密度,体积小,容量大,成本低。它一共分两类:Nor Flash 和 Nand Flash。
  NorFlash:线性随机访问,支持XIP。存储密度低。擦写模式是逐字节编程。主要用途是ROM的替代产品。它存代码比较合适。
  NandFlash:页式访问,每页有16个字节的额外管理数据,不支持XIP。存储密度高。擦写模式:整页或者部分编程。主要用途:海量存储器。

17 嵌入式文件系统可靠性设计
  嵌入式文件系统中的Flash存储器两大类不稳定因素:Flash存储器本身可能出现物理性的损坏。嵌入式系统面对较多的突发掉电与重启动,造成Flash存储器写操作的异常终止。
 
18 日志结构的文件系统
  采用了数据库系统中的日志的概念,对数据的更新采用前向写入。不直接进行耗时较高的擦除操作,数据的写入速度将较大提高。日志结构文件系统更适合于在闪存设备中的应用。日志结构需要进行垃圾回收以创建空白存储区。 

19 日志闪存文件系统(JFFS2)
 用于嵌入式设备的原始闪存芯片的实际文件系统。
 在扇区级别上执行闪存擦除/写/读操作。提供了比Ext2fs更好的奔溃/掉电安全保护。
 缺点:当文件系统已满或接近满时,JFFS2会大大放慢运行速度。还有垃圾收集的问题。

  MTD(Memory Technology Device)
  MTD在硬件上和上层之间提供一个抽象接口。支持NOR和NAND。

20 YAFFS2
  是针对NAND Flash的日志文件系统。YAFFS自带了NAND芯片驱动,并且自带了文件系统的API。
  文件是以固定大小的数据块进行存储。相对JFFS2速度更快,对内存的占用率较小。

21 其他文件系统:Extfs是Linux事实上的标准文件系统。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

进击的横打

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值