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
https://epics.anl.gov/tech-talk/2020/msg01714.php
I am wondering what the solution was?
Best Regards
Mirek