English
Language : 

MC68HC11E0CFNE3 Datasheet, PDF (212/242 Pages) Freescale Semiconductor, Inc – M68HC11E Family
Driving Boot Mode from a Personal Computer
VDD
+12.25 V
PROGRAMMING
POWER
COMMON
47K
NORMAL EVBU
OPERATION
TO P5-18
100
PROGRAM
(XIRQ/V PPE)
EPROM
+
JUMPER
20 µ F
PC0
P5-9
1K LED
Figure 8. PC-to-MCU Programming Circuit
Lines 50–95 read in the small bootloader from DATA statements at the end of the listing. The source code
for this bootloader is presented in the DATA statements. The bootloaded code makes port C bit 0 low,
initializes the X and Y registers for use by the EPROM programming utility routine contained in the boot
ROM, and then jumps to that routine. The hexadecimal values read in from the DATA statements are
converted to binary values by a subroutine. The binary values are then saved as one string
(BOOTCODE$).
The next long section of code (lines 97–1250) reads in the S records from an external disk file (in this
case, BUF34.S19), converts them to integer, and saves them in an array. The techniques used in this
section show how to convert ASCII S records to binary form that can be sent (bootloaded) to an
M68HC11.
This S-record translator only looks for the S1 records that contain the actual object code. All other
S-record types are ignored.
When an S1 record is found (lines 1000–1024), the next two characters form the hex byte giving the
number of hex bytes to follow. This byte is converted to integer by the same subroutine that converted the
bootloaded code from the DATA statements. This BYTECOUNT is adjusted by subtracting 3, which
accounts for the address and checksum bytes and leaves just the number of object-code bytes in the
record.
Starting at line 1100, the 2-byte (4-character) starting address is converted to decimal. This address is
the starting address for the object code bytes to follow. An index into the CODE% array is formed by
subtracting the base address initialized at the start of the program from the starting address for this S
record.
A FOR-NEXT loop starting at line 1130 converts the object code bytes to decimal and saves them in the
CODE% array. When all the object code bytes have been converted from the current S record, the
program loops back to find the next S1 record.
M68HC11 Bootstrap Mode, Rev. 1.1
212
Freescale Semiconductor