GSFC/NGIMS-FSW-53 To: Eric Raaen From: Michael Paulkovich Subj: Alt Boot Patch Tool Eric - below is an explanation of Alt Boot format, and the requirements for the Alt Boot Patch Tool we had discussed. BACKGROUND Alt Boot "FAT" starts at 2F02 in EEPROM-0. There are five words for each block, in the following order: word 0 descriptor code word 1 not used word 2 EEPROM address (ignored by FSW if descriptor code not =1) word 3 RAM address word 4 word count The start of the Alt Boot data segment is "pointed to" by the FAT, so technically, the beginning address can be variable. Descriptor Codes: 0 = EOT (End of table). 1 = Copy from EEPROM to code RAM. 3 = Fill code RAM with a fill word. EEPROM page and address are ignored. Fill data =0. REQUIREMENTS The Patch Tool must take the "existing" (currently loaded) Alt Boot image, find the end of the FAT and append a patch to it. I'd recommend that the patch be an input file in the same format as SCSIM or GSE scripts, since those normally are an automatic by-product of the patching & testing process. So the tool will: 1. Ask for an input patch file 2. Ask for an input Alt Boot file 3. Scan the Alt Boot file starting at 2F02 looking for the EOT (scanning by 5-word blocks) 4. Determine from the Alt Boot file the last EEPROM "Data Segment" address 5. Append Descriptor Codes to the Fat Segment (starting where the EOT was), and append Patch Data to the Data Segment, which will add the patch to the Alt Boot file 6. Place the new EOT at the end of the FAT segment. Ideally the tool would also ask the user for the new FSW Version Number, and place that value at both of the places in EEPROM where the Version Number is kept - 2F00 in EEPROM, plus as a "patch" to RAM address FFFE (which is where the FSW gets the number to report in TM). Based upon logistics (convenience and Configuration Control issues), the Alt Boot file should either be the last Alt Boot script uploaded to the instrument, or (preferably) a file generated by a DUMP of EEPROM-0. The Patch Tool would only add Descriptor Codes 0 and 1 (no need for it to do the Fill stuff, which is an implementation of "zero-run compression").