Skip to content
Snippets Groups Projects
Commit c9c0382f authored by yamadas's avatar yamadas
Browse files

Modiry the output of pcie40_ul.

    Good! eve 00000481 pos 792 size 184
    Good! eve 00000000 pos 976 size 36
    Missing events cur 0 pre 481
    Invalid magic number 7fff0004 pos 1016 : 7fff0000 7fff0004 7fff0005 7fff0006 7fff0007 7fff0008 7fff0009 7fff00
    New ! eve 00000001 pos 1024 size 132 : 00000084 7f7f0001 44440001 00000001 11110001 33330001 1a160060 04d017ac
    Good! eve 00000002 pos 1160 size 156
parent 955be281
No related branches found
No related tags found
2 merge requests!6Master,!86links slc tool
...@@ -64,40 +64,50 @@ int decode_data_wUL( unsigned int * data , unsigned int * ce , int * crc , int * ...@@ -64,40 +64,50 @@ int decode_data_wUL( unsigned int * data , unsigned int * ce , int * crc , int *
int offset; int offset;
unsigned int exp_run, evenum, ctime, utime; unsigned int exp_run, evenum, ctime, utime;
if( *ce < 0 || DMASIZE < *ce ){
printf("Current positoin is out of DMASIZE %d. Exiting...\n", *ce );
exit(1);
}
*crc = 0 ; *crc = 0 ;
size = data[ ( *ce ) % DMASIZE ] ; size = data[ ( *ce ) % DMASIZE ] ;
magic = data[ ( *ce + 1 ) % DMASIZE ] ; magic = data[ ( *ce + 1 ) % DMASIZE ] ;
evenum = data[ ( *ce + 3 ) % DMASIZE ];
// Check a new event is available in the memory // Check a new event is available in the memory
if( ( magic & 0xffff0000 ) != 0x7f7f0000 ){ if( ( magic & 0xffff0000 ) != 0x7f7f0000 ){
// printf("Invalid magic number %.8x\n", magic ); printf("Invalid magic number %.8x pos %d : ", magic, *ce );
if ( ( *evn > 1 ) && ( ( ( data[ (*ce - 2 ) % DMASIZE ] & 0xffff0000 ) != 0xbbbc0000 ) && printf("%.8x %.8x %.8x %.8x %.8x %.8x %.8x %.8x\n",
( ( data[ (*ce -2) % DMASIZE ] & 0xFFFF0000 ) != 0x7FFF0000 )) ) { data[ ( *ce ) % DMASIZE ], data[ ( *ce + 1 ) % DMASIZE ], data[ ( *ce + 2 ) % DMASIZE ],
// printf( "Problem %d retry %d\n" , *evn , *retry ) ; data[ ( *ce + 3 ) % DMASIZE ], data[ ( *ce + 4 ) % DMASIZE ], data[ ( *ce + 5 ) % DMASIZE ],
++(*retry) ; data[ ( *ce + 6 ) % DMASIZE ], data[ ( *ce + 7 ) % DMASIZE ] );
//ecs_write( 0 , 2 , 0x000501A0 , 0x1 ) ; // search for next good event
int j = 0 ;
if ( *retry < 3 ) { for ( j = *ce ; j < *ce + DMASIZE ; ++j ) {
return 0 ; if ( ( ( data[ j ] & 0xffff0000 ) == 0x7f7f0000 ) &&
} ( ( data[ ( j + 2 ) % DMASIZE ] > *evn ) ) ) {
*retry = 0 ;
// search for next good event
int j = 0 ;
for ( j = 0 ; j < DMASIZE ; ++j ) {
if ( ( ( data[ j ] & 0xffff0000 ) == 0x7f7f0000 ) &&
( ( data[ ( j + 2 ) % DMASIZE ] > *evn ) ) ) {
size = data[ ( j - 1 ) % DMASIZE ] ; size = data[ ( j - 1 ) % DMASIZE ] ;
*ce = ( ( j - 1 ) % DMASIZE ) ;
//printf( "New event number %d %d\n" , *evn , data[ ( j + 2 ) % DMASIZE ] ) ;
evenum = data[ ( j + 2 ) % DMASIZE ];
*ce = ( j - 1 ) % DMASIZE;
printf("New ! eve %.8d pos %d size %d : ", evenum, *ce, size);
printf("%.8x %.8x %.8x %.8x %.8x %.8x %.8x %.8x\n",
data[ ( *ce ) % DMASIZE ], data[ ( *ce + 1 ) % DMASIZE ], data[ ( *ce + 2 ) % DMASIZE ],
data[ ( *ce + 3 ) % DMASIZE ], data[ ( *ce + 4 ) % DMASIZE ], data[ ( *ce + 5 ) % DMASIZE ],
data[ ( *ce + 6 ) % DMASIZE ], data[ ( *ce + 7 ) % DMASIZE ] );
break ; break ;
} }
} if( j == *ce + DMASIZE - 1 ) return 0;
} else { }
return 0; }else{
} printf("Good! eve %.8d pos %d size %d\n", evenum, *ce, size);
}
if( evenum - *evn != 1 ){
printf("Missing events cur %d pre %d\n", evenum, *evn );
} }
*evn = evenum;
return size;
if ( 0 == size ) return 0 ; if ( 0 == size ) return 0 ;
...@@ -201,9 +211,9 @@ int decode_data_wUL( unsigned int * data , unsigned int * ce , int * crc , int * ...@@ -201,9 +211,9 @@ int decode_data_wUL( unsigned int * data , unsigned int * ce , int * crc , int *
return size ; return size ;
} }
int main (int argc ,char** argv) { int main(int argc ,char** argv) {
// Stop trigger // Stop trigger
system( "ssh robbep@vme \"resetft -53\"" ) ; system( "ssh yamadas@ttd7 \"resetft -23\"" ) ;
sleep( 2 ) ; sleep( 2 ) ;
int res = ecs_open( 0 , 0 ) ; int res = ecs_open( 0 , 0 ) ;
if ( -1 == res ) printf("ERROR: Could not open device (BAR 0)\n") ; if ( -1 == res ) printf("ERROR: Could not open device (BAR 0)\n") ;
...@@ -217,27 +227,28 @@ int main (int argc ,char** argv) { ...@@ -217,27 +227,28 @@ int main (int argc ,char** argv) {
FILE* fp; FILE* fp;
char * ptr ; char * ptr ;
char * tmp ; char * tmp ;
fp = popen( "ssh robbep@vme \"trigft -53 pulse 1000 -1\"" , "r" ) ; fp = popen( "ssh yamadas@ttd7 \"trigft -23 pulse 10 -1\"" , "r" ) ;
char buf[1000] ; char buf[1000] ;
char exp[] = "exp" ; char exp[] = "exp" ;
// sleep( 2 ) ; sleep( 2 ) ;
while( fgets( buf , sizeof(buf) , fp ) != NULL ) { /* while( fgets( buf , sizeof(buf) , fp ) != NULL ) { */
// printf( "A= %d\n" , strncmp( exp , buf , 3 ) ) ; /* // printf( "buf %s\n" , buf ); */
// printf( strncmp( &buf[0] , 'exp' , 1 ) ) ; /* // printf( "A= %d\n" , strncmp( exp , buf , 3 ) ) ; */
tmp = strdup( buf ) ; /* // printf( strncmp( &buf[0] , 'exp' , 1 ) ) ; */
if ( strncmp( exp , buf , 3 ) == 0 ) { /* tmp = strdup( buf ) ; */
//printf( '%s\n' , buf ) ; /* if ( strncmp( exp , buf , 3 ) == 0 ) { */
// printf( "ICI\n" ) ; /* //printf( '%s\n' , buf ) ; */
ptr = strtok( tmp , " " ) ; /* // printf( "ICI\n" ) ; */
ptr = strtok( NULL , " " ) ; /* ptr = strtok( tmp , " " ) ; */
ptr = strtok( NULL , " " ) ; /* ptr = strtok( NULL , " " ) ; */
ptr = strtok( NULL , " " ) ; /* ptr = strtok( NULL , " " ) ; */
// while ( ptr != NULL ) { /* ptr = strtok( NULL , " " ) ; */
run = atoi( ptr ) ; /* // while ( ptr != NULL ) { */
// ptr = strtok( NULL , " " ) ; /* run = atoi( ptr ) ; */
} /* // ptr = strtok( NULL , " " ) ; */
//} /* } */
} /* //} */
/* } */
pclose( fp ) ; pclose( fp ) ;
//sleep( 2 ) ; //sleep( 2 ) ;
...@@ -255,7 +266,7 @@ int main (int argc ,char** argv) { ...@@ -255,7 +266,7 @@ int main (int argc ,char** argv) {
pctime = 0 ; pctime = 0 ;
putime = 0 ; putime = 0 ;
int i ; int i, j ;
int size, size_256, currentEventIndex, crc, nErr, nEvt, nRetry, nMissed ; int size, size_256, currentEventIndex, crc, nErr, nEvt, nRetry, nMissed ;
currentEventIndex = 0 ; currentEventIndex = 0 ;
nErr = 0 ; nErr = 0 ;
...@@ -265,7 +276,9 @@ int main (int argc ,char** argv) { ...@@ -265,7 +276,9 @@ int main (int argc ,char** argv) {
int read_dma = 1 ; int read_dma = 1 ;
clock_t begin = clock() ; clock_t begin = clock() ;
for ( i = 0 ; i < 10000000 ; ++i ) { // for ( i = 0 ; i < 10000000 ; ++i ) {
for ( i = 0 ; i < 10 ; ++i ) {
if ( ( nEvt % 1000 == 1 ) && ( size != 0 ) ) printf( "Event number %d\n", nEvt ) ; if ( ( nEvt % 1000 == 1 ) && ( size != 0 ) ) printf( "Event number %d\n", nEvt ) ;
if ( read_dma == 1 ) { if ( read_dma == 1 ) {
// set busy // set busy
...@@ -279,21 +292,32 @@ int main (int argc ,char** argv) { ...@@ -279,21 +292,32 @@ int main (int argc ,char** argv) {
read_dma = 1 ; read_dma = 1 ;
} }
printf("Try %.8x -----------------------------------\n",i );
for ( j = 0 ; j < DMASIZE ; ++j ) {
printf( "%.8x " , data[ j ] ) ;
if( j % 8 == 7 ) printf("\n");
}
bad = 0 ; bad = 0 ;
size = decode_data_wUL( data , &currentEventIndex , &crc , &run , &bad , &evn , &retry ,
&pctime , &putime , &nMissed ) ; printf("index %d data %.8x\n", currentEventIndex, data[ ( currentEventIndex + 1 ) % DMASIZE ] );
if ( 0 == size ) { while( currentEventIndex < DMASIZE && 0 <= currentEventIndex ){
read_dma = 1 ; currentEventIndex = currentEventIndex % DMASIZE ;
continue ; size = decode_data_wUL( data , &currentEventIndex , &crc , &run , &bad , &evn , &retry ,
} &pctime , &putime , &nMissed ) ;
if ( retry != 0 ) nRetry++ ; if ( 0 == size ) {
if ( size == -1 ) { read_dma = 1 ;
continue ;
}
if ( retry != 0 ) nRetry++ ;
if ( size == -1 ) {
nErr++ ; nErr++ ;
read_dma = 1 ; read_dma = 1 ;
continue ; continue ;
} }
if ( bad == 1 ) nErr++ ; if ( bad == 1 ) nErr++ ;
evn++ ; // evn++ ;
if( size % 8 != 0 ){ if( size % 8 != 0 ){
size_256 = ( size/8 + 1 )*8; size_256 = ( size/8 + 1 )*8;
...@@ -301,8 +325,11 @@ int main (int argc ,char** argv) { ...@@ -301,8 +325,11 @@ int main (int argc ,char** argv) {
size_256 = size ; size_256 = size ;
} }
currentEventIndex = ( currentEventIndex + size_256 ) % DMASIZE ; // printf("cur %d sz %d\n", currentEventIndex, size_256 );
currentEventIndex = currentEventIndex + size_256;
nEvt++ ; nEvt++ ;
}
currentEventIndex = currentEventIndex % DMASIZE ;
read_dma = 1 ; read_dma = 1 ;
retry = 0 ; retry = 0 ;
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment