MiniGUI 2.0.4/1.6.10常见问题及解答之一般性技术问题

来源:互联网 发布:网络新媒介有哪些 编辑:程序博客网 时间:2024/05/09 23:05

1 MiniGUI 可以运行在哪些操作系统之上?

1.1 较短回答

MiniGUI 可以在 Linux、uClinux、VxWorks、ThreadX、eCos、Nucleus、uC/OS-II、pSOS、OSE 等操作系统以及 Win32 平台之上运行。 同时,在不同操作系统上的 MiniGUI,提供完全兼容的 API 接口。

1.2 较长回答

理论上,MiniGUI 可以运行在任意一个支持多任务的嵌入式操作系统上;目前已经过验证的操作系统包括Linux/uClinux、!VxWorks、eCos、uC/OS- II、pSOS、!ThreadX、Nucleus 和 OSE。MiniGUI 也可以在 Win32 平台上运行。同时,在不同操作系统上的 MiniGUI,提供完全兼容的 API 接口。在 Win32 平台上运行 MiniGUI,可帮助开发人员在 Windows 环境下设计 MiniGUI 的应用程序界面,从而提高开发效率。

1.3 完整回答

为什么 MiniGUI 能够在如此众多的嵌入式操作系统上运行?这是因为 MiniGUI 具有良好的软件架构,通过抽象层将 MiniGUI 上层和底层操作系统隔离开来。如下图所示,基于 MiniGUI 的应用程序一般通过 ANSI C 库、操作系统和驱动程序接口以及 MiniGUI 自身提供的 API 来实现自己的功能;MiniGUI 中的“可移植层”可将特定操作系统及底层硬件的细节隐藏起来,而上层应用程序则无需关心底层的硬件平台输出和输入设备。

另外,MiniGUI 特有的运行模式概念,也为跨操作系统的支持提供了便利。

如前所述,和 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、!VxWorks 6 等 。该运行模式在 MiniGUI V2.0.3 中提供。

 

  • MiniGUI-Standalone。这种运行模式下,MiniGUI 可以以独立任务的方式运行,既不需要多线程也不需要多进程的支持,这种运行模式适合功能单一的应用场合。比如在一些使用 uClinux 的嵌入式产品中,因为各种原因而缺少线程支持,这时,就可以使用 MiniGUI-Standalone 来开发应用软件。

一般而言,MiniGUI-Standalone 模式的适应面最广,可以支持几乎所有的操作系统 ;MiniGUI-Threads 模式的适用面次之,可运行在支持多任务的实时嵌入式操作系统,或者具备完整 UNIX 特性的普通操作系统;MiniGUI-Processes 模式的适用面较小,它仅适合于具备完整 UNIX 特性的嵌入式操作系统,比如 Linux 和 VxWorks 6。

但不论采用哪种运行模式,MiniGUI 为上层应用软件提供了最大程度上的一致性;只有少数几个涉及初始化的接口在不同运行模式上有所不同。

下表给出了 MiniGUI V2.0.x 和 V1.6.x 在各操作系统上可支持的运行模式。

操作系统 MiniGUI 版本 所支持的运行模式 Linux MiniGUI V2.0.x MiniGUI-Processes
MiniGUI-Threads
MiniGUI-Standalone Linux MiniGUI V1.6.x MiniGUI-Lite
MiniGUI-Threads
MiniGUI-Standalone uClinux MiniGUI V1.6.x MiniGUI-Threads
MiniGUI-Standalone VxWorks 6.x MiniGUI V2.0.x MiniGUI-Processes
MiniGUI-Threads VxWorks 6.x MiniGUI V1.6.x MiniGUI-Threads VxWorks 5.x MiniGUI V1.6.x MiniGUI-Threads ThreadX MiniGUI V1.6.x MiniGUI-Threads Nucleus MiniGUI V1.6.x MiniGUI-Threads OSE MiniGUI V1.6.x MiniGUI-Threads eCos MiniGUI V1.6.x MiniGUI-Threads uC/OS-II MiniGUI V1.6.x MiniGUI-Threads pSOS MiniGUI V1.6.x MiniGUI-Threads Win32 MiniGUI V1.6.x MiniGUI-Threads

 

2 MiniGUI 支持的硬件平台有哪些?

2.1 较短回答

理论上讲,MiniGUI 的运行和具体的硬件平台无关;只要某个硬件平台上运行有 MiniGUI 所支持的某个操作系统,MiniGUI 就能在这个平台上运行。

2.2 较长回答

MiniGUI 已验证可支持的 CPU 体系架构包括 x86、ARM、PowerPC、MIPS 等。已验证可运行 MiniGUI 的具体 CPU 包括 Intel x86、ARM(ARM7/ARM9/StrongARM/xScale/MX1)、PowerPC、MIPS、M68K (DragonBall/ColdFire)、富士通 FRV 等。

2.3 完整回答

理论上讲,MiniGUI 的运行和具体的硬件平台无关;只要某个硬件平台上运行有 MiniGUI 所支持的某个操作系统,MiniGUI 就能在这个平台上运行。MiniGUI 已验证可支持的 CPU 体系架构包括 x86、ARM、PowerPC、MIPS 等。已验证可运行 MiniGUI 的具体 CPU 包括 Intel x86、ARM(ARM7/ARM9/StrongARM/xScale/MX1)、PowerPC、MIPS、M68K (DragonBall/ColdFire)、富士通 FRV 等。已支持的典型嵌入式开发板包括:PC104、Intel DMG、Sigma Designs RealMagic? EM85xx/EM86XX、S3C2410、S3C2440 开发板等等。

 

3 MiniGUI 本身占用多少内存?

3.1 较短回答

MiniGUI 本身占用不到 2MB 的内存空间。

3.2 较长回答

MiniGUI 占用的内存和您在配置 MiniGUI 时使用的选项有关,也和 MiniGUI 配置文件中指定的运行时资源的装载量有关。如果使用最小的资源装载量,在使用 uClinux 或者其他实时嵌入式操作系统时,MiniGUI 可以在只有 4MB 内存的系统上运行。如果使用 Linux 内核 2.2 或者 2.4,这个内存需求要增加 2MB。

3.3 完整回答

4 MiniGUI 占用多少存储空间?

4.1 较短回答

MiniGUI 的代码部分占用 700KB 到 1.2MB 的空间,具体取决于编译时的配置选项,其他的部分所占用空间主要有字体等等。一个典型的中文GB2312 12 点阵字体的大小大概不到 300KB。

4.2 较长回答

MiniGUI 的函数库和资源所占用的存储空间与您在配置 MiniGUI 时使用的选项有关,也和 MiniGUI 配置文件中指定的运行时资源的装载量有关,而影响资源大小的关键是字体资源。在使用较小字体资源的情况下,MiniGUI 的函数库和资源占用的存储空间小于 2MB。每使用一款多字节字符集的字体(比如中文简体、日文或者韩文字体),平均要增加 200KB 到 600KB 的空间。

4.3 完整回答

5 MiniGUI 可以直接移植到各种嵌入式板子上吗?

 

 

5.1 较短回答

虽然 MiniGUI 已经可以在某个操作系统上运行了,但因为具体的开发板配置可能有所不同,要将 MiniGUI 运行在这些板子上,还需要做一些具体的开发工作,比如开发针对开发板的输入引擎等。飞漫软件收取的移植费用就指这部分开发费用。但用户也可以自行完成相关的开发工作。

5.2 较长回答

嵌入式硬件系统不像PC那样具有工业界认可的统一标准,因此,其外设配置千差万别。比如手机,虽然运行的操作系统都是一样的,但有的手机配备有触摸屏,而有的手机没有。要将 MiniGUI运行在这些不同的手机上,就需要专门为不同的硬件配置编写对应的类似驱动程序一样的东西,以便 MiniGUI 可以适应不同的硬件配置。这种移植过程类似针对具体开发板的定制工作,用户在购买了针对某个操作系统的 MiniGUI 增值版产品后,也可以参照配套的《移植指南》文档自行完成这种定制工作。如果需要飞漫软件帮您完成,则需要收取相应的移植费用。

5.3 完整回答

理论上讲,MiniGUI 可以支持几乎所有的实时嵌入式操作系统。目前,MiniGUI 支持大概 10 种嵌入式操作系统,其中包括 Linux、uClinux、VxWorks、ThreadX、eCos、uC/OS-II、OSE、Nucleus、pSOS 等等。如果要将 MiniGUI 运行在某个新的操作系统之上,我们还需要针对该操作系统完成一些基本的移植工作。这部分移植工作的难度比较大,所以费用相对较高。如果您的开发板已经运行有 MiniGUI 支持的某个操作系统,则这部分移植工作就不用再做了。但是,嵌入式硬件系统不像PC那样具有工业界认可的统一标准,因此,其外设配置千差万别。比如手机,虽然运行的操作系统都是一样的,但有的手机配备有触摸屏,而有的手机没有。要将 MiniGUI运行在这些不同的手机上,就需要专门为不同的硬件配置编写对应的类似驱动程序一样的东西,以便 MiniGUI 可以适应不同的硬件配置。这种移植过程类似针对具体开发板的定制工作。也就是说,要将 MiniGUI 运行在某个板子上,涉及到两类移植工作,一类是到对应操作系统上的移植,一类是到对应开发板上的移植。针对操作系统的移植工作,因为技术难度大,用户很难自行完成,因此,这类工作一般由飞漫软件完成;而针对开发板的移植,在购买了针对某个操作系统的 MiniGUI 增值版产品后,用户可参照配套的《移植指南》文档自行完成。如果需要飞漫软件帮您完成,则需要收取相应的移植费用。

6 MiniGUI 开发的实用应用程序的参考模型吗?

6.1 较短回答

可以的。

6.2 较长回答

目前MiniGUI给出的例子相对简单,只能验证简单的功能,而不是一个产品的原型。我们可以将一些项目案例给贵方参考。我们将使用漂亮的风格做一个综合性强一点,漂亮一点的mgDemo出来。

7 MiniGUI可以不需要数学库的支持吗?

7.1 较短回答

是可以的。

7.2 较长回答

在configure 的时候 --disable-adv2dapi 就可以了,这样就不需要数学库的支持了,也就没有了高级2D图形API。

8 MiniGUI可以使用矢量字库吗?

8.1 较短回答

是可以的。

8.2 较长回答

MiniGUI对矢量字体的支持,在默认配置中是关闭的。在configure的时候要,--enable-ttfsupport,这样如果有矢量字体库的情况下就是在线程版中使用了。如果没有矢量字库,需要到http://sourceforge.net/project/showfiles.php?group_id=3157 下载,MiniGUI使用的是,Ture Tpye font 1,,

在进程版中的使用,需要使用:

#ifdef _MGRM_PROCESSESJoinLayer(NAME_DEF_LAYER , "helloworld" , 0 , 0);if (!InitVectorialFonts ()) {        printf ("InitVectorialFonts: error./n");        exit (2);}#endif

#ifdef _MGRM_PROCESSESTermVectorialFonts ();#endif

详细例子在mde/fontdemo/fontdemo.c中。

9 MiniGUI在Windows环境中WVFB的大小是否可以改变

9.1 较短回答

可以修改。

9.2 较长回答

要修改src/sysres/mgetc-win32.c这个为修改MiniGUI定义屏幕的大小,再修改WVFB的配置文件修改成你所需要的大小。

-- FeynmanHejian - 20 Feb 2009

原创粉丝点击