diff --git a/docs/mm_FunctionalRequirements.csv b/docs/mm_FunctionalRequirements.csv index 1e96777..d05a27c 100644 --- a/docs/mm_FunctionalRequirements.csv +++ b/docs/mm_FunctionalRequirements.csv @@ -1,12 +1,12 @@ Summary,Custom field (Requirement ID),Description,Custom field (Requirement Rationale) MM1000,MM1000,"Upon receipt of a No-Op command, MM shall increment the MM Valid Command Counter and generate an event message.",Debug command to verify application is alive. -MM1001,MM1001,"Upon receipt of a Reset command, MM shall reset the following housekeeping variables to a value of zero: -a) MM Valid Command Counter +MM1001,MM1001,"Upon receipt of a Reset command, MM shall reset the following housekeeping variables to a value of zero: +a) MM Valid Command Counter b) MM Command Rejected Counter",Important for testing and on-orbit flight operations in order to start with a “clean slate”. MM1006,MM1006,"For all MM commands, if the length contained in the message header is not equal to the expected length, MM shall reject the command.",Basic command verification in the event of SEU or memory corruption MM1007,MM1007,"If the address specified in any MM command fails validation, MM shall reject the command",Covers source and/or destination address. Protects against operator error. Does not apply to `MM_NoopCmd` or `MM_ResetCmd` and other commands that do not reference memory. -MM1008,MM1008,"If the filename specified in any MM command is not valid, MM shall reject the command","Erroneous filename makes the entire command erroneous and not trustworthy. Protects against operator error. Only applies to MM_LoadMemFromFileCmd -, MM_DumpMemToFileCmd, MM_SymTblToFileCmd +MM1008,MM1008,"If the filename specified in any MM command is not valid, MM shall reject the command","Erroneous filename makes the entire command erroneous and not trustworthy. Protects against operator error. Only applies to MM_LoadMemFromFileCmd +, MM_DumpMemToFileCmd, MM_SymTblToFileCmd " MM1009,MM1009,"If MM accepts any command as valid, MM shall execute the command, increment the MM Valid Command Counter and issue an event message",Provides command verification MM1010,MM1010,"If MM rejects any command, MM shall abort the command execution, increment the MM Command Rejected Counter and issue an error event message",Provides an alert of a command error @@ -14,63 +14,63 @@ MM1011,MM1011, Symbol Name and offset can be used in lieu of an absol MM1012,MM1012, Symbol Name and offset can be used in lieu an absolute address in any EEPROM command,"If symbolic addressing supported, symbolic names and offset can be used instead of an absolute address in EEPROM" MM1013,MM1013,The MM application shall generate an error event message if symbol table operations are initiated but not supported in the current target environment.,Got to do something graceful if we’re running without a system symbol table to query MM2000,MM2000,"Upon receipt of a Poke command , MM shall write 8, 16, or 32 bits of data to the command-specified RAM address.",Memory poke to any RAM address. Typically the peek function is used to verify the poke. -MM2000.1,MM2000.1,"MM shall confirm a write to the RAM address by issuing an event message which includes: -a) address written -b) length of data written -c) value of the data written +MM2000.1,MM2000.1,"MM shall confirm a write to the RAM address by telemetering the following information in the HK packet and issuing an event message containing: +a) address written +b) length of data written +c) value of the data written ",Confirms memory poke operations MM2000.2,MM2000.2,"When MM receives a Poke command, if the data size is not 8, 16, or 32 bits, MM shall reject the command.",Ensure writes happen at 8-bit boundaries -MM2002,MM2002,"Upon receipt of a Peek command, MM shall read 8, 16, or 32 bits of data from the command-specified RAM address and generate an event message containing the following data: -a) address read -b) length of data read -c) value of the data read +MM2002,MM2002,"Upon receipt of a Peek command, MM shall read 8, 16, or 32 bits of data from the command-specified RAM address and telemeter the following information in the HK packet + issue an event message containing: +a) address read +b) length of data read +c) value of the data read ",Memory peek to any Memory Type MM2003,MM2003,"Upon receipt of a Write With Interrupts Disable command, MM shall write up to bytes to the command-specified RAM memory address with interrupts disabled.",Load with interrupts disabled so that can patch software that is executing. MM2003.1,MM2003.1,MM shall verify that the command-specified CRC matches the computed CRC of the data.,Verify the integrity of the data specified in the command to insure no corruption of the data to be written. Note that the cFE provides functions to calculate the CRC using a desired CRC MM2003.2,MM2003.2,"If the command-specified CRC fails validation, MM shall reject the command",Verify data before changing memory MM2004,MM2004,"Upon receipt of a Read command, MM shall read the command-specified number of consecutive bytes from the command-specified RAM memory address and generate an event message containing the data.",Dump in event message in order to provide a quick display (alleviates post processing) MM2004.1,MM2004.1,"When MM receives a “Dump to Event” command, if the number of bytes exceeds the maximum event message size then the command shall be rejected.",Cannot exceed the event message size maximum -MM2100,MM2100,"Upon receipt of a Load From File command, MM shall load RAM, with interrupts enabled during the actual load, based on the following information contained in the command-specified ""file:"" -a) Destination Address -b) Destination Memory Type -c) CRC (data only) +MM2100,MM2100,"Upon receipt of a Load From File command, MM shall load RAM, with interrupts enabled during the actual load, based on the following information contained in the command-specified ""file:"" +a) Destination Address +b) Destination Memory Type +c) CRC (data only) d) Number of Bytes to Load",Standard load from file into RAM memory. Files are assumed to be binary MM2100.1,MM2100.1,"If the CRC contained in the file fails validation, MM shall reject the command.",Verifies load file integrity MM2100.2,MM2100.2,"If the number of bytes exceeds then the command shall be rejected.",maximum should be sized to be able to handle the largest app. Requirement prevents exceeding memory bounds. MM2104,MM2104,"Upon receipt of a Dump to File command, MM shall write the data associated with the command-specified RAM address , command-specified number of bytes and calculated CRC to the command-specified file.",Standard dump from RAM memory to a file. MM2104.1,MM2104.1,"If the command-specified number of bytes exceeds then the command shall be rejected.",Keep from running beyond memory type address range. -MM2300,MM2300,"Upon receipt of a Fill command, MM shall fill RAM with the contents based on the following command-specified parameters: -a) Destination Address -b) Destination Memory Type -c) Number of Bytes to Fill +MM2300,MM2300,"Upon receipt of a Fill command, MM shall fill RAM with the contents based on the following command-specified parameters: +a) Destination Address +b) Destination Memory Type +c) Number of Bytes to Fill d) 32-bit Fill Pattern","Easy way to write a simple pattern to memory (or tables/data structures). Use Load from File if using a more complicated pattern. SET filled unused memory with the TRAP instruction (if the processor gets lost and wanders off into the weeds, the TRAP instruction will immediately cause an exception/interrupt)" MM2300.1,MM2300.1,"If the command-specified number of bytes exceeds then the command shall be rejected.",Keeps from running beyond memory type address range MM2500,MM2500,"When writing data to RAM memory, MM shall write a maximum of bytes per execution cycle",Segments the load in order to prevent CPU hogging. MM2501,MM2501,"When writing RAM data to a file, MM shall write a maximum of bytes per execution cycle",Writing to a file can be very slow. Need to segment writing the file. MM3000,MM3000,"Upon receipt of a Poke command , MM shall write 8, 16, or 32 bits of data to the command-specified EEPROM address",Memory poke to any EEPROM address. Typically the peek function is used to verify the poke. -MM3000.1,MM3000.1,"MM shall confirm a write to the EEPROM address by issuing an event message which includes: -a) address written -b) length of data written +MM3000.1,MM3000.1,"MM shall confirm a write to the EEPROM address and telemeter the following information in the HK packet + issue an event message containing: +a) address written +b) length of data written c) value of the data written",Confirms memory poke operations -MM3001,MM3001,"Upon receipt of a Peek command, MM shall read 8, 16, or 32 bits of data from the command-specified EEPROM address and generate an event message containing the following data: -a) address read -b) length of data read +MM3001,MM3001,"Upon receipt of a Peek command, MM shall read 8, 16, or 32 bits of data from the command-specified EEPROM address and telemeter the following information in the HK packet + issue an event message containing: +a) address read +b) length of data read c) value of the data read",Memory peek to any Memory Type -MM3002,MM3002,"Upon receipt of a Read command, MM shall read the command-specified number of consecutive bytes from the command-specified EEPROM memory address and generate an event message containing the data.",Dump in event message in order to provide a quick display (alleviates post processing) +MM3002,MM3002,"Upon receipt of a Read command, MM shall read the command-specified number of consecutive bytes from the command-specified EEPROM memory address and generate an event message containing the data.",Dump in event message in order to provide a quick display (alleviates post processing) MM3002.1,MM3002.1,If the number of bytes exceeds the maximum event message size then the command shall be rejected.,Cannot exceed the event message size maximum -MM3100,MM3100,"Upon receipt of a Load from File command, MM shall load EEPROM memory based on the following information contained in the command-specified ""file:"" -a) Destination Address -b) Destination Memory Type -c) CRC (data only) +MM3100,MM3100,"Upon receipt of a Load from File command, MM shall load EEPROM memory based on the following information contained in the command-specified ""file:"" +a) Destination Address +b) Destination Memory Type +c) CRC (data only) d) Number of Bytes to Load",Commit changes to EEPROM memory. MM3100.1,MM3100.1,"If the CRC contained in the file fails validation, MM shall reject the command",Verifies load file integrity MM3100.2,MM3100.2,"If the number of bytes exceeds then the command shall be rejected.",Keeps from running beyond memory type address range. Need to be able to load largest app MM3104,MM3104,"Upon receipt of a Dump to File command, MM shall write the data associated with the command-specified EEPROM address ,command-specified number of bytes and calculated CRC to the command-specified file.",Standard dump from EEPROM memory to a file. MM3104.1,MM3104.1,"If the command-specified number of bytes exceeds then the command shall be rejected.",Keep from running beyond memory type address range. -MM3200,MM3200,"Upon receipt of a Fill command, MM shall fill EEPROM memory with the contents based on the following command-specified parameters: -a) Destination Address -b) Destination Memory Type -c) Number of Bytes to Fill +MM3200,MM3200,"Upon receipt of a Fill command, MM shall fill EEPROM memory with the contents based on the following command-specified parameters: +a) Destination Address +b) Destination Memory Type +c) Number of Bytes to Fill d) 32-bit Fill Pattern","Easy way to write a simple pattern to memory (or tables/data structures). Use Load from File if using a more complicated pattern. SET filled unused memory with the TRAP instruction (if the processor gets lost and wanders off into the weeds, the TRAP instruction will immediately cause an exception/interrupt)" MM3200.1,MM3200.1,"If the command-specified number of bytes exceeds then the command shall be rejected.",Keeps from running beyond memory type address range MM3300,MM3300,"When writing data to EEPROM memory, MM shall write a maximum of bytes per execution cycle",Segments the load in order to prevent CPU hogging. @@ -78,52 +78,51 @@ MM3301,MM3301,"When writing EEPROM data to a file, MM shall write a maximum of < MM3400,MM3400,"Upon receipt of an Enable EEPROM command, MM shall enable the command specified bank of EEPROM for writing.", MM3500,MM3500,"Upon receipt of a Disable EEPROM command, MM shall disable/lock the command specified bank of EEPROM from being written to.", MM5000,MM5000,"Upon receipt of a Poke command , MM shall write bytes of data to the command-specified Memory Mapped I/O address","Memory poke to any Memory Mapped I/O address. The data is written in the required data sizes (8, 16, or 32). Typically the peek function is used to verify the poke." -MM5000.1,MM5000.1,"MM shall confirm a write to the Memory Mapped I/O address by issuing an event message which includes: -a) address written -b) length of data written +MM5000.1,MM5000.1,"MM shall confirm a write to the Memory Mapped I/O address by telemetering the following information in the HK packet + issuing an event message containing: +a) address written +b) length of data written c) value of the data written",Confirms memory poke operations -MM5002,MM5002,"Upon receipt of a Peek command, MM shall read bytes of data from the command-specified Memory Mapped I/O address and generate an event message containing the following data: -a) address read -b) length of data read -c) value of the data read - +MM5002,MM5002,"Upon receipt of a Peek command, MM shall read bytes of data from the command-specified Memory Mapped I/O address and telemeter the following information in the HK packet + issue an event message containing: +a) address read +b) length of data read +c) value of the data read ",Memory peek to any Memory Type MM5004,MM5004,"Upon receipt of a Read command, MM shall read the command-specified number of consecutive bytes from the command-specified Memory Mapped I/O memory address and generate an event message containing the data.",Dump in event message in order to provide a quick display (alleviates post processing) MM5004.1,MM5004.1,If the number of bytes exceeds the maximum event message size then the command shall be rejected.,Cannot exceed the event message size maximum -MM5100,MM5100,"Upon receipt of a Load from File command, MM shall load Memory mapped I/O, with interrupts enabled during the actual load, based on the following information contained in the command-specified ""file:"" -a) Destination Address -b) Destination Memory Type -c) CRC (data only) +MM5100,MM5100,"Upon receipt of a Load from File command, MM shall load Memory mapped I/O, with interrupts enabled during the actual load, based on the following information contained in the command-specified ""file:"" +a) Destination Address +b) Destination Memory Type +c) CRC (data only) d) Number of Bytes to Load",Standard load from file into Memory mapped I/O memory. Files are assumed to be binary MM5100.1,MM5100.1,"If the command-specified CRC fails validation, MM shall reject the command",Verifies load file integrity. Note that the cFE provides functions to calculate the CRC using a desired CRC MM5100.2,MM5100.2,"If the number of bytes exceeds then the command shall be rejected.",Keeps from running beyond memory type address range. Need to be able to load largest app MM5104,MM5104,"Upon receipt of a Dump to File command, MM shall write the data associated with the command-specified Memory mapped I/O address, command-specified number of bytes and calculated CRC to the command-specified file.",Standard dump from Memory mapped I/O memory to a file. MM5104.1,MM5104.1,"If the command-specified number of bytes exceeds then the command shall be rejected.",Keep from running beyond memory type address range. -MM5300,MM5300,"Upon receipt of a Fill command, MM shall fill Memory mapped I/O with the contents based on the following command-specified parameters: -a) Destination Address -b) Destination Memory Type -c) Number of Bytes to Fill +MM5300,MM5300,"Upon receipt of a Fill command, MM shall fill Memory mapped I/O with the contents based on the following command-specified parameters: +a) Destination Address +b) Destination Memory Type +c) Number of Bytes to Fill d) 32-bit Fill Pattern",Fill function. See previous fill requirements for details. -MM5300.1,MM5300.1,"If the command-specified number of bytes exceeds then the command shall be rejected. +MM5300.1,MM5300.1,"If the command-specified number of bytes exceeds then the command shall be rejected. ",Keeps from running beyond memory type address range MM7001,MM7001,"Upon receipt of a Write Symbol Table command, MM shall save the system symbol table to an onboard data file",Format of symbol table file will be target OS dependent. Check with Alan to see if should be in cFE or OSAL MM7002,MM7002,"Upon receipt of a Symbol-to-Address command, MM shall report the resolved address in telemetry for the command-specified symbol name",Lookup a symbol name. MM7004,MM7004,The MM application shall generate an error event and abort the current operation if any symbolic name argument cannot be resolved to a valid address,Catches bad or misspelled symbol names -MM8000,MM8000,"MM shall generate a housekeeping message containing the following: -a) Valid Command Counter -b) Command Rejected Counter -c) Last command executed -d) Address for last command -e) Memory Type for last command -f) Number of bytes specified by last command -g) Filename used in last command +MM8000,MM8000,"MM shall generate a housekeeping message containing the following: +a) Valid Command Counter +b) Command Rejected Counter +c) Last command executed +d) Address for last command +e) Memory Type for last command +f) Number of bytes specified by last command +g) Filename used in last command h) Data Value for last command (may be fill pattern or peek/poke value)",Housekeeping telemetry to indicate basic MM status. -MM9000,MM9000,"Upon initialization of the MM Application, MM shall initialize the following data to Zero -a) Valid Command Counter -b) Command Rejected Counter -c) Last command executed -d) address for last command -e) Memory Type for last command -f) Number of bytes processed by last command -g) filename used in last command +MM9000,MM9000,"Upon initialization of the MM Application, MM shall initialize the following data to Zero +a) Valid Command Counter +b) Command Rejected Counter +c) Last command executed +d) address for last command +e) Memory Type for last command +f) Number of bytes processed by last command +g) filename used in last command h) fill pattern specified in last command (if command was a fill command)","No information is preserved across an MM initialization. If, for example, a memory load is interrupted by an App restart or Processor reset then want to abort the load to avoid partial/erroneous load." diff --git a/fsw/inc/mm_msgdefs.h b/fsw/inc/mm_msgdefs.h index 44f08c5..35ce8f2 100644 --- a/fsw/inc/mm_msgdefs.h +++ b/fsw/inc/mm_msgdefs.h @@ -156,6 +156,7 @@ * - #MM_HkPacket_Payload_t.LastAction will be set to #MM_PEEK * - #MM_HkPacket_Payload_t.MemType will be set to the commanded memory type * - #MM_HkPacket_Payload_t.Address will be set to the fully resolved destination memory address + * - #MM_HkPacket_Payload_t.DataValue will be set to the value contained in the requested address * - #MM_HkPacket_Payload_t.BytesProcessed will be set to the byte size of the peek operation (1, 2, or 4) * - The #MM_PEEK_BYTE_INF_EID informational event message will * be generated with the peek data if the data size was 8 bits @@ -213,6 +214,7 @@ * - #MM_HkPacket_Payload_t.LastAction will be set to #MM_POKE * - #MM_HkPacket_Payload_t.MemType will be set to the commanded memory type * - #MM_HkPacket_Payload_t.Address will be set to the fully resolved source memory address + * - #MM_HkPacket_Payload_t.DataValue will be set to the commanded poke data value * - #MM_HkPacket_Payload_t.BytesProcessed will be set to the byte size of the poke operation (1, 2, or 4) * - The #MM_POKE_BYTE_INF_EID informational event message will * be generated if the data size was 8 bits