# This is an ide startup file. report=4 # set verbose, but not debug $stoponerr=1 hinv -v echo "" echo "Ide included scripts are" echo " memory ip20 cpudsp" echo " lg1 lg1_dma lg1_all srv2" echo " gr2_initsys clear gr2" echo " gr2_quad gr2_fourquad gr2_quadserial" echo " gr2_vdma" echo " kv cc1 ab1" echo " ab1_red ab1_green ab1_blue" printf "\n - define list," list { if ($$ == 1) { printf "list " symbols -l printf "\n" return 0 } else { $res_ult = symbols -t $1 return $res_ult } } printf " match," match { if ($$ == 1) { printf "usage: match KEYSTRING\n" return -1 } else { $res_ult = symbols -k $1 return $res_ult } } printf " hx," hx { printf "0x%x\n" $1 } # define simple usec, msec, and second delays # printf " - delays with intervals of usec, msec, and second granularity:\n" # printf " --> us_delay, ms_delay, and sleep.\n usages: " # printf " 'us_delay USECS' 'ms_delay MSECS' 'sleep SECS'\n" us_delay { ide_delay -u $1 } # eg: 'us_delay 100' ms_delay { ide_delay -m $1 } # eg: 'ms_delay 15' sleep { ide_delay -s $1 } # eg: 'sleep 5' printf " symcmd, and charcmd\n" # demonstrate parameter-passing for user-defined commands which # call functions using the 'sym_t *' argv format symcmd { test_symcmd $1 $2 } # and for udef commands calling functions using 'char *' argv format charcmd { test_charcmd $1 $2 } # Startup script for the CPU DSP diagnostics cpudsp { # DSP static RAM if ((cpudsp_sram) && $stoponerr) wait; if ((dsp56) && $stoponerr) wait; # END OF CPU DSP SCRIPT } # memory and cache test memory { $tmp = memtest; if ($tmp && $stoponerr) wait; $tmp = ldram; if ($tmp && $stoponerr) wait; $tmp = ldram -p; if ($tmp && $stoponerr) wait; $tmp = dram; if ($tmp && $stoponerr) wait; $tmp = dram -p; if ($tmp && $stoponerr) wait; $tmp = dcache1; if ($tmp && $stoponerr) wait; $tmp = icache1; if ($tmp && $stoponerr) wait; $tmp = icache2; if ($tmp && $stoponerr) wait; $tmp = scache1; if ($tmp && $stoponerr) wait; } # END OF MEMORY SCRIPT # THE FOLLOWING IS THE STARTUP SCRIPT FOR THE CPU DIAGNOSTICS. # # IN ORDER FOR THE SCRIPT TO RUN PROPERLY, THE FOLLOWING MUST BE DONE: # 1. CONNECT THE TRANSMIT AND RECEIVE PINS ON CHANNEL A AND B OF DUART 0, # CHANNEL B OF DUART 1 (FOR CHANNEL B OF DUART 1, THE REQUEST_TO_SEND # AND CLEAR_TO_SEND PINS MUST ALSO BE CONNECTED). # 2. CONNECT A MICROPHONE AND A SPEAKER TO THE AUDIO CIRCUITRY. # 3. CONNECT A ETHERNET CABLE TO THE ONBOARD ETHERNET CONNECTOR, THE CABLE # MUST BE CONNECTED TO A TRANSCEIVER. ip20 { # Interrupt mask registers data test. if ((int2) && $stoponerr) wait; # TLB test. Verify different tlb functions. if ((tlb) && $stoponerr) wait; # UTLB miss exception test. Verify the exception generating capability of the # mips chip during a utlb miss. if ((utlb) && $stoponerr) wait; # Real time clock test. Verify the accuracy of the real time clock and the carry # circuitry by using the timer within the ctl1 gate array. if ((!clock) && $stoponerr) wait; # Interval timer test. Verify the accuracy of the interval timer by using the # real time clock. if ((!timer) && $stoponerr) wait; # DUART 0A/keyboard, 0B/mouse, 1B/modem, internal loopback test. Execute the # internal loopback diagnostics provided by the DUART chips. $tmp = duart -i0; if ($tmp) { resetcons 1; if ($stoponerr) wait; } $tmp = duart -i1; if ($tmp) { resetcons 1; if ($stoponerr) wait; } $tmp = duart -i2; if ($tmp) { resetcons 1; if ($stoponerr) wait; } $tmp = duart -i3; if ($tmp) { resetcons 1; if ($stoponerr) wait; } # DUART 0A/keyboard, 0B/mouse, 1B/modem, external loopback test. verify the # operation of the DUART channels by simulating actual transmission. # JUMPERS ARE NEEDED TO CONNECT TRANSMIT AND RECEIVE PINS ON ALL CHANNELS, # REQUEST_TO_SEND AND CLEAR_TO_SEND PINS ON CHANNEL B OF DUART 1. # >> FOR FIELD ENGINEERING ONLY << if ($report == 4) { $tmp = duart -e0; } if ($tmp) { resetcons 1; if ($stoponerr) wait; } if ($report == 4) { $tmp = duart -e2; } if ($tmp) { resetcons 1; if ($stoponerr) wait; } if ($report == 4) { $tmp = duart -e3; } if ($tmp) { resetcons 1; if ($stoponerr) wait; } # Since we just trashed the keyboard and mouse DUARTs let's reset the keyboard. resetcons 1 # EEPROM pin signal test. Verify the pin signals provided for the EEPROM. #if ((nvram5) && $stoponerr) # wait; # Graphics dma channel register data test. # HPC1 peripheral controller register data test. if ((hpc1) && $stoponerr) wait; # Test floating point unit $fpufailed=0; if ((!fpu) && $stoponerr) wait; # Test local memory 0-4Mbytes #if ((ldram) && $stoponerr) # wait; # #$tmp = ldram -p #if ($tmp && $stoponerr) # wait; # Test parity checking mechanism if ((parity) && $stoponerr) wait; # Test local memory above the 4 Mbytes mark if ((dram) && $stoponerr) wait; $tmp = dram -p if ($tmp && $stoponerr) wait; if ((memtest) && $stoponerr) wait; # Test SCSI devices $status1=scsi; # Don't exercise the disk #$status2=xscsi; #$scsi_status=$status1 | $status2; $scsi_status=$status1 $scsifailed = 0; if (($scsi_status & 257) && $stoponerr) { # SCSI chip 0 or 1 failure wait; } if (($scsi_status & 98175) && $stoponerr) { # 0x10000 (cabling) or any scsi device failure (not 1 or 0x100, which # means chip failure, since for now, chip is always ID 0) # scsi() puts the failure in a global for emfail. wait; } # END OF IP20 SCRIPT } # THE FOLLOWING IS THE STARTUP SCRIPT FOR THE LG1 GRAPHICS DIAGNOSTICS. lg1 { $lg1failed=0; initgr lg1_wsysctl 0x3d buffon; # REX register test if (lg1_rexregs) { if (!$report) { emfail 2; wait; exit; } $lg1failed=1; } # VRAM test if (lg1_vram) { if (!$report) { emfail 2; wait; exit; } $lg1failed=1; } # CID test if (lg1_cid) { if (!$report) { emfail 2; wait; exit; } $lg1failed=1; } # VC1 register test if (lg1_vc1regs) { if (!$report) { emfail 2; wait; exit; } $lg1failed=1; } # VC1 SRAM test if (lg1_sram) { if (!$report) { emfail 2; wait; exit; } $lg1failed=1; } # DAC test if (lg1_dac) { if (!$report) { emfail 2; wait; exit; } $lg1failed=1; } # DMA test #if (lg1_dma) { # if (!$report) { # emfail 2; # wait; # exit; # } # $lg1failed=1; #} resetcons; buffoff; # END OF LG1 SCRIPT } # Multi-head support for LG1 lg1_all { $lg1failed = 2; $tmp = lg1_setboard 0; if ($tmp) { lg1; } $lg1_board0_failed = $lg1failed; $lg1failed = 2; $tmp = lg1_setboard 1; if ($tmp) { lg1; } $lg1_board1_failed = $lg1failed; } # LG1 VDMA DIAGNOSTICS. lg1_dma { initgr lg1_probe lg1_cachefdma 800 lg1_yzoomdma 800 700 lg1_stridedma 512 0 lg1_stridedma 512 -512 lg1_mfilldma 1024 1 lg1_mfilldma 1 1024 lg1_sbdma 512 0 lg1_sbdma 512 1 lg1_sbdma 512 2 lg1_sbdma 512 3 lg1_decreadrdma 512 buffon; } # END OF LG1 VDMA DIAGNOSTICS # Start of GR2 diagnostics gr2_vhwinit { $grbd = gr2_getGR2ver; if ($grbd < 4) { gr2_videoclk 0x4; gr2_wrconfig 0x0; gr2_initclock 0x107b; gr2_wrconfig 0x40; } else { gr2_videoclk 0x47; gr2_initclock 0x107; gr2_wrconfig 0x0; gr2_delay 3; gr2_wrconfig 0x1; } fi gr2_vinitdac } gr2_initre { $a = gr2_getGR2ver; if ($a < 4) gr2_wrfifo 0 0; else if ($a == 4) gr2_wrfifo 0 1; else gr2_wrfifo 0 2; } gr2_initsys { gr2_reset gr2_vhwinit gr2_xcol $mon = gr2_getMonType; if ($mon == 1) gr2_initvc1 4; else gr2_initvc1 20; fi gr2_inithq gr2_load_ucode ge gr2_load_ucode hq gr2_unstall gr2_initre } clear { gr2_wrfifo 35 0 gr2_wrfifo 6 0 } gr2_quad { gr2_wrfifo 33 0 } gr2_fourquad { gr2_wrfifo 34 0 } srv2 { lg1_video lg1_video -f -l5 lg1_video -c -l5 } $tmp = 0; $failed = 0; test_xmap{ gr2_initsys; $a=gr2_txmap; return $a; } test_xmap_clut{ gr2_initsys; $a=gr2_txmap_clut; return $a; } gr2_vdma{ gr2_initsys; $b=gr2_cachefdma 32 1; $b=$b+gr2_cachefdma 256 1; $b=$b+gr2_cachefdma 512 1; $b=$b+gr2_cachefdma 128 1; $b=$b+gr2_yzoomdma ; $b=$b+gr2_yzoomdma 32 32; $b=$b+gr2_yzoomdma 128 128; $b=$b+gr2_yzoomdma 256 256; $b=$b+gr2_stridedma; $b=$b+gr2_stridedma 32 32; $b=$b+gr2_stridedma 256 1; $b=$b+gr2_stridedma 512 0; return $b; } gr2 { $vc1_sram_failed=0; $tram0_failed=0; $tram1_failed=0; $tram2_failed=0; $tram3_failed=0; $tram8_failed=0; $tram9_failed=0; $tram10_failed=0; $hq2test_failed=0; $shram_failed=0; $ram12_failed=0; $seedrom_failed=0; $sqrom_failed=0; $gebus_failed=0; $gefloat_failed=0; $chkbt457_failed=0; $shramre3_failed=0; $cpushram_failed=0; $cpure3_failed=0; $ctxsw_failed=0; $quad_failed=0; $fourquad_failed=0; $bp_failed=0; $stride_failed=0; $zb_failed=0; $test_xmap_failed=0; $test_xmap_clut_failed=0; $vdma_failed=0; $failed=0; gr2_reset; buffon # HQ2 internal register 19 must read 0xdeadbeef gr2_rdhqint 19; # Test VC1 SRAM gr2_vhwinit if (gr2_vc1_sram) { if (!$report) { emfail 2; wait; exit; } $vc1_sram_failed = 1; } # Test ram 0 at Ge7 at 0 $tmp = gr2_tram 0; if ($tmp) { if (!$report) { emfail 2; wait; exit; } $tram0_failed = 1; } # Test ram 0 at Ge7 at 1 $tmp = gr2_tram 1; if ($tmp){ if (!$report) { emfail 2; wait; exit; } $tram1_failed = $tmp; } # Test ram 0 at Ge7 at 2 $tmp = gr2_tram 2; if ($tmp){ if (!$report) { emfail 2; wait; exit; } $tram2_failed = 1; } # Test ram 0 at Ge7 at 3 $tmp = gr2_tram 3 ; if ($tmp) { if (!$report) { emfail 2; wait; exit; } $tram3_failed = 1; } # Test shram $tmp = gr2_tram 8 ; if ($tmp) { if (!$report) { emfail 2; wait; exit; } $tram8_failed = 1; } # Test Hq2uram $tmp = gr2_tram 9 ; if ($tmp) { if (!$report) { emfail 2; wait; exit; } $tram9_failed = $tmp; } # Test ge7uram $tmp = gr2_tram 10; if ($tmp) { if (!$report) { emfail 2; wait; exit; } $tram10_failed = $tmp; } gr2_initsys; clear; # Test HQ2 if(gr2_hq2test) { if (!$report) { emfail 2; wait; exit; } $hq2test_failed = 1; } # Test shareram using Ucode if (gr2_shram) { if (!$report) { emfail 2; wait; exit; } $shram_failed = 1; } # Test internal GE7 ram if (gr2_ram12) { if (!$report) { emfail 2; wait; exit; } $ram12_failed =1; } # Test seedrom if (gr2_seedrom) { if (!$report) { emfail 2; wait; exit; } $seedrom_failed =1; } # Test the squaroot rom if (gr2_sqrom) { if (!$report) { emfail 2; wait; exit; } $sqrom_failed =1; } gr2_initsys ; # Test Ge 7 bus if (gr2_gebus) { if (!$report) { emfail 2; wait; exit; } $gebus_failed =1; } # Test ge floating point unit if (gr2_gefloat) { if (!$report) { emfail 2; wait; exit; } $gefloat_failed = 1; } gr2_initsys; clear; resetcons buffoff $err = 0; if ($vc1_sram_failed) { echo "VC1 SRAM test failed"; $err = 1 } if ($tram0_failed) { echo "Ram 0 at GE7 - 0 failed "; $err = 1 } if ($tram1_failed) { echo "Ram 0 at GE7 - 1 failed "; $err = 1 } if ($tram2_failed) { echo "Ram 0 at GE7 - 2 failed "; $err = 1 } if ($tram3_failed) { echo "Ram 0 at GE7 - 3 failed "; $err = 1 } if ($tram8_failed) { echo "Share ram test failed "; $err = 1 } if ($tram9_failed) { echo "Hq2uram ram failed "; $err = 1 } if ($tram10_failed) { echo "ge7uram failed " ; $err = 1 } if ($hq2test_failed) { echo "HQ2 Test failed "; $err = 1 } if ($shram_failed) { echo "shram test failed"; $err = 1 } if ($ram12_failed) { echo "GE7 ram 1/2 test failed "; $err = 1 } if ($seedrom_failed) { echo "seedrom test failed "; $err = 1 } if ($sqrom_failed) { echo "squaroot test failed"; $err = 1 } if ($gebus_failed) { echo "gebus test failed"; $err = 1 } if ($gefloat_failed) { echo "gefloat test failed"; $err = 1 } if ( $err ) { if (!$report) { emfail 2; wait; exit; } echo "HQ & GE Tests failed\n"; wait $err=0 $failed=1 } else echo "HQ & GE Tests passed\n" buffon # Test bt457 if (gr2_chkbt457) { if (!$report) { emfail 2; wait; exit; } $chkbt457_failed = 1; $err=1; } # Test Shared ram and Re gr2_initsys $tmp = gr2_shramre3 if ($tmp) { if (!$report) { emfail 2; wait; exit; } $shramre3_failed =1; $err=1; } # Test DMA between host and GE7 shared ram gr2_initsys clear $tmp = gr2_cpushram if ($tmp) { if (!$report) { emfail 2; wait; exit; } $cpushram_failed =1; $err=1; } # Test DMA between host and and RE3 resetcons buffon gr2_initsys $tmp = gr2_cpure3 if ($tmp) { if (!$report) { emfail 2; wait; exit; } $cpure3_failed =1; $err=1; } # Test VDMA controller if(gr2_vdma) { if (!$report) { emfail 2; wait; exit; } $vdma_failed =1; $err=1; } # Test GE7 context switching if(gr2_ctxsw) { if (!$report) { emfail 2; wait; exit; } $ctxsw_failed =1; $err=1; } clear; # Test quad drawing $tmp = gr2_quad if ($tmp) { if (!$report) { emfail 2; wait; exit; } $quad_failed =1; $err=1; } $tmp = gr2_fourquad if ($tmp){ if (!$report) { emfail 2; wait; exit; } $fourquad_failed = 1; $err=1; } clear; resetcons buffoff if ($chkbt457_failed) echo "Bt457 test failed"; if ($shramre3_failed) echo "shramre3 test failed" if ($cpushram_failed) echo "CPU shram test failed"; if ($cpure3_failed) echo "cpure3 test failed "; if ($ctxsw_failed) echo "context switching test failed "; if ($vdma_failed) echo "vdma controller test failed "; if ($quad_failed) echo "quad test failed"; if ($fourquad_failed) echo "fourquad test failed"; if ($err) { if (!$report) { emfail 2; wait; exit; } echo "****** PRESS RETURN TO CONTINUE OR ^C TO EXIT ************" wait $err=0 $failed=1 } else echo "BT457, DMA and QUADs Tests Passed.\n" buffon # Test bitplane VM2 gr2_initsys if (gr2_bp) { if (!$report) { emfail 2; wait; exit; } $bp_failed = 1; $err=1; } # Test stridedma between shram and re3 resetcons buffon gr2_initsys $tmp = gr2_stride if ($tmp) { if (!$report) { emfail 2; wait; exit; } $stride_failed =1 ; $err=1; } # Test Zbuffer gr2_initsys $tmp=gr2_zb if($tmp) { if (!$report) { emfail 2; wait; exit; } $zb_failed =1; $err=1; } # Test Xmap if (test_xmap) { if (!$report) { emfail 2; wait; exit; } $test_xmap_failed =1; $err=1; } # Test Xmap CLUT if (test_xmap_clut) { if (!$report) { emfail 2; wait; exit; } $test_xmap_clut_failed =1; $err=1; } resetcons buffoff echo "************************* RESULTS ********************************" if ($bp_failed) { echo "bitplane test failed"; $failed = 1; } if ($stride_failed) { echo "stride test failed"; $failed = 1; } if ($zb_failed) { echo "Zbuffer test failed"; $failed = 1; } if ($test_xmap_failed) { echo "test_xmap test failed"; $failed = 1; } if ($test_xmap_clut_failed) { echo "test_xmap_clut test failed"; $failed = 1; } if (!$err) echo "Frame Buffer, Bit-Plane, and XMAPs Test Passed.\n" resetcons buffoff if ($failed) echo "ERROR: Failure detected on graphics board." else echo "graphics board tests passed" fi echo " *****************END OF THE TEST *****************" } # END OF GR2 SUPPORT #Start of Galileo diagnostics CheckSlot { echo "GR2 Board Found in slot 0." } cc1 { CheckSlot; echo "CC1 Frame Buffer Test"; $status =ev1_init ; if ($status) { echo " Galileo Board Initialization FAILED" return ($status); } echo "Galileo Board Initialized Properly" echo "CC1 Memory Test"; $status = cc1_mem; if ($status) wait; echo "CC1 (DMA MODE)Memory Test"; $status = cc1_dma; if ($status) wait; } ab1_red { CheckSlot; $status =ev1_init ; if ($status) { echo " Galileo Board Initialization FAILED" return ($status); } echo "Galileo Board Initialized Properly" echo "AB1 Red Channel Memory Test "; ab1_rmem; } ab1_blue { CheckSlot; $status =ev1_init ; if ($status) { echo " Galileo Board Initialization FAILED" return ($status); } echo "Galileo Board Initialized Properly" echo "AB1 Blue Channel Memory Test "; ab1_bmem; } ab1_green { CheckSlot; $status =ev1_init ; if ($status) { echo " Galileo Board Initialization FAILED" return ($status); } echo "Galileo Board Initialized Properly" echo "AB1 Green Channel Memory Test "; ab1_gmem; } ab1 { CheckSlot; $status =ev1_init ; if ($status) { echo " Galileo Board Initialization FAILED" return ($status); } echo "Galileo Board Initialized Properly" echo "AB1 Memory Test (Red, Green, Blue)"; status = ab1_mem; if ($status) wait; } kv { CheckSlot; $status =ev1_init ; if ($status) { echo " Galileo Board Initialization FAILED" return ($status); } echo "Galileo Board Initialized Properly" echo "Test Disply Control Bus"; $status = ev1_dcb; if ($status) wait; echo "CC1 Memory Test"; cc1; echo "AB1 Memory Test (Red, Green, Blue)"; ab1; } #END of Galileo diagnostics