Difference between revisions of "SIS3600 Trigger Supervisor"
Line 30: | Line 30: | ||
== compiling VxWorks Modules== | == compiling VxWorks Modules== | ||
− | In order to compile VxWorks modules you need the cross compiler ccppc which compiles binaries which will run on PPC chip sets used by the ROC. The cross compiled was distributed as a binary from the CODA group. | + | In order to compile VxWorks modules you need the cross compiler ccppc which compiles binaries which will run on PPC chip sets used by the ROC. The cross compiled was distributed as a binary from the CODA group and is located in |
+ | |||
+ | /usr/local/gnu/x86-linux/bin/ccppc. | ||
+ | |||
+ | You also need the header files for the particular version of VxWorks you are using. I created a subdirectory called "ROClibs" in which I store all of these libraries and download them onto the ROC. The "ROCLibs" subdirectory is located under the CODA directory but isn't associated with a version of CODA since. I got the VxWorks header files from | ||
+ | |||
+ | /site/vxworks/5.5/ppc/target/h | ||
+ | |||
+ | and copied the whole "h/" subdirectory under "ROClibs" | ||
+ | |||
+ | |||
+ | == Makefile.ppc== | ||
+ | |||
+ | The Makefile below is used to compile the libraries | ||
+ | |||
+ | # | ||
+ | # Description: | ||
+ | # Makefile for PPC code | ||
+ | # | ||
+ | ifndef ARCH | ||
+ | ARCH = VXWORKSPPC | ||
+ | endif | ||
+ | #example | ||
+ | #ccppc -i adc1182.c -fno-builtin -fno-for-scope -fstrength-reduce -nostdinc -nostdinc -mcpu=604 -DCPU=PPC604 | ||
+ | -DVXWORKS -D_GNU_TOOL -DVXWORKSPPC -I/usr/local/coda/2.5/common/include/ -I./h -o adc1182_ppc.o | ||
+ | CC = ccppc | ||
+ | LD = ldppc | ||
+ | LIBDIR = $(CODA)/$(ARCH)/lib | ||
+ | #DEFINES = -DVXWORKS -DVXWORKSPPC -DCPU=PPC604 -D_GNU_TOOL | ||
+ | DEFINES = -mcpu=604 -DCPU=PPC604 -DVXWORKS -D_GNU_TOOL -DVXWORKSPPC | ||
+ | INCS = -I$(CODA)/common/include/ -I./h | ||
+ | CFLAGS = -fno-builtin -fno-for-scope -fstrength-reduce -mlongcall $(DEFINES) -I$(CODA)/common/include -I./h | ||
+ | #OBJS = adc1182_ppc.o scale32Lib.o usrstrutils.o | ||
+ | #OBJS = adc1182_ppc.o scale32Lib.o pas9740Lib.o | ||
+ | OBJS = sis3610Lib.o | ||
+ | all: $(OBJS) | ||
+ | sis3610LIB.o: sis3610Lib.c sis3610.h | ||
+ | $(CC) -i sis3610Lib.c $(CFLAGS) -o sis3610Lib_ppc.o | ||
+ | clean: distclean | ||
+ | distclean: | ||
+ | rm -f $(OBJS) | ||
+ | exports: install | ||
+ | install: | ||
+ | cp $(OBJS) $(CLON_VXWORKS)/code | ||
+ | |||
Revision as of 18:03, 23 October 2007
Setting address
Address | |
Pin | Setting |
SW-A32L | 3 |
SW-A32U | 8 |
SW-A24L | 3 |
SW-A24U | 8 |
SW-A16 | 3 |
There was also a of jumpers labeled "EN_A16, "EN_A24" and "EN_A32". The factory default setting was "EN_A32" so I moved the jumper to "EN_16".
I left the base address unchanged. Which means for A16 addressing mode the address will be 0x3800.
loading ROC library
A ROC library is created by compiling "c" code functions which make VxWorks system calls to modules in the VME.
compiling VxWorks Modules
In order to compile VxWorks modules you need the cross compiler ccppc which compiles binaries which will run on PPC chip sets used by the ROC. The cross compiled was distributed as a binary from the CODA group and is located in
/usr/local/gnu/x86-linux/bin/ccppc.
You also need the header files for the particular version of VxWorks you are using. I created a subdirectory called "ROClibs" in which I store all of these libraries and download them onto the ROC. The "ROCLibs" subdirectory is located under the CODA directory but isn't associated with a version of CODA since. I got the VxWorks header files from
/site/vxworks/5.5/ppc/target/h
and copied the whole "h/" subdirectory under "ROClibs"
Makefile.ppc
The Makefile below is used to compile the libraries
# # Description: # Makefile for PPC code # ifndef ARCH ARCH = VXWORKSPPC endif #example #ccppc -i adc1182.c -fno-builtin -fno-for-scope -fstrength-reduce -nostdinc -nostdinc -mcpu=604 -DCPU=PPC604 -DVXWORKS -D_GNU_TOOL -DVXWORKSPPC -I/usr/local/coda/2.5/common/include/ -I./h -o adc1182_ppc.o CC = ccppc LD = ldppc LIBDIR = $(CODA)/$(ARCH)/lib #DEFINES = -DVXWORKS -DVXWORKSPPC -DCPU=PPC604 -D_GNU_TOOL DEFINES = -mcpu=604 -DCPU=PPC604 -DVXWORKS -D_GNU_TOOL -DVXWORKSPPC INCS = -I$(CODA)/common/include/ -I./h CFLAGS = -fno-builtin -fno-for-scope -fstrength-reduce -mlongcall $(DEFINES) -I$(CODA)/common/include -I./h #OBJS = adc1182_ppc.o scale32Lib.o usrstrutils.o #OBJS = adc1182_ppc.o scale32Lib.o pas9740Lib.o OBJS = sis3610Lib.o all: $(OBJS) sis3610LIB.o: sis3610Lib.c sis3610.h $(CC) -i sis3610Lib.c $(CFLAGS) -o sis3610Lib_ppc.o clean: distclean distclean: rm -f $(OBJS) exports: install install: cp $(OBJS) $(CLON_VXWORKS)/code
Test Communication from ROC console
From the ROC console (minicom window) I tried talking to the SIS3610 using the library function "s3610Init"
-> s3610Init 0x3800 Initialized SIS3610 ID 0 at address 0x91003800 value = 0 = 0x0
The next test was to try and turn the user LED (labeled "U" on the front pannel) on and off.
From the ROC console I typed
-> s3610SetLED value = 0 = 0x0
and I saw the green LED light up
I then typed
-> s3610ClearLED value = 0 = 0x0
and I saw it turn off