Subject: |
Re: VME configuration : MVME6100 can not map slot x to CR/CSR |
From: |
Dirk Zimoch <[email protected]> |
To: |
<[email protected]> |
Date: |
Mon, 28 May 2018 17:39:09 +0200 |
We at PSI use Linux on VME boards, but not on MVME6100.
To implement this, we needed a Linux kernel driver which supports user
space memory maps and interrupts. The standard Linux VME driver does
not! (Not even memory maps, only seek()/read()/write().)
Thus we needed to extend the VME kernel driver and then implement a
driver for our particular VME bridge. This was so complex that we needed
external help. It took more than a year. Of course the changes never
made it into the main Linux kernel repository.
If you are lucky, your board provider can give you a Kernel driver with
a proper user space interface. If you are unlucky the kernel driver you
get is crap.
Once you have the kernel driver and know
1. how to get a VME memory map in user space
2. how to get notified of VME interrupts in user space
3. optionally how to do DMA between VME and user space
then you can start writing devLibVME for your kernel driver. (That is
the easier part.)
Also be aware that passing interrupts to user space has a huge latency.
It is better with an RT patched kernel but still much worse than with a
real RTOS.
Dirk
On 27.05.2018 03:33, Michael Davidsaver wrote:
- linux : 2.6.20
What you see is not a mis-configuration. Unfortunately there
is no backend for VME on Linux included in devlib2. Only for
RTEMS or vxWorks.
I know there is at least one implementation out there using a
proprietary Linux driver for a VME bridge (not sure which one).
I've never had access to this.
So your options as I see them are to figure out how to use RTEMS,
or to find/write a Linux driver which devlib2 can be made to use*.
RTEMS is probably the easier route, although as you've found
there is a learning curve.
Michael
* The standard Linux VME userspace module doesn't support interrupts,
and would need modification/replacement as mrfioc2 relies heavily
on interrupts.
On 05/25/2018 08:00 AM, 유진성 wrote:
Hello
This question is about configuration of VME-EVG-230 or not.
Before I use mrfioc2 and devLib2, I didn't change configuration of any pins(GAP*, GA*) on VME-EVG-230.
I'm not sure that I have to change pins(GAP* and GA*) to load VME-EVG-230 on MVME6100(CPU) or not.
anyways, I made software environment successfully. there were no error during compiling.
but, I run EPICS IOC. And then I got problem.
*figure 1. trouble*
""
At that time, mrmEvgSetupVME() can't find EVG on my VME Crate.
I typed the collect CS/CSR starting Address that is based on MVME6100 reference manual.
*figure 2. CR/CSR slave address for MVME6100*
I can't find what is problem(software configuration or hardware setting).
I'm newbie for VME platform. please, check my log and answer me.
I'll wait for your reply
best regards,
P.S
Software environment, Hardware environment and log are below:
======software======
- linux : 2.6.20
- BSP : zImage.initrd.6100.2620.rm01 for MVME6100 from EMERSON
- devLib2 : 2.9
- epics : 3.14.12-rc1
- mfrioc2 : 2.2.0
=====Hardware=====
- VME crate : VME 64x
- CPU : MVME6100
- EVR : VME-EVR-230
- EVG : VME-EVG-230
=====log=======
-bash-3.2# ../../bin/linux-ppc74xx/mrf st.cmd
#!../../bin/linux-x86/nsls2evgMrm
< envPaths
epicsEnvSet("ARCH","linux-ppc74xx")
epicsEnvSet("IOC","iocevgmrm")
epicsEnvSet("TOP","/usr/local/epics/base/modules/instrument/mrfioc2-2.2.0/")
epicsEnvSet("EPICS_BASE","/usr/local/epics/base")
cd /usr/local/epics/base/modules/instrument/mrfioc2-2.2.0
## Register all support components
#dbLoadDatabase("/usr/local/epics/base/modules/instrument/mrfioc2-2.2.0/dbd/mrf.dbd")
dbLoadDatabase("dbd/mrf.dbd")
mrf_registerRecordDeviceDriver(pdbbase)
Warning: IOC is booting with TOP = "/usr/local/epics/base/modules/instrument/mrfioc2-2.2.0/"
but was built with TOP = "/usr/local/epics/R3.14.12-rc1/modules/instrument/mrfioc2-2.2.0"
epicsEnvSet("ENGINEER","Jayesh Shah")
epicsEnvSet("LOCATION","Blg 902 Rm 28")
bspExtVerbosity=0
st.cmd -- Line 14 -- Command bspExtVerbosity=0 not found.
#mrmEvgSetupVME (
# const char* id, // EVG card ID
# epicsInt32 slot, // VME slot
# epicsUInt32 vmeAddress, // Desired VME address in A24 space
# epicsInt32 irqLevel // IRQ Level
# epicsInt32 irqVector, // Desired interrupt vector number
#)
mrmEvgSetupVME(EVG1, 4, 0x200000, 4, 0xC0)
pdevLibVME is NULL
Failed to map slot 4 to CR/CSR address 0x00200000
No EVG in slot 4
## Load record instances
dbLoadRecords("db/vme-evg230.db", "SYS=TST, D=evg:1, EVG=EVG1")
# BNL specific timing sequence constructor
#dbLoadRecords("db/nsls2-inj-seqs.db","LN=LN-TS, BR=BR-TS, INJ=TST, EVG=evg:1, SEQ=SoftSeq:0")
dbLoadRecords("db/iocAdminRTEMS.db", "IOC=mrftest")
filename="../dbLexRoutines.c" line number=243
No such file or directory dbRead opening file db/iocAdminRTEMS.db
# Auto save/restore
# save_restoreDebug(2)
# dbLoadRecords("db/save_restoreStatus.db", "P=mrftest:")
# save_restoreSet_status_prefix("mrftest:")
# set_savefile_path("{mnt}/as","/save")
# set_requestfile_path("{mnt}/as","/req")
# set_pass0_restoreFile("mrf_settings.sav")
# set_pass0_restoreFile("mrf_values.sav")
# set_pass1_restoreFile("mrf_values.sav")
# set_pass1_restoreFile("mrf_waveforms.sav")
iocInit()
Starting iocInit
############################################################################
## EPICS R3.14.12-rc1 $Date: Mon 2010-11-15 13:59:06 -0600$
## EPICS Base built May 15 2018
############################################################################
==END==
- References:
- VME configuration : MVME6100 can not map slot x to CR/CSR 유진성
- Re: VME configuration : MVME6100 can not map slot x to CR/CSR Michael Davidsaver
- Navigate by Date:
- Prev:
ADPvcam: can't create IOC because of missing build (bin) folder Häbel, Catharina
- Next:
tvx for pilatus randomic crash over ssh Gabriel de Souza Fedel
- Index:
1994
1995
1996
1997
1998
1999
2000
2001
2002
2003
2004
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
<2018>
2019
2020
2021
2022
2023
2024
- Navigate by Thread:
- Prev:
Re: VME configuration : MVME6100 can not map slot x to CR/CSR Michael Davidsaver
- Next:
areaDetector working group meeting at the EPICS Collaboration Meeting June 12 Mark Rivers
- Index:
1994
1995
1996
1997
1998
1999
2000
2001
2002
2003
2004
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
<2018>
2019
2020
2021
2022
2023
2024
|