lophtware

Logo

lophtware projects

GitHub Profile

Core - Device Status

Report Type: IN
Report Size: 41 Bytes

Report ID Reset Reason ERROREPC EPC CAUSE DESAVE RA Debug Word 1 Debug Word 2 Stored Configuration CRC32 Calculated Configuration CRC32
00000010 4 bytes 4 bytes 4 bytes 4 bytes 4 bytes 4 bytes 4 bytes 4 bytes 4 bytes 4 bytes

Report ID

HID Report ID. Always 0x02.

Reset Reason

A 4-byte value that indicates the reason for the last reset / power-on event. See Device Reset Reasons for how to interpret this field, along with a list of values.

This field is Little Endian, ie. the Least Significant Byte of the word appears first. Bit numbering within the constituent bytes is unaffected.

ERROREPC

A snapshot of the microcontroller’s ERROREPC register value that was taken prior to certain resets. Useful for debugging.

This field is Little Endian, ie. the Least Significant Byte of the word appears first. Bit numbering within the constituent bytes is unaffected.

EPC

A snapshot of the microcontroller’s EPC register value that was taken prior to certain resets. Useful for debugging.

This field is Little Endian, ie. the Least Significant Byte of the word appears first. Bit numbering within the constituent bytes is unaffected.

CAUSE

A snapshot of the microcontroller’s CAUSE register value that was taken prior to certain resets. Useful for debugging.

This field is Little Endian, ie. the Least Significant Byte of the word appears first. Bit numbering within the constituent bytes is unaffected.

DESAVE

A snapshot of the microcontroller’s DESAVE register value that was taken prior to certain resets. Useful for debugging.

This field is Little Endian, ie. the Least Significant Byte of the word appears first. Bit numbering within the constituent bytes is unaffected.

RA

A snapshot of the microcontroller’s RA register value that was taken prior to certain resets. Useful for debugging.

This field is Little Endian, ie. the Least Significant Byte of the word appears first. Bit numbering within the constituent bytes is unaffected.

Debug Word 1 / Debug Word 2

When things are not going so well whilst hacking the firmware, sometimes a bit of old-skool debugging is called for. Rather than blinking lights or toggling pins these two words allow values to be persisted across device resets, ideal for troubleshooting general exceptions that are proving tricky to pin down.

These fields are Little Endian, ie. the Least Significant Byte of the word appears first. Bit numbering within the constituent bytes is unaffected.

Stored Configuration CRC32

The CRC32 of the non-volatile configuration page that is stored in Flash. This value is also stored in the Flash along with the configuration and it was calculated at the time the configuration was stored.

This field is Little Endian, ie. the Least Significant Byte of the word appears first. Bit numbering within the constituent bytes is unaffected.

Calculated Configuration CRC32

The CRC32 of the non-volatile configuration page that is stored in Flash. This value is calculated at each reset and should be identical to the Stored Configuration CRC32 value. If the values differ then there is corruption of the Flash and it is likely a re-flash of the firmware is required or there is an irrecoverable hardware error (ie. flash endurance has been exceeded). A mismatched CRC32 will be reflected in the Reason Code field which will have its Safe Mode flag set under this condition.

This field is Little Endian, ie. the Least Significant Byte of the word appears first. Bit numbering within the constituent bytes is unaffected.