📄 x-9603.html
字号:
</td><td colspan=1 rowspan=1><p class="BodyLeft"><a name="84531"> </a></p></td></tr><tr valign="middle"><td colspan="20"></td></tr></table></p></p><dd><p class="Body"><a name="84575"> </a>The following single-precision floating-point routines are also available:<p class="table"><table border="0" cellpadding="0" cellspacing="0"><tr valign="top"><td colspan=1 rowspan=1><p class="BodyLeft"><a name="84534"> </a><b class="routine"><i class="routine">atanf</i></b><b>( )</b> </p></td><td colspan=1 rowspan=1><p class="BodyLeft"><a name="84536"> </a><b class="routine"><i class="routine">atan2</i></b><b>( )</b> </p></td><td colspan=1 rowspan=1><p class="BodyLeft"><a name="84538"> </a><b class="routine"><i class="routine">ceilf</i></b><b>( )</b> </p></td><td colspan=1 rowspan=1><p class="BodyLeft"><a name="84540"> </a><b class="routine"><i class="routine">expf</i></b><b>( )</b> </p></td><td colspan=1 rowspan=1><p class="BodyLeft"><a name="84542"> </a></p></td><td colspan=1 rowspan=1><p class="BodyLeft"><a name="84544"> </a></p></td><td colspan=1 rowspan=1><p class="BodyLeft"><a name="84546"> </a></p></td></tr><tr valign="top"><td colspan=1 rowspan=1><p class="BodyLeft"><a name="84548"> </a><b class="routine"><i class="routine">fabsf</i></b><b>( )</b> </p></td><td colspan=1 rowspan=1><p class="BodyLeft"><a name="84550"> </a><b class="routine"><i class="routine">floorf</i></b><b>( )</b> </p></td><td colspan=1 rowspan=1><p class="BodyLeft"><a name="84552"> </a><b class="routine"><i class="routine">logf</i></b><b>( )</b> </p></td><td colspan=1 rowspan=1><p class="BodyLeft"><a name="84554"> </a><b class="routine"><i class="routine">log2f</i></b><b>( )</b> </p></td><td colspan=1 rowspan=1><p class="BodyLeft"><a name="84556"> </a></p></td><td colspan=1 rowspan=1><p class="BodyLeft"><a name="84558"> </a></p></td><td colspan=1 rowspan=1><p class="BodyLeft"><a name="84560"> </a></p></td></tr><tr valign="top"><td colspan=1 rowspan=1><p class="BodyLeft"><a name="84562"> </a><b class="routine"><i class="routine">powf</i></b><b>( )</b> </p></td><td colspan=1 rowspan=1><p class="BodyLeft"><a name="84564"> </a><b class="routine"><i class="routine">sinf</i></b><b>( )</b> </p></td><td colspan=1 rowspan=1><p class="BodyLeft"><a name="84566"> </a><b class="routine"><i class="routine">sqrtf</i></b><b>( )</b> </p></td><td colspan=1 rowspan=1><p class="BodyLeft"><a name="84568"> </a><b class="routine"><i class="routine">tanf</i></b><b>( )</b> </p></td><td colspan=1 rowspan=1><p class="BodyLeft"><a name="84570"> </a></p></td><td colspan=1 rowspan=1><p class="BodyLeft"><a name="84572"> </a></p></td><td colspan=1 rowspan=1><p class="BodyLeft"><a name="84574"> </a></p></td></tr><tr valign="middle"><td colspan="20"></td></tr></table></p></p></dl></dl><font face="Helvetica, sans-serif" class="sans"><h4 class="H4"><i><a name="84576">Adding in Unresolved Routines</a></i></h4></font><dl class="margin"><dl class="margin"><dd><p class="Body"><a name="84578"> </a>Occasions can arise when an application requires <b class="library">libm.a</b>, <b class="library">libg.a</b>, and <b class="library">libgcc.a</b> routines, although the application has <i class="emphasis">not</i> been prelinked with the VxWorks image. There are several alternatives for dealing with this situation:</p></dl><dl class="margin"><p class="listspace"><ul class="Bullet" type="disc"><li><a name="84579"> </a>You can compile and link a set of dummy calls with VxWorks to ensure that the necessary routines are included in the VxWorks image.</li></ul></p><p class="listspace"><ul class="Bullet" type="disc"><li><a name="84580"> </a>You can explicitly link the appropriate archive with your application module by using <b class="command">ld960</b>.</li></ul></p><p class="listspace"><ul class="Bullet" type="disc"><li><a name="84581"> </a>You can add any unresolved reference symbols to <i class="textVariable">installDir</i><b class="file">/target/src/config/mathInit.c</b> and rebuild VxWorks.</li></ul></p></dl></dl><font face="Helvetica, sans-serif" class="sans"><h4 class="H4"><i><a name="84583">Floating-Point Task Option: <b class="symbol_UC">VX_FP_TASK</b> </a></i></h4></font><dl class="margin"><dl class="margin"><dd><p class="Body"><a name="84584"> </a>The i960CA, JX, and KA processors contain no floating-point hardware; thus no floating-point context is used. Floating-point emulation is performed in software with the routines provided by the Cygnus libraries (see <a href="x-9603.html#84486"><i class="title">Math Routines</i></a>); therefore, the task option <b class="symbol_UC">VX_FP_TASK</b> is not required.</p><dd><p class="Body"><a name="84588"> </a>The i960KB has on-board floating-point hardware. The task option <b class="symbol_UC">VX_FP_TASK</b> is required when spawning tasks on the i960KB processor.</p></dl></dl><font face="Helvetica, sans-serif" class="sans"><h4 class="H4"><i><a name="84590">COFF-Specific Tools For i960</a></i></h4></font><dl class="margin"><dl class="margin"><dd><p class="Body"><a name="84592"> </a>The following tools are specific to the <b class="symbol_UC">COFF</b> format on i960 processors. For more information, see the reference entries for each tool.</p></dl><dl class="margin"><dd><div class="Item"><a name="84594"> </a><b class="command">coffHex960 </b></div><dl class="margin"><dd><div class="Indent"><a name="84595"> </a>converts an <b class="symbol_UC">COFF</b>-format object file into Motorola hex records. The syntax is:</div><br><dl class="margin"><dd><pre class="Code3"><b><a name="84596">coffHex960 [-[TD]<i class="textVariable">imifile</i>, <i class="textVariable">offset</i>] [-a <i class="textVariable">offset</i>] [-l] <i class="textVariable">file</i> </a></b></pre></dl></dl><dd><div class="Item"><a name="84598"> </a><b class="command">coffToBin </b></div><dl class="margin"><dd><div class="Indent"><a name="84599"> </a>extracts text and data segments from a <b class="symbol_UC">COFF</b> file and writes it to standard output as a simple binary image. The syntax is:</div><br><dl class="margin"><dd><pre class="Code3"><b><a name="84600">coffToBin < <i class="textVariable">inFile</i> > <i class="textVariable">outfile</i> </a></b></pre></dl></dl><dd><div class="Item"><a name="84602"> </a><b class="command">xsymc </b></div><dl class="margin"><dd><div class="Indent"><a name="84603"> </a>extracts the symbol table from a <b class="symbol_UC">COFF</b> file. The syntax is:</div><br><dl class="margin"><dd><pre class="Code3"><b><a name="84605">xsymc < <i class="textVariable">objMod</i> > <i class="textVariable">symTbl</i> </a></b></pre></dl></dl></dl></dl><font face="Helvetica, sans-serif" class="sans"><h4 class="H4"><i><a name="85066">Limitation on <b class="routine"><i class="routine">d</i></b><b>( )</b> in WindSh</a></i></h4></font><dl class="margin"><dl class="margin"><dd><p class="Body"><a name="85068"> </a>On i960 targets not all memory is accessible from the host shell. For example, if there is no PCI bus on an ep960cx board, addresses 0x10000000 to 0x 9fffffff are not accessible. Although a <b class="routine"><i class="routine">d</i></b><b>( )</b> command from the target shell can access this region, the same command from the host can not. This is because the host shell <b class="routine"><i class="routine">d</i></b><b>( )</b> command verifies the memory using <b class="routine"><i class="routine">vxMemProbe</i></b><b>( )</b>before displaying it, while the target shell <b class="routine"><i class="routine">d</i></b><b>( )</b> command does not. </p><dd><p class="Body"><a name="85084"> </a>A further complication occurs with ev960 boards. <b class="routine"><i class="routine">vxMemProbe</i></b><b>( )</b> uses the bus error signal to detect whether a region of memory is accessible or not. If this signal is not present, as it is not on ev960 boards, <b class="routine"><i class="routine">vxMemProbe</i></b><b>( )</b> uses <b class="routine"><i class="routine">sysProbeMem</i></b><b>( )</b> to detect whether the requested address is valid or not. <b class="routine"><i class="routine">sysProbeMem</i></b><b>( )</b> determines whether an address is between <b class="symbol_UC">LOCAL_MEM_LOCAL_ADRS</b> and <b class="symbol_lc">sysPhysMemTop</b> or not. This means that if you want to access a new address on ev960 boards, for example because you added a new component, you must modify <b class="routine"><i class="routine">sysProbeMem</i></b><b>( )</b> so that it considers your new memory zone valid.</p></dl></dl><a name="foot"><hr></a><p class="navbar" align="right"><a href="index.html"><img border="0" alt="[Contents]" src="icons/contents.gif"></a><a href="GuideIX.html"><img border="0" alt="[Index]" src="icons/index.gif"></a><a href="x-960.html"><img border="0" alt="[Top]" src="icons/top.gif"></a><a href="x-9602.html"><img border="0" alt="[Prev]" src="icons/prev.gif"></a><a href="x-9604.html"><img border="0" alt="[Next]" src="icons/next.gif"></a></p></body></html><!---by WRS Documentation (), Wind River Systems, Inc. conversion tool: Quadralay WebWorks Publisher 4.0.11 template: CSS Template, Jan 1998 - Jefro --->
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -