📄 x-arch3.html
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN"><html><head><link rel="STYLESHEET" type="text/css" href="wrs.css"><title> WindView Architecture </title></head><body bgcolor="FFFFFF"><p class="navbar" align="right"><a href="index.html"><img border="0" alt="[Contents]" src="icons/contents.gif"></a><a href="x-arch.html"><img border="0" alt="[Index]" src="icons/index.gif"></a><a href="x-arch.html"><img border="0" alt="[Top]" src="icons/top.gif"></a><a href="x-arch2.html"><img border="0" alt="[Prev]" src="icons/prev.gif"></a><a href="x-arch4.html"><img border="0" alt="[Next]" src="icons/next.gif"></a></p><font face="Helvetica, sans-serif" class="sans"><h3 class="H2"><i><a name="85112">A.3 Target Facilities</a></i></h3></font><dl class="margin"><dl class="margin"><dd><p class="Body"><a name="85769"> </a>The primary WindView-related activities that occur on the VxWorks target are event logging: collecting, timestamping, and uploading event data to the host. In addition, the VxWorks triggering function takes place on the target. While this function is separate from WindView, it is discussed here because it can be used to manage WindView activities.</p></dl></dl><font face="Helvetica, sans-serif" class="sans"><h4 class="H4"><i><a name="85767">WindView</a></i></h4></font><dl class="margin"><dl class="margin"><dd><p class="Body"><a name="85367"> </a>On the target, WindView manages and coordinates the following: </p></dl><dl class="margin"><ul class="BulletSingle" type="disc"><li><a name="87285"> </a>Event logging </li></ul><ul class="BulletSingle" type="disc"><li><a name="87287"> </a>Data uploading </li></ul><ul class="BulletSingle" type="disc"><li><a name="87288"> </a>Communication with WindView on the host </li></ul></dl></dl><font face="Helvetica, sans-serif" class="sans"><h4 class="H4"><i><a name="85335">VxWorks Events</a></i></h4></font><dl class="margin"><dl class="margin"><dd><p class="Body"><a name="85387"> </a>WindView considers an <i class="term">event</i> to be any action undertaken by a task or an interrupt service routine (ISR) that can affect the state of the real-time system. Examples of events are:</p></dl><dl class="margin"><ul class="BulletSingle" type="disc"><li><a name="87361"> </a>Semaphore gives and takes </li></ul><ul class="BulletSingle" type="disc"><li><a name="87365"> </a>Task spawns and deletions </li></ul><ul class="BulletSingle" type="disc"><li><a name="87368"> </a>Timer expirations </li></ul><ul class="BulletSingle" type="disc"><li><a name="87371"> </a>Interrupts </li></ul><ul class="BulletSingle" type="disc"><li><a name="87374"> </a>Memory allocations and deallocations (optional) </li></ul></dl></dl><font face="Helvetica, sans-serif" class="sans"><h4 class="H4"><i><a name="85336">Logging</a></i></h4></font><dl class="margin"><dl class="margin"><dd><p class="Body"><a name="85920"> </a>Events affecting the following VxWorks system objects can be logged:</p></dl><dl class="margin"><ul class="BulletSingle" type="disc"><li><a name="85921"> </a>Tasks </li></ul><ul class="BulletSingle" type="disc"><li><a name="85922"> </a>Semaphores </li></ul><ul class="BulletSingle" type="disc"><li><a name="85923"> </a>Message queues</li></ul><ul class="BulletSingle" type="disc"><li><a name="85924"> </a>Watchdog timers</li></ul><ul class="BulletSingle" type="disc"><li><a name="85925"> </a>Interrupts </li></ul><ul class="BulletSingle" type="disc"><li><a name="85926"> </a>Exceptions</li></ul><ul class="BulletSingle" type="disc"><li><a name="85927"> </a>Signals </li></ul></dl><dl class="margin"><dd><p class="Body"><a name="85928"> </a>Events affecting the following VxWorks library can also be logged:</p></dl><dl class="margin"><ul class="BulletSingle" type="disc"><li><a name="87793"> </a><b class="library">memLib</b> </li></ul></dl><dl class="margin"><dd><p class="Body"><a name="87788"> </a>The amount and type of information logged is determined by the current event-logging level. In general, however, the information logged for each event includes such things as the action that occurred (such as a <b class="eventType">semGive</b> or <b class="eventType">semTake</b>), the context in which the event occurred (that is, the ISR, task, or idle loop), the timestamp, and other status information as appropriate (for example, the semaphore ID for a <b class="eventType">semGive</b>). WindView's event-logging levels include: </p></dl><dl class="margin"><ul class="BulletSingle" type="disc"><li><a name="85398"> </a>Context Switch (CSE) </li></ul><ul class="BulletSingle" type="disc"><li><a name="87394"> </a>Task State Transition (TST) </li></ul><ul class="BulletSingle" type="disc"><li><a name="87455"> </a>Additional Instrumentation (AIL) <div class="frame"><h4 class="EntityTitle"><a name="88297"><font face="Helvetica, sans-serif" size="-1" class="sans">Figure 8-11: WindView 2.0 Classes </font></a></h4><dl class="margin"><div class="Anchor"><a name="88353"> </a><img class="figure" border="0" src="images/x-arch0.gif"></div></dl></div></li></ul></dl><dl class="margin"><dd><p class="Body"><a name="87456"> </a>Each logging level provides a trade-off: as you move away from the center of the circle, you gain more detailed information on more events, but you intrude more into the real-time application.</p></dl></dl><font face="Helvetica, sans-serif" class="sans"><h4 class="H4"><i><a name="85339">Timestamp Driver</a></i></h4></font><dl class="margin"><dl class="margin"><dd><p class="Body"><a name="87463"> </a>A key data element that is logged for each event is the <i class="term">timestamp</i>. For most BSPs, WindView provides two options:</p></dl><dl class="margin"><ul class="BulletSingle" type="disc"><li><a name="87466"> </a>High-resolution timestamp driver </li></ul><ul class="BulletSingle" type="disc"><li><a name="87468"> </a>Sequential timestamp driver </li></ul></dl><dl class="margin"><dd><p class="Body"><a name="88236"> </a>For information on configuring WindView timestamp drivers, see <a href="c-start4.html#86087"><i class="title">Timestamp Driver</i></a>. For additional information, see <a href="c-datacol6.html#88260"><i class="title">7.6 Timestamping</i></a>. For information on writing your own timestamp driver, see <a href="x-timestamp.html#85403"><i class="title">G. Creating a VxWorks Timestamp Driver</i></a>.</p></dl></dl><font face="Helvetica, sans-serif" class="sans"><h4 class="H4"><i><a name="88245">Triggering</a></i></h4></font><dl class="margin"><dl class="margin"><dd><p class="Body"><a name="86145"> </a>The triggering API allows a user to hook actions to one or more events during VxWorks execution. The mechanism takes advantage of the existing event instrumentation for WindView. A trigger can be set at any of the WindView event points. Once the trigger is set, when the event occurs, the action related to the trigger is performed. For more information, see <a href="c-trigger.html#84816"><i class="title">6. Triggering</i></a> and <a href="x-trigAPI.html#91112"><i class="title">E. Triggering API</i></a>. </p></dl></dl><font face="Helvetica, sans-serif" class="sans"><h4 class="H4"><i><a name="85989">Dynamic Ring Buffer</a></i></h4></font><dl class="margin"><dl class="margin"><dd><p class="Body"><a name="85992"> </a>The dynamic ring buffer (rBuff) serves to decouple data collection from data upload and storage, thus maximizing the flexibility of the system. Events are logged to a user-configurable, dynamic ring of buffers on the target. The GUI allows users to configure the following:</p></dl><dl class="margin"><ul class="BulletSingle" type="disc"><li><a name="87481"> </a>Size of the buffers in the ring </li></ul><ul class="BulletSingle" type="disc"><li><a name="87482"> </a>Minimum and maximum number of buffers</li></ul></dl><dl class="margin"><dd><p class="Body"><a name="87483"> </a>When one buffer fills, data is written to the next buffer in the ring. If there are no more buffers and the current number of buffers is less than the maximum, a new buffer is added. If a buffer is emptied and the current number is greater than the minimum, the empty buffer is removed. For detailed information on the dynamic buffer, see <a href="c-upload2.html#85601"><i class="title">4.2 Dynamic Ring Buffer</i></a> and <a href="c-datacol7.html#85021"><i class="title">7.7 Dynamic Buffer Allocation</i></a>. </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="x-arch.html"><img border="0" alt="[Index]" src="icons/index.gif"></a><a href="x-arch.html"><img border="0" alt="[Top]" src="icons/top.gif"></a><a href="x-arch2.html"><img border="0" alt="[Prev]" src="icons/prev.gif"></a><a href="x-arch4.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 + -