Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ vme.CFG(4) — HP-UX 10.20

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

cpp(1)

vme_config(1M)

vme.CFG(4)

NAME

vme.CFG − VME configuration file format

DESCRIPTION

The vme_config utility allocates VME bus resources by reading configuration information from a configuration file.  The file specifies what address range each processor, card, or shared memory space occupies, which interrupt levels each processor handles, and assigns other VME resources.  vme_config(1M) describes the configuration utility. Also see the HP-UX 10.20 VME Services Guide for more information concerning configuration file formats. 

The configuration file contains the following records:

1.  Processor Records

2.  Card Records

3.  Memory Records

4.  DMA Parameters Records

5.  Interrupt Records

6.  Slot 1 Function Records

These records have two forms: single-line and complex.  In general, records may appear multiple times and in any order. 

The file format also allows comments and cpp directives (C preprocessor directives). 

General Formatting Issues

Single-line records are terminated with EOL (linefeed or newline).  For example, a Slot 1 Function record:

slot_1_functions   timeout=160 /*usec*/, arb_mode=PRI

For greater clarity, a long single line record may be continued to the next line.  A backslash character at the end of the line "escapes" the linefeed and continue the record to the next line.  For example, a processor record:

proc   hp743    1   ID_hp743    req_lv=BR3  req_mode=RWD \
                                vme_sysreset=TRUE

Complex records are longer than one line, and the fields within these records are enclosed in brackets ({}).  For example, a memory record:

memory  A16 A24 A32 {
    align 4K:1K  i3fifo     hp743   access=fifo \
                                    hints=SYSTEM_ONLY, PRIVATE
    align 4K:1K  i3loc_mon  hp743   access=loc_mon \
                                    hints=SYSTEM_ONLY, PRIVATE
}

Numbers beginning with 0x are in hexadecimal notation.  Numbers beginning with 0 are in octal notation.  All other numbers are in decimal notation. 

An M suffix in a number indicates megabytes (1048576 bytes); a K suffix indicates kilobytes (1024 bytes). 

The file is case-insensitive. 

Comments

Comments are optional and can have two forms:

1.  They can begin with // and continue to the end of the line.  For example:

//      Name    CPU/Card     ID         Options
//               Number

2.  They can begin with /* and end with */.  For example:

/*usec*/

Processor Records

A processor record is required for each CPU in the VME bus.  These are single-line records. 

//      Name    CPU/Card     ID         Options
//               Number
proc    hp747      0      ID_hp747      req_lv=BR3  req_mode=RWD \
                                        vme_sysreset=TRUE

The fields in this record are as follows:

proc Keyword indicating the start of the record. 

name Required.  name is a symbolic reference to the processor.  It must be a string of one or more characters beginning with a−z, A−Z, or _ and followed by a−z, A−Z, _, or 0−9.  This name is then linked with the CPU number. 

CPU/card number
Required. CPU/card number is the CPU number, which is a unique number from 0 to 31.  Each processor has a CPU number.  HP processors store their CPU numbers in nonvolatile memory. 

ID Required.  Revision code ID, which provides a unique way of identifying HP hardware for internal consistency checking.  cpp definitions (ID_hp742, ID_hp743, etc.) may be used for this field.  A wildcard asterisk (*) can be used for non-HP CPUs. 

req_mode=mode
Optional. mode is the bus request/release mode for VME transfers.  It can be RWD, ROR, or FAIR.  By default, it is RWD. 

req_lv=level
Optional. level is the bus request level for VME transfers.  It can be BR0, BR1, BR2, or BR3.  By default, it is BR3. 

keep_bus=value
Optional. value can be TRUE or FALSE.  By default, it is FALSE.  Setting it to TRUE may slightly improve VME block transfer performance, but at the great expense of all other subsystems.  keep_bus obsoletes sgc_rod and eir_pass. 

vme_sysreset=value
Optional. value can be TRUE or FALSE.  By default, it is TRUE.  If it is TRUE, a VME sysreset will reset the processor.  If it is FALSE, the processor will ignore the VME sysreset signal. 

pb_reset=value
Optional. value can be TRUE or FALSE.  By default, it is TRUE.  If it is FALSE, the pushbutton reset switch is disabled.  On HP Models 742 and 747, this option must not be set to FALSE. 

opt_*[=*] Optional.  vme_config ignores options prefixed with opt_.  This is an extension mechanism for other utilities that may read the same configuration file but require additional information as well. 

Card Records

A card record is required for each non-CPU card in the VME bus.  Card records are single-line records. 

//      Name    CPU/Card
//               Number
card  Test_Card    5

The fields in this record are as follows:

card Keyword indicating the start of the record. 

name Required.  name is a symbolic reference to the card.  It must be a string of one or more characters beginning with a−z, A−Z, or _ and followed by a−z, A−Z, _, or 0−9.  This name is then linked with the CPU number. 

CPU/card number
Required. CPU/card number is the card number, which is a unique number between 0 and 31, or a wildcard asterisk (*), which instructs vme_config to select a unique number. 

opt_*[=*] Optional.  vme_config ignores options prefixed with opt_.  This is an extension mechanism for other utilities that may read the same configuration file but require additional information as well. 

Memory Records

Memory records reserve a range of addresses for each processor or card.  Jumpers and switches on the card must still be set to correspond to the reserved memory address.  Some cards are hard-coded for particular addresses and some are programmable.  These are complex records. 

// Space for fifo and location monitor
memory  A16 A24 A32 {
//   address       Name    Card or Proc  Options
//                             Name
     align 4K:1K   i7fifo     hp747      access=fifo \
                                         hints=SYSTEM_ONLY, PRIVATE
     align 4K:1K   i7loc_mon  hp747      access=loc_mon \
                                         hints=SYSTEM_ONLY, PRIVATE
}

The fields in this record are as follows:

memory Keyword indicating the start of the record. 

An Required.  Indicates which VME address space the object will occupy.  It can be one or more of the address modifier names or equivalent numeric values listed in the following table. 

Table of Address Modifiers
Symbolic Hex Size
Name Equivalent
USER code 0x10-0x1f 4 GB maximum
A16 -- 64 KB
A16N 0x29 64 KB
A16L 0x2c 64 KB
A16S 0x2d 64 KB
A24 -- 16 MB
A24L 0x32 16 MB
A24NB64 0x38 16 MB
A24ND 0x39 16 MB
A24NP 0x3a 16 MB
A24NB 0x3b 16 MB
A24SB64 0x3c 16 MB
A24SD 0x3d 16 MB
A24SP 0x3e 16 MB
A24SB 0x3f 16 MB
A32 -- 4 GB
A32L 0x05 4 GB
A32NB64 0x08 4 GB
A32ND 0x09 4 GB
A32NP 0x0a 4 GB
A32NB 0x0b 4 GB
A32SB64 0x0c 4 GB
A32SD 0x0d 4 GB
A32SP 0x0e 4 GB
A32SB 0x0f 4 GB

The subaddress modifier abbreviations are as follows:

code A value between 0x0 and 0xf inclusive, corresponding to the direct hexadecimal equivalents 0x10 through 0x1f.  The address space size varies with implementation. 

B Block transfers, useful for large transfers. 

B64 64-bit block transfers.  This suffix indicates 64-bit data, not A64 space. 

D Data space, for data that is not code. 

N Nonprivileged, generally implies user program access. 

P Program space, for code.  Note that the HP Series 700  cannot execute code from VME space. 

S Supervisory, generally implies operating system access. 

A16, A24, and A32 (without subaddress modifiers) indicate that a memory entity occupies all subspaces in that address space.  Although memory entities usually do not actually occupy all subspaces, using A16, A24, or A32 provides a convenient approximation for cards that occupy several subspaces. 

address/alignment
The address and alignment specification in a memory record can be declared in any of the following three ways. The format used generally depends on the information available.

starting_address-ending_address
This format is for cards that can only operate at a certain address range. For example, 0x00100000-0x00101fff means that the card occupies the address space between 0x00100000 and 0x00101fff. 

starting_address:size
This format is for cards that can only operate at a certain address. For example, 0x00100000:8K means that the card occupies the 8 KB of address space that starts at 0x00100000. 

align num:size
Alignment requirement and size. This format is for cards that can operate on specific address boundaries. For example, align 8K:8K means that the card occupies 8 KB of address space at any 8-KB boundary. 

The alignment parameter (align) allows you to provide an address boundary requirement and an address range size for a card, instead of specifying exact addresses.  Any memory entities that will be accessed through the slave mapper should have alignments that are an integral multiple of 4K (4K, 8K, etc.). 

name Required.  name is a symbolic reference to the memory entity.  It must be a string of one or more characters beginning with a−z, A−Z, or _ and followed by a−z, A−Z, _, or 0−9. 

card/procname
Required. card/procname is the name of the previously declared card or processor that provides the physical "memory" for this memory entity.  Here, "memory" may refer to shared RAM, card registers, hardware FIFOs, etc. 

access=type
Optional. Specifies how the defined memory entity will be accessed. This option applies only to memory entities provided by HP processors.

Possible access types are slave, fifo, loc_mon, and direct_map_to address.

slave The default.  It indicates that the processor’s slave map will be used to access the memory.  The slave map comprises 256 4-KB windows, so it may be used to access multiple memory entities as long as all entities are aligned on 4 KB boundaries and the sum of all entities does not exceed 1 MB. 

fifo Used to reserve space for the processor’s FIFO. 

loc_mon Used to reserve space for the processor’s location monitor. 

direct_map_to address
Indicates that the processor’s A24 and/or A32 direct map windows will be used to access this memory entity, mapping it to the processor’s RAM starting at physical address address.

hints=hint
Optional. Give the system hints on how to map and protect the affected area of memory. They consist of the keyword hints followed by an "=" sign and the hint. 

Possible hints are SYSTEM_ONLY and PRIVATE. 

SYSTEM_ONLY
Used only by the HP-RT operating system. It means that POSIX shared memory can be opened only by the kernel and drivers, not by application-level programs using POSIX shm_open calls. 

PRIVATE
Used by HP-UX to mark HP-processor-specific records. It should not be used for any other purpose.

permission=value
Optional. Associated with POSIX shared memory on HP-RT systems only. HP-UX processors do not use permission. 

value specifies the permissions of the POSIX shared memory file as a numeric value.  The default is 0666 (octal). 

opt_*[=*] Optional.  vme_config ignores options prefixed with opt_.  This is an extension mechanism for other utilities that may read the same configuration file but require additional information as well. 

DMA Parameters Records

DMA parameters records are optional.  They specify nondefault values for HP processors with VME DMA capability.  HP Models 742 and 747 do not have VME DMA capability. 

DMA parameters records are only needed for unusual situations, such as a system with more than five DMA-capable processors, each producing frequent, large DMA bursts.  In such cases bus-own-time could be decreased or wait-time could be increased to prevent starving other processors. 

These are single-line records. 

//              Proc    Bus Own  Wait   Options
//              Name     Time    Time
//                      (usec)  (usec)
dma_params      hp743     40      2     req_lv=BR2  req_mode=ROR \
                                        keep_bus=FALSE

The fields in this record are as follows:

dma_params
Keyword indicating the start of the record.

name Required.  name is the name of a previously declared DMA-capable HP processor. 

bus-own-time
Required. The DMA engine breaks very long DMA transfers into bursts, allowing other processors to use the VME bus between bursts. bus-own-time is the maximum length of a DMA burst.  It must be between 0 and 51 microseconds.  The default value is 51 microseconds. 

wait-time Required.  After a DMA burst, the DMA engine will wait for wait-time before re-requesting the VME bus.  It must be between 0 and 51 microseconds.  The default value is 0 microseconds. 

req_lv=level
Optional. level is the bus request level for DMA transfers.  This value may be different from the level declared in the processor’s proc record, which will be used for non-DMA transfers.  It can be BR0, BR1, BR2, or BR3.  By default, it is BR3. 

req_mode=mode
Optional. mode is the bus request/release mode for DMA transfers.  This value may be different from the mode declared in the processor’s proc record, which will be used for non-DMA transfers.  It can be RWD, ROR, or FAIR.  By default, it is ROR. 

keep_bus=value
Optional. value can be TRUE or FALSE.  By default, it is FALSE.  Setting it to TRUE may slightly improve VME DMA performance, but at the great expense of all other subsystems. 

opt_*[=*] Optional.  vme_config ignores options prefixed with opt_.  This is an extension mechanism for other utilities that may read the same configuration file but require additional information as well. 

Interrupt Records

The interrupt record is a complex record.  Each line consists of an interrupt number, an interrupt range, or an interrupt list, and a processor/card name. 

An interrupt range has the format n-x.  An interrupt list has the format n,x. 

For example:

interrupt {
        1-3,5      hp747    // interrupt range and list
        4,7        hp742    // interrupt list
        6          hp743    // interrupt number
}

Slot 1 Function Record

The slot 1 function record is an optional single line record.  If this record is not present, the indicated defaults will be used.  Slot 1 sets up configuration parameters for the entire system. 

Following is an example of a slot 1 function record:

slot_1_functions  timeout = 160 /*usec*/, arb_mode = PRI

The fields in the record are as follows. 

slot_1_functions
Keyword indicating the start of the record.

timeout=time
Optional. time must be one of the following microsecond values: 10, 20, 40, 80, 320, 640, or 1000.  The default is 160 (microseconds). 

timeout specifies how long the bus will wait for a data bus transfer acknowledge (DTACK) before generating a bus error.  This value should be as small as possible, but must allow sufficient time for the slowest card in the system to acknowledge a transaction. 

arb_mode=mode
Optional. mode can be PRI (priority arbitration) or RRS (round-robin).  The default is PRI. 

powerup_reset=value
Optional. value can be TRUE or FALSE.  By default, it is TRUE.  If it is TRUE, the slot 1 controller will assert VME sysreset when it initializes its VME subsystem. 

opt_*[=*] Optional.  vme_config ignores options prefixed with opt_.  This is an extension mechanism for other utilities that may read the same configuration file but require additional information as well. 

AUTHOR

vme.CFG was developed by HP. 

FILES

/sbin/lib/vme/example.CFG
An example CFG file showing various record formats.

/sbin/lib/vme/example2.CFG
An example CFG file showing a configuration for two HP processors in the same VME system.

/sbin/lib/vme/example3.CFG
An example CFG file showing many processors and cards in the same VME system.

/sbin/lib/vme/vme.CFG
The default VME configuration file that vme_config uses. 

/var/adm/vme/system.log
This file contains the current system configuration.

SEE ALSO

cpp(1), vme_config(1M). 

Hewlett-Packard Company  —  HP-UX Rel. 10.20: August, 1996

Typewritten Software • bear@typewritten.org • Edmonds, WA 98026