Texas Instruments TMS320C3x User Manual

Page 732

Advertising
background image

Boot-Loader Source Code Listing

C-9

TMS320C32 Boot Loader Source Code

read_s0 TSTB 20h,IF ; look at RINT0 flag
BZ read_s0 ; wait for receive buffer full
AND 0FDFh,IF ; reset interrupt flag
LDI *+AR7(4Ch),R1 ; read data ––> R1
RETSU
*––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––
read_mc LDI 3,R3 ; data size = 32, 3 ––> R3

read_mb LDI 1,BK ; 00000001 (ex: mem width=8)
LSH R5,BK ; 00000100
SUBI 1,BK ; 000000FF = mask ––> BK

LDI R3,AR6 ; 0 – 1 000 EXPAND
ADDI 1,AR6 ; 1 – 10 000 DATA ––> AR6
LSH 3,AR6 ; 11 – 100 000 SIZE
LDI R5,R0
loop3 CMPI 1,R0
BEQ exit1 ; DATA SIZE
LSH –1,R0 ; ––––––––– – 1 ––> AR6
LSH –1,AR6 ; MEM WIDTH
BU loop3 ;*******;
exit1 SUBI 1,AR6

LDI 0,R0 ; init shift value
LDI 0,R1 ; init accumulator
loop1 ADDI 3,SP ; 808027h ––> SP
CALLU read_m ; read memory once ––> R6
SUBI 3,SP ; 808024h ––> SP
AND3 R6,BK,R7 ; apply mask
LSH R0,R7 ; shift
OR R7,R1 ; accumulate ––> R1
ADDI R5,R0 ; increment shift value
DBU AR6,loop1 ;*****; decrement #of chunks ––> AR6
RETSU

*================================================================================*
* Perform a single memory read from the source boot table. Handshake enabled if
* IOXF0 bit of IOF reg is set, disabled when reset. IACK will pulse continuously
* if handshake enabled and data not ready (to achieve zero–glue interface when
* connecting to a C40 comm-port)
*================================================================================*

read_m TSTB 2,IOF ; handshake mode enabled ?
STI R2,*AR2 ; set read strobe !!!!!!!!!!!!!
BNZ loop5 ; yes, jump over
LDI *AR3++,R6 ; no, just read memory & return
RETSU
*–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––– (C40)
loop5 IACK *AR7 ;*; intrnl dummy read pulses IACK
TSTB 80h,IOF ;*; wait for data ready
BNZ loop5 ;*; (XF1 low from host)

LDI *AR3++,R6 ;*; read memory once ––> R6

Advertising