📄 usbdown.txt
字号:
; generated by ARM C Compiler, ADS1.2 [Build 805]
; commandline [-errors .\err\usbdown.err -O0 -asm -g+ -cpu 5TEJ -fs -Wd -Ec -I.\include "-IC:\Program Files\ARM\ADSv1_2\INCLUDE"]
CODE32
AREA ||.text||, CODE, READONLY
WaitDownload PROC
;;;277 void WaitDownload(void)
;;;278 {
|L1.0|
000000 e92d47f0 STMFD sp!,{r4-r10,lr}
000004 e24dd030 SUB sp,sp,#0x30
;;;279 U32 i;
;;;280 U32 j;
;;;281 U16 cs;
;;;282 U32 temp;
;;;283 U16 dnCS;
;;;284 int first=1;
000008 e3a0a001 MOV r10,#1
;;;285 float time;
;;;286 U8 tempMem[16];
;;;287 U8 key;
;;;288
;;;289 checkSum=0;
00000c e3a00000 MOV r0,#0
000010 e59f129c LDR r1,|L1.692|
000014 e1c100b0 STRH r0,[r1,#0] ; checkSum
;;;290 downloadAddress_u=(U32)tempMem; //_RAM_STARTADDRESS;
000018 e28d0020 ADD r0,sp,#0x20
00001c e59f1294 LDR r1,|L1.696|
000020 e5810000 STR r0,[r1,#0] ; downloadAddress_u
;;;291 downPt=(unsigned char *)downloadAddress_u;
000024 e59f028c LDR r0,|L1.696|
000028 e5900000 LDR r0,[r0,#0] ; downloadAddress_u
00002c e59f1288 LDR r1,|L1.700|
000030 e5810000 STR r0,[r1,#0] ; downPt
;;;292 //This address is used for receiving first 8 byte.
;;;293 downloadFileSize=0;
000034 e3a00000 MOV r0,#0
000038 e59f1280 LDR r1,|L1.704|
00003c e5810000 STR r0,[r1,#0] ; downloadFileSize
;;;294
;;;295
;;;296 /*******************************/
;;;297 /* Test program download */
;;;298 /*******************************/
;;;299 j=0;
000040 e3a04000 MOV r4,#0
;;;300
;;;301
;;;302 Uart_Printf("Enter a new temporary download address(0x1...):");
000044 e28f0f9e ADR r0,|L1.708|
000048 ebfffffe BL _printf
;;;303 tempdownloadAddress=Uart_GetIntNum();
00004c ebfffffe BL Uart_GetIntNum
000050 e59f129c LDR r1,|L1.756|
000054 e5810000 STR r0,[r1,#0] ; tempdownloadAddress
;;;304 download_run=0;
000058 e3a00000 MOV r0,#0
00005c e59f1294 LDR r1,|L1.760|
000060 e5810000 STR r0,[r1,#0] ; download_run
;;;305 //Uart_Printf("The temporary download address is 0x%x.\n\n",tempdownloadAddress);
;;;306 Uart_Printf(" Waiting a download.\n");
000064 e28f0fa4 ADR r0,|L1.764|
000068 ebfffffe BL _printf
;;;307 while(downloadFileSize==0)
00006c e1a00000 NOP
|L1.112|
000070 e59f0248 LDR r0,|L1.704|
000074 e5900000 LDR r0,[r0,#0] ; downloadFileSize
000078 e3500000 CMP r0,#0
00007c 1a00000f BNE |L1.192|
;;;308 {
;;;309
;;;310 if(j%0x50000==0)Led_Display(0x6);
000080 e1a01004 MOV r1,r4
000084 e3a00a50 MOV r0,#0x50000
000088 ebfffffe BL __rt_udiv
00008c e3510000 CMP r1,#0
000090 1a000001 BNE |L1.156|
000094 e3a00006 MOV r0,#6
000098 ebfffffe BL Led_Display
;;;311 if(j%0x50000==0x28000)Led_Display(0x9);
|L1.156|
00009c e1a01004 MOV r1,r4
0000a0 e3a00a50 MOV r0,#0x50000
0000a4 ebfffffe BL __rt_udiv
0000a8 e3510ba0 CMP r1,#0x28000
0000ac 1a000001 BNE |L1.184|
0000b0 e3a00009 MOV r0,#9
0000b4 ebfffffe BL Led_Display
;;;312 j++;
|L1.184|
0000b8 e2844001 ADD r4,r4,#1
;;;313 }
0000bc eaffffeb B |L1.112|
;;;314 Uart_Printf(" download address: 0x%x, download file size: 0x%x\n\n",downloadAddress_u, downloadFileSize-0x0a);
|L1.192|
0000c0 e59f01f8 LDR r0,|L1.704|
0000c4 e5900000 LDR r0,[r0,#0] ; downloadFileSize
0000c8 e240200a SUB r2,r0,#0xa
0000cc e59f01e4 LDR r0,|L1.696|
0000d0 e5901000 LDR r1,[r0,#0] ; downloadAddress_u
0000d4 e28f0f8e ADR r0,|L1.788|
0000d8 ebfffffe BL _printf
;;;315 Timer_InitEx();
0000dc ebfffffe BL Timer_InitEx
;;;316 Timer_StartEx();
0000e0 ebfffffe BL Timer_StartEx
;;;317
;;;318 #if USBDMA
;;;319
;;;320 rINTMSK&=~(BIT_DMA);
;;;321 rINTSUBMSK&=~(BIT_SUB_DMA2);
;;;322
;;;323 ClearEp3OutPktReady();
;;;324 // indicate the first packit is processed.
;;;325 // has been delayed for DMA2 cofiguration.
;;;326
;;;327
;;;328 if(downloadFileSize>EP3_PKT_SIZE)
;;;329 {
;;;330 if(downloadFileSize<=(0x80000))
;;;331 {
;;;332 ConfigEp3DmaMode(downloadAddress_u+EP3_PKT_SIZE-8,downloadFileSize-EP3_PKT_SIZE);
;;;333 //wait until DMA reload occurs.
;;;334 while((rDSTAT2&0xfffff)==0);
;;;335
;;;336 //will not be used.
;;;337 rDIDST2=(downloadAddress_u+downloadFileSize-EP3_PKT_SIZE);
;;;338 rDIDSTC2=(0<<1)|(0<<0);
;;;339 rDCON2=rDCON2&~(0xfffff)|(0);
;;;340 }
;;;341 else
;;;342 {
;;;343 ConfigEp3DmaMode(downloadAddress_u+EP3_PKT_SIZE-8,0x80000-EP3_PKT_SIZE);
;;;344 //wait until DMA reload occurs.
;;;345 while((rDSTAT2&0xfffff)==0);
;;;346
;;;347 if(downloadFileSize>(0x80000*2))//for 1st autoreload
;;;348 {
;;;349 rDIDST2=(downloadAddress_u+0x80000-8); //for 1st autoreload.
;;;350 rDIDSTC2=(0<<1)|(0<<0);
;;;351 rDCON2=rDCON2&~(0xfffff)|(0x80000);
;;;352
;;;353 while(rEP3_DMA_TTC<0xfffff)
;;;354 {
;;;355 rEP3_DMA_TTC_L=0xff;
;;;356 rEP3_DMA_TTC_M=0xff;
;;;357 rEP3_DMA_TTC_H=0xf;
;;;358 }
;;;359 }
;;;360 else
;;;361 {
;;;362 rDIDST2=(downloadAddress_u+0x80000-8); //for 1st autoreload.
;;;363 rDIDSTC2=(0<<1)|(0<<0);
;;;364 rDCON2=rDCON2&~(0xfffff)|(downloadFileSize-0x80000);
;;;365
;;;366 while(rEP3_DMA_TTC<0xfffff)
;;;367 {
;;;368 rEP3_DMA_TTC_L=0xff;
;;;369 rEP3_DMA_TTC_M=0xff;
;;;370 rEP3_DMA_TTC_H=0xf;
;;;371 }
;;;372 }
;;;373 }
;;;374 totalDmaCount=0;
;;;375 }
;;;376 else
;;;377 {
;;;378 totalDmaCount=downloadFileSize;
;;;379 }
;;;380 #endif
;;;381
;;;382 Uart_Printf("\nNow, Downloading [ADDRESS:%xh,TOTAL:%d]\n",
0000e4 e59f01d4 LDR r0,|L1.704|
0000e8 e5902000 LDR r2,[r0,#0] ; downloadFileSize
0000ec e59f01c4 LDR r0,|L1.696|
0000f0 e5901000 LDR r1,[r0,#0] ; downloadAddress_u
0000f4 e28f0f93 ADR r0,|L1.840|
0000f8 ebfffffe BL _printf
;;;383 downloadAddress_u,downloadFileSize);
;;;384 Uart_Printf("RECEIVED FILE SIZE:%8d",0);
0000fc e3a01000 MOV r1,#0
000100 e28f0f9b ADR r0,|L1.884|
000104 ebfffffe BL _printf
;;;385
;;;386 #if USBDMA
;;;387 j=0x10000;
;;;388
;;;389 while(1)
;;;390 {
;;;391 if( (rDCDST2-(U32)downloadAddress_u+8)>=j)
;;;392 {
;;;393 Uart_Printf("\b\b\b\b\b\b\b\b%8d",j);
;;;394 j+=0x10000;
;;;395 }
;;;396 if(totalDmaCount>=downloadFileSize)break;
;;;397 }
;;;398
;;;399 #else
;;;400 j=0x10000;
000108 e3a04b40 MOV r4,#0x10000
;;;401
;;;402 while(((U32)downPt-downloadAddress_u)<(downloadFileSize-8))
00010c e1a00000 NOP
|L1.272|
000110 e59f01a4 LDR r0,|L1.700|
000114 e5900000 LDR r0,[r0,#0] ; downPt
000118 e59f1198 LDR r1,|L1.696|
00011c e5911000 LDR r1,[r1,#0] ; downloadAddress_u
000120 e0400001 SUB r0,r0,r1
000124 e59f1194 LDR r1,|L1.704|
000128 e5911000 LDR r1,[r1,#0] ; downloadFileSize
00012c e2411008 SUB r1,r1,#8
000130 e1500001 CMP r0,r1
000134 2a00000b BCS |L1.360|
;;;403 {
;;;404 if( ((U32)downPt-downloadAddress_u)>=j)
000138 e59f017c LDR r0,|L1.700|
00013c e5900000 LDR r0,[r0,#0] ; downPt
000140 e59f1170 LDR r1,|L1.696|
000144 e5911000 LDR r1,[r1,#0] ; downloadAddress_u
000148 e0400001 SUB r0,r0,r1
00014c e1500004 CMP r0,r4
000150 3a000003 BCC |L1.356|
;;;405 {
;;;406 Uart_Printf("\b\b\b\b\b\b\b\b%8d",j);
000154 e1a01004 MOV r1,r4
000158 e28f0f8b ADR r0,|L1.908|
00015c ebfffffe BL _printf
;;;407 j+=0x10000;
000160 e2844b40 ADD r4,r4,#0x10000
;;;408 }
;;;409 }
|L1.356|
000164 eaffffe9 B |L1.272|
;;;410 #endif
;;;411
;;;412
;;;413 time=Timer_StopEx();
|L1.360|
000168 ebfffffe BL Timer_StopEx
00016c e1a06000 MOV r6,r0
;;;414 Uart_Printf("\b\b\b\b\b\b\b\b%8d",downloadFileSize);
000170 e59f0148 LDR r0,|L1.704|
000174 e5901000 LDR r1,[r0,#0] ; downloadFileSize
000178 e28f0f83 ADR r0,|L1.908|
00017c ebfffffe BL _printf
;;;415 Uart_Printf("(%5.1fKB/S,%3.1fS)\n",(float)(downloadFileSize/time/1000.),time);
000180 e1a00006 MOV r0,r6
000184 ebfffffe BL _f2d
000188 e58d0018 STR r0,[sp,#0x18]
00018c e58d101c STR r1,[sp,#0x1c]
000190 e59f0128 LDR r0,|L1.704|
000194 e5900000 LDR r0,[r0,#0] ; downloadFileSize
000198 ebfffffe BL _ffltu
00019c e1a09000 MOV r9,r0
0001a0 e1a01006 MOV r1,r6
0001a4 ebfffffe BL _fdiv
0001a8 e1a08000 MOV r8,r0
0001ac ebfffffe BL _f2d
0001b0 e88d0003 STMIA sp,{r0,r1}
0001b4 e28f0f77 ADR r0,|L1.920|
0001b8 e890000c LDMIA r0,{r2,r3}
0001bc e59d0000 LDR r0,[sp,#0]
0001c0 ebfffffe BL _ddiv
0001c4 e58d0008 STR r0,[sp,#8]
0001c8 e58d100c STR r1,[sp,#0xc]
0001cc ebfffffe BL _d2f
0001d0 e1a07000 MOV r7,r0
0001d4 ebfffffe BL _f2d
0001d8 e58d0010 STR r0,[sp,#0x10]
0001dc e58d1014 STR r1,[sp,#0x14]
0001e0 e59d001c LDR r0,[sp,#0x1c]
0001e4 e58d0000 STR r0,[sp,#0]
0001e8 e1a02001 MOV r2,r1
0001ec e28f0f6b ADR r0,|L1.928|
0001f0 e59d1010 LDR r1,[sp,#0x10]
0001f4 e59d3018 LDR r3,[sp,#0x18]
0001f8 ebfffffe BL printf
;;;416
;;;417 #if USBDMA
;;;418 /*******************************/
;;;419 /* Verify check sum */
;;;420 /*******************************/
;;;421
;;;422 Uart_Printf("Now, Checksum calculation\n");
;;;423
;;;424 cs=0;
;;;425 i=(downloadAddress_u);
;;;426 j=(downloadAddress_u+downloadFileSize-10)&0xfffffffc;
;;;427 while(i<j)
;;;428 {
;;;429 temp=*((U32 *)i);
;;;430 i+=4;
;;;431 cs+=(U16)(temp&0xff);
;;;432 cs+=(U16)((temp&0xff00)>>8);
;;;433 cs+=(U16)((temp&0xff0000)>>16);
;;;434 cs+=(U16)((temp&0xff000000)>>24);
;;;435 }
;;;436
;;;437 i=(downloadAddress_u+downloadFileSize-10)&0xfffffffc;
;;;438 j=(downloadAddress_u+downloadFileSize-10);
;;;439 while(i<j)
;;;440 {
;;;441 cs+=*((U8 *)i++);
;;;442 }
;;;443
;;;444 checkSum=cs;
;;;445 #else
;;;446 //checkSum was calculated including dnCS. So, dnCS should be subtracted.
;;;447 checkSum=checkSum - *((unsigned char *)(downloadAddress_u+downloadFileSize-8-2))
0001fc e59f00b4 LDR r0,|L1.696|
000200 e5900000 LDR r0,[r0,#0] ; downloadAddress_u
000204 e59f10b4 LDR r1,|L1.704|
000208 e5911000 LDR r1,[r1,#0] ; downloadFileSize
00020c e0800001 ADD r0,r0,r1
000210 e550000a LDRB r0,[r0,#-0xa]
000214 e59f1098 LDR r1,|L1.692|
000218 e1d110b0 LDRH r1,[r1,#0] ; checkSum
00021c e0410000 SUB r0,r1,r0
000220 e59f1090 LDR r1,|L1.696|
000224 e5911000 LDR r1,[r1,#0] ; downloadAddress_u
000228 e59f2090 LDR r2,|L1.704|
00022c e5922000 LDR r2,[r2,#0] ; downloadFileSize
000230 e0811002 ADD r1,r1,r2
000234 e5511009 LDRB r1,[r1,#-9]
000238 e0400001 SUB r0,r0,r1
00023c e59f1070 LDR r1,|L1.692|
000240 e1c100b0 STRH r0,[r1,#0] ; checkSum
;;;448 - *( (unsigned char *)(downloadAddress_u+downloadFileSize-8-1) );
;;;449 #endif
;;;450
;;;451 dnCS=*((unsigned char *)(downloadAddress_u+downloadFileSize-8-2))+
000244 e59f006c LDR r0,|L1.696|
000248 e5900000 LDR r0,[r0,#0] ; downloadAddress_u
00024c e59f106c LDR r1,|L1.704|
000250 e5911000 LDR r1,[r1,#0] ; downloadFileSize
000254 e0800001 ADD r0,r0,r1
000258 e550000a LDRB r0,[r0,#-0xa]
00025c e59f1054 LDR r1,|L1.696|
000260 e5911000 LDR r1,[r1,#0] ; downloadAddress_u
000264 e59f2054 LDR r2,|L1.704|
000268 e5922000 LDR r2,[r2,#0] ; downloadFileSize
00026c e0811002 ADD r1,r1,r2
000270 e5511009 LDRB r1,[r1,#-9]
000274 e0800401 ADD r0,r0,r1,LSL #8
000278 e3c05b40 BIC r5,r0,#0x10000
;;;452 (*( (unsigned char *)(downloadAddress_u+downloadFileSize-8-1) )<<8);
;;;453
;;;454 download_end=1;
00027c e3a00001 MOV r0,#1
000280 e59f112c LDR r1,|L1.948|
000284 e5810000 STR r0,[r1,#0] ; download_end
;;;455 if(checkSum!=dnCS)
000288 e59f0024 LDR r0,|L1.692|
00028c e1d000b0 LDRH r0,[r0,#0] ; checkSum
000290 e1500005 CMP r0,r5
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -