📄 ms_bot.lst
字号:
450 ms_computeCSW(GOOD_STATUS,0);
\ 0000017A 0021 MOV R1,#+0
\ 0000017C 0020 MOV R0,#+0
\ 0000017E ........ BL ms_computeCSW
\ 00000182 57E0 B ??ms_idleRx_13
451 /*state set by read capacity*/
452 break;
453
454 case RBC_TEST_UNIT_READY:
455 /* Process the RBC TEST_UNIT_READY command */
456 TRACE_DEBUG_H( "TEST_UNIT\n\r");
457 /* media ready */
458 ms_send_bot_status(GOOD_STATUS,0);
459 usbms_context.state = PROCESS_CSW;
460 break;
461
462 case RBC_VERIFY:
463 /* Process the RBC VERIFY command */
464 TRACE_DEBUG_H( "VERIFY\n\r");
465 _status = rbc_verify_10();
466 if (USBMS_OK == _status)
\ ??ms_idleRx_11:
\ 00000184 ........ _BLF rbc_verify_10,??rbc_verify_10??rT
\ 00000188 F2E7 B ??ms_idleRx_18
467 {
468 /* Verify ok */
469 ms_send_bot_status(GOOD_STATUS,0);
470 usbms_context.state = PROCESS_CSW;
471 }
472 else
473 {
474 TRACE_DEBUG_H( "ERROR\n\r");
475 /* verify detected an error on the media */
476 ms_send_bot_status(COMMAND_FAILED,0);
477 usbms_context.state = PROCESS_CSW;
478 }
479 break;
480
481 case RBC_REQUEST_SENSE:
482 /* Process the RBC REQUEST_SENSE command */
483 TRACE_DEBUG_H( "REQ_SENSE\n\r");
484 _status = rbc_request_sense();
\ ??ms_idleRx_2:
\ 0000018A ........ _BLF rbc_request_sense,??rbc_request_sense??rT
\ 0000018E B9E7 B ??ms_idleRx_15
485 /* the internal remains unchanged */
486 ms_computeCSW(GOOD_STATUS,0);
487 usbms_context.state = USB_SEND_NO_FLASH;
488 break;
489
490 default:
491 TRACE_ERROR( "def uc%xh\n\r",_bot_cdb->generic_rbc.operation_code);
492 /* We don't know this command */
493 /* the Mass Storage device is not able to satisfy this request so it stalls the appropriate endpoint */
494 if( !(_cbw->bmCBWFlags&0x80)
495 && ((_cbw->dCBWDataTransferLength_3<<24)
496 |(_cbw->dCBWDataTransferLength_2<<16)
497 |(_cbw->dCBWDataTransferLength_1<<8)
498 |(_cbw->dCBWDataTransferLength_0) ) )
\ ??ms_idleRx_12:
\ 00000190 307B LDRB R0,[R6, #+12]
\ 00000192 3842 TST R0,R7
\ 00000194 0CD1 BNE ??ms_idleRx_19
\ 00000196 F07A LDRB R0,[R6, #+11]
\ 00000198 0006 LSL R0,R0,#+24
\ 0000019A B17A LDRB R1,[R6, #+10]
\ 0000019C 0904 LSL R1,R1,#+16
\ 0000019E 0143 ORR R1,R0
\ 000001A0 707A LDRB R0,[R6, #+9]
\ 000001A2 0002 LSL R0,R0,#+8
\ 000001A4 0843 ORR R0,R1
\ 000001A6 317A LDRB R1,[R6, #+8]
\ 000001A8 0143 ORR R1,R0
\ 000001AA 01D0 BEQ ??ms_idleRx_19
499 {
500 /* Data OUT : host to device */
501 /* Stall the endpoint OUT */
502 ms_stallPipe( FW_EP_BULK_OUT );
\ 000001AC 0220 MOV R0,#+2
\ 000001AE 00E0 B ??ms_idleRx_20
503 }
504 else
505 {
506 /* Data IN : device to host */
507 /* Stall the endpoint IN */
508 ms_stallPipe( FW_EP_BULK_IN );
\ ??ms_idleRx_19:
\ 000001B0 0120 MOV R0,#+1
\ ??ms_idleRx_20:
\ 000001B2 ........ BL ms_stallPipe
509 }
510 /* Update the state of the driver*/
511 ms_computeCSW(COMMAND_FAILED,
512 (_cbw->dCBWDataTransferLength_3<<24)
513 |(_cbw->dCBWDataTransferLength_2<<16)
514 |(_cbw->dCBWDataTransferLength_1<<8)
515 |(_cbw->dCBWDataTransferLength_0) );
\ 000001B6 F07A LDRB R0,[R6, #+11]
\ 000001B8 0006 LSL R0,R0,#+24
\ 000001BA B17A LDRB R1,[R6, #+10]
\ 000001BC 0904 LSL R1,R1,#+16
\ 000001BE 0143 ORR R1,R0
\ 000001C0 707A LDRB R0,[R6, #+9]
\ 000001C2 0002 LSL R0,R0,#+8
\ 000001C4 0843 ORR R0,R1
\ 000001C6 317A LDRB R1,[R6, #+8]
\ 000001C8 0143 ORR R1,R0
\ 000001CA 0120 MOV R0,#+1
\ 000001CC ........ BL ms_computeCSW
516
517 ms_update_sense_data( SENSE_KEY_ILLEGAL_REQUEST, ASC_INVALID_COMMAND_OPERATION_CODE, ASCQ_00 );
\ 000001D0 0022 MOV R2,#+0
\ 000001D2 2021 MOV R1,#+32
\ 000001D4 0520 MOV R0,#+5
\ 000001D6 ........ BL ms_update_sense_data
518 usbms_context.state = RESET_IN_PROGRESS;
\ 000001DA 0420 MOV R0,#+4
\ 000001DC 29E0 B ??ms_idleRx_16
519 }
520 }
521 else
522 {
523 TRACE_ERROR( "Error TB\n\r");
524 /* We don't know this command */
525 /* the Mass Storage device is not able to satisfy this request so it stalls the appropriate endpoint*/
526 if( !(_cbw->bmCBWFlags&0x80)
527 && ((_cbw->dCBWDataTransferLength_3<<24)
528 |(_cbw->dCBWDataTransferLength_2<<16)
529 |(_cbw->dCBWDataTransferLength_1<<8)
530 |(_cbw->dCBWDataTransferLength_0) ) )
\ ??ms_idleRx_0:
\ 000001DE 0C20 MOV R0,#+12
\ 000001E0 0078 LDRB R0,[R0, #+0]
\ 000001E2 3842 TST R0,R7
\ 000001E4 10D1 BNE ??ms_idleRx_21
\ 000001E6 0B20 MOV R0,#+11
\ 000001E8 0078 LDRB R0,[R0, #+0]
\ 000001EA 0006 LSL R0,R0,#+24
\ 000001EC 0A21 MOV R1,#+10
\ 000001EE 0978 LDRB R1,[R1, #+0]
\ 000001F0 0904 LSL R1,R1,#+16
\ 000001F2 0143 ORR R1,R0
\ 000001F4 0920 MOV R0,#+9
\ 000001F6 0078 LDRB R0,[R0, #+0]
\ 000001F8 0002 LSL R0,R0,#+8
\ 000001FA 0843 ORR R0,R1
\ 000001FC 0821 MOV R1,#+8
\ 000001FE 0978 LDRB R1,[R1, #+0]
\ 00000200 0143 ORR R1,R0
\ 00000202 01D0 BEQ ??ms_idleRx_21
531 {
532 /* Data OUT : host to device */
533 /* Stall the endpoint OUT */
534 ms_stallPipe( FW_EP_BULK_OUT );
\ 00000204 0220 MOV R0,#+2
\ 00000206 00E0 B ??ms_idleRx_22
535 }
536 else
537 {
538 /* Data IN : device to host */
539 /* Stall the endpoint IN */
540 ms_stallPipe( FW_EP_BULK_IN );
\ ??ms_idleRx_21:
\ 00000208 0120 MOV R0,#+1
\ ??ms_idleRx_22:
\ 0000020A ........ BL ms_stallPipe
541 }
542 /* Update the state of the driver */
543 ms_computeCSW(COMMAND_FAILED,
544 (_cbw->dCBWDataTransferLength_3<<24)
545 |(_cbw->dCBWDataTransferLength_2<<16)
546 |(_cbw->dCBWDataTransferLength_1<<8)
547 |(_cbw->dCBWDataTransferLength_0) );
\ 0000020E 0B20 MOV R0,#+11
\ 00000210 0078 LDRB R0,[R0, #+0]
\ 00000212 0006 LSL R0,R0,#+24
\ 00000214 0A21 MOV R1,#+10
\ 00000216 0978 LDRB R1,[R1, #+0]
\ 00000218 0904 LSL R1,R1,#+16
\ 0000021A 0143 ORR R1,R0
\ 0000021C 0920 MOV R0,#+9
\ 0000021E 0078 LDRB R0,[R0, #+0]
\ 00000220 0002 LSL R0,R0,#+8
\ 00000222 0843 ORR R0,R1
\ 00000224 0821 MOV R1,#+8
\ 00000226 0978 LDRB R1,[R1, #+0]
\ 00000228 0143 ORR R1,R0
\ 0000022A 0120 MOV R0,#+1
\ 0000022C ........ BL ms_computeCSW
548
549 usbms_context.state = RESET_IN_PROGRESS;
\ 00000230 0420 MOV R0,#+4
\ ??ms_idleRx_16:
\ 00000232 2070 STRB R0,[R4, #+0]
550 }
551 }
\ ??ms_idleRx_13:
\ 00000234 08B0 ADD SP,#+32
\ 00000236 C046 NOP
\ 00000238 REQUIRE ?Subroutine21
\ 00000238 ;; // Fall through to label ?Subroutine21
\ In segment CODE, align 4, keep-with-next
\ ?Subroutine21:
\ 00000000 F0BC POP {R4-R7}
\ 00000002 01BC POP {R0}
\ 00000004 0047 BX R0 ;; return
\ 00000006 C046 NOP
\ ??Subroutine21_0:
\ 00000008 ........ DC32 usbms_context + 176
552
553
554 /******************************************************************
555 *
556 * SUB-ROUTINE : ms_getRx
557 *
558 *------------------------------------------------------------------
559 *
560 * purpose : Recept of data from USB
561 *
562 * input parameters : none
563 *
564 * output parameters : none
565 *
566 * global data :
567 *
568 *******************************
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -