@CHIP-RTOS - CV Shell Command Operation

    IPC@CHIP® Documentation Index

CV Shell Command

The CV command checks the @CHIP-RTOS integrity by comparing the RAM resident code to the flash image.   (At system boot time, the RAM resident code was loaded from the image held in flash memory.)

The command also detects changes to the x86 CPU Interrupt Vector Table (IVT) that occurred between invocations of the CV command.

@CHIP-RTOS Code Image Compare

It can happen that an application program accidentally writes to the @CHIP-RTOS code area (in RAM), and thereby cause difficult to analyze system problems such as invalid opcode faults.   For this reason, the CV command is recommended whenever the system integrity appears suspect.

Note that debugger breakpoints will be detected by this command, reporting the INT 3 opcode (=0xCC) as a bad code byte which disagreed with the @CHIP-RTOS flash image.

x86 CPU Interrupt Vector Table

Changes seen in the IVT are not always unexpected or do not necessarily indicate a problem.   Drivers may install their API software interrupt vectors.   DOS program's commonly install their own handlers for interrupt #0 and #7.   The debugger's PROBE program installs handlers for interrupts #1, #3 and #6. These are just some examples of legitimate changes to the IVT which must be expected.

Nevertheless, when diagnosing system problems it is wise to keep an eye on the IVT.   When faulty programs write to objects through a NULL pointer, the system's IVT typically receives the damage.

IVT vectors which have changed will be reported to the console.   These will be shown in a far pointer format, but keep in mind that a bogus program may have written some data (e.g. ASCII characters) into these locations.

When in doubt, the reported vectors should be compared to the memory blocks reported by the MEM command to determine if they are plausible or just total garbage.

Invocation from Application Programs

The CV command can be invoked by applications using the BIOS_ExecuteExt() API.   It has been designed so that it may be called from low priority background tasks, without substantial interference with A: flash drive operation.   The reporting interface is a CvStatS type structure.

The console output can optionally be disabled when invoked via this API.

End of document