Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

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

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

vme_config(1M)

cpp(1)

vme.CFG(4)

NAME

vme.CFG − VME configuration file format

DESCRIPTION

The vme_config utility allocates VMEbus 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 VME Configuration and Driver Development 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 Record

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. 

General Formatting Issues:

Single line records are terminated with an EOL (a line feed).  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 will "escape" the line-feed and continue the record to the next line.  For example, a processor record:

proc   hp743i   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     hp743i  access=fifo \
                                    hints=SYSTEM_ONLY, PRIVATE
    align 4K:1K  i3loc_mon  hp743i  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); a K suffix indicates kilobytes (1024). 

The file is case insensitive. 

Comments

Comments are optional and can have two forms:

Begin with // and continue to the end of the line. 
For example:

//      Name    CPU/Card     ID         Options
//               Number

Begin with /* and end with */. 
For example:

/*usec*/

Processor Records

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

//      Name    CPU/Card     ID         Options
//               Number
proc    hp747i     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 non-volatile 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 character * 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 may 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 VMEbus.  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 card 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 character *, 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. 

Following is an example of a memory record. 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     hp747i     access=fifo \
                                         hints=SYSTEM_ONLY, PRIVATE
     align 4K:1K   i7loc_mon  hp747i     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.  Can be one or more of the address modifier names or equivalent numeric values. 

Table of Address Modifiers

Symbolic Hex Size
Name Equivalent



USER code 0x10-0x1f 4GB maximum



A16 -- 64KB
A16N 0x29 64KB
A16L 0x2c 64KB
A16S 0x2d 64KB



A24 -- 16MB
A24L 0x32 16MB
A24NB64 0x38 16MB
A24ND 0x39 16MB
A24NP 0x3a 16MB
A24NB 0x3b 16MB
A24SB64 0x3c 16MB
A24SD 0x3d 16MB
A24SP 0x3e 16MB
A24SB 0x3f 16MB



A32 -- 4GB
A32L 0x05 4GB
A32NB64 0x08 4GB
A32ND 0x09 4GB
A32NP 0x0a 4GB
A32NB 0x0b 4GB
A32SB64 0x0c 4GB
A32SD 0x0d 4GB
A32SP 0x0e 4GB
A32SB 0x0f 4GB

The sub-address modifier abbreviations are as follows:

N Non-privileged, generally implies user program access. 

S Supervisory, generally implies operating system access. 

D Data space, for data that are not code. 

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

B Block transfers, useful for large transfers. 

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

USER code
code is a value between 0x0 and 0xf inclusive, corresponding to AM codes 0x10 through 0x1f.  The address space size varies with implementation. 

A16, A24, and A32 (without sub-address 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 8KB 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 8KB of address space at any 8KB 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/proc name
Required. card/proc name is the name of the previously declared card or processor which 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 is the default and indicates that the processor’s slave map will be used to access the memory.  The slave map comprises 256 4KB windows, so it may be used to access multiple memory entities as long as all entities are aligned on 4K boundaries and the sum of all entities does not exceed 1MB. 

fifo is used to reserve space for the processor’s FIFO. 

loc_mon is 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 window/s 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 is 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 is 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 the Permissions hint. 

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 non-default 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      hp743i    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 than 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 than 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      hp747i   // interrupt range and list
        4,7        hp742rt  // interrupt list
        6          hp743rt  // 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 values for each field 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 slot1 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. 

NOTE

CFG files may include C pre-processor directives. 

The HP-UX 9.05 version of vme_config always has the following cpp names defined: HPUX and HPUX_90. 

AUTHOR

vme.CFG was developed by HP. 

FILES

/etc/vme/vme.CFG The default VME configuration file which vme_config will use. 

/etc/vme/example.CFG
An example CFG file showing various record formats.

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

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

/etc/vme/system.log This file contains the current system configuration. 

SEE ALSO

vme_config(1M), cpp(1).

Hewlett-Packard Company  —  HP-UX Release 9.05:  May, 1994

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