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

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

3天内不再提示

标签 > MiniGUI

MiniGUI

+关注 0人关注

MiniGUI是由北京飞漫软件技术有限公司创办的开源Linux图形用户界面支持系统,经过近些年的发展,MiniGUI已经发展成为比较成熟的性能优良的、功能丰富的跨操作系统的嵌入式图形界面支持系统。

文章: 21
浏览: 28723
帖子: 10

MiniGUI简介

  MiniGUI是由北京飞漫软件技术有限公司创办的开源Linux图形用户界面支持系统,经过近些年的发展,MiniGUI已经发展成为比较成熟的性能优良的、功能丰富的跨操作系统的嵌入式图形界面支持系统。“小”是MiniGUI的特色,它目前已经广泛应用于通讯、医疗、工控、电子、机顶盒、多媒体等领域。目前,MiniGUI的最新版本为MiniGUI 3.0。MiniGUI对中文的支持很友好。它支持GB2312与BIG5字符集,其他字符集也可以轻松加入。

MiniGUI百科

  MiniGUI是由北京飞漫软件技术有限公司创办的开源Linux图形用户界面支持系统,经过近些年的发展,MiniGUI已经发展成为比较成熟的性能优良的、功能丰富的跨操作系统的嵌入式图形界面支持系统。“小”是MiniGUI的特色,它目前已经广泛应用于通讯、医疗、工控、电子、机顶盒、多媒体等领域。目前,MiniGUI的最新版本为MiniGUI 3.0。MiniGUI对中文的支持很友好。它支持GB2312与BIG5字符集,其他字符集也可以轻松加入。

  MiniGUI 是一款面向嵌入式系统的高级窗口系统(Windowing System)和图形用户界面(Graphical User Interface,GUI)支持系统,由魏永明先生于 1998 年底开始开发。2002 年,魏永明先生创建北京飞漫软件技术有限公司,为 MiniGUI 提供商业技术支持,同时也继续提供开源版本,飞漫软件是中国地区为开源社区贡献代码最多的软件企业。最后一个采用 GPL 授权的 MiniGUI 版本是 1.6.10,从 MiniGUI 2.0.4 开始 MiniGUI 被重写并使用商业授权。历经十余年时间, MiniGUI 已经成为性能优良、功能丰富的跨操作系统嵌入式图形用户界面支持系统,支持Linux/uClinux、eCos、 uC/OS-II、VxWorks、ThreadX、Nucleus 、pSOS、OSE 等操作系统和数十种 SoC芯片,已验证的硬件平台包括 ARM-based SoCs、MIPS based SoCs、IA-based SoCs、PowerPC、M68K(DragonBall /ColdFire)、Intel x86 等等,广泛应用于通讯、医疗、工控、电力、机顶盒、多媒体终端等领域。使用 MiniGUI 成功开发产品的企业有华为、中兴通讯、大唐移动、长虹、TCL、联想、迈瑞、南瑞、炬力、D2 等。这些用户广泛分部在中国大陆、台湾、新加坡、韩国、美国、德国、意大利、印度、以色列等国家和地区。值得一提的是,在中国自主开发的 3G 通讯标准 TD-SCDMA中,约有 60% 获得入网许可证的 TD-SCDMA 手机使用 MiniGUI 作为其嵌入式图形平台,以支撑浏览器、可视电话等 3G 应用软件的运行,其中有联想TD30t、海信 T68、中兴通讯 U85 等大家熟悉的 TD 手机型号。在 MiniGUI 的基础上,飞漫软件研发了 mDolphin (基于开源的浏览器核心 WebKit 的嵌入式浏览器,满分通过 Acid3 的基准测试)、mPeer (为使用 Java 技术的嵌入式设备提供高效的 J2SE AWT/Swing 实现支持),并且开发了基于 Eclipse CDT 的可视化集成开发环境,为开发人员提供所见即所得(WYSIWYG)的界面设计环境。2010年,飞漫软件把最新版的 MiniGUI、mDolphin、mPeer、mStudio 等系统整合在一起,推出了合璧操作系统(HybridOS)解决方案,是一整套专为嵌入式设备打造的快速开发平台,集成了飞漫软件10年的嵌入式行业研发经验和众多成熟的产品,使众多的希望在嵌入式设备上做开发的中小型企业,摆脱了“不稳定的内核以及驱动程序”、“交叉编译工具链、基础函数库存在大量缺陷”、“不恰当的开源软件”、“高水平嵌入式开发工程师缺乏”等这些问题的困扰,从而能够在一个运行稳定、功能强大的小巧系统内核基础上,专注开发产品。合璧操作系统(HybridOS)采用新的商业授权模式,性价比颇高。截止2010年9月,MiniGUI 的最新版本是3.0.10, MiniGUI 将作为合璧操作系统(HybridOS)的一个组成部分而不断演进,推荐新老用户使用合璧操作系统(Hybridos)作为嵌入式开发平台,必将节省大量的开发成本和时间。

  特点优势

  MiniGUI 为嵌入式 Linux 系统提供了完整的图形系统支持,是全球针对嵌入式 Linux仅有的两个商用嵌入式GUI系统之一。MiniGUI为嵌入式Linux 系统提供了完整的多进程支持;可以 MiniGUI-Processes、MiniGUI-Threads或者MiniGUI-Standalone 三种运行模式运行。

  技术特性硬件适配性:可运行于各种含有 MMU(内存管理单元)的 32 位处理器架构之上,如 ix386、ARM、MIPS、PowerPC 等。支持低端显示设备(比如单色 LCD)和高端显示设备(8 位色及以上显示设备)。通过 MiniGUI 的图形抽象层及图形引擎技术,还可以支持特殊的显示设备,比如 YUV 显示设备。对显示设备分辨率无最大和最小限制。副屏支持。当系统中有多个视频设备时,可将一个作为 MiniGUI 的主屏,实现完整的多窗口系统;而其它设备作为副屏,在其上通过 MiniGUI 的图形接口来实现文字渲染、图形显示等功能。可支持各种输入设备,如 PC 键盘、PC 鼠标、小键盘(Keypad)、触摸屏、遥控器等等。多种键盘布局的支持。MiniGUI 除支持常见的美式 PC 键盘布局之外,还支持法语、德语等西欧语种的键 盘布局。资源消耗:MiniGUI 的静态存储随配置选项的不同而不同,最少需占用 1MB 静态存储空间。MiniGUI 启动后,初始占用 1MB 动态存储空间。建议系统内存为 8MB 以上。操作系统适配性:支持 Linux 操作系统(非 uClinux 操作系统),可以 MiniGUI-Processes、MiniGUI-Threads 或者 MiniGUI-Standalone 三种运行模式运行。内建资源支持。可以将 MiniGUI 所使用的资源,诸如位图、图标和字体等编译到函数库中,该特性可提高 MiniGUI 的初始化速度,并且非常适合无文件系统支持的实时嵌入式操作系统。针对嵌入式系统的特殊支持,包括一般性的 I/O 流操作,字节序相关函数等。窗口子系统特性:完备的多窗口机制和消息传递机制。使用 MiniGUI-Threads 运行模式时,可在不同线程中创建主窗口,并支持线程间的消息传递;使用 MiniGUI-Processes 运行模式时,支持完整的多进程窗口系统。对话框和消息框支持。提供常用的控件类,包括静态文本框、按钮、单行和多行编辑框、列表框、组合框、菜单按钮、进度条、滑块、属性页、工具栏、树型控件、月历控件、旋钮控件、酷工具栏、网格控件、动画控件等。其它 GUI 元素,包括菜单、加速键、插入符、定时器等。图形子系统特性:提供有增强 GDI 函数,包括光栅操作、复杂区域处理、椭圆、圆弧、多边形以及区域填充等函数。在提供有兼容于 C99 规范的数学库平台上,还提供有高级二维绘图函数,可设置线宽、线型以及填充模式等。通过 MiniGUI 的图形抽象层及图形引擎技术,也可以让上述高级 GDI 接口在低端显示屏上实现。各种流行图像文件的支持,包括 Windows BMP、GIF、JPEG、PNG等(JPEG 及 PNG的支持通过 libjpeg 及 libpng 函数库提供)。Windows 的资源文件支持,如位图、图标、光标等。多字符集和多字体支持,目前支持 ISO8859-1~ISO8859-15、GB2312、GBK、GB18030、BIG5、EUC-JP、Shift-JIS、EUC-KR、UNICODE(UTF-8、UTF-16编码)等字符集,支持等宽点阵字体、变宽点阵字体、Qt/Embedded 使用的嵌入式字体 QPF、TrueType矢量字体(对 TrueType 的支持通过 freetype 1.3 函数库提供)。输入法支持,用于提供各种可能的输入形式;内建有适合 PC 平台的汉字(GB2312)输入法支持,包括内码、全拼、智能拼音、五笔及自然码等。

  MiniGUI 的技术优势和其它针对嵌入式产品的图形系统相比,MiniGUI 在对系统的需求上具有如下几大优势:可伸缩性强。MiniGUI 丰富的功能和可配置特性,使得它既可运行于 CPU 主频只有 60MHz 的低端产品中,亦可运行于高端嵌入式设备中,并使用 MiniGUI 的高级控件风格及皮肤界面等技术,创建华丽的用户界面。MiniGUI 的跨操作系统特性,使得 MiniGUI 可运行在最简单的嵌入式操作系统之上,如 uC/OS-II,也可以运行在具有现代操作系统特性的嵌入式操作系统之上,如 Linux,而且 MiniGUI 为嵌入式 Linux 系统提供了完整的多窗口图形环境。这些特性,使得 MiniGUI 具有非常强的可伸缩性。可伸缩性是 MiniGUI 从设计之初就考虑且不断完善而来的。这个特性使得 MiniGUI 可应用于简单的行业终端,也可应用于复杂的消费类电子产品。轻型、占用资源少。MiniGUI 是一个定位于轻量级的嵌入式图形库,对系统资源的需求完全考虑到了嵌入式设备的硬件情况,如 MiniGUI 库所占的空间最小可以裁剪到 500K 左右,对目前的嵌入式设备来说,满足这一条件是绰绰有余的。此外,测试结果表明,MiniGUI 能够在 CPU 主频为 30 MHz,仅有 4M RAM 的系统上正常运行(使用 uClinux 操作系统),这是其它针对嵌入式产品的图形系统所无法达到的。高性能、高可靠性。MiniGUI 良好的体系结构及优化的图形接口,可确保最快的图形绘制速度。在设计之初,就充分考虑到了实时嵌入式系统的特点,针对多窗口环境下的图形绘制开展了大量的研究及开发,优化了 MiniGUI 的图形绘制性能及资源占用。MiniGUI 在大量实际系统中的应用,尤其在工业控制系统的应用,证明 MiniGUI 具有非常好的性能。从 1999 年 MiniGUI 的第一个版本发布以来,就有许多产品和项目使用 MiniGUI,MiniGUI 也不断从这些产品或者项目当中获得发展动力和新的技术需求,逐渐提高了自身的可靠性和健壮性。有关 MiniGUI 的最新成功案例,您可以访问飞漫公司网站的典型案例部分。可配置性。为满足嵌入式系统各种各样的需求,必须要求 GUI 系统是可配置的。和 Linux 内核类似,MiniGUI 也实现了大量的编译配置选项,通过这些选项可指定 MiniGUI 库中包括哪些功能而同时不包括哪些功能。大体说来,可以在如下几个方面对 MiniGUI 进行定制配置:指定 MiniGUI 要运行的硬件平台。指定 MiniGUI 要运行的操作系统。指定生成基于线程的 MiniGUI-Threads 运行模式还是基于进程的 MiniGUI-Processes 运行模式,或者只是最简单的 MiniGUI-Standalone 运行模式。指定需要支持的 GAL 引擎和 IAL 引擎,以及引擎相关选项。指定需要支持的字体类型。指定需要支持的字符集。指定需要支持的图像文件格式。指定需要支持的控件类。指定控件和窗口的整体风格,可以通过指定不同的渲染器完成。这些配置选项大大增强了 MiniGUI 的灵活性,对用户来讲,可针对具体的应用需求量体裁衣,开发最适合产品需求的应用软件。总之,将现代窗口和图形技术带入到嵌入式设备的MiniGUI,是一个非常适合于实时嵌入式设备的高效、可靠、可定制、小巧灵活的图形用户界面支持系统,其主要优点可以总结如下:支持多种嵌入式操作系统,具备优秀的可移植性;可伸缩的系统架构,易于扩展;功能丰富,可灵活剪裁;小体积高性能间的最佳平衡;广泛的应用领域。

  MiniGUI V3.0在以前版本的基础上新增了如下新特性:主窗口双缓冲区(Double Buffering Main Window) 当 MiniGUI 3.0 的主窗口具有双缓冲区时,可以在自定义缓冲区中获得整个主窗口的渲染结果。在此基础上,可以利用高级 2D 图形接口或者 3D 图形接口获得主窗口的各种特殊显示效果,如推拉切换、翻页切换、卷曲效果等等。外观渲染器(Look and Feel Renderer)支持。MiniGUI V3.0 改变了以往只支持三种控件风格的方式,引入了渲染器(Look and Feel)这一全新的模式。渲染器是定义如何绘制窗口元素的渲染器,是在MiniGUI V2.0.X的基础上继续完善的。窗口元素包括边框、标题栏、标题栏按钮、滚动条、选定项目、无效项目、高亮项目、突出项目、三维对象等;窗口元素的外观属性,包括窗口元素的颜色、尺寸、字体等信息;窗口元素渲染器是对窗口元素进行定制大小、颜色、图形、字体,便于用户设计个性化的外观显示风格。用户可以指定某个主窗口或某个控件使用特定的渲染器,也可定制非客户区渲染器、窗口元素的尺寸、颜色、字体、图标,同时增强资源管理功能,从而获得更加华丽的图形界面。MiniGUI实现了几种默认整体显示风格:Classic 、Flat、Fashion 和Skin。用户可以在配置 MiniGUI 时指定相应的选项来将 MiniGUI 编译成特定的一种显示风格。Classic: 这种风格的界面是标准的Window 95风格界面,也是最广泛使用的风格了。Fashion: 此种风格的界面,采用 MiniGUI 3.0 组件 mGPlus 提供的颜色渐变填充技术,因此,可获得非常炫丽的界面效果;Flat: 此种风格的窗口界面,线条清晰,简洁,因此适用于单色或者灰度显示屏。因为绘制简单,因此该渲染器占用资源最少,运行速度最快;Skin: 上面三种外观渲染器基本上都是由代码绘制出来的,具有小巧灵活的特点。但是,在嵌入式应用领域,设备的差别非常大。有些设备,已经具备了非常高的运算性能。在这种情况下,可以考虑使用皮肤外观渲染器来美化界面。皮肤外观渲染器需要一整套和界面相关的图片,因此需要占用一些存储资源。皮肤外观渲染器的最大的特点是允许用户定制界面,用户可以使用自己设计的图片替换系统原有的图片,展现在用户面前的就将是你自己设计的界面效果。双向文本(BIDI Text)的显示与输入。大家知道,除了大家熟知的从左向右书写的文字(如英语、汉语等)之外,还有许多语言采用从右向左的书写习惯,如阿拉伯文和希伯来文等。为了支持这些语言,MiniGUI 3.0中增加了对这两种语言所属字符集的处理,并增加了阿拉伯和希伯来键盘布局的支持,从而实现了对双向文本的输入输出处理。阿拉伯文以及希伯来文的显示。不规则窗口。MiniGUI V3.0实现了不规则窗口与控件,可满足用户对窗口外观各种不同的需求。不规则窗口通过一个Region数据结构来表示可见区域,或者通过8位MYBITMAP中的透明值形成不可见区域。字体。在 MiniGUI 3.0 中,飞漫软件发明了一种新的 UNICODE 字体文件格式,称为“UPF”字体。这种字体的最大特点,是便于在多进程环境下使用,从而极大地节约了内存的使用。同时,飞漫软件增强了VBF字体格式,将VBF 字体升级到了3.0,扩大了其能适用的字符集范围,以便支持阿拉伯文等语言文字的显示。其他增强。MiniGUI 3.0实现了桌面的可定制。通过桌面的外部编程接口,用户可以在桌面放置图标并响应桌面事件,实现类似Windows桌面的界面效果。除此之外,MiniGUI 3.0 还增强了透明控件的实现,使之效率更高,且不依赖于控件的内部实现代码。MiniGUI 3.0 还提供独立的滚动条控件,提供统一的虚拟帧缓冲区程序支持等等。另外最新的MiniGUI V3.0新增加了两个新的组件:mGUtils和mGPlus,把字体、位图、图标、光标等资源进行统一管理,资源的内嵌和非内嵌方式并不影响模块的组成,由此抽象出系统资源管理模块。

  运行模式

  和 Linux 这样的类 UNIX 操作系统相比,一般意义上的传统嵌入式操作系统具有一些特殊性。举例而言,诸如 uClinux、uC/OS-II、eCos 等操作系统,通常运行在没有 MMU(内存管理单元,用于提供虚拟内存支持)的 CPU 上;这时,往往就没有进程的概念,而只有线程或者任务的概念,这样,MiniGUI 的运行环境也就大相径庭。因此,为了适合不同的操作系统环境,可将 MiniGUI 配置成三种不同的运行模式:

  MiniGUI-Threads运行在 MiniGUI-Threads 上的程序可以在不同的线程中建立多个窗口,但所有的窗口在一个进程或者地址空间中运行。这种运行模式主要用来支持大多数传统意义上的嵌入式操作系统,比如 VxWorks 、ThreadX、Nucleus、OSE、pSOS、uC/OS-II、eCos等等。当然,在 Linux 和 uClinux 上,MiniGUI 也能以 MiniGUI-Threads 的模式运行。

  MiniGUI-Processes和 MiniGUI-Threads相反,MiniGUI-Processes 上的每个程序是单独的进程,每个进程也可以建立多个窗口,并且实现了多进程窗口系统。MiniGUI-Processes 适合于具有完整 UNIX 特性的嵌入式操作系统,比如嵌入式 Linux。该运行模式在 MiniGUI V2.0 中提供。

  MiniGUI-Standalone这种运行模式下,MiniGUI 可以以独立任务的方式运行,既不需要多线程也不需要多进程的支持,这种运行模式适合功能单一的应用场合。比如在一些使用 uClinux 的嵌入式产品中,因为各种原因而缺少线程支持,这时,就可以使用 MiniGUI-Standalone 来开发应用软件。一般而言,MiniGUI-Standalone 模式的适应面最广,可以支持几乎所有的操作系统(目前只用来提供对 Linux/uClinux 操作系统的支持);MiniGUI-Threads 模式的适用面次之,可运行在支持多任务的实时嵌入式操作系统,或者具备完整 UNIX 特性的普通操作系统;MiniGUI-Processes 模式的适用面较小,它仅适合于具备完整 UNIX 特性的嵌入式操作系统,比如 Linux。但不论采用哪种运行模式,MiniGUI 为上层应用软件提供了最大程度上的一致性;只有少数几个涉及初始化的接口在不同运行模式上有所不同。

  软件架构

  MiniGUI 由如下几个模块组成:MiniGUI软件架构图

  图形抽象层(Graphics Abstraction Layer,GAL)。图形抽象层将来自不同操作系统或设备的图形接口进行抽象,为 MiniGUI 上层提供统一的图形接口。在图形抽象层内,包含有针对 Linux FB 设备、eCos LCD 设备等的软件组成部分。这些软件组成部分通过调用底层设备的接口来实现具体的图形抽象层操作,如打开设备、设置分辨率及显示模式、关闭设备等。将这些用于适配图形抽象层接口的软件组成部分称为“引擎(engine)”,其概念和操作系统中的设备驱动程序类似。

  输入抽象层(Input Abstraction Layer,IAL)。和 GAL 类似,输入抽象层将 MiniGUI 涉及的所有输入设备,如键盘(keyboard)、小键盘(keypad)、鼠标(mouse)、触摸屏(touch screen)等抽象了出来,为上层提供一致的接口。要支持不同的键盘、触摸屏或者鼠标接口,则通过为 IAL 编写不同的输入引擎实现。MiniGUI 通过 IAL 及其输入引擎,提供对 Linux 控制台(键盘及鼠标)、触摸屏、遥控器、小键盘等输入设备的支持。

  图形设备接口(Graphics Device Interfaces,GDI)。该模块基于图形抽象层为上层应用程序提供图形相关的接口,如绘制曲线、输出文本、填充矩形等等。图形设备接口中含包含其他比较独立的子模块,如字体字符集(font and charset)支持、图像(image)支持等。

  消息处理模块(Messaging Module)。该模块在输入抽象层基础上,实现了 MiniGUI 的消息处理机制,为上层提供了完备的消息管理接口。众所周知,几乎所有的GUI 系统本质上都是事件驱动的,系统自身的运行,以及GUI 应用程序的运行,都依赖于消息处理模块。

  多窗口处理模块和控件(Windowing Module)和(Control 或 Widget)。基于图形设备接口和消息处理模块,MiniGUI 实现了多窗口处理模块。该模块为上层应用程序提供了创建主窗口和控件的基本接口,并负责维护控件类。控件类是用来实现控件代码重用的重要概念,利用控件类(control class),可以创建属于某个控件类的多个控件实例(instance),从而让这些控件实例使用同一个控件类的代码,这样,就实现了类似 C++ 那样的类和实例概念,从而可以最大程度上重复利用已有代码,并提高软件的可维护性。MiniGUI 的控件模块实现了常见的 GUI 控件,如静态框、按钮、编辑框、列表框、下拉框等等。

  外观支持(Look and Feel)。这个模块是 MiniGUI V3.0 提供给上层应用程序的接口,可用来定制 MiniGUI 窗口、控件的绘制。在 MiniGUI V3.0 之前的版本中,对主窗口和控件的定制能力,还没有被抽离出来形成独立的模块,但仍然可以通过配置选项让 MiniGUI 的主窗口、控件具有三种显示风格,分别是:类似 PC 的三维风格(PC3D )、平板风格(FLAT)、流行风格(FASHION)。在 MiniGUI 3.0 中,主窗口和控件的外观可完全由应用程序自行定制,在创建主窗口或者控件时,指定外观渲染器(renderer)的名称,就可以让主窗口或者控件具有各自不同的外观。在 MiniGUI 核心(Core)接口之上,还为应用程序提供若干组件,这些组件分别为应用程序提供某些特殊的功能特性:mGi是 MiniGUI 的输入法组件,该组件目前提供了软键盘输入法和手写输入法框架,并提供给用户管理输入法的容器,通过这个容器,用户还可以添加自定义的输入法。mGp 是针对 MiniGUI 应用程序的一个打印组件,该组件使用户的 MiniGUI 程序具有打印输出功能,可以将 MiniGUI 程序中的位图或文字输出到打印机。mG3d 是一个为 MiniGUI 的应用程序提供 3D 接口的组件,通过这些接口,用户可以给自己的应用程序添加三维图像、文字渲染、场景渲染等效果,从而可以具有三维效果的人机界面。mGUtils 组件为用户提供了一些常用的对话框模板,有了这些模板,用户就不用为一些常用的功能编写重复代码了。本组件提供的功能模板有:普通文件对话框、颜色设置对话框、字体设置对话框、信息设置对话框等。mGPlus 组件是对 MiniGUI 图形绘制接口的一个扩充和增强,主要提供对二维矢量图形和高级图形算法的支持,如路径、渐变填充和颜色组合等。mGEff 组件提供常规的页面特效支持。

  minigui3.0.12之初体验-移植篇

  在一年多年前有幸接触使用到minigui一段时间,当时使用的应该是1.6版本,硬件平台使用的是s3c2440+64M内存,界面上做了很多功能,但整体运行还是十分流畅,我想要是换成QT在上面跑流畅度应该是比不上minigui的了;前段时间从朋友那拿到一块基于新塘nuc972的板子用来玩玩学习下,nuc972也是一颗基于arm926内核的soc,我想让人喜欢它的地方应该要是它内置了64M的DDR和LQFP的封装吧,硬件配置总体上和s3c2440相当,然后还配了一块800x480的七寸屏,我想用它来跑跑minigui应该会比较合适,也正好看看minigui3.0x更新的新特性。

  备料

  准备编译环境和交叉编译器,最好能用它编译一个最简单打印一句“hello world!”的小程序在板子上正常跑起来确保整个编译环境的正确;

  下载minigui源码,它最基本的组成包括核心库MiniGUI Core Lib (V3.0.12 )和资源文件MiniGUI Resource (V3.0.12)这些多可以从minigui官方网站上下载到,另我这边这个两个文件是从nuc972的bsp包里得到的,它和从官网上下载的唯一区别是,它里面移植好了使用了nuc972的2D硬件加速功能的图像引擎,也就是说可以配置使用nuc972的硬件2D图像加速功能,貌似也只使用到了里面的BitBlt功能,画线这些基本操作还是由minigui来实现的,然而后面当我启用这个功能的时候屏幕颜色显示不对,还没去深究就先使用通用的FrameBuffer图像引擎了。

  有了跑minigui的核心资源了,那再跑个demo看看吧,这里选择官网提供的iPhoneLikeDemo 后面发现运行它还需要用到jpeg和png库,这个两个也多可以在官网的下载界面的Tools and Dep. Libraries项里找到。

  编译

  一、核心库的编译

  使用tar命令解压libminigui-gpl-3.0.12.tar.gz并cd进入;

  使用configure脚本来配置minigui特性,这里执行如下命令:

  。/configure --prefix=$PWD/。./build CC=arm-linux-gcc --host=arm-linux --build=i386-linux --with-osname=linux --with-targetname=fbcon

  --disable-pcxvfb --enable-videonuc970 --enable-videofbcon --enable-autoial --disable-vbfsupport

  --disable-screensaver --enable-tslibial --enable-procs

  其中--enable-videonuc970表示加入nuc92的硬件图形引擎支持,之后可在配置文件中选择使用;--enable-tslibial表示支持tslib作为IAL输入引擎;--enable-procs表示使minigui运行在procs模式,关于minigui的三种运行模式可参考官方文档;

  配置成功后,执行make命令,等待编译完成无误后再执行make install命令即可由--prefix=xxx指定的路径下发现minigui的安装文件,把它们拷贝到rootfs对于的目录下即可。

  修改etc目录下的MiniGUI.cfg配置文件,首先我们要修改指定我们使用的图像引擎为fbcon然后将其分辨率信息设置我们板子对应的分辨率如下:

  # GAL engine and default options

  gal_engine=fbcon

  defaultmode=800x480-16bpp

  第二个需要配置的为输入引擎IAL这里我们使用tslib作为我们的输入引擎即如下:

  # IAL engine

  ial_engine=tslib

  mdev=/dev/input/event0

  mtype=IMPS2

  还有要修改的地方就是配置正确的资源文件路径,如光标图片资源等,如下:

  [cursorinfo]

  #Edit following line to specify cursor files path

  cursorpath=/share/minigui/res/cursor/

  [resinfo]

  respath=/share/minigui/res/

  Tips:

  1. 在官方下载的源码中将不支持--enable-videonuc970选项可去掉;

  2. 可通过命令。/configure --help来查看支持的所有选项和含义。

  3. 实际上如果我要跑官网上的demo的话还要打开对png图片的支持,配置时这项默认是关闭的,可加入参数--enable-pngsupport但实际上我发现即使添加上这个也是还没打开对png图片的支持,这一点可以通过打开mgconfig.h文件来确认配置是否生效,如果没有可手工将里面对于的宏打开即可,如png图片支持对于的宏为#define _MGIMAGE_PNG 1

  二、编译资源文件

  资源文件的编译相对简单,里面主要是包含一些图片资源等,如光标样式,使用tar命令解压minigui-res-be-3.0.12.tar.gz并cd进入,然后使用configure脚本配置安装路径执行如下命令:

  。/configure --prefix=$PWD/。./build

  然后执行make和make install即可,相关资源就会被安装到了上级目录的build目录下,既对应着在rootfs下的相应目录。

  三、编译依赖的库文件

  1、jpeg库的编译

  同样使用configure脚本配置编译,执行命令如下:

  。/configure --prefix=$PWD/build CC=arm-linux-gcc --host=arm-linux --build=i386-linux --enable-shared --enable-static

  其中--enable-shared是为了配置生成.so即共享库

  然后执行make和make install命令后即可在当前目录下的build/lib下找到我们需要的文件了。

  Tips:

  1、步骤1的配置命令通常适用于大多数使用Autoconf/Automake来生成的工程;

  2、注意使用和minigui核心库匹配的jpeg库版本,如果不确定通常程序运行时它会发出错误说找不到对应版本的库文件;

  3、以上配置编译命令适用于较新的jpeg库如在jpeg-7上配置编译是通过的,然而在配置编译配置jpeg-6b时却发生了错提示如下:

  make: 。/libtool: Command not found

  原来较老的jpeg库没有自带libtool,这里要先下载交叉编译libtool-2.2.4配置命令如下:

  。/configure --prefix=$PWD/build CC=arm-linux-gcc --host=arm-linux --build=i386-linux

  然后make & make install即可;

  4、编译好libtool后将build/bin目录下的libtool脚本拷贝至jpeg-6b的目录下,然后先要手动创建好接下来要安装的目录命令如下:

  mkdir -p build/bin build/include build/lib build/man/man1

  之后再执行make & make install命令即可在build/lib目录下找到我们需要的共享库了。

  2、png库的编译

  编译配置方法同编译jpeg库,无特别注意事项。

  三、编译iphone-like-demo

  它同样是使用Autoconf/Automake来配置的工程,所以我们解压它并cd进入使用如下命令来配置它

  。/configure --prefix=$PWD/。./build CC=arm-linux-gcc --host=arm-linux --build=i386-linux CFLAGS=-I$PWD/。./build/include

  LDFLAGS=“-L$PWD/。./build/lib” LIBS=“-lminigui_procs -lts -ljpeg -lpng -lz -ldl -lm -lpthread”

  其中CFLAGS参数指定了minigui的头文件路径,LDFLAGS指定了要链接的动态链接库路径,LIBS指定了要链接的动态链接库,尽管我们这样指定了minigui的头文件路径但是编译过程中它还是有提示报错说找不到相应的minigui的头文件路径,这时我们为了简单只需将minigui的头文件手动的拷贝到其-I指定的路径下即可,这里我们将minigui的头文件拷贝到编译的当前路径下即可;

  编译中会遇到很多报错,我们只需依次解决下即可,如

  eblistview.c:(.text+0x40): undefined reference to `rindex‘

  我们打开eblistview.c这个文件在文件头部添加如下代码

  #define rindex strrchr

  即用strrchr这个接口来代替rindex这个接口;

  一般来说不会有其他很严重的报错,我们多可以依次解决,直到make完成,然后make install后即可在上层build目录下的bin文件夹下生成我们的执行程序;

  然后将build目录下的lib文件夹下的库文件拷贝至板子上的lib文件夹下,之后想办法将bin文件夹的东西拷贝至板子上或通过网线挂载的方式,进入执行。/mginit即可。

查看详情

minigui知识

展开查看更多

minigui技术

Tina Linux图形系统开发指南

Tina Linux图形系统开发指南

本文档将介绍 Allwinner Tina Linux 中已经移植好的窗口系统,以及怎么使用,包括 MiniGUI、QT5、EFL、GTK+(Webki...

2023-03-06 标签:MiniGUILinux图形 3034 0

你知道嵌入式Linux系统的MiniGUI研究和移植?

你知道嵌入式Linux系统的MiniGUI研究和移植?

随 着嵌入式系统的广泛应用,PDA、机顶盒、DVD/VCD播放机及WAP手机已经迅速普及。图形用户界面(GUI)的广泛流行,是当今计算机技术的重大成 就之一。

2019-04-25 标签:MiniGUILinux 967 0

基于嵌入式Linux系统下Mini GUI的移植方法与过程详解

近几年,嵌入式 Linux 系统已得到广泛的应用,相应的图形用户界面的开发也日趋重要,MiniGUI正是其中的一个轻量级的图形用户界面支持系统。本文分析...

2018-09-12 标签:嵌入式MiniGUILinux 3627 0

MiniGUI与嵌入式系统的关系 MiniGUI移植的过程

MiniGUI与嵌入式系统的关系 MiniGUI移植的过程

,MiniGUI是分层设计的,层次结构如图2所示。在底层,GAL和IAL为MiniGUI提供了底层的Linux控制台或者X Window上的图形接口以及...

2018-03-30 标签:嵌入式minigui 4860 0

一种基于MiniGUI的GPS导航定位系统设计与实现

一种基于MiniGUI的GPS导航定位系统设计与实现

定位系统自问世后便得到了蓬勃发展,其应用已渗入到各行各业。个人消费领域引领移动定位类型科技产品集中涌现,其他领域和行业也有大量技术更新。目前各领域的定位...

2017-11-30 标签:miniguigpss3c2410 1614 0

魏永明: MiniGUI的涅槃重生之路

MiniGUI是最负盛名的开源Linux图形用户界面支持系统之一。本文是魏永明老师于公元2017年9月1日最新原创的讨论MiniGUI的涅槃重生之路的文章。

2017-09-04 标签:开源软件MiniGUILinux 1.9万 0

查看更多>>

minigui资讯

锗对氮化硅中红外集成光子学的波导

锗对氮化硅中红外集成光子学的波导

在中红外波长下,演示了一种具有大纤芯-包层指数对比度的锗基平台——氮化硅锗波导。仿真验证了该结构的可行性。这种结构是通过首先将氮化硅沉积的硅上锗施主晶片...

2021-12-16 标签:MiniGUI量子物理学 1474 0

盘点嵌入式的那些常见GUI:emWin、TouchGFX、MiniGUI、Qt等

盘点嵌入式那些常见的GUI:emWin、TouchGFX、MiniGUI、Qt等

2020-02-05 标签:MiniGUIGUIemWin 9518 0

在嵌入式系统上的MiniGUI应用开发过程详解

为目标嵌入式产品选择适合的嵌入式图形支持系统成为与选择嵌入式操作系统一样颇具挑战性。本土公司开发的MiniGUI是一个高效、可靠、可定制、小巧灵活的图形...

2018-12-26 标签:嵌入式系统MiniGUI 3252 0

AllWinner+MiniGUI推进物联网产品化的发展浪潮

全志科技与飞漫公司达成合作,在智能硬件领域共同推动Tina Linux+MiniGUI系统的平台生态建设,加速智能家居和智能家电产品的开发和普及。

2018-01-11 标签:Minigui物联网linux 5094 0

怎样设计实现一个基于嵌入式Linux和MiniGUI的SIP电话终端的方案?

怎样设计实现一个基于嵌入式Linux和MiniGUI的SIP电话终端的方案?

为了实现这两个条件,在程序实现中使用了写指针和读指针来判断缓冲区是空还是满。在初始化时读指针和写指针为0;如果读指针等于写指针,则缓冲区是空的;如果(写...

2018-07-18 标签:嵌入式miniguisip 1637 0

基于MiniGUI的GPS自动定位系统设计

基于MiniGUI的GPS自动定位系统设计

基于GPS的卫星定位技术,可以将移动目标的动态位置(包括经度和纬度)、时间、状态等信息通过无线通信链路实时传送到监控中心,从而在电子地图上显示出移动终端...

2012-05-08 标签:MiniGUIGPSLPC2103 1608 0

基于MiniGUI的数字加密电话系统GUI设计

基于MiniGUI的数字加密电话系统GUI设计

本文详细地描述了基于MiniGUI的嵌入式系统用户界面关键问题的解决方案,即无抖动动画的实现方案和功能选择界面闪烁问题的解决方案。

2011-08-20 标签:MiniGUIGUI数字加密 1336 0

MINIGUI在S3C2410开发板的移植

本文讲解基于 Linux 和 MiniGUI 的嵌入式系统软件开发,其内容不仅仅限于 MiniGUI 的编程,还会涉及到一些 Linux 下嵌入式系统软...

2011-05-16 标签:MINIGUI移植S3C2410 1384 0

MiniGUI在基于OMAP5912开发板上的移植

MiniGUI在基于OMAP5912开发板上的移植

MiniGUI在基于OMAP5912开发板上的移植  0 引 言   随着嵌入式的飞速发展,以ARM为硬件平台和以Linux为软件平台的方式受到广...

2010-02-23 标签:MiniGUIOM 1257 0

基于ARM-Linux的MiniGUI的仿真与移植

基于ARM-Linux的MiniGUI的仿真与移植 近几年,随着嵌入式系统的日益发展和32位嵌入式处理器以及图形显示设备的广泛应用,目标产品对GUI(...

2009-12-16 标签:MiniGUI仿真 1505 0

查看更多>>

minigui数据手册

相关标签

相关话题

换一批
  • 深度学习
    深度学习
    +关注
  • 工业4.0
    工业4.0
    +关注
    工业4.0是由德国政府《德国2020高技术战略》中所提出的十大未来项目之一。该项目由德国联邦教育局及研究部和联邦经济技术部联合资助,投资预计达2亿欧元。旨在提升制造业的智能化水平,建立具有适应性、资源效率及基因工程学的智慧工厂,在商业流程及价值流程中整合客户及商业伙伴。
  • 英伟达
    英伟达
    +关注
    Nvidia 是全球图形技术和数字媒体处理器行业领导厂商,NVIDIA的总部设在美国加利福尼亚州的圣克拉拉市,在20多个国家和地区拥有约5700名员工。公司在可编程图形处理器方面拥有先进的专业技术,在并行处理方面实现了诸多突破。公司创立于1993年1月,总部位于美国加利福尼亚州圣克拉拉市。
  • BeagleBone
    BeagleBone
    +关注
  • mbed
    mbed
    +关注
  • 无人机技术
    无人机技术
    +关注
    以无人驾驶来说,城市中将建造一个巨大的交通共享网,只要拿出手机就能随时呼叫无人驾驶汽车服务;交警能精准判断每一辆汽车去向,更有效地管理交通……
  • LD3320
    LD3320
    +关注
  • OpenWrt
    OpenWrt
    +关注
    OpenWrt 可以被描述为一个嵌入式的 Linux 发行版。(主流路由器固件有 dd-wrt,tomato,openwrt,padavan四类)对比一个单一的、静态的系统,OpenWrt的包管理提供了一个完全可写的文件系统,从应用程序供应商提供的选择和配置,并允许您自定义的设备,以适应任何应用程序。
  • ARM架构
    ARM架构
    +关注
    ARM架构过去称作进阶精简指令集机器(Advanced RISC Machine,更早称作:Acorn RISC Machine),是一个32位精简指令集(RISC)处理器架构,其广泛地使用在许多嵌入式系统设计。
  • DragonBoard 410c
    DragonBoard 410c
    +关注
    Qualcomm最新的“龙板”——Qualcomm DragonBoard 410c,是一枚功能极为强大,身材特别小巧的开发板,它集成了目前最流行的智能手机处理能力,帮您实现对各种智能硬件的天马行空想象。您可以研用“龙板”实现高清视频、Wi-Fi/蓝牙、多媒体、3D游戏等各项功能。
  • OpenCL
    OpenCL
    +关注
    OpenCL是一个为异构平台编写程序的框架,此异构平台可由CPU,GPU或其他类型的处理器组成。OpenCL由一门用于编写kernels (在OpenCL设备上运行的函数)的语言(基于C99)和一组用于定义并控制平台的API组成。
  • 嵌入式操作系统
    嵌入式操作系统
    +关注
    嵌入式操作系统(Embedded Operating System,简称:EOS)是指用于嵌入式系统的操作系统。嵌入式操作系统是一种用途广泛的系统软件,通常包括与硬件相关的底层驱动软件、系统内核、设备驱动接口、通信协议、图形界面、标准化浏览器等。
  • Windows CE
    Windows CE
    +关注
     Windows Embedded Compact(即 Windows CE)是微软公司嵌入式、移动计算平台的基础,它是一个开放的、可升级的32位嵌入式操作系统,是基于掌上型电脑类的电子设备操作系统。
  • JDI
    JDI
    +关注
    JDI(Java Debug Interface)是 JPDA 三层模块中最高层的接口,定义了调试器(Debugger)所需要的一些调试接口。基于这些接口,调试器可以及时地了解目标虚拟机的状态,例如查看目标虚拟机上有哪些类和实例等。
  • NFS
    NFS
    +关注
      网络文件系统,英文Network File System(NFS),是由SUN公司研制的UNIX表示层协议(presentation layer protocol),能使使用者访问网络上别处的文件就像在使用自己的计算机一样。
  • 麒麟960
    麒麟960
    +关注
    麒麟960(kirin 960)是海思半导体有限公司推出的新一代移动设备芯片,麒麟960首次配备ARM Cortex-A73 CPU核心,小核心为A53,组成四大四小的big.LITTLE组合,GPU为Mali G71 MP8。
  • tizen
    tizen
    +关注
  • SiliconLabs
    SiliconLabs
    +关注
  • X86架构
    X86架构
    +关注
  • uCOS II
    uCOS II
    +关注
  • ARM公司
    ARM公司
    +关注
    ARM公司是一家知识产权(IP)供应商,它与一般的半导体公司最大的不同就是不制造芯片且不向终端用户出售芯片,而是通过转让设计方案,由合作伙伴生产出各具特色的芯片。
  • 米尔科技
    米尔科技
    +关注
    米尔是一家专注于ARM嵌入式软硬件开发的高新技术企业。在以客户为中心的指引下,米尔为嵌入式领域客户提供专业的ARM工业控制板、ARM核心板、ARM开发工具、充电桩计费控制单元及充电控制板等产品和技术服务。
  • 数字电子钟
    数字电子钟
    +关注
  • A6处理器
    A6处理器
    +关注
  • 大联大友尚
    大联大友尚
    +关注
  • YunOS
    YunOS
    +关注
  • OpenStack
    OpenStack
    +关注
    OpenStack是一个开源的云计算管理平台项目,是一系列软件开源项目的组合。由NASA(美国国家航空航天局)和Rackspace合作研发并发起,以Apache许可证(Apache软件基金会发布的一个自由软件许可证)授权的开源代码项目。
  • MMU
    MMU
    +关注
    MMU是中文名是内存管理单元,有时称作分页内存管理单元,它是一种负责处理中央处理器(CPU)的内存访问请求的计算机硬件。它的功能包括虚拟地址到物理地址的转换(即虚拟内存管理)、内存保护、中央处理器高速缓存的控制,在较为简单的计算机体系结构中,负责总线的仲裁以及存储体切换。
  • 马云
    马云
    +关注
  • OMAPL138
    OMAPL138
    +关注
    OMAP-L138是美国德州仪器(TI)推出全新DSP+ARM工业处理器 ,这款芯片也是业界功耗最低的浮点数字信号处理器 (DSP) + ARM9处理器,大大降低了双核通讯的开发难度,可充分满足工业应用的高能效、连通性设计对高集成度外设、更低热量耗散以及更长电池使用寿命的需求。

关注此标签的用户(5人)

雪胤冰锋 ambulator huanghl365 夜光心 qq独步飞舞

编辑推荐厂商产品技术软件/工具OS/语言教程专题