Crash Guard - Special Topics
Crash Guard is the unique crash recovery technology utilized by Command Post.
With Crash Guard installed, you are given the chance to recover important
debugging information before resetting your calculator. When a crash occurs,
Crash Guard presents a short crash recovery wizard which allows you to send XML
data to a PC or calculator for later analysis. Next, Crash Guard will take
you to the disassembly view which shows the code that caused the crash.
Crash Guard In Action
Here is a short example showing Crash Guard in action. I have used the errorsim
program found in the errorsimulations folder of KerNO.
First, you will be asked if you want to transmit debugging information to the link
port. Next, Crash Guard will ask if you wish to view the disassembly. Following
your choice, Crash Guard will throw the error (this tells the AMS that there was
error), and then take you to the disassembly. If the program that crashed was executed
from the home screen, the error will be shown in the history area.
NOTE: If a ASM program crashes, and was archived,
the disassembly view may be incorrect because the operating system frees the
with that program. If you want to view the disassembly of a crashed ASM program,
make a copy of it in the ram, and make that copy crash ;)
NOTE: Because of the way the M68k CPU stores
crash data, the PC (program counter) may point a few bytes ahead of the actual
which caused the crash. Usually, if you push the minus () key a few times,
you will see the instruction which actually caused the crash.
Errors Handled By Crash Guard
Crash Guard handles these errors which normally
force the user to reset the calculator:
- Address Error
- Illegal Instruction
- Divide by Zero
- CHK Instruction
- TRAPV Instruction
- Privilege Violation
- Trace Interrupt
- Spurious Interrupt
XML Data Format
For a sample XML data file generated with Command Post, please view ErrorLogs.xml.
Each error report contains the following information:
- A short description of the error
- All registers a0-a6, d0-d7
- User Stack Pointer (USP)
- Supervisor Stack Pointer (SSP)
- Error Frame
- For More Information Regarding Error Frames See
- Microprocessor User's Manual 9th Edition. Section 6 Exception Processing.
M68000UM/AD. Published by Motorola.
- Programmers Reference Manual. M68000PM/AD. Appendix B. Exception
Processing Reference. Published by Motorola.
- For Error types 1 and 2, Command Post will always report type="1"
- The AccessAddress and InstructionRegister Fields are only valid when the
ErrorFrame type is equal to zero.
Note: Command Post does not output the user or supervisor
stacks to the link port. The link port is not fast enough to support this type
(a user stack
dump can take many minutes to complete!).
Recommended Link Settings
To receive error report transmissions, you
can either use Command Post's Link Port Logger feature
or a gray graphlink cable connected to a computer which is running
a program such as HyperTerminal with the following settings: Bits Per Second 9600,
Data Bits 8, Parity None, Stop Bits 1, Flow Control Hardware.
It currently (as of 12/22/2003) is not possible to make logs using the Black
or USB graph-links. The official Talk-TI SDK does not officially support
sending of raw data.