Vector Redirection in a Block Protected Nonvolatile Memory
Original Publication Date: 2001-Oct-12
Included in the Prior Art Database: 2001-Oct-12
A new mechanism allows all interrupt vectors other than the reset vector to be redirected when the block of nonvolatile memory containing the vectors is block protected. The vector redirection is done transparently in hardware logic. With this mechanism the user can program the reset vector locations (in their normal location at $FFFE:FFFF) to point at a bootloader program located in the same block of memory. Then the nonvolatile control bits, that control block protection, can be written to prevent programming or erasure of the bootloader and reset vector. Another nonvolatile control bit determines whether the interrupt vectors in the protected block will be automatically redirected to locations in unprotected memory space adjacent to the protected block. For example, if the block from $F800 through $FFFF is protected, any interrupt would fetch its vector from the area $F7C0 through $F7FD. If the block from $F000 through $FFFF is protected, any interrupt would fetch its vector from the area $EFC0 through EFFD. When vectors are redirected, the locations usually used for vectors ($FFC0 through $FFFD) are available for the bootloader program. Since interrupt vectors are now located in unprotected space, there is no additional space or execution time penalty associated with run-time interrupt operations.