MAVEN Particles and Fields Flight Software Acceptance Test

  • Slides: 34
Download presentation
MAVEN Particles and Fields Flight Software Acceptance Test Readiness Review Peter R. Harvey Sw.

MAVEN Particles and Fields Flight Software Acceptance Test Readiness Review Peter R. Harvey Sw. ATRR Review 1 Telecon

Agenda Introduction Project Overview Development Status Test Process Test Results to Date Acceptance Test

Agenda Introduction Project Overview Development Status Test Process Test Results to Date Acceptance Test Readiness Test Schedule Abbreviations and Acronyms Agenda defined by MAVEN Software Management Plan, rev B format for Sw. ATRR Review 2 Telecon

Introduction Goals of this review Review prerequisites : ü Sw. PDR Complete ü i.

Introduction Goals of this review Review prerequisites : ü Sw. PDR Complete ü i. PDR Complete ü Sw. CDR Complete ü i. CDR Complete Scope : ü Operational FSW ü CPT Test Scripts ü LDS Test Scripts Products : q Review Report Sw. ATRR Review 3 Telecon

Project Overview Purpose and overview of the software project q Boot FSW : §

Project Overview Purpose and overview of the software project q Boot FSW : § Software in PROM § Used at Cold and Warm Resets § Loads Operational FSW from EEPROM § Safes Instrument if no Operational Program Available § Receives & Transmits Limited Set of Commands and Telemetry q Operational FSW § Controls the Instruments, Power Systems § Collects and Processes Instrument Data § Receives Commands, Distributes to Instruments § Sends Telemetry to Spacecraft Software project organization and key personnel under D. Curtis q q q FSW Developer : P. Harvey FSW Test : Tony Mercer FSW Quality : J. Fischer DCB Developer : D. Gordon GSE Developer : T. Quinn Inst Simulator : B. Mochizuki Sw. ATRR Review 4 Telecon

Development Status Software Products: Boot FSW (PROM) Build Plan ü ü Build 1 :

Development Status Software Products: Boot FSW (PROM) Build Plan ü ü Build 1 : Support ETU DCB Test, S/C Interface tests Build 2 : Updated, Built for Flight Unit PROM Operational FSW (EEPROM) ü ü ü Build 1 : Support S/C Interface, ETU Instrument I&T Build 2 : Support Storage Capabilities, Onboard Data Processing, FLT I&T Build 3 : Updated, Built for Flight EEPROM ü Command Telemetry Database ü FSW Simulations ü FSW Test Scripts (ETU) (BOOT CPT and LDS) Software Personnel: One Software Engineer One Test Engineer (Mercer) Sw. ATRR Review 5 Telecon

Development Status Confirm that documentation baselined in previous reviews (SRR, PDR, CDR) are updated

Development Status Confirm that documentation baselined in previous reviews (SRR, PDR, CDR) are updated and current Sw. CDR Complete : RFA 12 Complete (Operational Code) i. CDR Complete : No Action Items FSW Level 4 Up to Date FSW Level 5 Rev E S/C-PFDPU ICD Sw. Core: Core Modules Code Walkthru Sw. Cw. Inst 1: LPW, SEP, MAG Code Walkthru Sw. Cw. Inst 2: SWEA, SWIA, STATIC Code Walkthru Changes pending to Operational Design None Sw. ATRR Review 6 Telecon

Development Status ü ü Confirm code and peer review documentation has been reviewed and

Development Status ü ü Confirm code and peer review documentation has been reviewed and approved Sw. PDR, Sw. CDR, i. PDR, i. CDR, Sw. Core, Sw. Cw. Inst 1, Sw. Cw. Inst 2 Code Reviews Confirm test plan includes all possible test scenarios Functional/Non Functional EEPROM SRAM/EEPROM Loading Confirm Software Requirements Traceability Matrix (SRTM) has been updated with all requirements plus any necessary corrections due to discrepancy reports MAVEN_PF_FSW_002_SRS_Tables. xls Confirm all requirements have been included in test procedure document and these test requirements are uniquely identified and traceable in the SRTM. Module requirements are listed in Module scripts Individual tests list the requirements they are testing. Sw. ATRR Review 7 Telecon

Code Development & Test Summary Test Value : 50% Reqmt Test, 25% Module, 25%

Code Development & Test Summary Test Value : 50% Reqmt Test, 25% Module, 25% Qual Sw. ATRR Review 8 Telecon

Test & Inspection Results Tests & Inspection results Tests Performed: All 190 Testable requirements,

Test & Inspection Results Tests & Inspection results Tests Performed: All 190 Testable requirements, 19 modules, CPT Problems – None Open Waivers - None Issues - None Sw. ATRR Review 9 Telecon

Software Assurance Plan Assurance Products Quality Assessments to Coding Standard Operational FSW CPT Review/Approval

Software Assurance Plan Assurance Products Quality Assessments to Coding Standard Operational FSW CPT Review/Approval Inspection Report Review/Approval Problem Report/Change Request Closure Review/Approval PR/CR Document Maintenance Test Bed ESD Verification FSW Review Support to IV&V Assurance Personnel PF Quality Assurance Src: MAVEN_PF_SYS_008 A_PFDPUFlight. Software. Development. Plan. doc Sw. ATRR Review 10 Telecon

Risk Chart 5 L I K E L I H O O D 5

Risk Chart 5 L I K E L I H O O D 5 10 15 20 25 4 8 12 16 20 3 8 9 12 15 6 8 10 4 Chg RANK ID Approach TITLE * 1 W-4 Watch Untested S/C Interface Protocols * 2 W-3 Watch Unclear S/C Interface Timing 3 3 W 4 2 2 4 4 W 3 1 5 1 2 3 4 5 CONSEQUENCES Criticality High Med L x C Trend Decreasing (Improving) Increasing (Worsening) Unchanged * New since last month Approach M – Mitigate W – Watch A – Accept R - Research Low Sw. ATRR Review 11 Telecon

Test Process Real-Time, LDS, CPT Using DVF Simulations Code. Warrior PF I&T Support Test

Test Process Real-Time, LDS, CPT Using DVF Simulations Code. Warrior PF I&T Support Test Levels ü ü ü q v Function Simulation w/Single Stepping, Standard Log Book Records Function Simulation w/Scripted Input, Standard Log Book Records Function Real-Time on DVF System, Standard Log Book Records Module Real-Time on DVF (or ETU) System w/Script, Automated Log Long Duration Stress Test on DVF (or ETU) w/Script, Automated Log Comp. Performance Test on DVF (or ETU) System w/Script, Automated Log FSW Support to DCB, PFDPU I&T Sw. ATRR Review 12 Telecon

Test Process Configuration Management Procedures & scripts developed Placed under CM using Sub. Version

Test Process Configuration Management Procedures & scripts developed Placed under CM using Sub. Version Copies are downloaded from the SVN site to the DVF Describe Discrepancy Reporting System Described below Describe how Test Progress is tracked On Verification matrix 50% for a requirement test procedure passing 25% for a module procedure passing 25% for qualification tests (CPT&LDS) passing Describe any safety and security issues relevant to the testing activity None Describe all workarounds and non-functioning software components None Sw. ATRR Review 13 Telecon

Software Test Environment X Test Platform ETU PFDPU Test Equipment: GSE PC GSEOS Software

Software Test Environment X Test Platform ETU PFDPU Test Equipment: GSE PC GSEOS Software Spacecraft Sim. Inst ETU’s Logic Analyzer* Data Storage: Src: MAVEN_PF_FSW_006_STP Revision -, 4/22/2011 All instrument data and housekeeping Command/Event logs Network access (to Science and Remote GSE computers) *: Not shown, Connected when needed Sw. ATRR Review 14 Telecon

Software Problem Reports/Change Requests Analyses of Cause Before/After Code sections Test procs included Rerun

Software Problem Reports/Change Requests Analyses of Cause Before/After Code sections Test procs included Rerun CPT/LDS Signed by PM, QA Sw. ATRR Review 15 Telecon

Acceptance Test Readiness Status of Acceptance Test Readiness List all Requirements Documents that are

Acceptance Test Readiness Status of Acceptance Test Readiness List all Requirements Documents that are relevant to this testing MAVEN_PF_FSW_002 E_SRS. doc Describe how Test Results will be Analyzed including the division of responsibility Review the Summary at the End Review Log (CPT ~ 15000 lines) by searching for “FAIL” or red anything… Describe the Acceptance Test testbed setup (hardware) ETU and DVF Describe the setup and use of Simulators or other Test tools Same as above Describe the limitations of the testbed No MAG 2 No SEP 2 Actuator UART Errors Cannot Be Generated (PFPXMTIFERR) Transaction Length Non-4 -byte Length Cannot be Sim’d (PFPCMDLNGERR) CDI Buffer Full Error Cannot Be Sim’d (PFPCDIFULERR) Known Script Shortcomings Missing Tests for PFPLDCCNTERR and PFPEEPENAERR Describe those tests that require hardware for verification Actuator Simulator : Fault Protection Actuator Closures (EUV, SEP 1, SEP 2) Instrument boards for LUT, HV, Telemetry verification Sw. ATRR Review 16 Telecon

CPT and Stress Tests Acceptance Testing (High Level Description) Performed on the ETU or

CPT and Stress Tests Acceptance Testing (High Level Description) Performed on the ETU or DVF System Semi-Automated Using Approved Test Scripts Plan to group scripts together to provide concurrent review of results CPT will take several hours to run LDS requires 72 hours Long Duration & Stress Test High Rate of Commands Comprehensive Performance Test High Rate of Telemetry All Requirements Verified All Arms/Disarms Verified All Errors and Events Verified All Telemetry and Commands Used CPU Intensive Processing Verification • • Test Status Logged Every Hour No Errors in FSW or Resets All PF Mode Configurations Used CPU Resource Usage Measured Sw. ATRR Review 17 Telecon

Test Schedule Sw. ATRR Review 18 Telecon

Test Schedule Sw. ATRR Review 18 Telecon

Issues/Concerns Issues and Concerns q q q Continuous Development of Instrument RTS Scripts on

Issues/Concerns Issues and Concerns q q q Continuous Development of Instrument RTS Scripts on ETU Impacting FSW Testing Wiring Errors in ETU Harness Interactions between Fault Protection, Limit Monitoring & RTS Limited PF System-Wide Testing Multiple Revisions Being Made Daily Predictions q Flaws Are Likely to be Found during CPT q Software Updates will Likely Be Necessary in ATLO Sw. ATRR Review 19 Telecon

Summary Sw. ATRR Summary q Collect Requests For Action (RFAs) q Evaluate preparedness for

Summary Sw. ATRR Summary q Collect Requests For Action (RFAs) q Evaluate preparedness for Acceptance Testing q Decision to proceed to Acceptance Testing Sw. ATRR Review 20 Telecon

Test Script Stds Script Demonstration • • Requirement identification Overall Consistent Format Library Support

Test Script Stds Script Demonstration • • Requirement identification Overall Consistent Format Library Support (efw, util) Function Definitions """ TEST_SPIN_1 : TEST SPIN FIT Computations REV -, 8/21/09 PRH SPIN_1 : SPIN shall compute a sine wave least squares fit of a 32 element array of 16 -bit A/D values. The basic formula is x[i] = A + B*cos(i) + C*sin(i) """ from math import * efw import * util import * __main__ import * # required for access to APID_nnn telemetry blocks def load_waveform( adr, A, B, C): cmd. EFW_CMDS( 1 ) wait(APID_263, lambda: APID_263. CMDFLAG==1, fl. Timeout=20) adstr = "0000" + hex(0 x 10000+adr)[3: 7] bytes = " " for i in range(32): phi = 2*pi*i/32 val = A + B*cos(phi) + C*sin(phi) ival= int(val) bytes = bytes + hex( 0 x 100+(ival&0 xff))[-2: ]+" " bytes = bytes + hex( 0 x 100+ ((ival>>8)& 0 xff))[-2: ]+" " efw. idpu_load(adstr, bytes) wait(APID_263, lambda: APID_263. CMDFLAG==0, fl. Timeout=20) def ffptoflt( val ): sign = val & 0 x 800000 exp = ((val & 0 x 7 F 0000) >> 16) - 64 - 16 mant = val&0 xffff if((val&0 x 8000)==0): return(0) flt = mant*2**exp if(sign!=0): flt = -flt return(flt) Sw. ATRR Review 21 Telecon

Test Script Names Script Development • • Uses Cmds & Tlm names Result Logging

Test Script Names Script Development • • Uses Cmds & Tlm names Result Logging Pass/Fail criteria Error Accounting def spin_test( adr, Offset. A, Costerm. B, Sinterm. C): log('------ GENERATING NEW WAVEFORM ----- ', color=BLUE, attr=BOLD ) PF=("FAIL", "PASS") load_waveform( adr, Offset. A, Costerm. B, Sinterm. C) fcnt = APID_267. FITCOUNT #We'll watch this count up cmd. EFW_FITSIM() #Perform Fit wait(APID_267, lambda: APID_267. FITCOUNT>fcnt, fl. Timeout=20) log(" Simulated A, B, C = %8. 3 f" %(Offset. A, Costerm. B, Sinterm. C), color=BROWN, attr=BOLD ) wait(APID_26 A, lambda: True, fl. Timeout=20) #SW packet scale = 32768. 0 A = ffptoflt(APID_26 A. Ex_OFFSET)*scale B = ffptoflt(APID_26 A. Ex_COSINE)*scale C = ffptoflt(APID_26 A. Ex_SINE)*scale S = ffptoflt(APID_26 A. Ex_STDDEV)*scale log(" SPIN Results A, B, C, S = %8. 3 f" %(A, B, C, S), color=BROWN, attr=BOLD ) dif. A = abs(A-Offset. A) dif. B = abs(B-Costerm. B) dif. C = abs(C-Sinterm. C) A_range = B_range = C_range = 1 #PASS if( dif. A > max(1, . 002*abs(Offset. A) ) ): A_range=0 #FAIL if( dif. B > max(1, . 002*abs(Costerm. B)) ): B_range=0 if( dif. C > max(1, . 002*abs(Sinterm. C)) ): C_range=0 log(" Verification A, B, C = %8 s %8 s" % (PF[A_range], PF[B_range], PF[C_range]), color=BROWN, attr=BOLD ) return( 3 - A_range - B_range - C_range) #number of errors TEST_SPIN_1. py RBSP_EFW_FSW_005_CTM. XLS Sw. ATRR Review 22 Telecon

Test Script Format Script Development • • • Script Banner Consistent Format Name match

Test Script Format Script Development • • • Script Banner Consistent Format Name match to requirements Section 1 typical setup Section 2 -N subtests Section N+1 Cleanup&Summary def main(): log('====================', color=BLUE, attr=BOLD ) log('SPIN_1 : Spin Fit Calculations Check ', color=BLUE, attr=BOLD ) log('====================', color=BLUE, attr=BOLD ) PF=("FAIL", "PASS") errs=0 ebuf = 0 x 9 a 00 #EFIELD BUFFER START bbuf = ebuf+0 x 100 #BFIELD BUFFER START log('1. 1 Increasing TM Rate, Clear Start ', color=BLUE, attr=BOLD ) cmd. EFW_FITMODE(0, 1, 1) #No Sampling, E 12, Bx calcs cmd. EFW_TABLE(4, 4) #OUTPTR=0 (start of buffer) cmd. EFW_LOAD(0) # SC_SPIN(6) #Get Space Weather faster DUMPADR(ebuf) cmd. EFW_TMDUMPSIZE(128) cmd. EFW_CLEAR() log('--------------------', color=BLUE, attr=BOLD ) log('2. 0 Injecting Cosine Scales ', color=BLUE, attr=BOLD ) log('--------------------', color=BLUE, attr=BOLD ) Offset. A=0. Costerm. B=0. Sinterm. C=0. for Costerm. B in (32768. 0, 16384. 0, 0. 0, -8192. 0*3): errs = errs+spin_test( ebuf, Offset. A, Costerm. B, Sinterm. C) log('--------------------', color=BLUE, attr=BOLD ) log('3. 0 Injecting Sine Scales ', color=BLUE, attr=BOLD ) log('--------------------', color=BLUE, attr=BOLD ) Offset. A=0. Costerm. B=0. for Sinterm. C in (32768. 0, 16384. 0, 0. 0, -8192. 0*3): errs = errs+spin_test( ebuf, Offset. A, Costerm. B, Sinterm. C) log('--------------------', color=BLUE, attr=BOLD ) log('4. 0 Injecting Offset Errors ', color=BLUE, attr=BOLD ) log('--------------------', color=BLUE, attr=BOLD ) Costerm. B=0. Sinterm. C=16384. for Offset. A in (1024. 0, 128. 0, -256. 0, -768. 0 ): errs = errs+spin_test( ebuf, Offset. A, Costerm. B, Sinterm. C) log('5. 0 Cleaning Up ', color=BLUE, attr=BOLD ) log('Error Summary = %d errors found. '% errs, color=BLUE, attr=BOLD ) log('Spin Fit Calculations : %s'% PF[errs==0], color=BLUE, attr=BOLD ) log('========END===========', color=BLUE, attr=BOLD ) Sw. ATRR Review 23 Telecon

CPT Script """ BOOT_CPT, py BOOT Comprehensive Performance Test REV A, 8/5/2011 PRH All

CPT Script """ BOOT_CPT, py BOOT Comprehensive Performance Test REV A, 8/5/2011 PRH All functional modules are tested Supporting modules, UTIL and IO, are tested indirectly """ # Import statements. Always do these. from MAVEN import * from fswutil import * import maven_log = maven_log. log() from __main__ import * # required for access to APID_nnn telemetry blocks # Setup the commanding shortcut mechanism (cmd. CMDNAME(arg=value)) cmd = maven_cmd() def logpf( name, errs ): if(errs!=0): log('%s : %2 d errors, FAIL'%(name, errs), color=RED, attr=BOLD ) else: log('%s : %2 d errors, PASS'%(name, errs), color=BLUE, attr=BOLD ) def main(): log('====================', color=BLUE, attr=BOLD ) log('BOOT_CPT: Comprehensive Performance Test ', color=BLUE, attr=BOLD ) log('====================', color=BLUE, attr=BOLD ) prog=1 exe =tryscriptprog("TEST_EXEC", prog) bkg =tryscriptprog("TEST_BKG", prog) cmd =tryscriptprog("TEST_CMD", prog) tm =tryscriptprog("TEST_TM", prog) hsk =tryscriptprog("TEST_HSK", prog) ld =tryscriptprog("TEST_LD", prog) pwr =tryscriptprog("TEST_PWR", prog) fp =tryscriptprog("TEST_FP", prog) log('====================', log('BOOT_CPT: Results by Module ', log('====================', logpf('EXEC', exe ) logpf('BKG ', bkg ) logpf('CMD ', cmd ) logpf('TM ', tm ) logpf('HSK ', hsk ) logpf('LD ', ld ) logpf('PWR ', pwr ) logpf('FP ', fp ) log('========END===========', Sw. ATRR Review color=BLUE, attr=BOLD ) 24 Telecon

EXEC Module Script """ TEST_EXEC. py REV A, 6/7/2011 Comprehensive Performance Test - EXEC

EXEC Module Script """ TEST_EXEC. py REV A, 6/7/2011 Comprehensive Performance Test - EXEC module // FSW. EXEC-1 : EXEC_INIT shall initialize the module and all submodules as needed to make the Boot program function properly. // FSW. EXEC-2 : EXEC shall receive and execute commands to the module at up to 32 Hz, and complete those commands in <1/10 interrupt period. // FSW. EXEC-3 : EXEC shall provide housekeeping telemetry data as listed in MAVEN PF Command Telemetry document // FSW. EXEC-4 : EXEC shall automatically mask Enable bits by Mode // FSW. EXEC-5 : EXEC shall measure available CPU percentage. // FSW. EXEC-6 : EXEC shall provide a service loop which will run a user-provided program concurrently. // FSW. EXEC-7 : Operational FSW shall Generate Event Packets [a] including one or more time-tagged events [b] time-tagged to 1 -second accuracy ; [c] including an event type code and associated data; [d] sent out when the selected number of events has been collected. " FSW. EXEC-8 : At initialization, EXEC shall increment the reset counter. If the Reset Counter mod 4==3, Implement Safing Directly (abandon loading the operational program). Ref: MAV_CR 1 FSW. EXEC-9 : At initialization, EXEC shall begin accepting commands and generating housekeeping telemetry within 2 seconds. FSW. EXEC-10: At initialization, EXEC shall initiate a Boot Command sequence which does the following: [1] Checks EEPROM directory, calculates Checksums, Selects a program; [2] Delays 4 seconds to allow user intervention; [3] Runs selected program; [4] Delays 1 second to allow Operational program to stop this sequence; [5] Turns Off all HVs (STATIC, SWIA, SWEA); [6] Delays 30 seconds to allow Actuator Guardband lockout to timeout; [7] Closes EUV, SEP 1 and SEP 2 doors; [8] Delays 30 more seconds to allow HV to dissipate; [9] Turns Off all Instruments. Ref: ICD 2357 " // FSW. EXEC-11 : EXEC shall implement a CPU Reset command. Ref. ICD 1102" """ Sw. ATRR Review 25 Telecon

EXEC Module Script # Import statements. Always do these. from MAVEN import * from

EXEC Module Script # Import statements. Always do these. from MAVEN import * from fswutil import * import maven_log = maven_log. log() from __main__ import * # required for access to APID_nnn telemetry blocks # Setup the commanding shortcut mechanism (cmd. CMDNAME(arg=value)) cmd = maven_cmd() def main(prog=0): set_output_location('EXEC_Module_') log('====================', color=BLUE, attr=BOLD ) log('******* EXEC MODULE TEST *****', color=BLUE, attr=BOLD ) log('====================', color=BLUE, attr=BOLD ) RESET_CPU() vers = APID_20. PFP_VER_HIGH vers = vers + APID_20. PFP_VER_LOW/100. 0 log('====================', color=BLUE, attr=BOLD ) log('******* FSW VERSION %5. 2 f *****'% vers, color=BLUE, attr=BOLD ) log('====================', color=BLUE, attr=BOLD ) errcnt errcnt errcnt = 0 += tryscriptprog("TEST_EXEC_2", prog) += tryscriptprog("TEST_EXEC_3", prog) += tryscriptprog("TEST_EXEC_5", prog) += tryscriptprog("TEST_EXEC_7", prog) += tryscriptprog("TEST_EXEC_8", prog) += tryscriptprog("TEST_EXEC_9", prog) += tryscriptprog("TEST_EXEC_10", prog) += tryscriptprog("TEST_EXEC_11", prog) log('====================', color=BLUE, attr=BOLD ) if( errcnt == 0 ): log('******* EXEC Module PASS ******' , color=GREEN, attr=BOLD ) else: log('******* EXEC Module FAIL %d Errors ******' % errcnt, color=RED, attr=BOLD ) log('====================', color=BLUE, attr=BOLD ) return( errcnt ) Sw. ATRR Review 26 Telecon

EXEC_7 Script """ TEST_EXEC_7 Test Event Packet Logic REV A, 8/8/2011 PRH FSW. EXEC-7

EXEC_7 Script """ TEST_EXEC_7 Test Event Packet Logic REV A, 8/8/2011 PRH FSW. EXEC-7 : Operational FSW shall Generate Event Packets [a] including one or more time-tagged events [b] time-tagged to 1 -second accuracy ; [c] including an event type code and associated data; [d] sent out when the selected number of events has been collected. " """ # Import statements. Always do these. from MAVEN import * from fswutil import * import maven_log = maven_log. log() from __main__ import * # required for access to APID_nnn telemetry blocks # Setup the commanding shortcut mechanism (cmd. CMDNAME(arg=value)) cmd = maven_cmd() def main(prog=0): title='EXEC_7: Test Event packets ' test_init(title) errcnt=0 d=0. 5 log('EXEC_7. 1. Start Up CPU, Get Event ', color=BLUE, attr=BOLD ) cmd. PFP_RESET() #Command Reset the CPU log('EXEC_7. 2. Verify Reset Event Message ', color=BLUE, attr=BOLD ) wait(APID_24, lambda: APID_24. PFP_EVNTCODE==0 x. E 8, fl. Timeout=10) errcnt += limchk("EVNTDTA 0", APID_24. PFP_EVNTDTA 0, 1, 1) errcnt += limchk("EVNTDTA 1", APID_24. PFP_EVNTDTA 1, 0, 0) errcnt += limchk("EVNTDTA 2", APID_24. PFP_EVNTDTA 2, 0, 1) errcnt += limchk("EVNTCTR ", APID_24. PFP_EVNTCTR , 1, 1) RESET_CPU(1) sleep(1) cmd. PFP_CLEAR() sleep(1) Sw. ATRR Review 27 Telecon

EXEC_7 Script log('EXEC_7. 3. Verify Command Error Message ', color=BLUE, attr=BOLD ) cmd. PFP_RTSSTART(31)

EXEC_7 Script log('EXEC_7. 3. Verify Command Error Message ', color=BLUE, attr=BOLD ) cmd. PFP_RTSSTART(31) # Bad RTS No. wait(APID_24, lambda: APID_24. PFP_EVNTCODE==0 x. CA, fl. Timeout=10) errcnt += limchk("EVNTDTA 0", APID_24. PFP_EVNTDTA 0, 0, 0) errcnt += limchk("EVNTDTA 1", APID_24. PFP_EVNTDTA 1, 31) errcnt += limchk("EVNTDTA 2", APID_24. PFP_EVNTDTA 2, 1, 2) errcnt += limchk("EVNTCTR ", APID_24. PFP_EVNTCTR , 1, 3) vt = APID_24. CCSDS_Data[2]<<24 #Vt = Event Time vt += APID_24. CCSDS_Data[3]<<16 vt += APID_24. CCSDS_Data[4]<<8 vt += APID_24. CCSDS_Data[5] log(' Packet Time = %8 X, Event Time = %8 X'%(APID_24. CCSDS_MET, vt), color=BLUE, attr=BOLD ) errcnt += limchk("EVNTTIME ", APID_24. CCSDS_MET , vt+1) log('EXEC_7. 4. Verify Multi-Event Message (15 long)', color=BLUE, attr=BOLD ) stevt = APID_24. PFP_EVNTCTR # Record events so far log('EXEC_7. 4. 1 Currently have %d events'%stevt, color=BLUE, attr=BOLD ) cmd. PFP_EVTMAX(15) sleep(1) cmd. PFP_CLEAR() # First Err. Ctr == 1 for i in range(15): sleep(1) cmd. PFP_RTSSTART(30) sleep(5) # Bad RTS # expevt = APID_24. PFP_EVNTCTR-stevt # Should be 15 more log('EXEC_7. 4. 2 Now We have %d events'%APID_24. PFP_EVNTCTR, color=BLUE, attr=BOLD ) errcnt += limchk("EVNTCODE", APID_24. PFP_EVNTCODE, 0 x. CA) errcnt += limchk("EVNTDTA 0", APID_24. PFP_EVNTDTA 0, 0, 0) errcnt += limchk("EVNTDTA 1", APID_24. PFP_EVNTDTA 1, 30) errcnt += limchk("EVNTDTA 2", APID_24. PFP_EVNTDTA 2, 1, 1) #first Err. Ctr==1 errcnt += limchk("EVNTCTR (change)", expevt , 15) vt = APID_24. CCSDS_Data[2]<<24 #Vt = Event Time vt += APID_24. CCSDS_Data[3]<<16 vt += APID_24. CCSDS_Data[4]<<8 vt += APID_24. CCSDS_Data[5] log(' Packet Time = %8 X, Event Time = %8 X'%(APID_24. CCSDS_MET, vt), color=BLUE, attr=BOLD ) errcnt += limchk("EVNTTIME ", APID_24. CCSDS_MET , vt+16, vt+17) evip = (APID_24. Block[5]+7 -12)/8 errcnt += limchk("EVENTS in PACKET", evip , 15) Sw. ATRR Review 28 Telecon

EXEC_7 Script log('EXEC_9. 2. Cleanup RESET_CPU(prog) sleep(5) cmd. PFP_CLRRSTCTR() sleep(d) cmd. PFP_CLEAR() sleep(3) ',

EXEC_7 Script log('EXEC_9. 2. Cleanup RESET_CPU(prog) sleep(5) cmd. PFP_CLRRSTCTR() sleep(d) cmd. PFP_CLEAR() sleep(3) ', color=BLUE, attr=BOLD ) # Reset, Clear Errors #Clear Reset Counter #Clear Error Counter (reset) test_end(title, errcnt) return( errcnt ) Sw. ATRR Review 29 Telecon

LDS Script """ BOOT_LDS, py BOOT Long Duration Stress Test REV -, 8/7/2011 PRH

LDS Script """ BOOT_LDS, py BOOT Long Duration Stress Test REV -, 8/7/2011 PRH High Rate of Commands >Command Pass Simulation Every Hour for 72 hours >Memory Load – Uplink of Script Database (1 KB) >Serial Commands – Max commands rate for 250 commands >Memory Dump Script Database >Execute Script and Verify Results High Rate of Telemetry >Continuous Telemetry at 200% nominal >Real Time Data @ 200% Verification >Test Status Logged Every Hour >No Errors in FSW or GSE Not Applicable to Boot >Archive Playback @ 200% CPU Intensive Processing >Calculations @ 100% >Archive Writing (200% nominal) >Data Compression Enabled >SDRAM and SRAM Memory Scrubbing Enabled >No Memory Leaks """ # Import statements. Always do these. from MAVEN import * from fswutil import * import maven_log = maven_log. log() from __main__ import * # required for access to APID_nnn telemetry blocks # Setup the commanding shortcut mechanism (cmd. CMDNAME(arg=value)) cmd = maven_cmd() Sw. ATRR Review 30 Telecon

LDS Script def clean_start(): cmd. PFP_CLEAR() wait(APID_20, lambda: APID_20. PFP_ERRCODE==0, fl. Timeout=10) cmd. PFP_CLRRSTCTR()

LDS Script def clean_start(): cmd. PFP_CLEAR() wait(APID_20, lambda: APID_20. PFP_ERRCODE==0, fl. Timeout=10) cmd. PFP_CLRRSTCTR() wait(APID_20, lambda: APID_20. PFP_RSTCTR==0, fl. Timeout=10) return(0) def cmd_highrate(leng): errcnt=0 d=0. 2 log('LDS_CMD. 1 Loading %d APID_10 Commands At High Rate '%leng, color=BLUE, attr=BOLD ) cmd. PFP_CMDS( leng ) wait(APID_20, lambda: APID_20. PFP_CMDEXP==leng, fl. Timeout=10) wait(APID_20, lambda: APID_20. PFP_CMDTOT==0, fl. Timeout=10) log('LDS_CMD_7. 1. 1 Commands starting ', color=BLUE, attr=BOLD ) stime= APID_20. CCSDS_MET for i in range( leng ): cmd. PFP_WRITELEDS( i ) sleep(d) try: wait(APID_20, lambda: APID_20. PFP_CMDTOT==leng, fl. Timeout=30) except: log('LDS_CMD_7. 1. 2 Command Count Expected %d, Got %d : FAIL' % (leng, APID_20. PFP_CMDTOT), color=RED, attr=BOLD ) errcnt += 1 log('LDS_CMD_7. 2 Loading %d APID_11 Commands At High Rate '%leng, color=BLUE, attr=BOLD ) d=0. 2 cmd. PFP_CMDS( leng ) wait(APID_20, lambda: APID_20. PFP_CMDEXP==leng, fl. Timeout=10) wait(APID_20, lambda: APID_20. PFP_CMDTOT==0, fl. Timeout=10) log('LDS_CMD_7. 2. 1 Commands starting ', color=BLUE, attr=BOLD ) stime= APID_20. CCSDS_MET for i in range( leng ): pfdpu_load("6410", "2 F 0 E 2 C 7 C 00 FF 00 00 4 E BA 00 E 2 4 A 80 66 22 4 E BA 00 DA 4 A 80 67 F 8 24 2 E 00 08 52 82 A 7 41 C 4 81 22 2 E 00 08 02 81 00 00 00 FC 82 82 2 D 41 00 08 2 C 5 F 4 E 75 2 F 0 E 2 C 7 C 00 FF 00 00 4 E BA 00 AC A 9 41 B 0 81 66 24 4 E BA 00 A 2 A 9 41 B 0 81 67 F 6 24 2 E 00 08 58 82 72 0 C C 4 81 22 2 E 00 08 02 81 00 00 00 F 3 82 82 2 D 41 00 08 2 C 5 F 4 E 75") sleep(d) try: wait(APID_20, lambda: APID_20. PFP_CMDTOT==leng, fl. Timeout=30) except: log('LDS_CMD_7. 2. 2 Command Count Expected %d, Got %d : FAIL' % (leng, APID_20. PFP_CMDTOT), color=RED, attr=BOLD ) errcnt += 1 return(errcnt) Sw. ATRR Review 31 Telecon

LDS Script def cmd_scripts(): errcnt=0 log('LDS_CMD_9. 2 Load up Scripts, Check Enables ', color=BLUE,

LDS Script def cmd_scripts(): errcnt=0 log('LDS_CMD_9. 2 Load up Scripts, Check Enables ', color=BLUE, attr=BOLD ) run("LOAD_SCR_0001") #Load Diag Script Set wait(APID_20, lambda: (APID_20. PFP_RTSENA>>24)==0 xc 0, fl. Timeout=20) log('LDS_CMD_9. 3. 1 Run RTS 30 (LEDs) ', color=BLUE, attr=BOLD ) cmd. PFP_RTSSTART( 30 ) for i in range(0, 5): wait(APID_20, lambda: APID_20. PFP_DIAGPORT==0 x. D 1, fl. Timeout=5) wait(APID_20, lambda: APID_20. PFP_DIAGPORT==0 x. D 2, fl. Timeout=5) log('CMD_9. 3. 2 Check Completion ', color=BLUE, attr=BOLD ) try: wait(APID_20, lambda: APID_20. PFP_RTSACT==0 x 0000, fl. Timeout=20) except: log('LDS_CMD_9. 3. 3 RTS Completion Expected : FAIL', color=RED, attr=BOLD ) errcnt += 1 return(errcnt) def generate_report( ps, errcnt ): if(APID_20. PFP_ERRCTR>0): log("%s: %d ERR_CTR!" %(title, APID_20. PFP_ERRCTR), color=RED, attr=BOLD ) errcnt = errcnt + APID_20. PFP_ERRCTR if(APID_20. PFP_RSTCTR>0): log("%s: %d RESETCTR!" %(title, APID_20. PFP_RSTCTR), color=RED, attr=BOLD ) errcnt = errcnt + APID_20. PFP_ERRCTR if(errcnt>0): log("Pass[%d]: %d Errors" %(ps, errcnt), color=RED, attr=BOLD ) else: log("Pass[%d]: %d Errors" %(ps, errcnt), color=BLUE, attr=BOLD ) Sw. ATRR Review 32 Telecon

LDS Script def main( passnum=0): title='BOOT_CPT: Long Duration Performance Test ' test_init(title) totcnt =

LDS Script def main( passnum=0): title='BOOT_CPT: Long Duration Performance Test ' test_init(title) totcnt = 0 # Total Error Count d = 0. 2 # Command period log('LDS. 1 Reset to Boot RESET_CPU(1) sleep(5) ', color=BLUE, attr=BOLD ) log('LDS. 2 Turn up TM all the way cmd. PFP_TMPKTRATE(0, 1) sleep(d) cmd. PFP_TMDUMPSIZE( 252 ) sleep(d) cmd. PFP_TMPKTRATE(3, 1) sleep(d) cmd. PFP_HSKOPTIONS(0 x 1 c, 1, 0) sleep(d) ', color=BLUE, attr=BOLD ) # AP 20 at 1 Hz # AP 22 at 1 Hz/longest size # AP 23 at 1 Hz #Fast HSK of 3. 3 V DC for ps in range( passnum, 72 ): log('LDS. 3 PASS[%d] COMMAND PASS SIMULATION ' % ps, color=BLUE, attr=BOLD ) errcnt=0 if(APID_20. PFP_VER_HIGH>1): RESET_CPU(1) clean_start() errcnt += cmd_highrate(250) errcnt += cmd_scripts() generate_report(ps, errcnt) totcnt += errcnt sleep(3600) test_end(title, totcnt) return(errcnt) Sw. ATRR Review 33 Telecon

Sample CPT Results Sat Sat Sat Sat Sat Sat Sat Sat Sat Sat Sat

Sample CPT Results Sat Sat Sat Sat Sat Sat Sat Sat Sat Sat Sat Sat Aug Aug Aug Aug Aug Aug Aug Aug Aug Aug Aug Aug 06 06 06 06 06 06 06 06 06 06 06 06 00: 16: 07 00: 16: 11 00: 16: 12 00: 16: 13 00: 16: 15 00: 16: 16 00: 16: 18 00: 16: 23 00: 16: 24 00: 16: 26 00: 16: 27 00: 16: 27 00: 16: 27 00: 16: 27 00: 16: 27 Sw. ATRR Review 2011 2011 2011 2011 2011 2011 2011 2011 2011 2011 2011 2011 BOOT_CPT: Script LOAD_BADUSER. py completed maven_dpucmd_logger: PFP_CMDS(1) maven_dpucmd_logger: 1 F, 02, 7 F, 49, 00, 14, 00, 03, maven_dpucmd_logger: PFP_EXEC(0, 25616) maven_dpucmd_logger: 1 F, 02, 7 F, 49, 00, 14, 00, 03, BOOT_CPT: FP_4. 3 Verify TM Stops BOOT_CPT: FP_4. 4 Verified TM Stopped : PASS BOOT_CPT: FP_4. 5 Verified SAFEME : PASS BOOT_CPT: FP_4. 6 Clean Up maven_dpucmd_logger: PFP_CLRRSTCTR() maven_dpucmd_logger: 1 F, 02, 7 F, 49, 00, 14, 00, 03, maven_dpucmd_logger: SSG_RESETON() maven_dpucmd_logger: 1 F, 02, 7 F, 49, 00, 12, 00, 16, maven_dpucmd_logger: SSG_RESETOFF() maven_dpucmd_logger: 1 F, 02, 7 F, 49, 00, 12, 00, 17, maven_dpucmd_logger: PFP_LOADTABLE(0, 0, 255) maven_dpucmd_logger: 1 F, 02, 7 F, 49, 00, 14, 00, 03, maven_dpucmd_logger: PFP_RTSSTOP(0) maven_dpucmd_logger: 1 F, 02, 7 F, 49, 00, 14, 00, 03, maven_dpucmd_logger: PFP_RTSSTOP(2) maven_dpucmd_logger: 1 F, 02, 7 F, 49, 00, 14, 00, 03, maven_dpucmd_logger: PFP_CLEAR() maven_dpucmd_logger: 1 F, 02, 7 F, 49, 00, 14, 00, 03, BOOT_CPT: FP_4 : Verifies SAFEME occurs if FGND==0: 0 BOOT_CPT: ========END=========== BOOT_CPT: Script TEST_FP_4. py completed BOOT_CPT: ==================== BOOT_CPT: **** FP Module PASS **** BOOT_CPT: ==================== BOOT_CPT: Script TEST_FP. py completed BOOT_CPT: ==================== BOOT_CPT: Results by Module BOOT_CPT: ==================== BOOT_CPT: EXEC : 4 errors, FAIL BOOT_CPT: BKG : 0 errors, PASS BOOT_CPT: CMD : 2 errors, FAIL BOOT_CPT: TM : 0 errors, PASS BOOT_CPT: HSK : 0 errors, PASS BOOT_CPT: LD : 0 errors, PASS BOOT_CPT: PWR : 0 errors, PASS BOOT_CPT: FP : 0 errors, PASS BOOT_CPT: ========END=========== BOOT_CPT: Script BOOT_CPT. py completed 34 10, C 0, DA, 00, 05, C 0, 00, 01, 00 10, C 0, DA, 00, 05, D 8, 00, 64, 10, 00 10, C 0, DA, 00, 05, E 7, 00, 00, 00 10, DA, C 0, DA, 00, 03, E 7, 00, 00, 00 10, C 0, DA, 00, 05, D 2, 00, FF, 00 10, C 0, DA, 00, 05, C 2, 00, 00, 00 10, C 0, DA, 00, 05, C 2, 00, 02, 00, 00 10, 10, C 0, DA, 00, 05, E 1, 00, 00, 00, 00 Errors Telecon