📄 fw_cmd.lst
字号:
269 {
270 // DIR = 1, IN
271 AT91F_UDP_EpSet( USBDEV_BASE_UDP, FW_EP_CTRL, AT91C_UDP_DIR );
\ ??fw_changedir_1:
\ 0000001A 2068 LDR R0,[R4, #+0]
\ 0000001C 8021 MOV R1,#+128
\ 0000001E 0143 ORR R1,R0
\ 00000020 2160 STR R1,[R4, #+0]
272 while ( !( AT91F_UDP_EpStatus( USBDEV_BASE_UDP, FW_EP_CTRL ) & AT91C_UDP_DIR ) );
\ ??fw_changedir_4:
\ 00000022 2068 LDR R0,[R4, #+0]
\ 00000024 0006 LSL R0,R0,#+24
\ 00000026 FCD5 BPL ??fw_changedir_4
273 }
274 }
\ ??fw_changedir_3:
\ 00000028 .... B ?Subroutine10
\ 0000002A C046 NOP
\ ??fw_changedir_0:
\ 0000002C 3000FBFF DC32 0xfffb0030
\ In segment CODE, align 4, keep-with-next
\ ?Subroutine10:
\ 00000000 10BC POP {R4}
\ 00000002 01BC POP {R0}
\ 00000004 0047 BX R0 ;; return
275
276
277 /*****************************************************************
278 *
279 * ROUTINE fw_resetEP
280 *
281 *-----------------------------------------------------------------
282 *
283 * Object : Disable Endpoint
284 *
285 *
286 * Input parameters :
287 *
288 * Output parameters :
289 *
290 * Global variables :
291 *****************************************************************/
292 #ifdef ADS_COMPIL
293 void fw_resetEP(EPx bEndp)
294 #else
\ In segment CODE_I, align 4, keep-with-next
295 void fw_resetEP(EPx bEndp)
296 #endif
297 {
\ fw_resetEP:
\ 00000000 00B5 PUSH {LR}
298 AT91F_UDP_EpClear( USBDEV_BASE_UDP, bEndp, AT91C_UDP_EPEDS );
^
Warning[Ta023]: Call to a non __ramfunc function (AT91F_UDP_EpClear) from
within a __ramfunc function
\ 00000002 8022 MOV R2,#+128
\ 00000004 1202 LSL R2,R2,#+8 ;; #+32768
\ 00000006 011C MOV R1,R0
\ 00000008 0248 LDR R0,??fw_resetEP_0 ;; 0xfffb0000
\ 0000000A ........ _BLF AT91F_UDP_EpClear,??AT91F_UDP_EpClear??rT?CODE_I
299 }
\ 0000000E 01BC POP {R0}
\ 00000010 0047 BX R0 ;; return
\ 00000012 C046 NOP
\ ??fw_resetEP_0:
\ 00000014 0000FBFF DC32 0xfffb0000
300
301
302 /*****************************************************************
303 *
304 * ROUTINE fw_activateEP
305 *
306 *-----------------------------------------------------------------
307 *
308 * Object : Activate Endpoint
309 *
310 *
311 * Input parameters :
312 *
313 * Output parameters :
314 *
315 * Global variables :
316 *****************************************************************/
\ In segment CODE, align 4, keep-with-next
317 void fw_activateEP(EPx bEndp)
318 {
319 switch(bEndp)
\ fw_activateEP:
\ 00000000 011C MOV R1,R0
\ 00000002 0128 CMP R0,#+1
\ 00000004 02D0 BEQ ??fw_activateEP_0
\ 00000006 0229 CMP R1,#+2
\ 00000008 05D0 BEQ ??fw_activateEP_1
\ 0000000A 0AE0 B ??fw_activateEP_2
320 {
321 case FW_EP_BULK_IN:
322 AT91F_UDP_EpSet( USBDEV_BASE_UDP, FW_EP_BULK_IN, AT91C_UDP_EPTYPE_BULK_IN );
\ ??fw_activateEP_0:
\ 0000000C 0A49 LDR R1,??fw_activateEP_3 ;; 0xfffb0034
\ 0000000E 0A68 LDR R2,[R1, #+0]
\ 00000010 C023 MOV R3,#+192
\ 00000012 DB00 LSL R3,R3,#+3 ;; #+1536
\ 00000014 03E0 B ??fw_activateEP_4
323 break;
324
325 case FW_EP_BULK_OUT:
326 AT91F_UDP_EpSet( USBDEV_BASE_UDP, FW_EP_BULK_OUT, AT91C_UDP_EPTYPE_BULK_OUT );
\ ??fw_activateEP_1:
\ 00000016 0949 LDR R1,??fw_activateEP_3+0x4 ;; 0xfffb0038
\ 00000018 0A68 LDR R2,[R1, #+0]
\ 0000001A 8023 MOV R3,#+128
\ 0000001C 9B00 LSL R3,R3,#+2 ;; #+512
\ ??fw_activateEP_4:
\ 0000001E 1343 ORR R3,R2
\ 00000020 0B60 STR R3,[R1, #+0]
327 break;
328
329 default:
330 TRACE_ERROR( "ER_1 \n\r");
331 }
332 AT91F_UDP_EpSet( USBDEV_BASE_UDP, bEndp, AT91C_UDP_EPEDS );
\ ??fw_activateEP_2:
\ 00000022 8000 LSL R0,R0,#+2
\ 00000024 .... LDR R1,??DataTable10 ;; 0xfffb0000
\ 00000026 0818 ADD R0,R1,R0
\ 00000028 016B LDR R1,[R0, #+48]
\ 0000002A 8022 MOV R2,#+128
\ 0000002C 1202 LSL R2,R2,#+8 ;; #+32768
\ 0000002E 0A43 ORR R2,R1
\ 00000030 0263 STR R2,[R0, #+48]
333 }
\ 00000032 00B0 ADD SP,#+0
\ 00000034 7047 BX LR ;; return
\ 00000036 C046 NOP
\ ??fw_activateEP_3:
\ 00000038 3400FBFF DC32 0xfffb0034
\ 0000003C 3800FBFF DC32 0xfffb0038
334
335
336 /*****************************************************************
337 *
338 * ROUTINE fw_IsSetupPacket
339 *
340 *-----------------------------------------------------------------
341 *
342 * Object : return 1 if SETUP PACKET is received
343 *
344 *
345 * Input parameters :
346 *
347 * Output parameters :
348 *
349 * Global variables :
350 *****************************************************************/
\ In segment CODE, align 4, keep-with-next
351 int fw_IsSetupPacket(EPx bEndp)
352 {
353 return( AT91F_UDP_EpStatus( USBDEV_BASE_UDP, bEndp ) & AT91C_UDP_RXSETUP ) ? 1 : 0;
\ fw_IsSetupPacket:
\ 00000000 8000 LSL R0,R0,#+2
\ 00000002 .... LDR R1,??DataTable10 ;; 0xfffb0000
\ 00000004 0818 ADD R0,R1,R0
\ 00000006 006B LDR R0,[R0, #+48]
\ 00000008 0106 LSL R1,R0,#+24
\ 0000000A 090E LSR R1,R1,#+24
\ 0000000C 8908 LSR R1,R1,#+2
\ 0000000E 0120 MOV R0,#+1
\ 00000010 0840 AND R0,R1
\ 00000012 7047 BX LR ;; return
354 }
355
356
357 /*****************************************************************
358 *
359 * ROUTINE fw_acknowledgeSetup
360 *
361 *-----------------------------------------------------------------
362 *
363 * Object :
364 *
365 *
366 * Input parameters :
367 *
368 * Output parameters :
369 *
370 * Global variables :
371 *****************************************************************/
\ In segment CODE, align 4, keep-with-next
372 void fw_acknowledgeSetup(EPx bEndp)
373 {
\ fw_acknowledgeSetup:
\ 00000000 10B5 PUSH {R4,LR}
\ 00000002 041C MOV R4,R0
374 AT91F_UDP_EpClear( USBDEV_BASE_UDP, bEndp, AT91C_UDP_RXSETUP );
\ 00000004 0422 MOV R2,#+4
\ 00000006 011C MOV R1,R0
\ 00000008 .... LDR R0,??DataTable10 ;; 0xfffb0000
\ 0000000A ........ _BLF AT91F_UDP_EpClear,??AT91F_UDP_EpClear??rT
\ 0000000E .... LDR R1,??DataTable10 ;; 0xfffb0000
375 while( ( AT91F_UDP_EpStatus( USBDEV_BASE_UDP, bEndp ) & AT91C_UDP_RXSETUP ) );
\ ??fw_acknowledgeSetup_0:
\ 00000010 A000 LSL R0,R4,#+2
\ 00000012 0818 ADD R0,R1,R0
\ 00000014 006B LDR R0,[R0, #+48]
\ 00000016 4007 LSL R0,R0,#+29
\ 00000018 FAD4 BMI ??fw_acknowledgeSetup_0
\ 0000001A C046 NOP
376 }
\ 0000001C REQUIRE ?Subroutine10
\ 0000001C ;; // Fall through to label ?Subroutine10
\ In segment CODE, align 4, keep-with-next
\ ??DataTable10:
\ 00000000 0000FBFF DC32 0xfffb0000
377
378
Maximum stack usage in bytes:
Function CSTACK
-------- ------
AT91F_UDP_EpClear 0
fw_IsSetupPacket 0
fw_acknowledgeSetup 8
fw_activateEP 4
fw_changedir 8
fw_readEndpoint 20
fw_readInterruptRegister 4
fw_resetEP 4
fw_setAddressEnable 0
fw_setEndpointStatus 12
fw_writeEndpoint 24
Segment part sizes:
Function/Label Bytes
-------------- -----
AT91F_UDP_EpClear 12
fw_setAddressEnable 40
fw_readInterruptRegister 36
fw_setEndpointStatus 52
fw_readEndpoint 128
fw_writeEndpoint 90
fw_changedir 48
?Subroutine10 6
fw_resetEP 24
fw_activateEP 64
fw_IsSetupPacket 20
fw_acknowledgeSetup 28
??DataTable10 4
Others 108
564 bytes in segment CODE
84 bytes in segment CODE_I
12 bytes in segment INITTAB
540 bytes of CODE memory (+ 120 bytes shared)
Errors: none
Warnings: 1
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -