extern void main(void) { OSStatus err; OSStatus junk; err = InitOpenTransportInContext(kInitOTForApplicationMask, NULL); if (err == noErr) { err = OTRegisterAsClientInContext("\pOTClassicContextTest", DummyNotifier, NULL); if (err == noErr) { err = TransferTest(); if (err == noErr) { err = MemTest(); } if (err == noErr) { err = OpenTest(); } if (err == noErr) { err = TaskTest(); } if (err == noErr) { err = StreamTest(); } junk = OTUnregisterAsClientInContext(NULL); assert(junk == noErr); } CloseOpenTransportInContext(NULL); }
void __EXIT(){ //&<<& #ifdef _ENABLE_LOGGING_ #ifdef _ENABLE_LOGGING_ DoLog("void __EXIT(){ \n"); #endif //&>>&1 0 1 6 char *s; FILE *fRunScript,*filelist; s=MFileName(EXECUTER_FILENAME); fRunScript=fopen(s,"w"); MemTest(fRunScript!=0); delete s; PutCurDir(fRunScript); while(mmm_LineClipboard && mmm_LineClipboard->prev) mmm_LineClipboard=mmm_LineClipboard->prev; while(mmm_LineClipboard && mmm_LineClipboard->next){ mmm_LineClipboard->Write(fRunScript,FILE_ASCII); mmm_LineClipboard=mmm_LineClipboard->next; } PutCurDir(fRunScript); fclose(fRunScript); s=MFileName("__mmm__.mmm"); filelist=fopen(s,"w"); MemTest(filelist!=0); delete s; PerformExitingFromFiles(filelist); fclose(filelist); chmod(MFileName(EXECUTER_FILENAME), 0755 ); //&<<& #ifdef _ENABLE_LOGGING_ #ifdef _ENABLE_LOGGING_ DoLog(" } exit(-1)...\n"); #endif //&>>&1 0 1 6 system(MFileName(EXECUTER_FILENAME)); exit(-1); }
int FinalTest(int crateNum, uint32_t slotMask, uint32_t testMask, int skip) { int updateDB = 1; lprintf("*** Starting Final Test ****************\n"); JsonNode *ftDocs[16]; char comments[1000]; memset(comments,'\0',1000); int errors; // initialize the crate errors = CrateInit(crateNum,slotMask,1,0,0,0,0,0,0,0,0); if (errors){ lprintf("Problem initializing the crate, exiting final test\n"); return -1; } errors = MTCInit(1); if (errors){ lprintf("Problem intializing the mtcd, exiting final test\n"); } lprintf("----------------------------------------\n"); lprintf("If any boards could not initialize properly, type \"quit\" now " "to exit the test.\n Otherwise hit enter to continue.\n"); contConnection->GetInput(comments,1000); if (strncmp("quit",comments,4) == 0){ lprintf("Exiting final test\n"); lprintf("****************************************\n"); return 0; } for (int i=0;i<16;i++){ if ((0x1<<i) & slotMask){ GetNewID(finalTestIDs[crateNum][i]); ftDocs[i] = json_mkobject(); } } lprintf("Now starting board_id\n"); BoardID(crateNum,slotMask); lprintf("----------------------------------------\n"); if (!skip && updateDB){ for (int i=0;i<16;i++){ if ((0x1<<i) & slotMask){ lprintf("Please enter any comments for slot %i motherboard now.\n",i); contConnection->GetInput(comments); json_append_member(ftDocs[i],"fec_comments",json_mkstring(comments)); lprintf("Has this slot been refurbished? (y/n)\n",i); contConnection->GetInput(comments); json_append_member(ftDocs[i],"refurbished",json_mkbool(comments[0] == 'y')); lprintf("Has this slot been cleaned? (y/n)\n",i); contConnection->GetInput(comments); json_append_member(ftDocs[i],"cleaned",json_mkbool(comments[0] == 'y')); lprintf("Time to measure resistance across analog outs and cmos address lines. For the cmos address lines" "it's easier if you do it during the fifo mod\n"); contConnection->GetInput(comments); json_append_member(ftDocs[i],"analog_out_res",json_mkstring(comments)); lprintf("Please enter any comments for slot %i db 0 now.\n",i); contConnection->GetInput(comments); json_append_member(ftDocs[i],"db0_comments",json_mkstring(comments)); lprintf("Please enter any comments for slot %i db 1 now.\n",i); contConnection->GetInput(comments); json_append_member(ftDocs[i],"db1_comments",json_mkstring(comments)); lprintf("Please enter any comments for slot %i db 2 now.\n",i); contConnection->GetInput(comments); json_append_member(ftDocs[i],"db2_comments",json_mkstring(comments)); lprintf("Please enter any comments for slot %i db 3 now.\n",i); contConnection->GetInput(comments); json_append_member(ftDocs[i],"db3_comments",json_mkstring(comments)); lprintf("Please enter dark matter measurements for slot %i db 0 now.\n",i); contConnection->GetInput(comments); json_append_member(ftDocs[i],"db0_dark_matter",json_mkstring(comments)); lprintf("Please enter dark matter measurements for slot %i db 1 now.\n",i); contConnection->GetInput(comments); json_append_member(ftDocs[i],"db1_dark_matter",json_mkstring(comments)); lprintf("Please enter dark matter measurements for slot %i db 2 now.\n",i); contConnection->GetInput(comments); json_append_member(ftDocs[i],"db2_dark_matter",json_mkstring(comments)); lprintf("Please enter dark matter measurements for slot %i db 3 now.\n",i); contConnection->GetInput(comments); json_append_member(ftDocs[i],"db3_dark_matter",json_mkstring(comments)); } } lprintf("Enter N100 DC offset\n"); contConnection->GetInput(comments); for (int i=0;i<16;i++){ if ((0x1<<i) & slotMask){ json_append_member(ftDocs[i],"dc_offset_n100",json_mkstring(comments)); } } lprintf("Enter N20 DC offset\n"); contConnection->GetInput(comments); for (int i=0;i<16;i++){ if ((0x1<<i) & slotMask){ json_append_member(ftDocs[i],"dc_offset_n20",json_mkstring(comments)); } } lprintf("Enter esum hi DC offset\n"); contConnection->GetInput(comments); for (int i=0;i<16;i++){ if ((0x1<<i) & slotMask){ json_append_member(ftDocs[i],"dc_offset_esumhi",json_mkstring(comments)); } } lprintf("Enter esum lo DC offset\n"); contConnection->GetInput(comments); for (int i=0;i<16;i++){ if ((0x1<<i) & slotMask){ json_append_member(ftDocs[i],"dc_offset_esumlo",json_mkstring(comments)); } } lprintf("Thank you. Please hit enter to continue with the rest of final test. This may take a while.\n"); contConnection->GetInput(comments); } // update the database if (updateDB){ for (int i=0;i<16;i++){ if ((0x1<<i) & slotMask){ json_append_member(ftDocs[i],"type",json_mkstring("final_test")); PostDebugDocWithID(crateNum, i, finalTestIDs[crateNum][i], ftDocs[i]); } } } lprintf("----------------------------------------\n"); int testCounter = 0; if ((0x1<<testCounter) & testMask) FECTest(crateNum,slotMask,updateDB,1); testCounter++; if ((0x1<<testCounter) & testMask) VMon(crateNum,slotMask,updateDB,1); testCounter++; if ((0x1<<testCounter) & testMask) CGTTest(crateNum,slotMask,0xFFFFFFFF,updateDB,1); testCounter++; CrateInit(crateNum,slotMask,1,0,0,0,0,0,0,0,0); if ((0x1<<testCounter) & testMask) PedRun(crateNum,slotMask,0xFFFFFFFF,0,DEFAULT_GT_DELAY,DEFAULT_PED_WIDTH,50,1000,300,updateDB,0,1); testCounter++; CrateInit(crateNum,slotMask,1,0,0,0,0,0,0,0,0); MTCInit(1); if ((0x1<<testCounter) & testMask) CrateCBal(crateNum,slotMask,0xFFFFFFFF,updateDB,1); testCounter++; lprintf("----------------------------------------\n"); // load cbal values now CrateInit(crateNum,slotMask,0,1,0,0,0,0,0,0,0); if ((0x1<<testCounter) & testMask) PedRun(crateNum,slotMask,0xFFFFFFFF,0,DEFAULT_GT_DELAY,DEFAULT_PED_WIDTH,50,1000,300,updateDB,1,1); testCounter++; if ((0x1<<testCounter) & testMask) ChinjScan(crateNum,slotMask,0xFFFFFFFF,0,DEFAULT_GT_DELAY,DEFAULT_PED_WIDTH,10,5000,400,1,1,updateDB,1); testCounter++; if ((0x1<<testCounter) & testMask) SetTTot(crateNum,slotMask,400,updateDB,1); testCounter++; // load cbal and ttot values now CrateInit(crateNum,slotMask,0,1,0,1,0,0,0,0,0); if ((0x1<<testCounter) & testMask) GetTTot(crateNum,slotMask,390,updateDB,1); testCounter++; if ((0x1<<testCounter) & testMask) DiscCheck(crateNum,slotMask,500000,updateDB,1); testCounter++; uint32_t slotMasks[MAX_XL3_CON]; for (int ic=0;ic<MAX_XL3_CON;ic++) slotMasks[ic] = slotMask; if ((0x1<<testCounter) & testMask) GTValidTest((0x1)<<crateNum,slotMasks,0xFFFFFFFF,400,0,0,updateDB,0,1); testCounter++; CrateInit(crateNum,slotMask,1,0,0,0,0,0,0,0,0); if ((0x1<<testCounter) & testMask) ZDisc(crateNum,slotMask,10000,0,updateDB,0,1,0); testCounter++; MTCInit(0); CrateInit(crateNum,slotMask,1,0,0,0,0,0,0,0,0); if ((0x1<<testCounter) & testMask) MbStabilityTest(crateNum,slotMask,50,updateDB,1); testCounter++; if ((0x1<<testCounter) & testMask) FifoTest(crateNum,slotMask,updateDB,1); testCounter++; // load alternate xilinx CrateInit(crateNum,slotMask,2,0,0,0,0,0,0,0,0); if ((0x1<<testCounter) & testMask) CaldTest(crateNum,slotMask,3500,750,200,1,updateDB,1); testCounter++; for (int i=0;i<16;i++){ if ((0x1<<i) & slotMask){ CrateInit(crateNum,slotMask,1,0,0,0,0,0,0,0,0); if ((0x1<<testCounter) & testMask) MemTest(crateNum,i,updateDB,1); } } testCounter++; CrateInit(crateNum,slotMask,1,0,0,0,0,0,0,0,0); if ((0x1<<testCounter) & testMask){ lprintf("Ready for see_refl test. Hit enter to enable triggers and continue or quit to skip and finish.\n\a"); contConnection->GetInput(comments); if (strncmp("quit",comments,4) != 0){ SeeReflection(crateNum,slotMask,0xFFFFFFFF,255,1000,updateDB,0,1); } } CrateInit(crateNum,slotMask,0,0,0,0,0,0,0,0); lprintf("----------------------------------------\n"); lprintf("Final Test finished!\n"); lprintf("****************************************\n"); return 0; }
int test( hydra_conf config ) { unsigned long *mem_ptr; unsigned long i, j, k, sram_size; unsigned long fail_addr, failed=FALSE; unsigned long parms[3], dram, g_sram=0xc0000000, length=0x4000; MemTestStruct MemTestResults; dram = config.l_dram_base; c40_printf( "\n\n" ); LED( RED, OFF, config ); LED( GREEN, OFF, config ); /* Test DRAM */ c40_printf( "Testing DRAM .... " ); if( !MemTest( 0x8d000000, config.dram_size*0x100000, &MemTestResults ) ) { c40_printf( "Failed at address %x\n\n\n", MemTestResults.FailAddress ); LED( RED, ON, config ); writeVIC( 0x7b, readVIC(0x7b) | 0x40 ); /* Assert SYSFAIL */ return( 0 ); } else c40_printf( "Passed\n" ); c40_printf( "Testing processor 1 ....\n" ); /* Test outer SRAM */ c40_printf( " Global SRAM ... " ); parms[0] = g_sram; parms[1] = dram; parms[2] = length; copy( parms ); if( !MemTest( 0xc0000000, config.sram1_size*1024, &MemTestResults ) ) { parms[0] = dram; parms[1] = g_sram; parms[2] = length; copy( parms ); c40_printf( "Failed at address %x\n\n\n", MemTestResults.FailAddress ); LED( RED, ON, config ); writeVIC( 0x7b, readVIC(0x7b) | 0x40 ); /* Assert SYSFAIL */ failed = TRUE; } else { parms[0] = dram; parms[1] = g_sram; parms[2] = length; copy( parms ); c40_printf( "Passed\n" ); } /* Test other 3 DSP's */ if( !CommFlush( config, DSP_2 ) ) { c40_printf( "Error booting DSP 2.\nAborting testing.\n" ); writeVIC( 0x7b, readVIC(0x7b) | 0x40 ); /* Assert SYSFAIL */ return( 0 ); } if( config.daughter ) { if( !CommFlush( config, DSP_3 ) ) { c40_printf( "Error booting DSP 3.\nAborting testing.\n" ); writeVIC( 0x7b, readVIC(0x7b) | 0x40 ); /* Assert SYSFAIL */ return( 0 ); } if( !CommFlush( config, DSP_4 ) ) { c40_printf( "Error booting DSP 4.\nAborting testing.\n" ); writeVIC( 0x7b, readVIC(0x7b) | 0x40 ); /* Assert SYSFAIL */ return( 0 ); } } reset_others( config, DSP_2 ); if( config.daughter ) { reset_others( config, DSP_3 ); reset_others( config, DSP_4 ); } /* Boot other processor(s) with boot code from EPROM */ c40_printf( "Booting other processor%s ... ", config.daughter?"s":"" ); if( i = BootOthers( DSP_2 ) ) { c40_printf( "Failed booting processor 2\n\n\n", i ); LED( RED, ON, config ); failed = TRUE; writeVIC( 0x7b, readVIC(0x7b) | 0x40 ); /* Assert SYSFAIL */ return(0); } else { /* Indicate that test will be performed */ comm_sen( DSP_2, YES, NumTries ); } if( config.daughter ) { if( i = BootOthers( DSP_3 ) ) { c40_printf( "Failed booting processor 3\n\n\n" ); LED( RED, ON, config ); failed = TRUE; writeVIC( 0x7b, readVIC(0x7b) | 0x40 ); /* Assert SYSFAIL */ return(0); } else { /* Indicate that test will be performed */ comm_sen( DSP_3, YES, NumTries ); } if( i = BootOthers( DSP_4 ) ) { c40_printf( "Failed booting processor 4\n\n\n" ); LED( RED, ON, config ); failed = TRUE; writeVIC( 0x7b, readVIC(0x7b) | 0x40 ); /* Assert SYSFAIL */ return(0); } else { /* Indicate that test will be performed */ comm_sen( DSP_4, YES, NumTries ); } } c40_printf( "Successful\n" ); /* Test Comm port connections on the Hydra card */ /* c40_printf( "Testing Comm Ports ... " ); if( !CommTest( config ) ) { c40_printf( "Failed\n" ); LED( RED, ON, config ); writeVIC( 0x7b, readVIC(0x7b) | 0x40 ); /* Assert SYSFAIL */ /* failed = TRUE; } else c40_printf( "Passed\n" ); */ if( config.daughter ) k = 3; else k = 1; /* Test memory on other processor(s) */ for( i=0 ; i < k ; i++ ) { /* Send DRAM size and base address */ if( !comm_sen( i, config.l_dram_base, NumTries ) ) return( FAILURE ); if( !comm_sen( i, config.dram_size, NumTries ) ) return( FAILURE ); c40_printf( "Testing DRAM from DSP %d ... ", 2+i ); if( !comm_rec( i, &fail_addr, NumTries ) ) { c40_printf( "\n DSP %d communication time out.\n", 2+i ); fail_addr = 0; } if( fail_addr ) { failed = TRUE; c40_printf( "Failed\n Failed at address %x.\n", fail_addr ); writeVIC( 0x7b, readVIC(0x7b) | 0x40 ); /* Assert SYSFAIL */ } else c40_printf( "Passed\n" ); for( j=0 ; j < 2 ; j++ ) { c40_printf( "Testing %s SRAM on DSP %d ... ", j?"local":"global", 2+i ); switch( i ) { case 0 : comm_sen( 0, config.sram2_size, NumTries ); break; case 1 : comm_sen( 1, config.sram3_size, NumTries ); break; case 2 : comm_sen( 2, config.sram4_size, NumTries ); break; } if( !comm_rec( i, &fail_addr, NumTries ) ) { c40_printf( "\n DSP %d communication time out.\n", 2+i ); fail_addr = 0; } if( fail_addr ) { failed = TRUE; c40_printf( "Failed\n Failed at address %x.\n", fail_addr ); writeVIC( 0x7b, readVIC(0x7b) | 0x40 ); /* Assert SYSFAIL */ } else c40_printf( "Passed\n" ); } } c40_printf( "\n\n" ); if( failed ) { /* Indicate failure */ LED( GREEN, OFF, config ); LED( RED, ON, config ); c40_printf( "\n\n" ); writeVIC( 0x7b, readVIC(0x7b) | 0x40 ); /* Assert SYSFAIL */ return( 0 ); } else { /* Indicate success */ LED( GREEN, ON, config ); LED( RED, OFF, config ); return( 1 ); } }