Jameco Electronics 3000 User Manual

Page of 349
User’s Manual
101
7.11  Bootstrap Operation
The device provides the option of bootstrap from any of three sources: from the Slave 
Port, from Serial Port A in clocked serial mode, or from Serial Port A in asynchronous 
mode. This is controlled by the state of the SMODE pins after reset. Bootstrap operation is 
disabled if (SMODE1, SMODE0) = (0, 0).
Bootstrap operation inhibits the normal fetch of code from memory, and instead substi-
tutes the output of a small internal boot ROM for program fetches. This bootstrap program 
reads groups of three bytes from the selected peripheral device. The first byte is the most 
significant byte of a 16-bit address, followed by the least-significant byte of a 16-bit 
address, followed by a byte of data. The bootstrap program then writes the byte of data to 
the downloaded address and jumps back to the start of the bootstrap program. The most 
significant bit of the address is used to determine the destination for the byte of data. If this 
bit is zero, the byte is written to the memory location addressed by the downloaded 
address. If this bit is one, the byte is written to the internal peripheral addressed by the 
downloaded address. Note that all of the memory control signals continue to operate nor-
mally during bootstrap.
Execution of the bootstrap program automatically waits for data to become available from 
the selected peripheral, and each byte transferred automatically resets the watchdog timer. 
However, the watchdog timer still operates, and bytes must be transferred often enough to 
prevent the watchdog timer from timing out.
Bootstrap operation is terminated when the SMODE pins are set to zero. The SMODE 
pins are sampled just prior to fetching the first instruction of the bootstrap program. If the 
SMODE pins are zero, instructions are fetched from normal memory starting at address 
0x0000. The Slave Port Control register allows the bootstrap operation to be terminated 
remotely. Writing a one to bit 7 of this register causes the bootstrap operation to terminate 
immediately. So the sequence 0x80, 0x24, and 0x80 will terminate bootstrap operation.
Bootstrap operation is not restricted to the time immediately after reset because the boot 
ROM is addressed by only the four least significant bits of the address. So any time that 
the address ends in four zeros, if the SMODE pins are non-zero and bit 7 of the SPCR is 
zero, the bootstrap program will begin execution. This allows in-line downloading from 
the selected bootstrap port. Upon completion of the bootstrap operation, either by return-
ing the SMODE pins to zero or setting the bit in the SPCR, execution will continue from 
where it was interrupted for the bootstrap operation.
The Slave Port is selected for bootstrap operation when (SMODE1, SMODE0) = (0, 1). In 
this case the pins of Parallel Port A are used for a byte-wide data bus, and selected pins of 
Parallel Ports B and E are used for the Slave Port control signals. Only Slave Port Data 
Register 0 is used for bootstrap operation, and any writes to the other data registers will be 
ignored by the processor, and can actually interfere with the bootstrap operation by mask-
ing the Write Empty signal.