Hi Michael,
Ø
You have to find out their addresses under RTEMS and adapt the arguments to the driver setup call in your st.cmd accordingly.
I don’t think that is true, the driver hides that by mapping the VME address (which should be the same on vxWorks and RTEMS) to the CPU address.
The current master branch of drvOms58.cc contains this:
#ifdef vxWorks
status = devRegisterAddress(__FILE__, OMS_ADDRS_TYPE,
(size_t) probeAddr, OMS_BRD_SIZE,
(volatile void **) &localaddr);
Debug(9, "motor_init: devRegisterAddress() status = %d\n", (int) status);
if (!RTN_SUCCESS(status))
{
errPrintf(status, __FILE__, __LINE__, "Can't register address 0x%x\n",
(unsigned int) probeAddr);
return(ERROR);
}
#endif
So it uses devLib to map the VME address (from the startup script) to a local CPU address. That should make the startup script OS-independent. But notice that this is in an ifdef for vxWorks.
There is a recent pull request to remove that vxWorks dependency. Which version of the code you are running?
Mark
From: Tech-talk <tech-talk-bounces at aps.anl.gov>
On Behalf Of Ralph Lange via Tech-talk
Sent: Friday, September 11, 2020 11:13 AM
To: EPICS Tech Talk <tech-talk at aps.anl.gov>
Subject: Re: RTEMS/MVME2100 OMS58 card does not exist! error
The different VME address spaces are being mapped into the address space of the CPU through different "address windows".
While the same jumper setting will have each card at the same location in the VME address space, the mapping into the CPU address space is different between RTEMS and VxWorks.
You have to find out their addresses under RTEMS and adapt the arguments to the driver setup call in your st.cmd accordingly.