📄 usbout.txt
字号:
000250 e2411648 SUB r1,r1,#0x4800000
000254 e5810018 STR r0,[r1,#0x18]
;;;166 ClearPending(BIT_DMA);
000258 e3a00940 MOV r0,#0x100000
00025c e1c11000 BIC r1,r1,r0
000260 e5810000 STR r0,[r1,#0]
000264 e1c10000 BIC r0,r1,r0
000268 e5900010 LDR r0,[r0,#0x10]
00026c e5810010 STR r0,[r1,#0x10]
000270 e1a00001 MOV r0,r1
000274 e5900010 LDR r0,[r0,#0x10]
;;;167
;;;168 totalDmaCount+=0x80000;
000278 e59f02a8 LDR r0,|L1.1320|
00027c e5900000 LDR r0,[r0,#0] ; totalDmaCount
000280 e2800a80 ADD r0,r0,#0x80000
000284 e59f129c LDR r1,|L1.1320|
000288 e5810000 STR r0,[r1,#0] ; totalDmaCount
;;;169
;;;170 if(totalDmaCount>=downloadFileSize)// is last?
00028c e59f0294 LDR r0,|L1.1320|
000290 e5900000 LDR r0,[r0,#0] ; totalDmaCount
000294 e51f10fc LDR r1,|L1.416|
000298 e5911000 LDR r1,[r1,#0] ; downloadFileSize
00029c e1500001 CMP r0,r1
0002a0 3a000013 BCC |L1.756|
;;;171 {
;;;172 totalDmaCount=downloadFileSize;
0002a4 e51f010c LDR r0,|L1.416|
0002a8 e5900000 LDR r0,[r0,#0] ; downloadFileSize
0002ac e59f1274 LDR r1,|L1.1320|
0002b0 e5810000 STR r0,[r1,#0] ; totalDmaCount
;;;173
;;;174 ConfigEp3IntMode();
0002b4 ebfffffe BL ConfigEp3IntMode
;;;175
;;;176 if(out_csr3& EPO_OUT_PKT_READY)
0002b8 e3150001 TST r5,#1
0002bc 0a000002 BEQ |L1.716|
;;;177 {
;;;178 CLR_EP3_OUT_PKT_READY();
0002c0 e3c500b1 BIC r0,r5,#0xb1
0002c4 e51f113c LDR r1,|L1.400|
0002c8 e5c10190 STRB r0,[r1,#0x190]
;;;179 }
;;;180 rINTMSK|=BIT_DMA;
|L1.716|
0002cc e59f0258 LDR r0,|L1.1324|
0002d0 e5900008 LDR r0,[r0,#8]
0002d4 e3800940 ORR r0,r0,#0x100000
0002d8 e59f124c LDR r1,|L1.1324|
0002dc e5810008 STR r0,[r1,#8]
;;;181 rINTMSK&=~(BIT_USBD);
0002e0 e1a00001 MOV r0,r1
0002e4 e5900008 LDR r0,[r0,#8]
0002e8 e3c00780 BIC r0,r0,#0x2000000
0002ec e5810008 STR r0,[r1,#8]
0002f0 ea00007e B |L1.1264|
;;;182 }
;;;183 else
;;;184 {
;;;185 if((totalDmaCount+0x80000)<downloadFileSize)
|L1.756|
0002f4 e59f022c LDR r0,|L1.1320|
0002f8 e5900000 LDR r0,[r0,#0] ; totalDmaCount
0002fc e2800a80 ADD r0,r0,#0x80000
000300 e51f1168 LDR r1,|L1.416|
000304 e5911000 LDR r1,[r1,#0] ; downloadFileSize
000308 e1500001 CMP r0,r1
00030c 2a000061 BCS |L1.1176|
;;;186 {
;;;187 nextTotalDmaCount=totalDmaCount+0x80000;
000310 e59f0210 LDR r0,|L1.1320|
000314 e5900000 LDR r0,[r0,#0] ; totalDmaCount
000318 e2804a80 ADD r4,r0,#0x80000
;;;188
;;;189 if((nextTotalDmaCount+0x80000)<downloadFileSize)
00031c e2840a80 ADD r0,r4,#0x80000
000320 e51f1188 LDR r1,|L1.416|
000324 e5911000 LDR r1,[r1,#0] ; downloadFileSize
000328 e1500001 CMP r0,r1
00032c 2a00002a BCS |L1.988|
;;;190 {
;;;191 //for (2~n)th autoreload.
;;;192 while((rDSTAT2&0xfffff)==0); //wait until autoreload occurs.
000330 e1a00000 NOP
|L1.820|
000334 e59f01f4 LDR r0,|L1.1328|
000338 e5900014 LDR r0,[r0,#0x14]
00033c e1a00600 MOV r0,r0,LSL #12
000340 e1b00620 MOVS r0,r0,LSR #12
000344 0afffffa BEQ |L1.820|
;;;193 rDIDST2=((U32)downloadAddress_u+nextTotalDmaCount-8);
000348 e51f01a4 LDR r0,|L1.428|
00034c e5900000 LDR r0,[r0,#0] ; downloadAddress_u
000350 e0800004 ADD r0,r0,r4
000354 e2400008 SUB r0,r0,#8
000358 e59f11d0 LDR r1,|L1.1328|
00035c e5810008 STR r0,[r1,#8]
;;;194 rDIDSTC2=(0<<1)|(0<<0);
000360 e3a00000 MOV r0,#0
000364 e1c11000 BIC r1,r1,r0
000368 e581000c STR r0,[r1,#0xc]
;;;195 rDCON2=rDCON2&~(0xfffff)|(0x80000);
00036c e1c10000 BIC r0,r1,r0
000370 e5900010 LDR r0,[r0,#0x10]
000374 e1a00a20 MOV r0,r0,LSR #20
000378 e1a00a00 MOV r0,r0,LSL #20
00037c e3800a80 ORR r0,r0,#0x80000
000380 e5810010 STR r0,[r1,#0x10]
;;;196
;;;197 while(rEP3_DMA_TTC<0xfffff)
000384 e1a00000 NOP
|L1.904|
000388 e51f0200 LDR r0,|L1.400|
00038c e5d0024c LDRB r0,[r0,#0x24c]
000390 e51f1208 LDR r1,|L1.400|
000394 e5d11250 LDRB r1,[r1,#0x250]
000398 e0800401 ADD r0,r0,r1,LSL #8
00039c e51f1214 LDR r1,|L1.400|
0003a0 e5d11254 LDRB r1,[r1,#0x254]
0003a4 e0800801 ADD r0,r0,r1,LSL #16
0003a8 e59f1184 LDR r1,|L1.1332|
0003ac e1500001 CMP r0,r1
0003b0 2a00004e BCS |L1.1264|
;;;198 {
;;;199 rEP3_DMA_TTC_L=0xff;
0003b4 e3a000ff MOV r0,#0xff
0003b8 e51f1230 LDR r1,|L1.400|
0003bc e5c1024c STRB r0,[r1,#0x24c]
;;;200 rEP3_DMA_TTC_M=0xff;
0003c0 e3a000ff MOV r0,#0xff
0003c4 e1c11000 BIC r1,r1,r0
0003c8 e5c10250 STRB r0,[r1,#0x250]
;;;201 rEP3_DMA_TTC_H=0xf;
0003cc e3a0000f MOV r0,#0xf
0003d0 e1c11000 BIC r1,r1,r0
0003d4 e5c10254 STRB r0,[r1,#0x254]
;;;202 //0xfffff;
;;;203 }
0003d8 eaffffea B |L1.904|
;;;204 }
;;;205 else
;;;206 {
;;;207 while((rDSTAT2&0xfffff)==0); //wait until autoreload occurs.
|L1.988|
0003dc e1a00000 NOP
|L1.992|
0003e0 e59f0148 LDR r0,|L1.1328|
0003e4 e5900014 LDR r0,[r0,#0x14]
0003e8 e1a00600 MOV r0,r0,LSL #12
0003ec e1b00620 MOVS r0,r0,LSR #12
0003f0 0afffffa BEQ |L1.992|
;;;208 rDIDST2=((U32)downloadAddress_u+nextTotalDmaCount-8);
0003f4 e51f0250 LDR r0,|L1.428|
0003f8 e5900000 LDR r0,[r0,#0] ; downloadAddress_u
0003fc e0800004 ADD r0,r0,r4
000400 e2400008 SUB r0,r0,#8
000404 e59f1124 LDR r1,|L1.1328|
000408 e5810008 STR r0,[r1,#8]
;;;209 rDIDSTC2=(0<<1)|(0<<0);
00040c e3a00000 MOV r0,#0
000410 e1c11000 BIC r1,r1,r0
000414 e581000c STR r0,[r1,#0xc]
;;;210 rDCON2=rDCON2&~(0xfffff)|(downloadFileSize-nextTotalDmaCount);
000418 e1c10000 BIC r0,r1,r0
00041c e5900010 LDR r0,[r0,#0x10]
000420 e1a00a20 MOV r0,r0,LSR #20
000424 e1a00a00 MOV r0,r0,LSL #20
000428 e51f1290 LDR r1,|L1.416|
00042c e5911000 LDR r1,[r1,#0] ; downloadFileSize
000430 e0411004 SUB r1,r1,r4
000434 e1800001 ORR r0,r0,r1
000438 e59f10f0 LDR r1,|L1.1328|
00043c e5810010 STR r0,[r1,#0x10]
;;;211 while(rEP3_DMA_TTC<0xfffff)
000440 e1a00000 NOP
|L1.1092|
000444 e51f02bc LDR r0,|L1.400|
000448 e5d0024c LDRB r0,[r0,#0x24c]
00044c e51f12c4 LDR r1,|L1.400|
000450 e5d11250 LDRB r1,[r1,#0x250]
000454 e0800401 ADD r0,r0,r1,LSL #8
000458 e51f12d0 LDR r1,|L1.400|
00045c e5d11254 LDRB r1,[r1,#0x254]
000460 e0800801 ADD r0,r0,r1,LSL #16
000464 e59f10c8 LDR r1,|L1.1332|
000468 e1500001 CMP r0,r1
00046c 2a00001f BCS |L1.1264|
;;;212 {
;;;213 rEP3_DMA_TTC_L=0xff;
000470 e3a000ff MOV r0,#0xff
000474 e51f12ec LDR r1,|L1.400|
000478 e5c1024c STRB r0,[r1,#0x24c]
;;;214 rEP3_DMA_TTC_M=0xff;
00047c e3a000ff MOV r0,#0xff
000480 e1c11000 BIC r1,r1,r0
000484 e5c10250 STRB r0,[r1,#0x250]
;;;215 rEP3_DMA_TTC_H=0xf;
000488 e3a0000f MOV r0,#0xf
00048c e1c11000 BIC r1,r1,r0
000490 e5c10254 STRB r0,[r1,#0x254]
;;;216 //0xfffff;
;;;217 }
000494 eaffffea B |L1.1092|
;;;218 }
;;;219 }
;;;220 else
;;;221 {
;;;222 while((rDSTAT2&0xfffff)==0); //wait until autoreload occurs.
|L1.1176|
000498 e1a00000 NOP
|L1.1180|
00049c e59f008c LDR r0,|L1.1328|
0004a0 e5900014 LDR r0,[r0,#0x14]
0004a4 e1a00600 MOV r0,r0,LSL #12
0004a8 e1b00620 MOVS r0,r0,LSR #12
0004ac 0afffffa BEQ |L1.1180|
;;;223 rDIDST2=((U32)downloadAddress_u+downloadFileSize-8); //for next autoreload.
0004b0 e51f030c LDR r0,|L1.428|
0004b4 e5900000 LDR r0,[r0,#0] ; downloadAddress_u
0004b8 e51f1320 LDR r1,|L1.416|
0004bc e5911000 LDR r1,[r1,#0] ; downloadFileSize
0004c0 e0800001 ADD r0,r0,r1
0004c4 e2400008 SUB r0,r0,#8
0004c8 e59f1060 LDR r1,|L1.1328|
0004cc e5810008 STR r0,[r1,#8]
;;;224 rDIDSTC2=(0<<1)|(0<<0);
0004d0 e3a00000 MOV r0,#0
0004d4 e1c11000 BIC r1,r1,r0
0004d8 e581000c STR r0,[r1,#0xc]
;;;225 rDCON2=rDCON2&~(0xfffff)|(0);
0004dc e1c10000 BIC r0,r1,r0
0004e0 e5900010 LDR r0,[r0,#0x10]
0004e4 e1a00a20 MOV r0,r0,LSR #20
0004e8 e1a00a00 MOV r0,r0,LSL #20
0004ec e5810010 STR r0,[r1,#0x10]
;;;226 //There is no 2nd autoreload. This will not be used.
;;;227 //rDMA_TX+=0x0; //USBD register
;;;228 }
;;;229 }
;;;230 rINDEX_REG=saveIndexReg;
|L1.1264|
0004f0 e51f0368 LDR r0,|L1.400|
0004f4 e5c06178 STRB r6,[r0,#0x178]
;;;231 }
0004f8 e28dd004 ADD sp,sp,#4
0004fc e8bd507f LDMFD sp!,{r0-r6,r12,lr}
000500 e25ef004 SUBS pc,lr,#4
ENDP
ClearEp3OutPktReady PROC
;;;234 void ClearEp3OutPktReady(void)
;;;235 {
000504 e3a01003 MOV r1,#3
;;;236 U8 out_csr3;
;;;237 rINDEX_REG=3;
000508 e51f2380 LDR r2,|L1.400|
00050c e5c21178 STRB r1,[r2,#0x178]
;;;238 out_csr3=rOUT_CSR1_REG;
000510 e1c21001 BIC r1,r2,r1
000514 e5d11190 LDRB r1,[r1,#0x190]
000518 e1a00001 MOV r0,r1
;;;239 CLR_EP3_OUT_PKT_READY();
00051c e3c010b1 BIC r1,r0,#0xb1
000520 e5c21190 STRB r1,[r2,#0x190]
;;;240 }
000524 e12fff1e BX lr
|L1.1320|
000528 00000000 DCD totalDmaCount
|L1.1324|
00052c 40200000 DCD 0x40200000
|L1.1328|
000530 40600000 DCD 0x40600000
|L1.1332|
000534 000fffff DCD 0x000fffff
ENDP
AREA ||.bss||, NOINIT, ALIGN=0
ep3Buf
||.bss$2||
% 64
tempBuf
% 65
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -