⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 基于 linux 和 minigui 的嵌入式系统软件开发指南(一).htm

📁 详细的介绍了minigui的原理及其在linux上的实现.
💻 HTM
📖 第 1 页 / 共 3 页
字号:
            </A></B></TD>
          <TD align=right width=136><A 
            href="http://www-900.ibm.com/developerWorks/cn/index.shtml"><IMG 
            height=24 alt="developerWorks 中国网站" 
            src="基于 Linux 和 MiniGUI 的嵌入式系统软件开发指南(一).files/dwlogo-small.gif" 
            width=136 border=0></A></TD>
          <TD width=5><IMG height=1 alt="" 
            src="基于 Linux 和 MiniGUI 的嵌入式系统软件开发指南(一).files/c.gif" width=5 
            border=0></TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE><!-- End Breadcrumb Trail --><!-- Title Area -->
<TABLE cellSpacing=0 cellPadding=0 width="100%" border=0>
  <TBODY>
  <TR vAlign=top>
    <TD colSpan=5><IMG height=15 alt="" 
      src="基于 Linux 和 MiniGUI 的嵌入式系统软件开发指南(一).files/c.gif" width=5 
  border=0></TD></TR>
  <TR vAlign=top><!-- Title -->
    <TD width=2><IMG height=1 alt="" 
      src="基于 Linux 和 MiniGUI 的嵌入式系统软件开发指南(一).files/c.gif" width=2 border=0></TD>
    <TD><!-- <span class="astitle">[Series title]:</span> --><SPAN 
      class=atitle>基于 Linux 和 MiniGUI 的嵌入式系统软件开发指南(一)</SPAN></TD>
    <TD width=8><IMG height=1 alt="" 
      src="基于 Linux 和 MiniGUI 的嵌入式系统软件开发指南(一).files/c.gif" width=8 border=0></TD>
    <TD></TD>
    <TD width=6><IMG height=1 alt="" 
      src="基于 Linux 和 MiniGUI 的嵌入式系统软件开发指南(一).files/c.gif" width=6 
  border=0></TD></TR><!-- Black line separator -->
  <TR vAlign=top>
    <TD bgColor=#000000 colSpan=5><IMG height=1 alt="" 
      src="基于 Linux 和 MiniGUI 的嵌入式系统软件开发指南(一).files/c.gif" width=100 
  border=0></TD></TR>
  <TR vAlign=top>
    <TD bgColor=#ffffff colSpan=5><IMG height=8 alt="" 
      src="基于 Linux 和 MiniGUI 的嵌入式系统软件开发指南(一).files/c.gif" width=100 
  border=0></TD></TR></TBODY></TABLE><!-- END HEADER AREA and START BODY AREA -->
<TABLE cellSpacing=0 cellPadding=0 width="100%" border=0>
  <TBODY>
  <TR vAlign=top><!-- LEFT GUTTER -->
    <TD width=5><IMG height=1 alt="" 
      src="基于 Linux 和 MiniGUI 的嵌入式系统软件开发指南(一).files/c.gif" width=5 border=0></TD><!-- START CENTER COLUMN -->
    <TD width="100%">
      <TABLE cellSpacing=0 cellPadding=0 width=168 align=right border=0>
        <TBODY>
        <TR><!-- Sidebar Gutter -->
          <TD width=8><IMG height=21 alt="" 
            src="基于 Linux 和 MiniGUI 的嵌入式系统软件开发指南(一).files/c.gif" width=5></TD>
          <TD width=160><!-- Start TOC -->
            <TABLE cellSpacing=0 cellPadding=0 width=160 border=0>
              <TBODY>
              <TR>
                <TD width=160 bgColor=#000000 height=1><IMG height=1 alt="" 
                  src="基于 Linux 和 MiniGUI 的嵌入式系统软件开发指南(一).files/c.gif" 
                width=160></TD></TR>
              <TR>
                <TD align=middle 
                background="基于 Linux 和 MiniGUI 的嵌入式系统软件开发指南(一).files/bg-gold.gif" 
                height=5><B>内容:</B></TD></TR>
              <TR>
                <TD width=160 bgColor=#666666 height=1><IMG height=1 alt="" 
                  src="基于 Linux 和 MiniGUI 的嵌入式系统软件开发指南(一).files/c.gif" 
                width=160></TD></TR>
              <TR>
                <TD align=right>
                  <TABLE cellSpacing=0 cellPadding=3 width="98%" border=0>
                    <TBODY>
                    <TR>
                      <TD><A 
                        href="http://www-900.ibm.com/developerWorks/cn/linux/embed/minigui/guide/part1/index.shtml#1">引言</A></TD></TR>
                    <TR>
                      <TD><A 
                        href="http://www-900.ibm.com/developerWorks/cn/linux/embed/minigui/guide/part1/index.shtml#2">MiniGUI-Threads 
                        和 MiniGUI-Lite 的区别</A></TD></TR>
                    <TR>
                      <TD><A 
                        href="http://www-900.ibm.com/developerWorks/cn/linux/embed/minigui/guide/part1/index.shtml#3">MiniGUI-Threads 
                        的典型应用和软件架构</A></TD></TR>
                    <TR>
                      <TD><A 
                        href="http://www-900.ibm.com/developerWorks/cn/linux/embed/minigui/guide/part1/index.shtml#4">MiniGUI-Lite 
                        的典型应用和软件架构</A></TD></TR>
                    <TR>
                      <TD><A 
                        href="http://www-900.ibm.com/developerWorks/cn/linux/embed/minigui/guide/part1/index.shtml#5">小结</A></TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE><!-- End TOC -->
            <TABLE cellSpacing=0 cellPadding=0 width=160 border=0>
              <TBODY>
              <TR>
                <TD width=150 bgColor=#000000 colSpan=2 height=2><IMG height=2 
                  alt="" src="基于 Linux 和 MiniGUI 的嵌入式系统软件开发指南(一).files/c.gif" 
                  width=160></TD></TR>
              <TR>
                <TD width=150 bgColor=#ffffff colSpan=2 height=2><IMG height=2 
                  alt="" src="基于 Linux 和 MiniGUI 的嵌入式系统软件开发指南(一).files/c.gif" 
                  width=160></TD></TR></TBODY></TABLE><!-- END STANDARD SIDEBAR AREA --></TD></TR></TBODY></TABLE><!-- START SUBTITLE AND CONTENT --><SPAN 
      class=atitle2>选择MiniGUI-Threads 或者 MiniGUI-Lite</SPAN> 
      <P><A 
      href="http://www-900.ibm.com/developerWorks/cn/linux/embed/minigui/guide/part1/index.shtml#author1">魏永明</A> 
      (<A 
      href="mailto:ymwei@minigui.org">ymwei@minigui.org</A>)<BR>自由撰稿人<BR>2001 年 
      6 月</P>
      <BLOCKQUOTE>自 MiniGUI 从 1998 年底推出以来,越来越多的人开始选择 MiniGUI 在 Linux 
        上开发实时嵌入式系统。为了帮助嵌入式软件开发人员使用 MiniGUI编写出更好的应用程序,我们将撰写一系列文章讲解基于 Linux 和 
        MiniGUI 的嵌入式系统软件开发,并冠名"基于 Linux 和 MiniGUI 
        的嵌入式系统软件开发指南"。本文是该系列文章的第一篇,将讲述如何针对具体项目选择使用 MiniGUI-Threads 或者 
        MiniGUI-Lite 版本,并比较不同版本对系统软件结构的影响。</BLOCKQUOTE>
      <P><A id=1 name=1><SPAN class=atitle2>1:引言</SPAN></A><BR>自 MiniGUI 从 1998 
      年底推出以来,越来越多的人开始选择 MiniGUI 在 Linux 上开发实时嵌入式系统。MiniGUI 
      系统也逐渐成熟,并在各种嵌入式系统中扮演了重要的角色。为了帮助嵌入式软件开发人员使用 
      MiniGUI编写出更好的应用程序,我们将撰写一系列文章讲解基于 Linux 和 MiniGUI 的嵌入式系统软件开发,并冠名"基于 Linux 和 
      MiniGUI 的嵌入式系统软件开发指南"。该系列文章将讲述如何在基于 Linux 的系统上利用 MiniGUI 
      开发具有图形用户界面支持的嵌入式系统软件,其内容不仅仅限于 MiniGUI 的编程,还会涉及到一些 Linux 
      下嵌入式系统软件开发的技巧。系列文章的初步规划如下:</P>
      <UL>
        <LI>如何针对特定项目选择 MiniGUI-Threads 和 MiniGUI-Lite 
        <LI>理解消息循环和窗口过程 
        <LI>对话框和控件编程 
        <LI>使用 GDI 函数 
        <LI>MiniGUI 和 Linux 系统调用 
        <LI>MiniGUI-Lite 与进程间通讯 
        <LI>将 MiniGUI 及应用程序移植到特定平台 
        <LI>利用 autoconf 接口编写跨平台代码 
        <LI>如何调试 MiniGUI 应用程序 </LI></UL>本文是该系列文章的第一篇,将讲述如何针对具体项目选择使用 
      MiniGUI-Threads 或者 MiniGUI-Lite 版本,并比较不同版本对系统软件结构的影响。<BR><BR>
      <P><A id=2 name=2><SPAN class=atitle2>2:MiniGUI-Threads 和 MiniGUI-Lite 
      的区别</SPAN></A><BR>大家都知道,我们可以将 MiniGUI 编译成两个截然不同的版本,一个是 MiniGUI-Threads,一个是 
      MiniGUI-Lite。这两个版本适用于不同的应用需求。在选择到底使用 MiniGUI-Threads 还是 MiniGUI-Lite 
      之前,我们首先需要了解这两个版本之间的区别。</P>
      <P>MiniGUI-Threads 是 MiniGUI 的最初版本。MiniGUI 
      最初为一个工业控制系统开发的,该系统功能单一,但却需要非常高的实时性,因此考虑将 MiniGUI 
      开发成一个基于多线程的图形用户界面支持系统。因为在传统的 UNIX/Linux 系统上,典型的 GUI 系统(比如 X)采用传统的基于 UNIX 
      套接字的客户/服务器系统结构。在这种体系结构下,客户建立窗口、绘制等等都要通过套接字传递到服务器,由服务器完成实质工作。这样,系统非常依赖于 
      UNIX 套接字通讯。而大家都知道,UNIX 
      套接字的数据传递,要经过内核,然后再传递到另外一个程序。这样,大量的数据在客户/内核/服务器之间传递,从而增加了系统负荷,也占用了许多系统资源。这对许多嵌入式系统,尤其是实时性要求非常高的系统来说,是不可接受的。</P>
      <P>为了解决这个问题,MiniGUI 首先采用了线程机制(类似Windows 
      CE),所有的应用程序都运行在同一个地址空间,这样,大大提高了程序之间的通讯效率,并且特别适合于实时性要求非常高的系统。这就是 
      MiniGUI-Threads。基于 MiniGUI-Threads 
      的程序,可以具有多个线程,每个线程有不同的功能和任务,并且可以建立各自的窗口,不同的线程之间,可以通过 MiniGUI 
      提供的消息传递机制进行事件传送和同步。</P>
      <P>但显然,这种基于线程的结构也导致了系统整体的脆弱――如果某个线程因为非法的数据访问而终止运行,则整个进程都将受到影响。不过,这种体系结构对实时控制系统等时间关键的系统来讲,还是非常适合的。</P>
      <P>为了解决 MiniGUI-Threads 版本因为线程而引入的一些问题,同时也为了让 MiniGUI更加适合于嵌入式系统,我们决定开发一个 
      MiniGUI-Lite 版本。这个版本的开发目的是:</P>
      <UL>
        <LI>保持与原先 MiniGUI 版本在源代码级 99% 以上的兼容。 
        <LI>不再使用线程库。 
        <LI>可以同时运行多个基于 MiniGUI-Lite 的应用程序,即多个进程,并且提供前后台进程的切换。 </LI></UL><BR><BR>
      <P>显然,要同时满足上述三个目的,如果采用传统的 C/S 结构对MiniGUI-Threads 进行改造,应该不难实现。但前面提到的传统 C/S 
      结构的缺陷却无法避免。经过对 PDA 等嵌入式系统的分析,我们发现,某些 PDA 
      产品具有运行多个任务的能力,但同一时刻在屏幕上进行绘制的程序,一般不会超过两个。因此,只要确保将这两个进程的绘制相互隔离,就不需要采用复杂的 C/S 
      结构处理多个进程窗口之间的互相剪切。也就是说,在这种产品中,如果采用基于传统 C/S 结构的多窗口系统,实际是一种浪费。</P>
      <P>有了上述认识,我们对 MiniGUI-Threads 进行了如下简化设计:</P>
      <UL>
        <LI>每个进程维护自己的主窗口 Z 序,同一进程创建的主窗口之间互相剪切。也就是说,除这个进程只有一个线程,只有一个消息循环之外,它与原有的 
        MiniGUI 版本之间没有任何区别。每个进程在进行屏幕绘制时,不需要考虑其他进程。 
        <LI>建立一个简单的客户/服务器体系,但确保最小化进程间的数据复制功能。因此,在服务器和客户之间传递的数据仅限于输入设备的输入数据,以及客户和服务器之间的某些请求和响应数据。 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -