📄 fw_task.lst
字号:
409 #endif
410
411 }
412
413 /*******************************/
414 /* (UDP) USB Suspend Interrupt */
415 /*******************************/
416 if(_IT_reg_b1 & AT91C_UDP_RXSUSP)
417 {
418 USB_EVENT |= USB_EVENT_MASK_SUSPEND;
\ 00000196 394F LDR R7,??fw_isr_0+0x30 ;; USB_EVENT
\ 00000198 BC46 MOV R12,R7
\ 0000019A 384B LDR R3,??fw_isr_0+0x30 ;; USB_EVENT
\ 0000019C 1F78 LDRB R7,[R3, #+0]
\ 0000019E 0123 MOV R3,#+1
\ 000001A0 3B43 ORR R3,R7
\ 000001A2 6746 MOV R7,R12
\ 000001A4 3B70 STRB R3,[R7, #+0]
419
420 AT91F_UDP_DisableIt( USBDEV_BASE_UDP, DISABLE_ALL_IT );
\ 000001A6 2F4B LDR R3,??fw_isr_0+0x18 ;; 0xfffb0014
\ 000001A8 2F4F LDR R7,??fw_isr_0+0x1C ;; 0x2f0f
\ 000001AA 1F60 STR R7,[R3, #+0]
421 AT91F_UDP_InterruptClearRegister( USBDEV_BASE_UDP, CLEAR_ALL_IT );
\ 000001AC 2F4B LDR R3,??fw_isr_0+0x20 ;; 0xfffb0020
\ 000001AE FC27 MOV R7,#+252
\ 000001B0 BF01 LSL R7,R7,#+6 ;; #+16128
\ 000001B2 1F60 STR R7,[R3, #+0]
422 AT91F_UDP_EnableIt( USBDEV_BASE_UDP, AT91C_UDP_RXRSM );
\ 000001B4 2E4B LDR R3,??fw_isr_0+0x24 ;; 0xfffb0010
\ 000001B6 AF01 LSL R7,R5,#+6
\ 000001B8 1F60 STR R7,[R3, #+0]
423
424 #ifdef USE_LED
425 countLed = 0;
\ 000001BA 254B LDR R3,??fw_isr_0+0x4 ;; countLed
\ 000001BC 0027 MOV R7,#+0
\ 000001BE 1F70 STRB R7,[R3, #+0]
426 AT91F_LED_off(0);
\ 000001C0 2D4B LDR R3,??fw_isr_0+0x2C ;; 0xfffcc210
\ 000001C2 1F60 STR R7,[R3, #+0]
427 AT91F_LED_off(1);
\ 000001C4 234B LDR R3,??fw_isr_0+0x8 ;; 0xfffcc230
\ 000001C6 1F60 STR R7,[R3, #+0]
428 #endif
429
430 #ifndef AT91SAM9265
431 /*************************************************************/
432 /* from AT91C_MASTER_CLOCK=48MHz to AT91C_MASTER_CLOCK=32kHz */
433 /*************************************************************/
434 // AT91C_MASTER_CLOCK = SLCK/2 : change source first from 48 000 000 to 18. / 2 = 9M
435 AT91F_PMC_CfgMCKReg( AT91C_BASE_PMC, AT91C_PMC_PRES_CLK_2 );
\ 000001C8 0423 MOV R3,#+4
\ 000001CA 0360 STR R3,[R0, #+0]
436 while( !( AT91F_PMC_GetStatus( AT91C_BASE_PMC ) & AT91C_PMC_MCKRDY ) );
\ ??fw_isr_14:
\ 000001CC 1368 LDR R3,[R2, #+0]
\ 000001CE 2B42 TST R3,R5
\ 000001D0 FCD0 BEQ ??fw_isr_14
437
438 // AT91C_MASTER_CLOCK=SLCK : then change prescaler
439 AT91F_PMC_CfgMCKReg( AT91C_BASE_PMC, AT91C_PMC_CSS_SLOW_CLK );
\ 000001D2 0023 MOV R3,#+0
\ 000001D4 0760 STR R7,[R0, #+0]
440 while( !( AT91F_PMC_GetStatus( AT91C_BASE_PMC ) & AT91C_PMC_MCKRDY ) );
\ ??fw_isr_15:
\ 000001D6 1068 LDR R0,[R2, #+0]
\ 000001D8 2842 TST R0,R5
\ 000001DA FCD0 BEQ ??fw_isr_15
441
442 // disable PLL
443 AT91F_CKGR_CfgPLLReg( AT91C_BASE_CKGR, 0 );
\ 000001DC 0B60 STR R3,[R1, #+0]
444
445 // disable Main Oscillator
446 pPMC->PMC_MOR=0;
\ 000001DE 3648 LDR R0,??fw_isr_0+0x6C ;; 0xfffffc20
\ 000001E0 0360 STR R3,[R0, #+0]
447
448 #if defined (AT91SAM9265) || defined (AT91SAM7A3)
449 #else
450 // Voltage regulator in standby mode : Enable VREG Low Power Mode
451 AT91F_VREG_Enable_LowPowerMode( AT91C_BASE_VREG );
\ 000001E2 3448 LDR R0,??fw_isr_0+0x68 ;; 0xfffffd60
\ 000001E4 0168 LDR R1,[R0, #+0]
\ 000001E6 0122 MOV R2,#+1
\ 000001E8 0A43 ORR R2,R1
\ 000001EA 0260 STR R2,[R0, #+0]
452 #endif
453
454 #ifdef USE_LED
455 AT91F_PMC_DisablePeriphClock( AT91C_BASE_PMC, (1 << AT91C_ID_PWMC));
\ 000001EC 3548 LDR R0,??fw_isr_0+0x78 ;; 0xfffffc14
\ 000001EE E901 LSL R1,R5,#+7
\ 000001F0 0160 STR R1,[R0, #+0]
456 #endif
457
458 AT91F_UDP_DisableTransceiver(USBDEV_BASE_UDP);
\ 000001F2 2E48 LDR R0,??fw_isr_0+0x60 ;; 0xfffb0074
\ 000001F4 8908 LSR R1,R1,#+2
\ 000001F6 0160 STR R1,[R0, #+0]
459
460 AT91F_PMC_CfgSysClkDisableReg( AT91C_BASE_PMC, AT91C_PMC_UDP );
\ 000001F8 3348 LDR R0,??fw_isr_0+0x7C ;; 0xfffffc04
\ 000001FA 8021 MOV R1,#+128
\ 000001FC 0160 STR R1,[R0, #+0]
461 // AT91F_PMC_CfgSysClkDisableReg( AT91C_BASE_PMC, 1 ); stop
462 #endif
463
464 }
465 }
466
467
468 if(!(fw_deviceState & FW_DS_TX))
\ ??fw_isr_2:
\ 000001FE 2078 LDRB R0,[R4, #+0]
\ 00000200 8007 LSL R0,R0,#+30
\ 00000202 0AD4 BMI ??fw_isr_16
469 {
470 if(fw_fifoId.NbOctetsLibres != FW_FIFO_SIZE)
\ 00000204 3148 LDR R0,??fw_isr_0+0x80 ;; fw_fifoId + 16
\ 00000206 0068 LDR R0,[R0, #+0]
\ 00000208 A901 LSL R1,R5,#+6
\ 0000020A 8842 CMP R0,R1
\ 0000020C 05D0 BEQ ??fw_isr_16
471 {
472 /* a transfer will begin */
473 fw_deviceState |= FW_DS_TX;
\ 0000020E 2078 LDRB R0,[R4, #+0]
\ 00000210 0221 MOV R1,#+2
\ 00000212 0143 ORR R1,R0
\ 00000214 2170 STRB R1,[R4, #+0]
474
475 /* if we are not transmitting and there is something to send, signal the task */
476 fw_mainTxDone();
^
Warning[Ta023]: Call to a non __ramfunc function (fw_mainTxDone) from within a
__ramfunc function
\ 00000216 ........ _BLF fw_mainTxDone,??fw_mainTxDone??rT?CODE_I
477 }
478 }
479
480 if((fw_deviceState & FW_DS_RX) && !(fw_deviceState & FW_DS_TB_FULL))
\ ??fw_isr_16:
\ 0000021A 2078 LDRB R0,[R4, #+0]
\ 0000021C 2842 TST R0,R5
\ 0000021E 08D0 BEQ ??fw_isr_17
\ 00000220 2078 LDRB R0,[R4, #+0]
\ 00000222 C006 LSL R0,R0,#+27
\ 00000224 05D4 BMI ??fw_isr_17
481 {
482 fw_deviceState &= ~FW_DS_RX;
\ 00000226 2078 LDRB R0,[R4, #+0]
\ 00000228 F721 MOV R1,#+247
\ 0000022A 0140 AND R1,R0
\ 0000022C 2170 STRB R1,[R4, #+0]
483 /* if something is in the endpoint buffers and at least one TB is free */
484 fw_mainRxDone();
^
Warning[Ta023]: Call to a non __ramfunc function (fw_mainRxDone) from within a
__ramfunc function
\ 0000022E ........ _BLF fw_mainRxDone,??fw_mainRxDone??rT?CODE_I
485 }
486
487 /* clear interrupt */
488 AT91F_UDP_InterruptClearRegister( USBDEV_BASE_UDP, _IT_reg_b1 & CLEAR_ALL_IT );
\ ??fw_isr_17:
\ 00000232 0E48 LDR R0,??fw_isr_0+0x20 ;; 0xfffb0020
\ 00000234 FC21 MOV R1,#+252
\ 00000236 8901 LSL R1,R1,#+6 ;; #+16128
\ 00000238 3140 AND R1,R6
\ 0000023A 0160 STR R1,[R0, #+0]
489 fw_deviceState &= ~FW_DS_INISR;
\ 0000023C 2078 LDRB R0,[R4, #+0]
\ 0000023E DF21 MOV R1,#+223
\ 00000240 0140 AND R1,R0
\ 00000242 2170 STRB R1,[R4, #+0]
490
491 }
\ 00000244 F0BC POP {R4-R7}
\ 00000246 01BC POP {R0}
\ 00000248 0047 BX R0 ;; return
\ 0000024A C046 NOP
\ ??fw_isr_0:
\ 0000024C ........ DC32 fw_deviceState
\ 00000250 ........ DC32 countLed
\ 00000254 30C2FCFF DC32 0xfffcc230
\ 00000258 28C2FCFF DC32 0xfffcc228
\ 0000025C ........ DC32 fw_IsrCount
\ 00000260 3000FBFF DC32 0xfffb0030
\ 00000264 1400FBFF DC32 0xfffb0014
\ 00000268 0F2F0000 DC32 0x2f0f
\ 0000026C 2000FBFF DC32 0xfffb0020
\ 00000270 1000FBFF DC32 0xfffb0010
\ 00000274 010F0000 DC32 0xf01
\ 00000278 10C2FCFF DC32 0xfffcc210
\ 0000027C ........ DC32 USB_EVENT
\ 00000280 2800FBFF DC32 0xfffb0028
\ 00000284 FFFF0000 DC32 0xffff
\ 00000288 3400FBFF DC32 0xfffb0034
\ 0000028C 3800FBFF DC32 0xfffb0038
\ 00000290 ........ DC32 fw_AskValidateAddress
\ 00000294 30FCFFFF DC32 0xfffffc30
\ 00000298 2CFCFFFF DC32 0xfffffc2c
\ 0000029C 68FCFFFF DC32 0xfffffc68
\ 000002A0 072F0000 DC32 0x2f07
\ 000002A4 10FCFFFF DC32 0xfffffc10
\ 000002A8 00FCFFFF DC32 0xfffffc00
\ 000002AC 7400FBFF DC32 0xfffb0074
\ 000002B0 FFFEFFFF DC32 0xfffffeff
\ 000002B4 60FDFFFF DC32 0xfffffd60
\ 000002B8 20FCFFFF DC32 0xfffffc20
\ 000002BC 01060000 DC32 0x601
\ 000002C0 0E1C4810 DC32 0x10481c0e
\ 000002C4 14FCFFFF DC32 0xfffffc14
\ 000002C8 04FCFFFF DC32 0xfffffc04
\ 000002CC ........ DC32 fw_fifoId + 16
\ In segment CODE_I, align 4, keep-with-next
\ ??DataTable0:
\ 00000000 ........ DC32 USB_EVENT
492
493
494
495
Maximum stack usage in bytes:
Function CSTACK
-------- ------
fw_init 0
fw_isr 20
usb_task 8
Segment part sizes:
Function/Label Bytes
-------------- -----
fw_init 92
usb_task 72
fw_isr 720
??DataTable0 4
Others 132
100 bytes in segment CODE
908 bytes in segment CODE_I
12 bytes in segment INITTAB
888 bytes of CODE memory (+ 132 bytes shared)
Errors: none
Warnings: 9
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -