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

📄 vxworkstornadoiifaq.htm

📁 VxWorks下TornadoII的问题集合。还在收集中。
💻 HTM
📖 第 1 页 / 共 2 页
字号:

// prepend bootrom with new source
cat test.1024 bootrom.bin > bootrom.pxe
or
copy /b test.1024 + bootrom.bin bootrom.pxe
      </pre>
    </blockquote>
    <p>
      The content of test.s:
    </p>
    <pre>.text
.code16
start: nop

/* display alr so we see something on the screen if executing bootrom fails
*/

movb $'a',%al
movb $0x0e,%ah
movw $0x07,%bx
int $0x10

movb $'l',%al
movb $0x0e,%ah
movw $0x07,%bx
int $0x10

movb $'r',%al
movb $0x0e,%ah
movw $0x07,%bx
int $0x10

ljmp $0x0800,$0x0000

.space 1024,0x90
    </pre>
      <p></p>
    <p></p>

    <hr width="60%">

    <center>
      <h3>
        4 Floating point
      </h3>
    </center>
    <a name="pc-bsp.4"></a>
    <a name="pc-bsp.4-A"></a>

    <p>
      Q: I am using an SC400 processor (AMD 486 compatible) with floating point
      emulation in SW. But when I do some floating point emulation I get an
      exception. It looks like the floating point library is not installed
      correctly.
    </p>
    <p>
      A: This is a know problem. It is registered by WindRiver under number
      SPR28624. The desription and work-around are:
    </p>
    <p>
      "Tornado 2.0, Intel 80486SX: NaN produced on printf() from shell"
    </p>

    <p>
      The published workaround is:
      <br>
      "Consider WIND_BASE/target/config/comps/vxWorks/00vxWorks.cdf,
      specifically around line 1883:
    </p> 
    <pre>InitGroup usrIosCoreInit {
        INIT_RTN        usrIosCoreInit ();
        SYNOPSIS        core I/O system
        INIT_ORDER      INCLUDE_HW_FP \
                        INCLUDE_SW_FP \
                        INCLUDE_BOOT_LINE_INIT \
                        INCLUDE_IO_SYSTEM \
                        INCLUDE_TTY_DEV \
                        INCLUDE_TYCODRV_5_2 \
                        INCLUDE_SIO \
                        INCLUDE_PC_CONSOLE
        }
    </pre>
    <p>
      It is noted, in reference to 00vxWorks.cdf, that this problem no longer
      exists with the initialization sequence:
    </p>
    <pre>INIT_ORDER      INCLUDE_SW_FP \
                INCLUDE_HW_FP \
    </pre>
    <p>
      In other words, edit WIND_BASE/target/config/comps/vxWorks/00vxWorks.cdf
      such that the software floating point support is intialized prior to
      hardware floating point support.
      <br>
      (From: Gerald van Kampen, kam@oce.nl)
    </p>

    <hr width="60%">

    <center>
      <h3>
        5 Timestamp driver
      </h3>
    </center>
    <a name="pc-bsp.5"></a>
    <a name="pc-bsp.5-A"></a>

    <p>
      Q. How do I get the Pentium TSC register to free-run as Intel intended?
      How can I get a more reliable timestamp value and more accurate results
      from WindView?
    </p>
    <p>
      A. Use <a href="http://www.xs4all.nl/%7Eborkhuis/vxworks/i8253Timer.c">this modified timer/timestamp driver</a>.
      The 64-bit Pentium TSC register is the hardware timer used for the
      timestamp driver. It increments at the processor clock rate and is
      guaranteed never to overflow in 10 years continuous running. The
      timestamp driver is an interface to a hardware counter that allows
      WindView to instrument how long kernel calls and interrupts take. The
      timestamp driver depends on a counter with a rate of at least 100kHz to
      1MHz, so the TSC is ideal.
      <br>
      For those interested, Appendix G of the WindView User's Guide describes
      the timestamp driver interface and how to map it to hardware counters
      with varying constraints. The 64-bit TSC register never overflows, but
      the timestamp driver only handles 32-bit values so the 32-bit overflow of
      the TSC must be handled.
      <br>
      If a hardware counter interrupts when it overflows 32-bits or reaches
      zero, the timestamp driver uses this interrupt to indicate the overflow.
      If the counter does *not* interrupt on overflow, like the TSC, then the
      timestamp driver must produce a timestamp value that increases only
      within a system tick and it must use the system tick interrupt to reset
      the timestamp value.
      <br>
      Unfortunately the system tick interrupt is subject to interrupt latency
      and jitters around an average point in time. Worse still, the timestamp
      interrupt routine in the original WindRiver driver is called
      <strong>after</strong> the system tick interrupt routine. The system tick
      calls tickAnnounce(), which takes a varying time servicing delays in
      VxWorks' tasks, semaphore takes, etc, and makes the timestamp value
      jitter even more. This jitter means that the timestamp value can exceed
      its period value or be reset before it reaches its period value, and it
      makes WindView results inaccurate and unreliable - showing a system tick
      interrupt routine, for example, lasting for a whole tick. The original
      timestamp driver also resets the TSC every system tick and spoils its use
      as a high-resolution application timer for very short delays.
      <br>
      This modified driver:
    </p>
    <ul>
      <li>
        Restores the TSC to a free-running counter so it can be used by
        application software;
      </li>
      <li>
        removes a lot of the jitter from the timestamp value;
      </li>
      <li>
        ensures that the timestamp value always reaches its period value and
        never exceeds it;
      </li>
      <li>
        makes WindView results more accurate and reliable.
      </li>
    </ul>

    <p>
      The modified driver also includes a print routine which you can use to
      see how it performs in your system. Enter 'period 1,sysTimestampPrint' at
      the target shell and every second it prints out the timestamp driver
      value and the rollover adjustment value. You will see the current value
      change, especially with high network activity from bus-mastering LAN
      controllers, but it should return to a stable value.
    </p>
    <p>
      Feedback please to <a href="mailto:james_marshall@agilent.com">james_marshall@agilent.com</a> with
      subject 'VxWorks timestamp driver'.

    </p>

    <hr width="60%">

    <center>
      <h3>
        6 Video control
      </h3>
    </center>
    <a name="pc-bsp.6"></a>
    <a name="pc-bsp.6-A"></a>

    <p>
      Q: How can I change the video mode on a PC to 320x200?
    </p>
    <p>
      A: The processor is in Real mode during the boot phase. You can patch
      romInit.s to make your BIOS calls after the '<code>cli</code>' in
      _romInit and before the '<code>jmp cold</code>' as follows:
    </p>
    <pre>        addr16  /* address size: 16 bit address operand for call */
        /* instruction. This is 0x66 opcode in a dump */

        data16  /* operand size: 16 bit data operand for call */
        /* instruction. This is 0x67 opcode in a hex dump */
        call _bios80x43 /* call (real mode) _romBIOS routine */

/* or   call _vesa40x25 */
/* or   call _bios40x25 */
    </pre>
    <p>
      ..and then for example:
    </p><pre>        .align 4,0x90
_bios80x43:     /* ugly, but it works for me... */
        movb    $0x0f,%ah
        sti
        int     $0x10
        cli
        push    %ax
        mov     $0x1201,%ax
        movb    $0x30,%bl
        sti
        int     $0x10
        cli
        pop     %ax
        movb    $0x00,%ah
        sti
        int     $0x10
        cli
        mov     $0x1112,%ax
        movb    $0x00,%bh
        sti
        int     $0x10
        cli
        ret

        .align 4,0x90
_vesa40x25:                     /* VESA mode */
        movb    $0x4f,%ah       /* mov VESA function into AH reg. */
        movb    $0x02,%al       /* mov "SET MODE" function into AL reg. */
        movb    $0x00,%bh       /* mov "40x25 COLOR" mode into BX reg. */
        movb    $0x01,%bl       /* mov "40x25 COLOR" mode into BX reg. */
        sti                     /* set the int flag,eg unlock interrupts. */
        int     $0x10           /* Call BIOS Int 0x10 (Function in AH reg) */
        cli                     /* clear the int flag,aka disable interrupts.*/
        ret

        .align 4,0x90
_bios40x25:                     /* VGA BIOS mode */
        movb    $0x00,%ah       /* movb "SET MODE" BIOS function into AH reg. */
        movb    $0x01,%al       /* movb "40x25 COLOR" mode into AL reg. */
        sti                     /* set the int flag,eg unlock interrupts. */
        int     $0x10           /* Call BIOS Int 0x10 (Function in AH reg) */
        cli                     /* clear the int flag,aka disable interrupts.*/
        ret
    </pre>
    <p></p>

    <hr width="100%">

    <center>
      <h3>
        Index
      </h3>
    </center><a name="index"></a>

    <table summary="Index" border="1" cellspacing="3">
      <tbody><tr>
        <td valign="top">
          <a href="#pc-bsp.1.1">1.1</a>
        </td>
        <td valign="top">
          <a href="#pc-bsp.1.1-A">A</a>
        </td>
        <td valign="top">
          Changes to syslib.c
        </td>
      </tr>
      <tr>
        <td valign="top">
          <a href="#pc-bsp.1.2">1.2</a>
        </td>
        <td valign="top">
          <a href="#pc-bsp.1.2-A">A</a>
        </td>
        <td valign="top">
          Setting TOD clock
        </td>
      </tr>
      <tr>
        <td valign="top">
          <a href="#pc-bsp.1.3">1.3</a>
        </td>
        <td valign="top">
          <a href="#pc-bsp.1.3-A">A</a>
        </td>
        <td valign="top">
          When I startup my PC-target nothing happens on my serial port, but
          the normal keyboard and display are used.
        </td>
      </tr>
      <tr>
        <td valign="top">
          <a href="#pc-bsp.2">2</a>
        </td>
        <td valign="top">
          <a href="#pc-bsp.2-A">A</a>
        </td>
        <td valign="top">
          When I want to use the keyboard on my PC-target nothing happens. How
          can I make this keyboard work?
        </td>
      </tr>
      <tr>
        <td valign="top">
          <a href="#pc-bsp.3">3</a>
        </td>
        <td valign="top">
          <a href="#pc-bsp.3-A">A</a>
        </td>
        <td valign="top">
          I am using T2/x86 (PentiumPro BSP) and trying to get 3C905B-TXNM PCI
          NIC working. The NIC itself seems to be fine, 3COM's DOS-based test
          tool identifies it correctly. I haven't changed anything in the NIC's
          configuration.
        </td>
      </tr>
      <tr>
        <td valign="top"></td>
        <td valign="top">
          <a href="#pc-bsp.3-B">B</a>
        </td>
        <td valign="top">
          How do I get 2 79C973 NIC's working?
        </td>
      </tr>
      <tr>
        <td valign="top"></td>
        <td valign="top">
          <a href="#pc-bsp.3-C">C</a>
        </td>
        <td valign="top">
          My target is crashing when I initialize the Intel 82559ER with a
          cable attached.
        </td>
      </tr>
      <tr>
        <td valign="top"></td>
        <td valign="top">
          <a href="#pc-bsp.3-D">D</a>
        </td>
        <td valign="top">
          How do I creae a bootrom that uses PXE
        </td>
      </tr>
      <tr>
        <td valign="top">
          <a href="#pc-bsp.4">4</a>
        </td>
        <td valign="top">
          <a href="#pc-bsp.4-A">A</a>
        </td>
        <td valign="top">
          I am using an SC400 processor (AMD 486 compatible) with floating
          point emulation in SW. But when I do some floating point emulation I
          get an exception.
        </td>
      </tr>
      <tr>
        <td valign="top">
          <a href="#pc-bsp.5">5</a>
        </td>
        <td valign="top">
          <a href="#pc-bsp.5-A">A</a>
        </td>
        <td valign="top">
          How do I get the Pentium TSC register to free-run as Intel intended?
        </td>
      </tr>
      <tr>
        <td valign="top">
          <a href="#pc-bsp.6">6</a>
        </td>
        <td valign="top">
          <a href="#pc-bsp.6-A">A</a>
        </td>
        <td valign="top">
          How can I change the video mode on a PC to 320x200?
        </td>
      </tr>
    </tbody></table>

    <hr width="100%">

    <table summary="bottom of page" border="0" cellspacing="1" width="100%">
      <tbody><tr>
        <td colspan="3" align="center">
          <i>The commercial department</i>
        </td>
      </tr>
      <tr>
        <td align="left">
          <script type="text/javascript"><!--
          google_ad_client = "pub-1387305377183503";
          google_ad_width = 120;
          google_ad_height = 60;
          google_ad_format = "120x60_as_rimg";
          google_cpa_choice = "CAAQxZqazgEaCMOiwb9yonQWKIHD93M";
          google_ad_channel = "";
          //--></script>
          <script type="text/javascript" src="VxWorksTornadoIIFAQ_files/show_ads.js">
          </script><iframe name="google_ads_frame" src="VxWorksTornadoIIFAQ_files/ads_003.htm" marginwidth="0" marginheight="0" vspace="0" hspace="0" allowtransparency="true" frameborder="0" height="60" scrolling="no" width="120"></iframe>
        </td>
        <td align="center">
          Sponsored by:<br>
          Giganews <a href="http://www.giganews.com/">Usenet</a> Service
        </td>
        <td align="right">
          <iframe src="VxWorksTornadoIIFAQ_files/cm.htm" border="0" style="border: medium none ;" frameborder="0" height="60" scrolling="no" width="120"></iframe>
        </td>
      </tr>
    </tbody></table>
    <br>
    <hr 100%="">
    <br>
    <table summary="bottom of page" border="0" cellspacing="1" width="100%">
      <tbody><tr>
        <td>
          <a href="http://www.xs4all.nl/%7Eborkhuis/vxworks/vxworks.html"><img src="VxWorksTornadoIIFAQ_files/back0001.gif" alt="VxWorks Homepage" height="54" width="104"></a>
        </td>
        <td>
          <center>
            &#169; J.A. Borkhuis, 2000 - 2005
          </center>
          <center>
            <script type="text/javascript" language="JavaScript">
              <!--
                var theDate = ""
                theDate = document.lastModified
                document.write("Last Updated: ");
                document.write(theDate);
                document.write();
              //-->
            </script>Last Updated: 07/16/2006 05:41:22
          </center>
        </td>
        <td>
          <a href="mailto:johan@borksoft.xs4all.nl"><img src="VxWorksTornadoIIFAQ_files/sendmail.gif" alt="Send me an e-mail if this page was helpfull" align="right" height="49" width="124"></a>
        </td>
      </tr>
    </tbody></table>

  </body></html>

⌨️ 快捷键说明

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