Skip to content
Snippets Groups Projects
Commit 5761f047 authored by Satoru Yamada's avatar Satoru Yamada
Browse files

Print out every TRAILER when 7f7f is found.

7f7f is found. TRAILER f801f803 eve 008812af exprun 00003c00 pos 19473
7f7f is found. TRAILER f80bf80d eve 3c003333 exprun f803f805 pos 20353
7f7f is found. TRAILER f801f803 eve 00881dfb exprun 00003c00 pos 21401
parent b4c4c153
No related branches found
No related tags found
1 merge request!56links
......@@ -111,11 +111,11 @@ int crc_calc_event( unsigned int* data, int start_pos ){
printf("End\n");
#endif
int bad = 0;
// printf("good flag %d\n", good_flag); fflush(stdout);
while( offset + 4 < size ){ // 4 = ROB trailer size
cur_pos = start_pos + offset;
int size_link = data[ cur_pos % DMASIZE ] & 0x000ffff ; if ( 0 >= size_link || size_link > 10000000 ){
int size_link = data[ cur_pos % DMASIZE ] & 0x000ffff ;
if ( 0 >= size_link || size_link > 10000000 ){
printf("[ERROR] Invalid size per link (%.8x words): link num %d\n", size_link, link_num);
return -1 ; // it could be that the memory was read
}
......@@ -152,16 +152,14 @@ int crc_calc_event( unsigned int* data, int start_pos ){
}else{
good_flag = 1;
// printf("%.2d Good ! calcd %.4x data %.4x offset %.4x size %.4x szlnk %.4x trl %.8x\n", link_num, crc, data[ cur_pos % DMASIZE ] & 0xffff, offset, size, size_link, data[ (cur_pos+1) % DMASIZE ] );
// printf("%.2d Good ! calcd %.4x data %.4x offset %.4x size %.4x szlnk %.4x trl %.8x\n",
// link_num, crc, data[ cur_pos % DMASIZE ] & 0xffff, offset, size, size_link, data[ (cur_pos+1) % DMASIZE ] );
}
link_num++;
offset += size_link;
}
if( bad ){
// if( evenum > 50000 ){
// if( 1 ){
......@@ -176,54 +174,6 @@ int crc_calc_event( unsigned int* data, int start_pos ){
}
int decode_data_wUL( unsigned int * data , unsigned int * ce , int * crc , int * run ,
int * bad , int *evn , int * retry , int * pctime , int * putime ,
int * nmissed ) {
int magic;
int size, size_link;
int ix ;
int offset;
unsigned int exp_run, evenum, ctime, utime;
int start_pos = *ce;
int cnt = 0;
int cur_pos = *ce + 1;
int ret = 0;
while( !( ( ( magic = data[ cur_pos % DMASIZE ] ) & 0xffff0000 ) != 0x7f7f0000 ) ){
usleep(1000);
cnt++;
//
// Scan to find x"7f7f...."
//
if( cnt > 10 ){
cnt = 0;
int j = 0 ;
for ( j = 0 ; j < DMASIZE ; ++j ) {
if ( ( ( data[ ( cur_pos + j ) % DMASIZE ] & 0xffff0000 ) == 0x7f7f0000 ) ){
evenum = data[ ( cur_pos + j + 2 ) % DMASIZE ];
if( evenum > *evn ){
*evn = evenum;
cur_pos = ( cur_pos + j - 1 + DMASIZE ) % DMASIZE;
size = data[ cur_pos ] ;
*ce = ( cur_pos + size ) % DMASIZE;
printf( "New Event number prev %d new %d pos %d size %d\n" , *evn , evenum, cur_pos, size );
crc_calc_event( data, cur_pos );
}else{
printf( "Old Event number prev %d new %d pos %d\n" , *evn , evenum, ( cur_pos + j - 1 + DMASIZE ) % DMASIZE );
break;
}
}else{
continue;
}
}
}
}
return size ;
}
int main (int argc ,char** argv) {
// Stop trigger
......@@ -307,7 +257,6 @@ int crc_calc_event( unsigned int* data, int start_pos ){
unsigned int cur_eve = 0, next_eve = 0;
int mod_pos = 0;
int while_cnt = 0;
// if ( ( nEvt % 1000 == 1 ) && ( size != 0 ) ) printf( "Event number %d\n", nEvt ) ;
//
......@@ -333,31 +282,9 @@ int crc_calc_event( unsigned int* data, int start_pos ){
//
while( 1 ){
while( 1 ){
if( ( ( ( magic = data[ ( cur_pos + 1 ) % DMASIZE ] ) & 0xffff0000 ) == 0x7f7f0000 )
&& ( data[ ( cur_pos + data[ cur_pos % DMASIZE ] - 1 + DMASIZE ) % DMASIZE ] == 0x7fff0006 )
// && ( ( data[ ( cur_pos + data[ cur_pos % DMASIZE ] - 4 + DMASIZE ) % DMASIZE ] & 0x0000ffff )
// == ( data[ ( cur_pos + 3 ) % DMASIZE ] & 0x0000ffff ) )
){
if( while_cnt % 1000 == 0 ){
// printf("GOT %.8x %.8x %.8x %.8x\n",
// data[ ( cur_pos + 1 ) % DMASIZE ],
// data[ ( cur_pos + data[ cur_pos % DMASIZE ] - 1 + DMASIZE ) % DMASIZE ],
// data[ ( cur_pos + data[ cur_pos % DMASIZE ] - 4 + DMASIZE ) % DMASIZE ],
// data[ ( cur_pos + 3 ) % DMASIZE ]
// );
}
while_cnt++;
if( !( ( ( ( magic = data[ ( cur_pos + 1 ) % DMASIZE ] ) & 0xffff0000 ) != 0x7f7f0000 )
|| data[ ( cur_pos + data[ cur_pos % DMASIZE ] - 1 + DMASIZE ) % DMASIZE ] != 0x7fff0006 ) ){
break;
}else{
if( ( data[ ( cur_pos + 1 ) % DMASIZE ] & 0xffff0000 ) == 0x7f7f0000 ){
// printf("magic hdr %.8x trl %.8x eve hdr %.8x trl %8.x cnt %d\n",
// data[ ( cur_pos + 1 ) % DMASIZE ],
// data[ ( cur_pos + data[ cur_pos % DMASIZE ] - 1 + DMASIZE ) % DMASIZE ],
// data[ ( cur_pos + 3 ) % DMASIZE ],
// data[ ( cur_pos + data[ cur_pos % DMASIZE ] - 4 + DMASIZE ) % DMASIZE ],
// eve_cnt
// );
}
}
// printf("MAGIC %.8x\n", magic);
......@@ -367,9 +294,6 @@ int crc_calc_event( unsigned int* data, int start_pos ){
// Refresh DMA memory
//
res = pcie40_b2dmapointerread( 0 , &data ) ;
int wait_flag = 0;
//
// Scan to find x"7f7f...."
......@@ -377,9 +301,7 @@ int crc_calc_event( unsigned int* data, int start_pos ){
if( cnt > 100 ){
cnt = 0;
int j = 0 ;
for ( j = 0 ; j < DMASIZE ; ++j ) {
#ifdef DEBUG
printf("%.8x %d\n", data[ ( cur_pos + j + 1 ) % DMASIZE ], cur_pos + j );
#endif
......@@ -387,19 +309,21 @@ int crc_calc_event( unsigned int* data, int start_pos ){
next_eve = data[ ( cur_pos + j + 3 ) % DMASIZE ];
next_exp_run = data[ ( cur_pos + j + 2 ) % DMASIZE ] ;
// printf( "TRAILER %.8x %.8x %.8x\n",data[ ( cur_pos + j + data[ ( cur_pos + j + DMASIZE ) % DMASIZE ] - 1 + DMASIZE ) % DMASIZE ] );
printf( "7f7f is found. TRAILER %.8x eve %.8x exprun %.8x pos %d\n",
data[ ( cur_pos + j + data[ ( cur_pos + j + DMASIZE ) % DMASIZE ] - 1 + DMASIZE ) % DMASIZE ],
next_eve, next_exp_run, ( cur_pos + j + 1 ) % DMASIZE );
if( next_eve > cur_eve || next_exp_run > cur_exp_run ){
if( next_eve > cur_eve && next_exp_run >= cur_exp_run ){
/* if( data[ ( ( data[ ( cur_pos + j + DMASIZE ) % DMASIZE ] ) - 1 + DMASIZE ) % DMASIZE ] != 0x7fff0006 ){ */
/* usleep(1000); */
/* break; */
/* } */
cur_pos = ( cur_pos + j + DMASIZE ) % DMASIZE;
size = data[ cur_pos ];
// printf( "Detect new Event number prev %.8x new %.8x pos %.8x size %.8x cnt %d\n" , cur_eve , next_eve, cur_pos, size, eve_cnt );
// printf( "Detect new Event number prev %.8x new %.8x pos %.8x size %.8x\n" , cur_eve , next_eve, cur_pos, size );
break;
}else{
// printf( "Detect Old Event number prev %.8x new %.8x pos %d cnt %d\n" , cur_eve , next_eve, ( cur_pos + j + DMASIZE ) % DMASIZE, eve_cnt );
// printf( "Detect Old Event number prev %.8x new %.8x pos %d\n" , cur_eve , next_eve, ( cur_pos + j + DMASIZE ) % DMASIZE );
break;
}
}else{
......@@ -407,7 +331,6 @@ int crc_calc_event( unsigned int* data, int start_pos ){
}
}
}
// printf("Scanning... cnt=%d\n", cnt );
cnt++;
}
size = data[ cur_pos ] ;
......@@ -423,20 +346,17 @@ int crc_calc_event( unsigned int* data, int start_pos ){
}
eve_cnt++;
ret = crc_calc_event( data, cur_pos );
if( ret != 1 ){
crc_err_eve_cnt++;
}
if(ret != 1 || eve_cnt % 1000 == 0 ){
printf( "[INFO] Event number prev %.8x new %.8x pos %.8x size %.8x\n" , cur_eve , next_eve, cur_pos, size );
fflush(stdout);
if(ret != 1 || eve_cnt % 100 == 0 ){
printf( "Event number prev %.8x new %.8x pos %.8x size %.8x\n" , cur_eve , next_eve, cur_pos, size );
}
cur_eve = next_eve;
cur_exp_run = next_exp_run;
if(ret != 1 || eve_cnt % 1000 == 0 ){
printf("[INFO] STATUS : tot eve %d read eve %d err_eve %d run %d\n", next_eve - first_eve, eve_cnt, crc_err_eve_cnt, cur_exp_run );
fflush(stdout);
if(ret != 1 || eve_cnt % 100 == 0 ){
printf("STATUS : tot eve %d read eve %d err_eve %d run %d\n", next_eve - first_eve, eve_cnt, crc_err_eve_cnt, cur_exp_run );
}
mod_pos = ( cur_pos + size ) % 8;
if( mod_pos != 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