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

📄 ——嵌入式系统通用的应用软件结构研究.htm

📁 网上收集的关于嵌入式开发的文档。拿来共享!
💻 HTM
📖 第 1 页 / 共 2 页
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!-- saved from url=(0062)http://www.21ic.com/new_info/news/files/news/2003103124839.asp -->
<HTML><HEAD><TITLE>——嵌入式系统通用的应用软件结构研究</TITLE>
<META http-equiv=Content-Type content="text/html; charset=gb2312">
<STYLE type=text/css>TD {
	FONT-SIZE: 12px
}
INPUT {
	FONT-SIZE: 12px; font-fammily: verdana,宋体
}
A:link {
	FONT-SIZE: 12px; COLOR: #0000ff; LINE-HEIGHT: 16px; TEXT-DECORATION: underline
}
A:visited {
	FONT-SIZE: 12px; COLOR: #660066; LINE-HEIGHT: 16px; TEXT-DECORATION: underline
}
A:hover {
	FONT-SIZE: 12px; COLOR: #ff0000; TEXT-DECORATION: underline
}
.unnamed1 {
	FONT-SIZE: 12px; FONT-FAMILY: "Arial", "Helvetica", "sans-serif"
}
.white {
	FONT-SIZE: 12px; COLOR: #ffffff; LINE-HEIGHT: 16px
}
.b:link {
	FONT-SIZE: 12px; COLOR: #3366cc; LINE-HEIGHT: 18px; TEXT-DECORATION: underline
}
.b:visited {
	FONT-SIZE: 12px; COLOR: #813f1b; LINE-HEIGHT: 18px; TEXT-DECORATION: none
}
.b:hover {
	FONT-SIZE: 12px; COLOR: #ffa037; LINE-HEIGHT: 18px; TEXT-DECORATION: underline
}
.148xg {
	FONT-SIZE: 14px; COLOR: #0000ff; LINE-HEIGHT: 14pt; FONT-FAMILY: "宋体"; TEXT-DECORATION: underline
}
.128dt {
	FONT-SIZE: 14px; COLOR: #9999cc; LINE-HEIGHT: 14pt; FONT-FAMILY: "宋体"; TEXT-DECORATION: none
}
.heigh150 {
	LINE-HEIGHT: 150%
}
</STYLE>

<META content="MSHTML 6.00.2600.0" name=GENERATOR></HEAD>
<BODY text=#000000 bgColor=#ffffff leftMargin=0 topMargin=5>
<TABLE cellSpacing=0 cellPadding=0 width=768 align=center border=0>
  <TBODY>
  <TR>
    <TD align=middle width=168 height=80><IMG 
      src="——嵌入式系统通用的应用软件结构研究.files/21ic.gif"></TD>
    <TD width=472>
      <SCRIPT language=javascript 
      src="——嵌入式系统通用的应用软件结构研究.files/ads.htm"></SCRIPT>
    </TD>
    <TD height=80>
      <TABLE cellSpacing=0 cellPadding=0 width="100%" border=0>
        <TBODY>
        <TR>
          <TD class=b12 align=middle height=30><FONT 
            face="Arial, Helvetica, sans-serif" color=#000000>
            <SCRIPT language=JavaScript 
            src="——嵌入式系统通用的应用软件结构研究.files/date.js"></SCRIPT>
            </FONT></TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE>
<TABLE cellSpacing=0 cellPadding=1 width=768 align=center border=0>
  <TBODY>
  <TR>
    <TD>
      <TABLE cellSpacing=0 cellPadding=3 width=766 align=left border=0>
        <TBODY>
        <TR bgColor=#d8d6ba>
          <TD width=3 height=20></TD>
          <DIV id=Position></DIV>
          <TD width=378>
            <FORM name=email 
            action=http://www.21icsearch.com/buzi/mail2/chkemail.asp method=post 
            target=_blank><B>电子工程周刊:</B> <INPUT class=main 
            style="BORDER-RIGHT: #0097cf 1px solid; BORDER-TOP: #0097cf 1px solid; BORDER-LEFT: #0097cf 1px solid; BORDER-BOTTOM: #0097cf 1px solid; BACKGROUND-COLOR: #ffffff" 
            maxLength=255 size=30 value=输入您的Email name=email> <INPUT class=jbutton type=submit value=订阅> </TD></FORM>
          <DIV></DIV>
          <DIV id=Time></DIV>
          <DIV id=Image></DIV>
          <DIV id=Title></DIV>
          <TD width=418>
            <MARQUEE onmouseover=this.scrollDelay=99000 
            onmouseout=this.scrollDelay=80 scrollAmount=2 scrollDelay=80 
            width="80%"><FONT color=#cc0000><IMG height=12 
            src="——嵌入式系统通用的应用软件结构研究.files/xilan_arrow.gif" 
            width=16>每周自动接收行业新闻,技术资料,设计文章</FONT></MARQUEE></TD>
          <DIV></DIV>
          <TD width=9></TD></TR></TBODY></TABLE>
      <DIV></DIV>
      <DIV id=Time></DIV>
      <DIV id=Image></DIV>
      <DIV id=Title><TD< td></DIV></TD></TR></TBODY></TABLE></TD></TR></TABLE><BR>
<TABLE cellSpacing=0 cellPadding=0 width=768 align=center border=0>
  <TBODY>
  <TR>
    <TD vAlign=top width=617 height=2>
      <TABLE cellSpacing=0 cellPadding=0 width=583 align=center border=0>
        <TBODY>
        <TR>
          <TD align=middle height=31><FONT size=4><B>嵌入式系统通用的应用软件结构研究 
            </B></FONT></TD></TR>
        <TR>
          <TD align=middle height=15>文章作者:崔树林<BR>文章类型:设计应用 
            文章加入时间:2003年10月31日2:48</TD></TR>
        <TR>
          <TD align=right><FONT color=#cc0000>文章出处:单片机及嵌入式系统应用</FONT> </TD></TR>
        <TR>
          <TD height=15>
            <HR width="100%" noShade SIZE=1>
          </TD></TR>
        <TR>
          <TD height=15>
            <TABLE cellSpacing=0 cellPadding=0 align=center border=0>
              <TBODY>
              <TR>
                <TD></TD></TR></TBODY></TABLE><BR></TD></TR></TBODY></TABLE>
      <TABLE cellSpacing=0 cellPadding=0 width=530 align=center border=0>
        <TBODY>
        <TR>
          <TD class=heigh150 height=15>
            <DIV id=Content>
            <P class=MsoNormal><SPAN 
            style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">&nbsp;&nbsp;&nbsp; 
            <B>摘要:</B></SPAN>嵌入式实时多任务操作系统在软件编程上有一定的相似性。这种相似的特性,使得我们可以将个别系统的编程经验推广到更多的系统上。本文就μC/OS-II内核的任务管理和内存管理进行基本的介绍,并介绍一个通用的应用软件结构。然后,与之相对应,提供两个不同操作系统下的应用实例。</P>
            <P class=MsoNormal><SPAN 
            style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">&nbsp;&nbsp;&nbsp; 
            <B>关键词:</B></SPAN>嵌入式系统 多任务 编程</P>
            <P style="TEXT-INDENT: 0px"><B>引言</B></P>
            <P 
            style="TEXT-INDENT: 30px">嵌入式系统的面向应用特性,使得大多数程序员沉陷于不同的应用中。在进入新的一轮开发后,往往只有一些简单的经验可供参考。为了加快应用的开发进度,有必要研究一种统一的应用软件结构,使开发人员能够通过简单模式套用,简化大量系统研究方面的工作,以加快嵌入式开发人员对新系统的理解和使用。</P>
            <P style="TEXT-INDENT: 30px">操作系统<FONT 
            face=Arial>μC/OS-II</FONT>和ECOS(Embedded Configurable 
            OS)是我在研发过程中使用过的两个系统。这两个源码公开的系统是我们研究的基础。开发平台依次是PC机和EP7212开发板。</P>
            <P style="TEXT-INDENT: 0px"><B>1 <FONT 
            face=Arial>μC/OS-II</FONT>内核</B></P>
            <P 
            style="TEXT-INDENT: 30px">对于一个嵌入式系统内核,我们最关心的是:任务调度、内存管理及时间特性等。这里,只介绍与多任务编程联系最多的任务调度和内存管理。</P>
            <P style="TEXT-INDENT: 30px">1.1 任务调度</P>
            <P 
            style="TEXT-INDENT: 30px">任务的状态有休眠、就绪及运行几种。任务调度就是遵循一定的原则,使多个任务共同使用同一处理机的过程。这一过程主要是通过对任务控制块(TCB)的管理来实现的。</P>
            <P style="TEXT-INDENT: 30px">当一个任务建立时,<FONT 
            face=Arial>μC/OS-II</FONT>系统为其所对应的OS_TCB赋值;当任务的CPU使用权被剥夺时,系统用OS_TCB来保存该任务的状态;当任务重新得到CPU使用权时,系统就可通过任务控制埠来使任务从被中断处继续执行下去。</P>
            <P style="TEXT-INDENT: 30px">在<FONT 
            face=Arial>μC/OS-II</FONT>中,TCB内包含如下基本项:</P>
            <P 
            style="TEXT-INDENT: 30px">*OSTCBStkPtr是一个指向当前任务栈顶的指针,通过允许每个任务拥有自己的栈来减小系统的内存开销;</P>
            <P style="TEXT-INDENT: 30px">*OSTCBNextOSTCBPrev用于任务控制块的双重链接;</P>
            <P style="TEXT-INDENT: 30px">*OSTCBDly用于任务延时或超时限制;</P>
            <P style="TEXT-INDENT: 30px">*OSTCBStat任务的状态字,0表示就绪态;</P>
            <P style="TEXT-INDENT: 30px">*OSTCBPrio任务的优先级,值越小,优先级越高。</P>
            <P style="TEXT-INDENT: 30px">在<FONT 
            face=Arial>μC/OS-II</FONT>中,还有两个与任务调度相关的结构就绪表和估级判定表。就绪表中有两个变量用来存放每个任务的就绪标志。通过分组与优先级表中的项实现一一对应,进而确定进入就绪态的优先级最高的任务。</P>
            <P style="TEXT-INDENT: 30px">任务调度算法原型:</P>
            <P style="TEXT-INDENT: 30px">*关中断;</P>
            <P style="TEXT-INDENT: 30px">*取优先级最高的就绪任务;</P>
            <P style="TEXT-INDENT: 30px">*若不是当前任务,则进行任务切换;</P>
            <P style="TEXT-INDENT: 30px">*开中断。</P>
            <P 
            style="TEXT-INDENT: 30px">任务切换中两步完成:将被挂起的任务的微处理器寄存器堆入栈,然后,将较高优先级的任务的寄存器值从栈中恢复到寄存器中。</P>
            <P style="TEXT-INDENT: 30px">1.2 内存管理</P>
            <P 
            style="TEXT-INDENT: 30px">在嵌入式系统中,为了更高效地使用内存,除了常规的malloc()和free()外,通常提供不同的内存组织形式,以满足特殊应用的需求。<FONT 
            face=Arial>ΜC/OS-II</FONT>中,操作系统把连续的大块内存按分区来管理,每个分区中包含整数大小相同的内存块。利用这种机制,<FONT 
            face=Arial>μC/OS-II</FONT>对malloc()和free()进行改造,使得它们可分配和释放固定大小的内存块,并且使这两个函数的执行时间也固定下来。</P>
            <P 
            style="TEXT-INDENT: 30px">为了使用户能得到需大小的内存块,在一个系统中可以多个内存分区,应用程序可以从不同的内存分区中取得不同大小的内存块。唯一要注意的是,不同的内存块在释放时必须重新放回它以前所属的内存分区。采用上述的内存管理算法,解决了内存碎片的问题。</P>
            <P style="TEXT-INDENT: 30px">为了跟踪每一个内存分区,<FONT 
            face=Arial>μC/OS-II</FONT>使用了内存控制块的数据结构,主要有:</P>
            <P style="TEXT-INDENT: 30px">OSMemAddr—指向内存分区起始地址的指针;</P>

⌨️ 快捷键说明

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