0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

探究Microwindows的嵌入式GUI设计

电子工程师 来源:搜易科技网 作者:wangmeng 2021-03-24 10:26 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

引言

嵌入式图形用户界面与存储安全、嵌入式JAVA 虚拟机并称为嵌入式系统中的三大关键技术。在嵌入式应用领域,伴随着硬件技术的发展,传统意义上的人机交互界面正趋于淡化,取而代之的是具有友好人机交互支持的嵌入式图形界面。

嵌入式计算机系统以其关键部件的高性能、低价格等优势为Embedded GUI 的发展奠定了坚实的市场和技术基础;而基于Linux 开放源代码、遵循不同授权条款的诸多Embedded GUI 软件及其自由开发者,又大大推进了Embedded GUI 的应用进程,起到推波助澜的作用,如Microwindows、MiniGUI 及QT/ Embedded 等。

嵌入式系统是以应用为中心、计算机技术为基础、软件硬件可裁剪、适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。嵌入式系统的这一定义也就界定了嵌入式系统对Embedded GUI 的基本要求。这些要求如下: (1) 轻量级、占用系统资源少; (2) 性能高,友好的人机互动; (3) 可靠性高; (4) 模块架构,配置灵活,便于移植。

目前,在嵌入式应用领域比较成功的Embedded GUI主要有MiniGUI、Microwindows 和QT/ Embedded。

MiniGUI 和Microwindows 都是自由软件,只是前者遵循L GPL 条款,后者遵循MPL 条款。这两个系统的技术路线也有所不同。MiniGUI 的策略是首先建立在比较成熟的图形引擎之上,如Svgalib 和LibGGI ,开发的重点在窗口系统、图形接口上。

Microwindows 目前的开发重点则在底层的图形引擎上,它不需要其它图形系统的支持。在Linux 操作系统上,Microwindows 也可以充分利用Linux 提供的Framebuffer机制来显示图形。并且,Microwindows 还具有很强的移植性,能够在大多数微处理器上运行。

QT/ Embedded 由于移植了大量原来基于QT 的XWindows 程序,提供了非常完整的嵌入式GUI 解决方案,再加上Opera 浏览器,可以说是一个成熟的商业软件。然而,QT/ Embedded 不能运行在非QT 的软件中,其源代码也过于庞大。

作为一个开放源代码项目,Microwindows 将现代图形窗口技术的一些特性展现给了编程团体,而不需要诸如Microsof t Windows 或X Window 这样占用较大磁盘和RAM 空间的高级窗口的支持。它直接面向显示硬件本身,不需要任何操作系统或其它图形系统的支持,可以在Linux 2. 0 以上的Framebuffer 系统上很好地运行。Microwindows 本身就被设计成便于移植、能够在大多数硬件和软件环境下运行的Embedded GUI。

Microwindows 最新版本0. 9 有如下新特性:

(1) 支持新的NXL IB 项目,NXL IB 对X11 的二进制程序可以不加修改地直接在Microwindows 里运行,而无需X11 Server 支持;

(2) 支持Sharp Zaurus、Tuxscreen、TriMedia 及Cygnus X11 平台;

(3) 内建标准化校准(nxcal) 支持,如一个触摸屏驱动程序可以支持包含iPAQ、Zaurus、ADS 和Tuxscreen 在内的大多数ARM 平台;

(4) 增强了字符支持,包括BIG5 、GB2312 、EUCCN、EUCKR、EUCJ P 和J ISX0213 等;

(5) 大幅提高了X11 屏幕驱动程序和文本画图的速度;

(6) 32 位ARGB 硬件驱动支持单色Alpha ;

(7) 支持带有HAVI 键盘映射的L IRC 键盘;

(8) 从源代码中为html 和pdf 文档自动生成支持基于Doxygen 的文档。

总而言之,最新版本的Microwindows 在硬件驱动加速上、在图形引擎算法上以及代码质量上,都比原先的版本有较大的改进。

Microwindows 的API

Microwindows 采用分层体系结构设计,提供了丰富的API 支持,支持Win32/ WinCE GDI 和Nano-X两种API 集。

Microwindows 体系结构

Microwindows 的体系结构由下至上,分别为具体硬件、驱动层、图形引擎层和API 层,如图1 所示。用户可以根据具体应用需求对不同层的代码进行修改或重写。

(1) 设备驱动程序。

键盘驱动程序主要有两个,分别是kbd _ tty. c 和kbd _ bios. c 。前者主要用于Linux 和EL KS 系统,而后者主要用于MSDOS 实模式。

鼠标驱动程序主要有三个:mou_gpm. c ,用于Linux 的一个GPM 驱动; mou _ ser. c ,用于Linux 和EL KS 系统;mou_gpm. c ,主要用于MSDOS 系统。

屏幕驱动程序有面向16 位EL KS、MSDOS 实模式的V GA 驱动( scr_bios. c、vgaplan4. c、memp14. c 、scr_here. c)和面向Linux 的Framebuffer ( scr_fb. c、fb. c 等) 两种。这部分驱动程序最复杂,在设计时可以参考scr_fb. c 来设计自己的屏幕驱动程序。

(2) 设备独立的图形引擎。

Microwindows 的图形引擎是设备独立的。引擎的每一例程都接受SCREENDEVICE 结构的指针( PSD) 来作为第一个参数。PSD 说明了底层的显示细节,如屏幕大小的x 、y 值,屏幕颜色ncolors ,以及诸如打开、关闭、画线等函数指针。PSD 结构定义如下:

Microwindows 的API

Microwindows 提供两个应用程序接口:一是Win32 接口,这种API 不是很成熟;二是Nano-X ,这种API 比较好,结构上清晰,功能上也完全。

在Microwindows 上的API 接口函数的基本模型都是用来初始化屏幕、键盘和鼠标的驱动程序,然后一直等待select () 消息循环。当事件发生时,这条信息将送到用户程序。如果是用户请求图形操作,那参数将被编码后送到适当的GdXXX 核心程序上。与原始图形操作相对的窗口概念是被该层所控制的,也就是说该层的API 函数定义了窗口及其对应系统的概念。这样,系统坐标就能被转成屏幕上显示的坐标,并且可将数据传给GdXXX 核心程序,由它进行实际操作。该层亦定义图形/ 显示文件,并且会将此信息(包括裁减信息) 送到核心程序上。

Microwindows 的API 支持大多数图形绘制、裁减、窗口工具条绘制及拖拉窗口等程序。Nano-X 最先是由Davin Bell 为minix 设计的,它被设计为C/ S 模式,一般是通过Unix Domain socket 在客户与服务器端进行通信的,但没有实现窗口管理,所以对窗口的处理需要使用系统提供的一个插件集,或者完全由应用程序员自已开发。另外,Nano-X 不是消息驱动的,而是基于X 协议模式。在这种模式下,驱动整个系统运行的可以说是请求与事件。

请求就是客户端为了完成某一动作而对服务器端所发出的申请,并且为每一个请求都定义了一个标识数。每个请求的结构都是不同的,但类似如下结构:

事件是每个窗口系统必不可少的部分,它反映系统运行的状态,一共有22 种。对于每个事件都要提供有关它的结构,但没有必要提供22 种事件结构,有一些事件所需要的数据是一样的,如所有鼠标的事件都使用一个事件结构表示,如下所示:

Microwindows 在仿真环境下的应用

Microwindows 最为显著的优势在于它可以在桌面计算机上仿真运行目标平台的GUI 及其支撑软件。这就意味着面向Linux 的Microwindows 应用软件可以在桌面计算机的Linux 环境下编制和调试,而没有必要建立跨平台交叉编译环境,并在目标平台上对软件进行编制和调试。这一点对于Embedded GUI 移植和开发而言,意义非同寻常。这完全归功于Microwindows 的X Screen Driver ,而非Linux 的Framebuffer 。

我们在桌面计算机上的Linux 8. 0 仿真环境下运行Microwindows ,并通过一个简单实例演示仿真环境下的Microwindows 应用编程。显然,我们应采用Nano-X API。

仿真环境下Microwindows 主要的安装步骤:

(1) 下载并安装最新源代码Microwindows20. 90. tar和最新字体microwindows2font s20. 90. tar。

(2) 修改安装目录下的配置文件,如mirowin/ src 下的config file ,主要包括以下几项:

ARCH = LINUX-NATIVE;

/ / 高速系统为主机LINUX 建立应用程序

HAVE_FREETYPE_SUPPORT = Y;

/ / 设置对Free Type 和T1lib 字体的支持

HAVE_ T1LIB_SUPPORT = Y;

HAVE_HZK_SUPPORT = Y;

X11 = Y;

SCREEN_WIDTH = 640 ;

SCREEN_HEIGHT = 480 ;

SCREEN_PIXTYPE = MWPF_TRUECOLOR0888 ;

Microwindows 在桌面Linux 8. 0环境下的运行效果如图2 所示。

结束语

嵌入式相关研究和应用正在以前所未有的速度发展着,而作为嵌入式系统核心内容之一的Embedded GUI 一定会随着嵌入式系统的发展处于举足轻重的地位。具有高可移植性、丰富API 支持、开放源代码及可仿真运行的Microwindows ,在诸多Embedded GUI 技术中必将脱颖而出。

编辑:jq

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 嵌入式
    +关注

    关注

    5186

    文章

    20143

    浏览量

    328648
  • API
    API
    +关注

    关注

    2

    文章

    2146

    浏览量

    66199
  • PSD
    PSD
    +关注

    关注

    0

    文章

    35

    浏览量

    45784
  • GUI
    GUI
    +关注

    关注

    3

    文章

    693

    浏览量

    42831
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    瑞萨电子携手LVGL PRO推进嵌入式图形用户界面开发

    随着嵌入式设备对用户体验要求的不断提升,图形用户界面(GUI)成为产品开发越来越重要的一环。作为目前最流行的开源嵌入式图形库之一的LVGL,最近就推出了自己的商业化专业UI编辑器LVGL PRO 1.0版本。
    的头像 发表于 11-21 10:23 921次阅读
    瑞萨电子携手LVGL PRO推进<b class='flag-5'>嵌入式</b>图形用户界面开发

    嵌入式与FPGA的区别

    \"嵌入式开发门槛低、就业广,适合转行;FPGA技术深、薪资高,但要求学历和数学功底。选哪个?看你的基础和职业目标。\" ⭕我们先来明白下两者区别在哪? ✅1、嵌入式:分两部分
    发表于 11-20 07:12

    嵌入式工程师为什么要学QT?

    、车载系统和消费电子等领域尤为突出。其跨平台特性、丰富的库和工具、高性能以及强大的GUI支持,让Qt成为嵌入式开发最理想的选择。 嵌入式工程师学习Qt有很多好处。 跨平台支持 Qt支持多种操作系统,如
    发表于 08-14 15:15

    Linux嵌入式和单片机嵌入式的区别?

    Linux嵌入式与单片机嵌入式在多个方面存在显著的区别,以下是详细的比较和归纳: 一、基本概念 1. Linux嵌入式: 定义:将Linux操作系统运行在嵌入式设备上的一种配置。
    发表于 06-20 09:46

    嵌入式开发入门指南:从零开始学习嵌入式

    随着物联网、智能硬件的发展,嵌入式开发成为热门技能之一。以下将为初学者提供一份详细的嵌入式开发入门指南,涵盖学习路径、必备工具、推荐资源等内容。 1. 嵌入式系统的定义与应用嵌入式系统
    发表于 05-15 09:29

    飞凌嵌入式2025嵌入式及边缘AI技术论坛圆满结束

    飞凌嵌入式「2025嵌入式及边缘AI技术论坛」在深圳深铁皇冠假日酒店盛大举行,此次活动邀请到了200余位嵌入式技术领域的技术专家、企业代表和工程师用户,共享嵌入式及边缘AI技术的盛宴!
    的头像 发表于 04-28 13:57 3826次阅读
    飞凌<b class='flag-5'>嵌入式</b>2025<b class='flag-5'>嵌入式</b>及边缘AI技术论坛圆满结束

    飞凌嵌入式2025嵌入式及边缘AI技术论坛圆满结束

    4月22日下午,备受瞩目的飞凌嵌入式「2025嵌入式及边缘AI技术论坛」在深圳深铁皇冠假日酒店盛大举行,此次活动邀请到了200余位嵌入式技术领域的技术专家、企业代表和工程师用户,共享嵌入式
    的头像 发表于 04-27 11:55 604次阅读
    飞凌<b class='flag-5'>嵌入式</b>2025<b class='flag-5'>嵌入式</b>及边缘AI技术论坛圆满结束

    嵌入式适合自学吗?

    嵌入式适合自学吗?其实并不建议大家自学嵌入式,主要有以下原因。 一)学习难度大 1)知识体系复杂:嵌入式系统是一个复杂的领域,涉及到计算机、电子、通信等多学科知识,需要学习者具备扎实的软硬件
    发表于 04-27 09:54

    飞凌嵌入式「2025嵌入式及边缘AI技术论坛」议程公布

    4月22日,飞凌嵌入式“2025嵌入式及边缘AI技术论坛”将在深圳举行,论坛以“新生态,智未来”为主题,旨在汇聚行业智慧,探讨嵌入式技术与边缘AI的深度融合与创新应用。
    的头像 发表于 04-02 15:12 1066次阅读
    飞凌<b class='flag-5'>嵌入式</b>「2025<b class='flag-5'>嵌入式</b>及边缘AI技术论坛」议程公布

    嵌入式主板选型与应用指南

    嵌入式主板是专为嵌入式系统设计的核心硬件平台,广泛应用于工业控制、物联网、医疗设备等领域。以下是关于嵌入式主板的详细介绍:1.嵌入式主板的核心特点紧凑尺寸:通常采用小型化设计(如Min
    的头像 发表于 02-27 14:53 931次阅读
    <b class='flag-5'>嵌入式</b>主板选型与应用指南

    嵌入式主板的概述与发展

    随着科技的迅猛发展,嵌入式系统在现代电子产品中扮演着越来越重要的角色。嵌入式主板作为嵌入式系统的核心组件之一,承担着控制、处理和通讯等多种功能。本文将对嵌入式主板的基本概念、构成部分、
    的头像 发表于 01-13 16:30 1177次阅读
    <b class='flag-5'>嵌入式</b>主板的概述与发展

    ARM架构嵌入式主板特点

    嵌入式主板可以理解为嵌入在设备中用于控制和数据处理的CPU板,也就是设备的“大脑”。当主板嵌入到设备中,当然对主板的体积和功耗会有更严格的要求(嵌入式主板的散热问题)。如今
    的头像 发表于 12-31 16:03 1836次阅读
    ARM架构<b class='flag-5'>嵌入式</b>主板特点

    新手怎么学嵌入式?

    新手怎么学嵌入式? 在科技飞速发展的今天,嵌入式技术已经渗透到我们生活的各个角落,从智能手机到智能家居,从汽车电子到医疗设备。对于新手而言,嵌入式技术就像是一座充满神秘和机遇的宝藏,等待着大家去挖掘
    发表于 12-12 10:51

    什么是嵌入式人工智能

    嵌入式人工智能是指将人工智能技术应用于嵌入式系统中的一种技术。嵌入式系统是嵌入到其他设备或系统中的计算机系统,通常用于控制、监测或执行特定任务,如智能手机、智能家居设备、智能汽车等中的
    的头像 发表于 12-11 09:23 1516次阅读
    什么是<b class='flag-5'>嵌入式</b>人工智能

    嵌入式系统开发与硬件的关系 嵌入式系统开发常见问题解决

    嵌入式系统开发与硬件的关系 嵌入式系统是专为特定应用设计的计算机系统,它们通常嵌入在所控制的设备中。这些系统的关键特点是它们与硬件的紧密集成,这意味着软件必须为特定的硬件平台量身定制。以下是
    的头像 发表于 12-09 09:38 1463次阅读