Dump the content of memory.

This 68HC11 bootstrap program dumps the target memory. It supports the following commands:

R{ADDR-HIGH}{ADDR-LOW}{SIZE}
Read the memory and dump it.

Z
Reboots.

This bootstrap program is uploaded by GTAM to dump the content of memory and I/O registers. It is also used to guess the CPU configuration by reading the bootrom mask ID.

Implementation Notes:

  1. This program must not be linked with a startup file. It implements the startup entry point.
  2. The _start function must be at beginning of this file. By doing so, it will be mapped at address 0 by the linker and we avoid to have some jump to call it (since the boot will jump there).
  3. It must be compiled with -mshort -Os -fomit-frame-pointer to make sure it fits in less than 240 bytes (keep a few bytes at end for the stack).
  4. It must be compiled with -msoft-reg-count=0 or =1 to reduce the use of soft-registers (since they are mapped in RAM in .page0).
  5. Before dumping the memory, we switch the bus in the expanded mode. We switch back to single chip before rebooting.
  6. The soft registers must be located at beginning of the .page0. This will clobber the beginning of the _start function. We don't care because this clobbers some initialisation part.
  7. Compile with -DNO_REBOOT to avoid the reboot. In that case, the program loops indefinately checking the memory regions.
  8. Compile with -DNO_BREAK to avoid detection of break sent by the host. With current implementation of GCC, the code is too big (some bytes) and it should not be compiled.
Caveats:
  • Memory is dumped in binary.
Source file: dumper.c