09.01.2013 Views

Motorola Semiconductor Engineering Bulletin EB422 Enhanced

Motorola Semiconductor Engineering Bulletin EB422 Enhanced

Motorola Semiconductor Engineering Bulletin EB422 Enhanced

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

Freescale <strong>Semiconductor</strong>, Inc...<br />

<strong>EB422</strong><br />

Freescale <strong>Semiconductor</strong>, Inc.<br />

<strong>Engineering</strong> <strong>Bulletin</strong><br />

Listing 8. MC68HC711EA9 Boatloader ROM Listing<br />

0099 *****************************************************<br />

0100 * PROGRAM - Utility subroutine to program EPROM.<br />

0101 * Prior to calling PROGRAM set baud rate, turn on SCI<br />

0102 * set X=2ms prog delay constant, and set Y=first<br />

0103 * address to program. SP must point to RAM.<br />

0104 * Bootloader leaves baud set, SCI enabled, X=4200<br />

0105 * and Y pointing at EPROM start ($D000) so these<br />

0106 * default values don’t have to be changed typically.<br />

0107 * Delay constant in X should be equivalent to 2 ms<br />

0108 * at 2.1 MHz X=4200; at 1 MHz X=2000.<br />

0109 * At external voltage source is required for EPROM<br />

0110 * programming.<br />

0111 * This routine uses 2 bytes of stack space<br />

0112 * Routine does not return. Reset to exit.<br />

0113 *****************************************************<br />

0114 bf13 PRGROUT EQU *<br />

0115 bf13 3c PSHX Save prog dly<br />

0116 bf14 cd 10 00 LDX #$1000 Point to regs<br />

0117<br />

0118 * Send $FF to indicate ready for program data<br />

0119<br />

0120 bf171f 2c 80 fc BRCLR SCSR1,X $80 * Wait for TDRE<br />

0121 bf1b 86 ff LDAA #$FF<br />

0122 bf1d a7 2f STAA SCDRL,X<br />

0123<br />

0124 bf1f WAIT1 EQU *<br />

0125 bf1f 1f 2c 20 fc BRCLR SCSR1,X $20 * Wait for RDRF<br />

0126 bf23 e6 2f LDAB SCDRL,X Get rx byte<br />

0127 bf25 18 e1 00 CMPB $0,Y Already prog?<br />

0128 bf28 27 1d BEQ DONEIT Skip prog cyc<br />

0129 bf2a 86 20 LDAA #ELAT EPROM in prog<br />

0130 bf2c a7 3b STAA PPROG,X<br />

0131 bf2e 18 e7 00 STAB 0,Y Write data<br />

0132 bf31 86 21 LDAA #ELAT+EPGM<br />

0133 bf33 a7 3b STAA PPROG,X Prog start<br />

0134 bf35 32 PULA Get dly const<br />

0135 bf36 33 PULB into D-reg<br />

0136 bf37 37 PSHB But keep dly<br />

0137 bf38 36 PSHA on stack<br />

0138 bf39 e3 0e ADDD TCNT,X Delay + TCNT<br />

0139 bf3b ed 16 STD TOC1,X 2ms delay<br />

0140 bf3d 86 80 LDAA #OC1F<br />

0141 bf3f a7 23 STAA TFLG1,X Clear flag<br />

0142<br />

0143 bf41 1f 23 80 fc BRCLR TFLG1,X OC1F * Wait for dly<br />

0144 bf45 6f 3b CLR PROG,X Prog stop<br />

0145 *<br />

0146 bf47 DONEIT EQU *<br />

0147 bf47 1f 2c 80 fc BRCLR SCSR1,X $80 * Wait for TDRE<br />

0148 bf4b 18 a6 00 LDAA $0,Y Get EPROM &<br />

0149 bf4e a7 2f STAA SCDRL,X Xmit for verf<br />

0150 bf50 18 08 INY Next location<br />

0151 bf52 20 cb BRA WAIT1 Back for next<br />

0152 * Loops indefinitely as long as more data sent.<br />

0153<br />

0154 ***********************************************************<br />

0155 * Main bootloader starts here<br />

0156 ***********************************************************<br />

0157 * RESET vector bootloader starts here<br />

0158<br />

0159 bf54 BEGIN EQU *<br />

0160 bf54 8e 01 ff LDS #RAMEND Initialise SP<br />

0161 bf57 ce 10 00 LDX #$1000 Point at regs<br />

0162 bf5a cc 00 20 LDD #$0020 Init baud for<br />

MOTOROLA 17<br />

For More Information On This Product,<br />

Go to: www.freescale.com

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!