TMS320C6x COFF Assembler Version 4.10 Beta (May 4 2001) Tue May 29 13:49:06 2001 Copyright (c) 1996-2001 Texas Instruments Incorporated Flash bootup utility for 6211 dsk PAGE 1 2 .option D,T 5 6 7 00000080 PAGE_SIZE .equ 0x80 ;flash page size in byte 8 00000800 BOOT_SIZE .equ 0x800 ;bootup code size in byte 9 90000000 FLASH_START .equ 0x90000000 ;flash start address 10 00000000 BOOT_START .equ 0x00000000 ;L2 sram start address 11 12 0000F800 CODE_SIZE .equ 0xF800 ;application code size in byte 13 00000800 CODE_START .equ 0x800 ;application code start address 14 15 90005555 FLASH_REG1 .equ 0x90005555 ;address of the flash control reg 1 16 90002AAA FLASH_REG2 .equ 0x90002AAA ;address of the flash control reg 2 17 000000AA FLASH_KEY1 .equ 0xAA 18 00000055 FLASH_KEY2 .equ 0x55 19 000000A0 FLASH_KEY3 .equ 0xA0 20 90080000 IO_PORT .equ 0x90080000 ;address of I/O port, only top byte has valid data 21 01800000 EMIF_GCR .equ 0x01800000 ;EMIF global control 22 01800004 EMIF_CE1 .equ 0x01800004 ;address of EMIF CE1 control reg. 23 01800008 EMIF_CE0 .equ 0x01800008 ;EMIF CE0control 24 01800018 EMIF_SDCTRL .equ 0x01800018 ;EMIF SDRAM control 25 0180001C EMIF_SDRP .equ 0x0180001c ;EMIF SDRM refresh period 26 FFFFFF03 EMIF_CE1_8 .equ 0xffffff03 ; 27 FFFFFF23 EMIF_CE1_32 .equ 0xffffff23 ; 28 FFFFFF33 EMIF_CE0_V .equ 0xffffff33 ;EMIF CE0control ;0x30 29 07117000 EMIF_SDCTRL_V .equ 0x07117000 ;EMIF SDRAM control ;0x73380000 30 31 32 33 00000000 .sect ".boot_load" 34 .global _boot 35 .global _flash_prog 36 .global _wait 37 38 .ref _c_int00 39 40 00000000 _boot: 41 00000000 02000029 mvkl EMIF_GCR,A4 ;EMIF_GCR address ->A4 42 00000004 0219802A || mvkl 0x3300,B4 43 44 00000008 0200C069 mvkh EMIF_GCR,A4 45 0000000c 0200006A || mvkh 0x3300,B4 46 47 00000010 02100276 stw B4,*A4 48 49 00000014 02000429 mvkl EMIF_CE0,A4 ;EMIF_CE0 address ->A4 50 00000018 027F99AA || mvkl EMIF_CE0_V,B4 ; 51 52 00000020 0200C069 mvkh EMIF_CE0,A4 53 00000024 027FFFEA || mvkh EMIF_CE0_V,B4 54 55 00000028 02100277 stw B4,*A4 56 0000002c 02000C29 || mvkl EMIF_SDCTRL,A4 ;EMIF_SDCTRL address ->A4 57 00000030 0238002A || mvkl EMIF_SDCTRL_V,B4 ; 58 59 00000034 0200C069 mvkh EMIF_SDCTRL,A4 60 00000038 020388EA || mvkh EMIF_SDCTRL_V,B4 61 62 00000040 02100277 stw B4,*A4 63 00000044 02000E29 || mvkl EMIF_SDRP,A4 ;EMIF_SDRP address ->A4 64 00000048 02030D2A || mvkl 0x61a,B4 ; 65 66 0000004c 0200C069 mvkh EMIF_SDRP,A4 67 00000050 0200006A || mvkh 0x61a,B4 68 69 00000054 02100276 stw B4,*A4 70 71 72 73 00000058 02020029 mvkl BOOT_START+1024,A4 ;ram start address ->A4 74 0000005c 0202002A || mvkl FLASH_START+1024,B4 ;flash start address ->B4 75 76 00000060 02000069 mvkh BOOT_START+1024,A4 77 00000064 0248006A || mvkh FLASH_START+1024,B4 78 79 80 00000068 008008C0 zero A1 81 0000006c _boot_loop1: 82 0000006c 029036A6 ldb *B4++,B5 83 00000070 0302002A mvkl BOOT_SIZE-1024,B6 ;B6 = BOOT_SIZE -1024 84 85 00000074 00842941 add 1,A1,A1 ;A1+=1,inc outer counter 86 00000078 0300006A || mvkh BOOT_SIZE-1024,B6 87 88 0000007c 0004D8FA cmplt A1,B6,B0 89 00000080 00000000 nop 90 00000084 02903636 stb B5,*A4++ 91 00000088 2FFFFD92 [B0] b _boot_loop1 92 0000008c 00008000 nop 5 93 94 00000090 02040028 mvkl CODE_START,A4 ;apps code start address ->A4 95 00000094 02000068 mvkh CODE_START,A4 96 00000098 008008C0 zero A1 97 98 0000009c _boot_loop2: 99 0000009c 029036A6 ldb *B4++,B5 100 000000a0 037BFE2A mvkl CODE_SIZE-4,B6 ;B6 = BOOT_SIZE -1024 TMS320C6x COFF Assembler Version 4.10 Beta (May 4 2001) Tue May 29 13:49:06 2001 Copyright (c) 1996-2001 Texas Instruments Incorporated Flash bootup utility for 6211 dsk PAGE 2 101 102 000000a4 00842941 add 1,A1,A1 ;A1+=1,inc outer counter 103 000000a8 0300006A || mvkh CODE_SIZE-4,B6 104 105 000000ac 0004D8FA cmplt A1,B6,B0 106 000000b0 00000000 nop 107 000000b4 02903636 stb B5,*A4++ 108 000000b8 2FFFFF92 [B0] b _boot_loop2 109 000000bc 00008000 nop 5 110 111 000000c0 0000002A! mvkl .S2 _c_int00, B0 112 000000c4 0000006A! mvkh .S2 _c_int00, B0 113 000000c8 00000362 B .S2 B0 114 000000cc 00008000 nop 5 115 ; 116 ; end of the bootup routine 117 118 000000d0 _flash_prog: 119 000000d0 0000802B mvk 0x100,B0 120 000000d4 008000A8 || mvk 1,A1 121 122 000000d8 008003A2 mvc B0,CSR ;CSR = 0x100 123 124 000000dc 020413A2 mvc A1,IER ;IER = 1 125 126 000000e0 007FFFAB mvk -1,B0 127 000000e4 00800028 || mvk 0,A1 ;couter = 0 128 129 000000e8 018003A3 mvc B0,ICR ;ICR = 0xffff 130 000000ec 00000028 || mvk 0,A0 ;checksum =0 131 000000f0 02000029 mvkl EMIF_GCR,A4 ;EMIF_GCR address ->A4 132 000000f4 0219802A || mvkl 0x3300,B4 133 134 000000f8 0200C069 mvkh EMIF_GCR,A4 135 000000fc 0200006A || mvkh 0x3300,B4 136 137 00000100 02100277 stw B4,*A4 138 00000104 02000229 || mvkl EMIF_CE1,A4 ;EMIF_CE1 address ->A4 139 00000108 027F91AA || mvkl EMIF_CE1_32,B4 ; 140 141 0000010c 0200C069 mvkh EMIF_CE1,A4 142 00000110 027FFFEA || mvkh EMIF_CE1_32,B4 143 144 00000114 02100277 stw B4,*A4 145 00000118 02000429 || mvkl EMIF_CE0,A4 ;EMIF_CE0 address ->A4 146 0000011c 027F99AA || mvkl EMIF_CE0_V,B4 ; 147 148 00000120 0200C069 mvkh EMIF_CE0,A4 149 00000124 027FFFEA || mvkh EMIF_CE0_V,B4 150 151 00000128 02100277 stw B4,*A4 152 0000012c 02000C29 || mvkl EMIF_SDCTRL,A4 ;EMIF_SDCTRL address ->A4 153 00000130 0238002A || mvkl EMIF_SDCTRL_V,B4 ; 154 155 00000134 0200C069 mvkh EMIF_SDCTRL,A4 156 00000138 020388EA || mvkh EMIF_SDCTRL_V,B4 157 158 00000140 02100277 stw B4,*A4 159 00000144 02000E29 || mvkl EMIF_SDRP,A4 ;EMIF_SDRP address ->A4 160 00000148 02030D2A || mvkl 0x61a,B4 ; 161 162 0000014c 0200C069 mvkh EMIF_SDRP,A4 163 00000150 0200006A || mvkh 0x61a,B4 164 165 00000154 02100277 stw B4,*A4 166 00000158 0200002B || mvkl IO_PORT,B4 ;I/O port address ->B4 167 0000015c 02000028 || mvkl 0x07000000,A4 168 169 00000160 0248046B mvkh IO_PORT,B4 ;I/O port address ->B4 170 00000164 02038068 || mvkh 0x07000000,A4 171 172 00000168 00010000 nop 9 173 0000016c 021002F4 stw A4,*B4 ;turn off all three LEDs 174 00000170 00010000 nop 9 175 176 00000174 02000229 mvkl EMIF_CE1,A4 ;EMIF_CE1 address ->A4 177 00000178 027F81AA || mvkl EMIF_CE1_8,B4 ;flash start address ->B4 178 179 00000180 0200C069 mvkh EMIF_CE1,A4 180 00000184 027FFFEA || mvkh EMIF_CE1_8,B4 181 182 00000188 02100277 stw B4,*A4 183 0000018c 02000029 || mvkl BOOT_START,A4 ;ram start address ->A4 184 00000190 0004002A || mvkl BOOT_SIZE,B0 185 186 00000194 02000069 mvkh BOOT_START,A4 187 00000198 0000006A || mvkh BOOT_SIZE,B0 188 189 0000019c 03007FAA mvk 0xff,B6 190 191 000001a0 _prog_checksum_loop1: 192 000001a0 02103626 ldb *A4++,B4 193 000001a4 008000AA mvk 1,B1 194 000001a8 000028C2 sub B0,B1,B0 195 000001ac 00002000 nop 2 196 000001b0 021887E2 and B4,B6,B4 197 000001b4 001011E0 add A0,B4,A0 ;update checksum and save in A0 TMS320C6x COFF Assembler Version 4.10 Beta (May 4 2001) Tue May 29 13:49:06 2001 Copyright (c) 1996-2001 Texas Instruments Incorporated Flash bootup utility for 6211 dsk PAGE 3 198 000001b8 20000012 [B0] b _prog_checksum_loop1 199 000001bc 00008000 nop 5 200 201 000001c0 02040029 mvkl CODE_START,A4 ;ram start address ->A4 202 000001c4 007BFE2A || mvkl CODE_SIZE-4,B0 203 204 000001c8 02000069 mvkh CODE_START,A4 205 000001cc 0000006A || mvkh CODE_SIZE-4,B0 206 207 000001d0 _prog_checksum_loop2: 208 000001d0 02103626 ldb *A4++,B4 209 000001d4 008000AA mvk 1,B1 210 000001d8 000028C2 sub B0,B1,B0 211 000001dc 00002000 nop 2 212 000001e0 021887E2 and B4,B6,B4 213 000001e4 001011E0 add A0,B4,A0 ;update checksum and save in A0 214 000001e8 2FFFFE12 [B0] b _prog_checksum_loop2 215 000001ec 00008000 nop 5 216 217 ; stw A0,*A4 218 219 000001f0 02000029 mvkl BOOT_START,A4 220 000001f4 0200002A || mvkl FLASH_START,B4 ;flash start address ->B4 221 222 000001f8 02000069 mvkh BOOT_START,A4 223 000001fc 0248006A || mvkh FLASH_START,B4 224 225 00000200 03004029 mvk PAGE_SIZE,A6 226 00000204 0104002A || mvkl BOOT_SIZE,B2 227 228 00000208 0100006B mvkh BOOT_SIZE,B2 229 0000020c 008428C0 || zero A1 230 231 00000210 _flash_prog_loop1: 232 00000210 00001612 b _flash_page_prog 233 00000214 0181142A+ mvkl _flash_prog_branch1,B3 234 00000218 0180006A+ mvkh _flash_prog_branch1,B3 235 0000021c 00982840 add A6,A1,A1 236 00000220 000458FA cmplt A1,B2,B0 237 00000224 00000000 nop 238 00000228 _flash_prog_branch1: 239 00000228 2FFFFE12 [B0] b _flash_prog_loop1 240 0000022c 00008000 nop 5 241 242 243 00000230 02040029 mvkl CODE_START,A4 244 00000234 017C002A || mvkl CODE_SIZE,B2 245 246 00000238 02000069 mvkh CODE_START,A4 247 0000023c 0100006A || mvkh CODE_SIZE,B2 248 249 00000240 008008C0 zero A1 250 251 00000244 _flash_prog_loop2: 252 00000244 00000E12 b _flash_page_prog 253 00000248 01812E2A+ mvkl _flash_prog_branch2,B3 254 0000024c 0180006A+ mvkh _flash_prog_branch2,B3 255 00000250 00982840 add A6,A1,A1 256 00000254 000458FA cmplt A1,B2,B0 257 00000258 00000000 nop 258 0000025c _flash_prog_branch2: 259 0000025c 20000092 [B0] b _flash_prog_loop2 260 00000260 00008000 nop 5 261 262 263 264 ;Read back flash and calculate the checksum 265 00000264 00800029 mvk 0,A1 ;A1 = 0, clear checksum 266 00000268 0200002A || mvkl FLASH_START,B4 ;flash start address ->B4 267 268 0000026c 01000029 mvk 0,A2 ;A2 = 0, clear counter 269 00000270 0248006A || mvkh FLASH_START,B4 270 271 00000274 03007FAA mvk 0xff,B6 272 273 00000278 _checksum_cal: 274 00000278 029036A6 ldb *B4++,B5 275 0000027c 01082940 add 1,A2,A2 276 00000280 00FFFE2A mvkl BOOT_SIZE+CODE_SIZE-4,B1 ; 277 00000284 0080006A mvkh BOOT_SIZE+CODE_SIZE-4,B1 ; 278 00000288 000838FA cmplt A2,B1,B0 279 0000028c 0298A7E2 and B5,B6,B5 280 00000290 009431E0 add A1,B5,A1 281 00000294 2FFFFF12 [B0] b _checksum_cal 282 00000298 00008000 nop 5 283 284 0000029c 00802A78 cmpeq A1,A0,A1 285 000002a0 80001292 [A1] b _flash_prog_success 286 000002a4 00008000 nop 5 287 000002a8 00001F12 b _flash_prog_fail 288 000002ac 00008000 nop 5 289 290 291 ;****************************************************************************** 292 ;* FUNCTION NAME: _flash_page_prog * 293 ;* * 294 ;* Regs Modified : A3,A4,A6,B1,B4,B5,B6 * TMS320C6x COFF Assembler Version 4.10 Beta (May 4 2001) Tue May 29 13:49:06 2001 Copyright (c) 1996-2001 Texas Instruments Incorporated Flash bootup utility for 6211 dsk PAGE 4 295 ;****************************************************************************** 296 000002b0 _flash_page_prog: 297 298 000002b0 032AAAAA MVKL .S2 0x90005555,B6 ; 299 300 000002b4 01FFD529 MVK .S1 -86,A3 ; 301 000002b8 0348006A || MVKH .S2 0x90005555,B6 ; 302 303 000002bc 019802B4 STB .D2T1 A3,*B6 304 000002c0 00010000 nop 9 ; 305 000002c4 0295552A MVKL .S2 0x90002aaa,B5 ; 306 307 000002c8 01802AA9 MVK .S1 85,A3 ; 308 000002cc 02C8006A || MVKH .S2 0x90002aaa,B5 ; 309 310 000002d0 019402B4 STB .D2T1 A3,*B5 311 000002d4 00010000 nop 9 ; 312 313 000002d8 01AAAAA8 MVKL .S1 0x90005555,A3 ; 314 315 000002e0 02FFD02B MVK .S2 -96,B5 ; 316 000002e4 01C80068 || MVKH .S1 0x90005555,A3 ; 317 318 000002e8 028C0236 STB .D1T2 B5,*A3 ; 319 000002ec 00010000 nop 9 320 321 322 000002f0 028000FA ZERO .L2 B5 ; 323 324 ;** --------------------------------------------------------------------------* 325 000002f4 FLASH_PAGE_PROG_LOOP: 326 000002f4 03103626 LDB *A4++,B6 ; 327 000002f8 02942942 ADD 1,B5,B5 328 000002fc 00006000 NOP 4 329 00000300 031036B6 STB .D2T2 B6,*B4++ ; 330 00000304 00010000 nop 9 331 00000308 0098BAFA CMPLT .L2x B5,A6,B1 ; 332 0000030c 4FFFFE90 [ B1] B .S1 FLASH_PAGE_PROG_LOOP ; 333 00000310 00008000 NOP 5 334 335 ;** --------------------------------------------------------------------------* 336 00000314 FLASH_PAGE_PROG_WAIT: 337 00000314 01902025 LDB .D1T1 *-A4(1),A3 ; 338 00000318 029020A6 || LDB *-B4(1),B5 339 0000031c 00006000 NOP 4 340 00000320 008CBA7A CMPEQ .L2X A3,B5,B1 ; 341 00000324 5FFFFE90 [!B1] B .S1 FLASH_PAGE_PROG_WAIT ; 342 00000328 00008000 NOP 5 343 0000032c 000C0362 B .S2 B3 ; 344 00000330 00008000 NOP 5 345 346 ;****************************************************************************** 347 ;* FUNCTION NAME: _flash_prog_success * 348 ;****************************************************************************** 349 00000334 _flash_prog_success: 350 00000334 02000229 mvkl EMIF_CE1,A4 ;EMIF_CE1 address ->A4 351 00000338 027F91AA || mvkl EMIF_CE1_32,B4 ; 352 353 00000340 0200C069 mvkh EMIF_CE1,A4 354 00000344 027FFFEA || mvkh EMIF_CE1_32,B4 355 356 00000348 0080002B mvkl IO_PORT,B1 ;I/O port address ->B1 357 0000034c 00800069 || mvkh 0x00000000,A1 358 00000350 02100276 || stw B4,*A4 359 360 00000354 00C8046B mvkh IO_PORT,B1 ;I/O port address ->B1 361 00000358 01038068 || mvkh 0x07000000,A2 362 363 0000035c 010000AA mvk 1,B2 364 00000360 _flash_prog_suc_loop: 365 00000360 0050902A mvkl 500000,B0 366 00000364 000003EA mvkh 500000,B0 367 00000368 _flash_prog_suc_loop1: 368 00000368 200048C2 [B0] sub B0,B2,B0 369 0000036c 010402F4 stw A2,*B1 370 00000370 20000112 [B0] b _flash_prog_suc_loop1 371 00000374 00008000 nop 5 372 373 00000378 0050902A mvkl 500000,B0 374 0000037c 000003EA mvkh 500000,B0 375 376 00000380 _flash_prog_suc_loop2: 377 00000380 200048C2 [B0] sub B0,B2,B0 378 00000384 008402F4 stw A1,*B1 379 00000388 20000012 [B0] b _flash_prog_suc_loop2 380 0000038c 00008000 nop 5 381 382 00000390 0FFFFC12 b _flash_prog_suc_loop 383 00000394 00008000 nop 5 384 385 ;****************************************************************************** 386 ;* FUNCTION NAME: _flash_prog_fail * 387 ;****************************************************************************** 388 00000398 _flash_prog_fail: 389 00000398 02000229 mvkl EMIF_CE1,A4 ;EMIF_CE1 address ->A4 390 0000039c 027F91AA || mvkl EMIF_CE1_32,B4 ; 391 TMS320C6x COFF Assembler Version 4.10 Beta (May 4 2001) Tue May 29 13:49:06 2001 Copyright (c) 1996-2001 Texas Instruments Incorporated Flash bootup utility for 6211 dsk PAGE 5 392 000003a0 0200C069 mvkh EMIF_CE1,A4 393 000003a4 027FFFEA || mvkh EMIF_CE1_32,B4 394 395 000003a8 0080002B mvkl IO_PORT,B1 ;I/O port address ->B1 396 000003ac 00800069 || mvkh 0x00000000,A1 397 000003b0 02100276 || stw B4,*A4 398 399 000003b4 00C8046A mvkh IO_PORT,B1 ;I/O port address ->B1 400 000003b8 008402F4 stw A1,*B1 401 000003bc _flash_prog_fail_loop: 402 000003bc 00000392 b _flash_prog_fail_loop 403 000003c0 00008000 nop 5 404 405 000003c4 _wait: 406 000003c4 001011A2 mv a4,b0 407 000003c8 _w1 408 000003c8 200029C2 [b0]sub b0,1,b0 409 000003cc 20000112 [b0]b _w1 410 000003d0 00008000 nop 5 411 000003d4 000C0362 b b3 412 000003d8 00008000 nop 5 413 414 No Assembly Errors, No Assembly Warnings