I found the issue with the OMS card. Actually, the issue
wasn't with the card itself but with way how the MVME2100
accesses the VME bus.
The Tundra Universe II initialization in the original RTEMS
bsp for mvme2100 does not work for me. At least
the mvme2100 version which I use:
Board details: MVME2101, MPC8240 @200MHz, 32MB SDRAM, Bus
Clock 67MHz,
PPCBug ENV at factory defaults, Universe II at PCI
BAR0=0xFCDFF000,
RTEMS 6.0.0, EPICS Base 7.0.10.
Only PPCBug's factory power-on configuration - written by
firmware during hardware initialization, never touched by
software - produces working VME cycles.
If anybody is facing a similar problem with mvme2100 I have
the wrapper functions that fix the issue.
Hello,
I am
struggling with converting the mvme2100 with OMS VS4 card
system from vxWorks 5.1 to RTEMS 6 EPICS 7.0.10.
For RTEMS, I
use the same omsSetup() call in the startup script as in
vxWorks:
#----------------------------------------------------------------------------------------------------------------
Welcome to
rtems-6.0.0 (PowerPC/Generic (classic FPU)/mvme2100) on MVME
2100
-----------------------------------------
pci : Configuring interrupt routing for 'MVME 2100'
pci : Device 0:0x00:0 routed to interrupt_line 16
pci : Device 0:0x0d:0 routed to interrupt_line 23
pci : Device 0:0x0e:0 routed to interrupt_line 17
Cleared PCI errors: pci_stat was 0x20a0
WARNING: unable to allocate page table, keeping DBAT0
WARNING: unable to setup page tables VME bridge must share
PCI space
OpenPIC Version 1.2 (1 CPUs and 24 IRQ sources) at
0x4242800640
OpenPIC Vendor 0 (Unknown), Device 0 (Unknown), Stepping 1
Overriding NumSources (24) from configuration with 16
OpenPIC timer frequency is 8333344 Hz
BATs must not overlap; area 0x002e0000..0x00300000 hits DBAT
0
Universe II PCI-VME bridge detected at 0xfcdff000, IRQ 23
Universe Master Ports:
Port VME-Addr Size PCI-Adrs Mode:
0: 0x20000000 0x0e000000 0x90000000 A32, D64 [MBLT], Dat,
Sup
1: 0x00000000 0x00ff0000 0x9f000000 A24, D64 [MBLT], Dat,
Sup
2: 0x00000000 0x00010000 0x9fff0000 A16, D64, Dat, Sup
Universe Slave Ports:
Port VME-Addr Size PCI-Adrs Mode:
0: 0xc0000000 0x02000000 0x00000000 A32, Pgm, Dat, Sup,
Usr, PWEN, PREN
Registering /dev/console as minor 0 (==/dev/ttyS0)
ntpd: RTEMS service init
:
:
#
omsSetup(nCards, baseAddress, intVectBase, intLevel,
pollRate)
var drvOMSdebug 9
omsSetup(1, 0xFC00, 180, 5, 10)
iocInit()
Starting iocInit
############################################################################
## EPICS R7.0.10.1
## Rev. R7.0.10
## Rev. Date Git: 2026-03-14 20:49:46 -0700
############################################################################
recGblRecordError: motor_init_record_com(): card does not
exist! Illegal field value PV: LS1:MOT
recGblRecordError: motor_init_record_com(): card does not
exist! Illegal field value PV: LS1:MOT
recGblRecordError: motor_init_record_com(): card does not
exist! Illegal field value PV: LS1:MOT
vmeread
0xfc00 16 8 16
Reading from 0x0000fc00 A16 D8
Mapped to 0x9ffffc00
0x00000000 00000000 00000000 00000000 00000000
*** Bus errors occurred ***
#-------------------------------------------------------------------------------------------------------------
The vxWorks
based system with the same hardware works fine and shows:
localAddr = 0
new symbol "localAddr" added to symbol table.
sysBusToLocalAdrs(0x2d,
0xFC00, &localAddr)
value = 0 = 0x0
d localAddr, 0x10, 1
f1fffc00: ff 0d ff 00 ff b0 ff 48 ff b4 ff ff ff ff ff ff
*.......H........*
value = 21 = 0x15
#--------------------------------------------------------------------------------------------------------------
It looks like
VxWorks handles VME memory mapping differently than RTEMS,
but devLib2 should manage all of that properly.
I use the
following modules:
MOTOR = $(SUPPORT)/motor-R7-3-1
DEVLIB2 = /usr/local/epics/R7.0.10/modules/soft/devlib2
EPICS_BASE = /usr/local/epics/R7.0.10/base
I found a
similar post on the tech talk:
RTEMS/MVME2100
OMS58 card does not exist! error
I am
wondering what the solution was?
Best Regards
Mirek