<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="ProgId" content="Word.Document">
<meta name="Generator" content="Microsoft Word 12">
<meta name="Originator" content="Microsoft Word 12">
<link rel="File-List" href="file:///C:%5CUsers%5CAdmin%5CAppData%5CLocal%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_filelist.xml">
<link rel="themeData" href="file:///C:%5CUsers%5CAdmin%5CAppData%5CLocal%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_themedata.thmx">
<link rel="colorSchemeMapping" href="file:///C:%5CUsers%5CAdmin%5CAppData%5CLocal%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_colorschememapping.xml">
<!--[if gte mso 9]><xml>
<w:WordDocument>
<w:View>Normal</w:View>
<w:Zoom>0</w:Zoom>
<w:TrackMoves/>
<w:TrackFormatting/>
<w:PunctuationKerning/>
<w:DrawingGridVerticalSpacing>7.8 磅</w:DrawingGridVerticalSpacing>
<w:DisplayHorizontalDrawingGridEvery>0</w:DisplayHorizontalDrawingGridEvery>
<w:DisplayVerticalDrawingGridEvery>2</w:DisplayVerticalDrawingGridEvery>
<w:ValidateAgainstSchemas/>
<w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid>
<w:IgnoreMixedContent>false</w:IgnoreMixedContent>
<w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText>
<w:DoNotPromoteQF/>
<w:LidThemeOther>EN-US</w:LidThemeOther>
<w:LidThemeAsian>ZH-CN</w:LidThemeAsian>
<w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript>
<w:Compatibility>
<w:SpaceForUL/>
<w:BalanceSingleByteDoubleByteWidth/>
<w:DoNotLeaveBackslashAlone/>
<w:ULTrailSpace/>
<w:DoNotExpandShiftReturn/>
<w:AdjustLineHeightInTable/>
<w:BreakWrappedTables/>
<w:SnapToGridInCell/>
<w:WrapTextWithPunct/>
<w:UseAsianBreakRules/>
<w:DontGrowAutofit/>
<w:SplitPgBreakAndParaMark/>
<w:DontVertAlignCellWithSp/>
<w:DontBreakConstrainedForcedTables/>
<w:DontVertAlignInTxbx/>
<w:Word11KerningPairs/>
<w:CachedColBalance/>
<w:UseFELayout/>
</w:Compatibility>
<w:BrowserLevel>MicrosoftInternetExplorer4</w:BrowserLevel>
<m:mathPr>
<m:mathFont m:val="Cambria Math"/>
<m:brkBin m:val="before"/>
<m:brkBinSub m:val="--"/>
<m:smallFrac m:val="off"/>
<m:dispDef/>
<m:lMargin m:val="0"/>
<m:rMargin m:val="0"/>
<m:defJc m:val="centerGroup"/>
<m:wrapIndent m:val="1440"/>
<m:intLim m:val="subSup"/>
<m:naryLim m:val="undOvr"/>
</m:mathPr></w:WordDocument>
</xml><![endif]--><!--[if gte mso 9]><xml>
<w:LatentStyles DefLockedState="false" DefUnhideWhenUsed="true"
DefSemiHidden="true" DefQFormat="false" DefPriority="99"
LatentStyleCount="267">
<w:LsdException Locked="false" Priority="0" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Normal"/>
<w:LsdException Locked="false" Priority="9" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="heading 1"/>
<w:LsdException Locked="false" Priority="0" QFormat="true" Name="heading 2"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 3"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 4"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 5"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 6"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 7"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 8"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 9"/>
<w:LsdException Locked="false" Priority="39" Name="toc 1"/>
<w:LsdException Locked="false" Priority="39" Name="toc 2"/>
<w:LsdException Locked="false" Priority="39" Name="toc 3"/>
<w:LsdException Locked="false" Priority="39" Name="toc 4"/>
<w:LsdException Locked="false" Priority="39" Name="toc 5"/>
<w:LsdException Locked="false" Priority="39" Name="toc 6"/>
<w:LsdException Locked="false" Priority="39" Name="toc 7"/>
<w:LsdException Locked="false" Priority="39" Name="toc 8"/>
<w:LsdException Locked="false" Priority="39" Name="toc 9"/>
<w:LsdException Locked="false" Priority="35" QFormat="true" Name="caption"/>
<w:LsdException Locked="false" Priority="10" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Title"/>
<w:LsdException Locked="false" Priority="1" Name="Default Paragraph Font"/>
<w:LsdException Locked="false" Priority="11" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Subtitle"/>
<w:LsdException Locked="false" Priority="22" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Strong"/>
<w:LsdException Locked="false" Priority="20" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Emphasis"/>
<w:LsdException Locked="false" Priority="59" SemiHidden="false"
UnhideWhenUsed="false" Name="Table Grid"/>
<w:LsdException Locked="false" UnhideWhenUsed="false" Name="Placeholder Text"/>
<w:LsdException Locked="false" Priority="1" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="No Spacing"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 1"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 1"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 1"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 1"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 1"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 1"/>
<w:LsdException Locked="false" UnhideWhenUsed="false" Name="Revision"/>
<w:LsdException Locked="false" Priority="34" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="List Paragraph"/>
<w:LsdException Locked="false" Priority="29" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Quote"/>
<w:LsdException Locked="false" Priority="30" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Intense Quote"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 1"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 1"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 1"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 1"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 1"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 1"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 1"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 1"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 2"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 2"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 2"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 2"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 2"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 2"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 2"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 2"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 2"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 2"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 2"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 2"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 2"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 2"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 3"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 3"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 3"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 3"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 3"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 3"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 3"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 3"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 3"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 3"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 3"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 3"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 3"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 3"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 4"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 4"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 4"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 4"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 4"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 4"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 4"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 4"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 4"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 4"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 4"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 4"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 4"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 4"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 5"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 5"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 5"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 5"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 5"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 5"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 5"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 5"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 5"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 5"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 5"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 5"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 5"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 5"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 6"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 6"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 6"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 6"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 6"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 6"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 6"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 6"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 6"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 6"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 6"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 6"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 6"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 6"/>
<w:LsdException Locked="false" Priority="19" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Subtle Emphasis"/>
<w:LsdException Locked="false" Priority="21" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Intense Emphasis"/>
<w:LsdException Locked="false" Priority="31" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Subtle Reference"/>
<w:LsdException Locked="false" Priority="32" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Intense Reference"/>
<w:LsdException Locked="false" Priority="33" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Book Title"/>
<w:LsdException Locked="false" Priority="37" Name="Bibliography"/>
<w:LsdException Locked="false" Priority="39" QFormat="true" Name="TOC Heading"/>
</w:LatentStyles>
</xml><![endif]--><style>
<!--
/* Font Definitions */
@font-face
{font-family:宋体;
panose-1:2 1 6 0 3 1 1 1 1 1;
mso-font-alt:SimSun;
mso-font-charset:134;
mso-generic-font-family:auto;
mso-font-pitch:variable;
mso-font-signature:3 680460288 22 0 262145 0;}
@font-face
{font-family:"Cambria Math";
panose-1:2 4 5 3 5 4 6 3 2 4;
mso-font-charset:0;
mso-generic-font-family:roman;
mso-font-pitch:variable;
mso-font-signature:-1610611985 1107304683 0 0 159 0;}
@font-face
{font-family:方正大黑简体;
mso-font-alt:"Arial Unicode MS";
mso-font-charset:134;
mso-generic-font-family:auto;
mso-font-pitch:variable;
mso-font-signature:0 135135232 16 0 262144 0;}
@font-face
{font-family:方正书宋;
mso-font-alt:"Arial Unicode MS";
mso-font-charset:134;
mso-generic-font-family:script;
mso-font-pitch:fixed;
mso-font-signature:0 135135232 16 0 262144 0;}
@font-face
{font-family:"/@宋体";
panose-1:2 1 6 0 3 1 1 1 1 1;
mso-font-charset:134;
mso-generic-font-family:auto;
mso-font-pitch:variable;
mso-font-signature:3 680460288 22 0 262145 0;}
@font-face
{font-family:"/@方正大黑简体";
mso-font-charset:134;
mso-generic-font-family:auto;
mso-font-pitch:variable;
mso-font-signature:0 135135232 16 0 262144 0;}
@font-face
{font-family:"/@方正书宋";
mso-font-charset:134;
mso-generic-font-family:script;
mso-font-pitch:fixed;
mso-font-signature:0 135135232 16 0 262144 0;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
{mso-style-unhide:no;
mso-style-qformat:yes;
mso-style-parent:"";
margin:0cm;
margin-bottom:.0001pt;
text-align:justify;
text-justify:inter-ideograph;
text-indent:10.0pt;
mso-char-indent-count:2.0;
line-height:15.0pt;
mso-pagination:none;
punctuation-trim:leading;
font-size:10.0pt;
mso-bidi-font-size:12.0pt;
font-family:"Times New Roman","serif";
mso-fareast-font-family:宋体;
mso-font-kerning:1.0pt;}
h2
{mso-style-name:"标题 2/,章节1/,章题/,N/.1";
mso-style-unhide:no;
mso-style-qformat:yes;
mso-style-link:"标题 2 Char";
mso-style-next:正文;
margin-top:3.5pt;
margin-right:0cm;
margin-bottom:2.0pt;
margin-left:0cm;
mso-para-margin-top:.7gd;
mso-para-margin-right:0cm;
mso-para-margin-bottom:.4gd;
mso-para-margin-left:0cm;
text-align:justify;
text-justify:inter-ideograph;
line-height:15.0pt;
mso-pagination:lines-together;
page-break-after:avoid;
mso-outline-level:2;
punctuation-trim:leading;
font-size:15.0pt;
mso-bidi-font-size:16.0pt;
font-family:方正大黑简体;
mso-hansi-font-family:Arial;
mso-font-kerning:1.0pt;
font-weight:normal;
mso-bidi-font-weight:bold;}
span.2Char
{mso-style-name:"标题 2 Char";
mso-style-unhide:no;
mso-style-locked:yes;
mso-style-link:"标题 2/,章节1/,章题/,N/.1";
mso-ansi-font-size:15.0pt;
mso-bidi-font-size:16.0pt;
font-family:方正大黑简体;
mso-ascii-font-family:方正大黑简体;
mso-fareast-font-family:方正大黑简体;
mso-hansi-font-family:Arial;
mso-font-kerning:1.0pt;
mso-bidi-font-weight:bold;}
p.a, li.a, div.a
{mso-style-name:程序代码;
mso-style-unhide:no;
margin:0cm;
margin-bottom:.0001pt;
text-indent:21.25pt;
line-height:10.0pt;
mso-pagination:none;
background:#E6E6E6;
mso-layout-grid-align:none;
punctuation-trim:leading;
font-size:8.0pt;
mso-bidi-font-size:9.0pt;
font-family:"Courier New";
mso-fareast-font-family:方正书宋;
color:black;
mso-no-proof:yes;}
p.8, li.8, div.8
{mso-style-name:8;
mso-style-unhide:no;
margin-top:0cm;
margin-right:0cm;
margin-bottom:1.5pt;
margin-left:0cm;
mso-para-margin-top:0cm;
mso-para-margin-right:0cm;
mso-para-margin-bottom:.3gd;
mso-para-margin-left:0cm;
text-align:justify;
text-justify:inter-ideograph;
text-indent:10.0pt;
mso-char-indent-count:2.0;
line-height:15.0pt;
mso-pagination:none;
punctuation-trim:leading;
font-size:10.0pt;
mso-bidi-font-size:12.0pt;
font-family:"Times New Roman","serif";
mso-fareast-font-family:宋体;
mso-font-kerning:1.0pt;}
p.9, li.9, div.9
{mso-style-name:9;
mso-style-unhide:no;
margin-top:1.5pt;
margin-right:0cm;
margin-bottom:0cm;
margin-left:0cm;
margin-bottom:.0001pt;
mso-para-margin-top:.3gd;
mso-para-margin-right:0cm;
mso-para-margin-bottom:0cm;
mso-para-margin-left:0cm;
mso-para-margin-bottom:.0001pt;
text-align:justify;
text-justify:inter-ideograph;
text-indent:10.0pt;
mso-char-indent-count:2.0;
line-height:15.0pt;
mso-pagination:none;
punctuation-trim:leading;
font-size:10.0pt;
mso-bidi-font-size:12.0pt;
font-family:"Times New Roman","serif";
mso-fareast-font-family:宋体;
mso-font-kerning:1.0pt;}
p.10, li.10, div.10
{mso-style-name:10;
mso-style-unhide:no;
margin-top:1.5pt;
margin-right:0cm;
margin-bottom:1.5pt;
margin-left:0cm;
mso-para-margin-top:.3gd;
mso-para-margin-right:0cm;
mso-para-margin-bottom:.3gd;
mso-para-margin-left:0cm;
text-align:justify;
text-justify:inter-ideograph;
text-indent:10.0pt;
mso-char-indent-count:2.0;
line-height:15.0pt;
mso-pagination:none;
punctuation-trim:leading;
font-size:10.0pt;
mso-bidi-font-size:12.0pt;
font-family:"Times New Roman","serif";
mso-fareast-font-family:宋体;
mso-font-kerning:1.0pt;}
.MsoChpDefault
{mso-style-type:export-only;
mso-default-props:yes;
font-size:10.0pt;
mso-ansi-font-size:10.0pt;
mso-bidi-font-size:10.0pt;
mso-ascii-font-family:"Times New Roman";
mso-fareast-font-family:宋体;
mso-hansi-font-family:"Times New Roman";
mso-font-kerning:0pt;}
/* Page Definitions */
@page
{mso-page-border-surround-header:no;
mso-page-border-surround-footer:no;}
@page Section1
{size:612.0pt 792.0pt;
margin:72.0pt 90.0pt 72.0pt 90.0pt;
mso-header-margin:36.0pt;
mso-footer-margin:36.0pt;
mso-paper-source:0;}
div.Section1
{page:Section1;}
-->
</style>
<!--[if gte mso 10]>
<style>
/* Style Definitions */
table.MsoNormalTable
{mso-style-name:普通表格;
mso-tstyle-rowband-size:0;
mso-tstyle-colband-size:0;
mso-style-noshow:yes;
mso-style-priority:99;
mso-style-qformat:yes;
mso-style-parent:"";
mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
mso-para-margin:0cm;
mso-para-margin-bottom:.0001pt;
mso-pagination:widow-orphan;
font-size:10.5pt;
mso-bidi-font-size:11.0pt;
font-family:"Calibri","sans-serif";
mso-ascii-font-family:Calibri;
mso-ascii-theme-font:minor-latin;
mso-fareast-font-family:宋体;
mso-fareast-theme-font:minor-fareast;
mso-hansi-font-family:Calibri;
mso-hansi-theme-font:minor-latin;
mso-bidi-font-family:"Times New Roman";
mso-bidi-theme-font:minor-bidi;
mso-font-kerning:1.0pt;}
</style>
<![endif]-->ARM嵌入式系统开发之发送过程的实现
要通过网卡发送数据时,上层协议实体调用函数hard_start_xmit(),在我们的驱动程序中这个函数被映射成DM9000_wait_to_send_packet()函数,正如它名字中wait所表示的那样,这个函数只完成了等待发送的工作,实际的发送是调用DM9000_hardware_send_packet()函数完成的,这也是前面提到的buffer分配机制的一种体现。
在具体介绍这两个函数之前,有必要简单说一说DM9000芯片发送数据的工作原理。前面已经讲过,为了增加网络吞吐量DM9000芯片内部集成了8K的buffer,芯片对这些buffer采用了内存页面管理方式,每页256B,内部寄存器支持简单的内存分配指令。对于内核来说,发送数据只是把数据从内核送到芯片的buffer中去,实际向物理媒介上的发送和相关的控制(CSMA/CD)是由芯片自主完成的。完成情况通过中断的方式通知内核。
在数据发送中用到两个函数。函数DM9000_wait_to_send_packet()一方面实现和上层协议接口,另一方面检查buffer分配是否成功,如果成功就调用,DM9000_hardware_send_packet()将数据传送到buffer中去,如果不成功,则打开相关中断,在分配成功时由中断控制程序调用DM9000_hardware_send_packet()完成数据传送。这两个函数都用到Linux网络协议栈中很重要的一个数据结构sk_buff,关于它在讲接收程序时再详细介绍。下面结合代码片段分析这两个函数的功能实现。
static int DM9000_wait_to_send_packet( struct
sk_buff* skb, struct net_device * dev )
{
struct
DM9000_local *lp = (struct DM9000_local *)dev->priv;
word
length;
unsigned
short numPages;
word
time_out;
word
status;
lp->saved_skb
= skb;
length =
ETH_ZLEN < skb->len ? skb->len : ETH_ZLEN;
numPages =
((length & 0xfffe) + 6);
numPages
>>= 8;
DM9000_SELECT_BANK(
2 );
outw(
MC_ALLOC | numPages, MMU_CMD_REG );
}
以上代码从skb中读出数据长度做一些处理后,换算出所需的页面数。然后向芯片发出分配buffer的请求,MC_ALLOC和MMU_CMD_REG都是在头文件中定义的宏,MC_ALLOC是分配buffer空间的寄存器指令,而MMU_CMD_REG是MMU命令寄存器的地址。
time_out = MEMORY_WAIT_TIME;
do {
status =
inb( INT_REG );
if (
status & IM_ALLOC_INT ) {
break;
}
} while ( -- time_out );
这段代码是检查buffer分配是否成功,检查的方法很特别。须说明一下,在系统初始化时buffer分配中断是被屏蔽的,所以即使分配成功也不会产生物理中断信号,但是中断状态寄存器仍然会有相应标志。这段代码正是利用这个特性,在一个时间范围内检查中断状态寄存器,检查分配是否成功,这个是一种忙等待,但因为time_out设得很小所以在有些时候它比中断方式效率高。
if ( !time_out ) {
DM9000_ENABLE_INT(
IM_ALLOC_INT );
return 0;
}
如果超时,证明buffer忙,打开buffer分配中断,待分配成功时由中断程序完成有关操作。
DM9000_hardware_send_packet(dev);
netif_wake_queue(dev);
return 0;
}
如果不超时,直接调用DM9000_hardware_send_packet()完成发送。下面来看DM9000_hardware_send_packet()函数,它的主要功能一是把数据从sk_buff结构中传输到芯片buffer区,二是进行传输后处理。数据传输部分涉及一些特殊问题处理,例如按字(16b)传输时如何处理奇数字节的问题,以及构造以太网帧头结构问题等,这些问题各种网卡处理方式基本一致,相对比较烦琐,所以在代码片段中仅作表示。
static void DM9000_hardware_send_packet( struct
net_device * dev )
{……
outsw(
DATA_REG , buf, (length ) >> 1);
/*对相关寄存器进行操作,将数据传送到芯片buffer*/
DM9000_ENABLE_INT(
(IM_TX_INT | IM_TX_EMPTY_INT) );
lp->saved_skb
= NULL;
dev_kfree_skb_any
(skb);
dev->trans_start
= jiffies;
netif_wake_queue(dev);
return;
}
传送后处理,具体为打开传送相关的异常情况中断,释放skb空间,设置发送时间、唤醒网络设备等待队列。
上述文字选自《ARM嵌入式Linux系统开发技术详解》一书
分享到:
相关推荐
本文将介绍ARM嵌入式系统开发之发送过程的实现
ARM嵌入式系统开发手册 第 1 章 ARM 微处理器概述 5 1.1 ARM-Advanced RISC Machines 5 1.2 ARM 微处理器的应用领域及特点 5 1.2.1 ARM 微处理器的应用领域 5 1.2.2 ARM 微处理器的特点 6 1.3 ARM 微处理器系列 6 ...
《ARM嵌入式系统软件开发实例(一) 周立功 北京航天航空大学出版社》(PDF) 目录第1章 ZLG/FS原理与应用 1.1 概述 1.1.1 ZLG/FS简介 1.1.2 ZLG/FS的特点 1.1.3 已实现的特性 1.1.4 暂时未实现的特性 1.2 使用 1.2.1 ...
要通过网卡发送数据时,上层协议实体调用函数hard_start_xmit(),在我们的驱动程序中这个函数被映射成DM9000_wait_to_send_packet()函数,正如它名字中wait所表示的那样,这个函数只完成了等待发送的工作,实际的...
要通过网卡发送数据时,上层协议实体调用函数hard_start_xmit(),在我们的驱动程序中这个函数被映射成DM9000_wait_to_send_packet()函数,正如它名字中wait所表示的那样,这个函数只完成了等待发送的工作,实际的...
套接字接口能够同时向其它进程发送数据或从其它进程接收数据,可以使用三种套接 字进行网络通信:流格式、数据报格式和原始格式套接字,每一种类型的套接字都分别代 表了一种不同类型的通信服务。 十本好书
《ARM嵌入式系统软件开发实例(一) 周立功 北京航天航空大学出版社》(PDF) 目录第1章 ZLG/FS原理与应用 1.1 概述 1.1.1 ZLG/FS简介 1.1.2 ZLG/FS的特点 1.1.3 已实现的特性 1.1.4 暂时未实现的特性 1.2 使用...
第3章 创建嵌入式系统开发环境 3.1 嵌入式Linux的开发环境 3.2 Cygwin 3.3 虚拟机 3.4 交叉编译的预备知识 3.4.1 Make命令和Makefile文件 3.4.2 binutils工具包 3.4.3 gcc编译器 3.4.4 Glibc库 3.4.5 GDB ...
5:数码相机是嵌入式系统的典型应用之一。下面关于数码相机的叙述中,错误的是()。 A:它由前端和后端两部分组成,前端负责数字图像获取,后端负责数字图像的处理 B:后端通常是以嵌入式DSP作为核心的SoC芯片,DSP...
《ARM嵌入式系统软件开发实例(一) 周立功 北京航天航空大学出版社》(PDF) 目录第1章 ZLG/FS原理与应用 1.1 概述 1.1.1 ZLG/FS简介 1.1.2 ZLG/FS的特点 1.1.3 已实现的特性 1.1.4 暂时未实现的特性 1.2 使用 1.2.1 ...
《ARM嵌入式系统软件开发实例(一) 周立功 北京航天航空大学出版社》(PDF) 目录第1章 ZLG/FS原理与应用 1.1 概述 1.1.1 ZLG/FS简介 1.1.2 ZLG/FS的特点 1.1.3 已实现的特性 1.1.4 暂时未实现的特性 1.2 使用 1.2.1 ...
中断是现代操作系统的一大特点,在嵌入式系统尤为明显,中断函数在驱动程序中的作用非常重要,相当于各种函数的调度中心。在我们的驱动程序中数据包被接收,数据包发送完毕,buffer分配完成以及其他异常情况都会触发...
├<3 ARM嵌入式开发裸板篇> │ ├01 - ARM准备工作及熟悉开发板1.mp4 │ ├02 - ARM准备工作及熟悉开发板2.mp4 │ ├03 - ARM准备工作及熟悉开发板3.avi │ ├04 - ARM准备工作及熟悉开发板4.mp4 │ ├05 - 原理图及...
早期的嵌入式程序采用...笔者在开发1C1T小灵通中继站的过程中,通过编制烧写程序,利用串口将编译后的目标代码发送给 ARM处理器;由ARM处理器内部的监控程序将目标代码写入片外Flash,实现程序的在线烧写。这样不仅
本文介绍了一种采用ARM+uCLinux作为开发平台。实现基于TCP/IP的远程系统监控.从而取代传统单片机来实现数据采集、预处理和通信功能;并依靠互联网将数据向上位机传送,同时支持远端客户对设备进行远程控制,从而...
中断是现代操作系统的一大特点,在嵌入式系统尤为明显,中断函数在驱动程序中的作用非常重要,相当于各种函数的调度中心。在我们的驱动程序中数据包被接收,数据包发送完毕,buffer分配完成以及其他异常情况都会触发...
在ARM微处理器硬件平台上,应用WindRiver公司的Tornado集成开发环境,实现基于VxWorks的自动发送彩信的嵌入式应用系统。该系统使用现有CDMA网络,根据设定的参数发送彩信到特定的移动终端用户。 随着嵌入式应用...
在ARM微处理器硬件平台上,应用WindRiver公司的Tornado集成开发环境,实现基于VxWorks的自动发送彩信的嵌入式应用系统。该系统使用现有CDMA网络,根据设定的参数发送彩信到特定的移动终端用户。 随着嵌入式应用...