vme access test program int main(int argc, long data1, long data, long data2, long data3, long a,...

5
VME Access Test Program int main(int argc, long Data1, long Data, long Data2, long Data3, long a, long dw, long dv, long b, long c, long Da32, long Da1, long Da2, long Da3, long Da4, long Da5, long Da6, long Da7, long Da8, long Da9, long Da10, long Da11, long Da12, long Da13, long Da14, long Da15, long Da16, long Da17, long Da18, long Da19, long Da20, long Da21, long Da22, long Da23, long Da24, long Da25, long Da26, long Da27, long Da28, long Da29, long Da30, long Da31, char* argv[]) { Data=0; Data1=0; Data2=0; Data3=0; CVME * vme = new CVME; vme->Initialize(0, BT_DEV_A24); // In my teststand, the PCI card unit is 0. CCamac camac; camac.Init(vme); const int lut_add(0x700400); // MS MU1 Rank/Phi LUT address const int gen_add(0x700158); // MS CSR0 (general purpose R/W) const int itr_max(2000); // Maximum number of iterations int data_in(0); // input data for(int itr(0); itr<itr_max; ++itr) { // Write/Read test on the MS LUT for(int i = lut_add; i<lut_add+256; i+=2) { data_in = i-lut_add+1; vme->Write((bt_devaddr_t)i, (WORD)data_in); vme->Read( (bt_devaddr_t)i, (WORD*)&Data ); if( data_in != (int)Data ) { cout << "Fount error at itr = " << dec << itr << " " << "in:out = 0x" << hex << data_in << " : 0x" << Data << endl; } } // Write/Read test on MS CSR0 data_in = itr+1; vme->Write((bt_devaddr_t)gen_add, (WORD)data_in); vme->Read( (bt_devaddr_t)gen_add, (WORD*)&Data ); if( data_in != (int)Data ) { cout << "Fount error in gen_add at itr = " << dec << itr << " " << "in:out = 0x" << hex << data_in << " : 0x" << Data << endl; } } return 0; }

Upload: ethelbert-hensley

Post on 14-Dec-2015

224 views

Category:

Documents


4 download

TRANSCRIPT

Page 1: VME Access Test Program int main(int argc, long Data1, long Data, long Data2, long Data3, long a, long dw, long dv, long b, long c, long Da32, long Da1,

VME Access Test Programint main(int argc, long Data1, long Data, long Data2,

long Data3, long a, long dw, long dv, long b, long c, long Da32, long Da1, long Da2, long Da3, long Da4, long Da5, long Da6, long Da7, long Da8, long Da9, long Da10, long Da11, long Da12, long Da13, long Da14, long Da15, long Da16, long Da17, long Da18, long Da19, long Da20, long Da21, long Da22, long Da23, long Da24, long Da25, long Da26, long Da27, long Da28, long Da29, long Da30, long Da31, char* argv[])

{ Data=0; Data1=0; Data2=0; Data3=0;

CVME * vme = new CVME; vme->Initialize(0, BT_DEV_A24); // In my teststand, the PCI card

unit is 0.

CCamac camac; camac.Init(vme);

const int lut_add(0x700400); // MS MU1 Rank/Phi LUT address const int gen_add(0x700158); // MS CSR0 (general purpose R/W) const int itr_max(2000); // Maximum number of iterations

int data_in(0); // input data

for(int itr(0); itr<itr_max; ++itr) { // Write/Read test on the MS LUT for(int i = lut_add; i<lut_add+256; i+=2) {

data_in = i-lut_add+1; vme->Write((bt_devaddr_t)i, (WORD)data_in); vme->Read( (bt_devaddr_t)i, (WORD*)&Data ); if( data_in != (int)Data ) { cout << "Fount error at itr = " << dec << itr << " " << "in:out = 0x" << hex << data_in << " : 0x" << Data

<< endl; }

}

// Write/Read test on MS CSR0 data_in = itr+1; vme->Write((bt_devaddr_t)gen_add, (WORD)data_in); vme->Read( (bt_devaddr_t)gen_add, (WORD*)&Data ); if( data_in != (int)Data ) {

cout << "Fount error in gen_add at itr = " << dec << itr << " " << "in:out = 0x" << hex << data_in << " : 0x" << Data

<< endl; } }

return 0;}

Page 2: VME Access Test Program int main(int argc, long Data1, long Data, long Data2, long Data3, long a, long dw, long dv, long b, long c, long Da32, long Da1,

Output LogfileFount error in gen_add at itr = 13 in:out = 0xe : 0xffFount error in gen_add at itr = 28 in:out = 0x1d : 0xffFount error in gen_add at itr = 29 in:out = 0x1e : 0xffFount error in gen_add at itr = 72 in:out = 0x49 : 0xffFount error in gen_add at itr = 73 in:out = 0x4a : 0xffFount error in gen_add at itr = 78 in:out = 0x4f : 0xffFount error in gen_add at itr = 80 in:out = 0x51 : 0xffFount error in gen_add at itr = 82 in:out = 0x53 : 0xffFount error in gen_add at itr = 87 in:out = 0x58 : 0xffFount error in gen_add at itr = 88 in:out = 0x59 : 0xffFount error in gen_add at itr = 90 in:out = 0x5b : 0xffFount error in gen_add at itr = 101 in:out = 0x66 : 0xffFount error in gen_add at itr = 111 in:out = 0x70 : 0xffFount error in gen_add at itr = 112 in:out = 0x71 : 0xffFount error in gen_add at itr = 129 in:out = 0x82 : 0xffFount error in gen_add at itr = 135 in:out = 0x88 : 0xffFount error in gen_add at itr = 167 in:out = 0xa8 : 0xffFount error in gen_add at itr = 190 in:out = 0xbf : 0xff . . .

Page 3: VME Access Test Program int main(int argc, long Data1, long Data, long Data2, long Data3, long a, long dw, long dv, long b, long c, long Da32, long Da1,

Done

Swap the SBS VME controllersSwap the SBS PCI cardsRun test programs which used to work

☺Test each board using Mike’s test-stand set up

Page 4: VME Access Test Program int main(int argc, long Data1, long Data, long Data2, long Data3, long a, long dw, long dv, long b, long c, long Da32, long Da1,

Potential Location of Problem

• Hardware– SBS VME controller– SBS PCI card– TF backplane

• Software– Test program (unlikely)– SBS driver– System files

Page 5: VME Access Test Program int main(int argc, long Data1, long Data, long Data2, long Data3, long a, long dw, long dv, long b, long c, long Da32, long Da1,

To Do

• SBS PCI card/ VME controller - Check using Mike’s PC and peripheral crate

• TF backplane - Check using Mike’s PCI card and VME controller

• Software - Scan viruses and check system files and driver