EPICS Home

Experimental Physics and Industrial Control System


 

Tornado/vxWorks 5.x Information

This page provides a repository for information about using the WRS Tornado environment and the vxWorks 5.x RTOS with EPICS that doesn't really belong anywhere else on the EPICS site. If you discover any other information that ought to go on this page, please let me know.

Note that there is a separate page provided for users of vxWorks 6.x and Wind River Workbench.

There is also a reasonably good Tornado 2.0 FAQ available on the web, mostly comprising answers to questions posted to the comp.os.vxworks news group.

Tornado 2.2 (vxWorks 5.5)

Installation

According to the Tornado 2.2 release notes, you cannot install multiple host and/or target architectures in the same directory.

Linux Hosting

See this page for information building vxWorks target code on Linux.

EPICS Changes

Ron Sluiter has succeeded in building Base R3.13.7 against Tornado 2.2, but said in an email to tech-talk that in order to do so he had to remove the switch -nostdinc from the EPICS configuration file <base>/config/CONFIG.Vx. Base R3.14.x should build on Tornado 2.2 without change.

Tornado 2.0.x (vxWorks 5.4.x)

VxWorks 5.4.x will not be supported by future EPICS Base 3.15 releases. The GNU C++ compiler provided with 5.4.2 is too old, you will have to upgrade to at least vxWorks 5.5 or preferably vxWorks 6.x.

Installation

With Tornado 2.0.x it is possible to install multiple host and target architectures to the same location, and this is probably better than keeping them separate (Tornado 1.0.1 allowed some combinations, but not all). It is definitely not a good idea to mix difference versions of Tornado (for different architectures) in the same location.

WRS Patches

The following patches have been found to fix certain problems with Tornado 2.0 and ought to be installed at all EPICS sites using the indicated architectures or board types. Patches must be downloaded from WRS's Customer Support website:

Linux Hosting

If you want to use Linux to host your EPICS development, you will need to build your own cross-compiler as Wind River don't support Tornado 2.x on Linux. Ask your WRS FAE for a copy of the GCC source code - you are entitled to this since GCC is licensed under the terms of the GNU GPL and WRS have sold you a binary copy of it. If you're having a hard time doing that, you can also download a copy from SNS. You might want to read this tech-talk thread for more information about this topic, and possibly contact David Thompson if you have problems or questions.

Configuring vxWorks

See the document Configuring Tornado 2.0.x for EPICS for some information on how to configure your vxWorks image to be able to load and run EPICS.

Some additional points to note about the Tornado 2 configuration:

  1. If you're configuring Tornado 2.2, make sure you don't include RIP unless you know you need it (very unlikely for EPICS IOCs). This has caused problems at some sites as it can eat up 100% of the CPU in a fairly high priority task.
  2. The network memory buffer configuration for Tornado 2.x is significantly different to that for Tornado 1.x and earlier, because of the new network stack that is uses. The new configuration process requires that the complete number and size of these buffers be set at compile time (actually these numbers can be changed early in the BSP startup, but not afterwards); the old stack could dynamically grow the number of mbufs it used as necessary, so the initial configuration was not particularly critical, unlike with the new stack. The WRS defaults provided in Tornado 2.x are too small for most operational EPICS IOCs.

    The official WRS method of configuring the network stack is described in section 4.6.3 Network Memory Pool Configuration of the vxWorks Network Programmer's Guide (that section number is from the vxWorks 5.4 edition, for the vxWorks 5.5 edition it's 4.3.3). APS and SNS have both developed their own alternatives to this fixed approach which permit the number of buffers to be selected at boot time from the vxWorks boot parameters. At APS we provide two configurations that are selected between by one of the bits in the boot flags according to the loading on that particular IOC. The actual numbers of buffers used are as follows:

    ParameterValue (light)Value (heavy)
    Data Pool clDescTbl []
    NUM_64125250
    NUM_128400400
    NUM_2565050
    NUM_5122550
    NUM_10242525
    NUM_20482525
    NUM_NET_MBLK8001200
    NUM_CL_BLK650800
    System Pool sysClDescTbl []
    NUM_SYS_642561024
    NUM_SYS_1282561024
    NUM_SYS_256256512
    NUM_SYS_512256512
    NUM_SYS_MBLK10243072
    NUM_SYS_CL_BLKS10243072

Known Problems

Tornado 1.0.1 (vxWorks 5.3.1)

Ethernet on mv2700 (dc driver)

There can be a network reliability problem with Tornado 1.0.1 on the mv2700 through certain types of 10/100baseT media. A quick way to resolve this problem (rather than getting a patch for Tornado 1.0.1 from WRS) is to change the setting of DC_MODE in the config/mv2700/config.h file from 0x08 to 0x18. This puts the driver into Full Duplex mode. Note that this setting must be correct for the network port you're using, so you might need two boot files if you have both full- and half-duplex ports.

PowerPC Issues

There is a separate page discussing the specific problems associated with using PowerPC CPUs under vxWorks/Tornado.