⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ms_bot.lst

📁 at91sam7x256 FREERTOS sd卡的读写程序
💻 LST
📖 第 1 页 / 共 5 页
字号:
   \                     ??ms_send_bot_status_0:
   \   00000014   ........           DC32        usbms_context + 172
    116          
    117          
    118          /******************************************************************
    119          *
    120          * SUB-ROUTINE : ms_plugInit
    121          *
    122          *------------------------------------------------------------------
    123          *
    124          * purpose : Init the data structure specific to the Mass Storage driver
    125          *
    126          * input parameters  : none
    127          *
    128          * output parameters : none
    129          *
    130          * global data :
    131          *      usbms_context
    132          *      usbms_request_sense_data
    133          *
    134          ******************************************************************/

   \                                 In segment CODE, align 4, keep-with-next
    135          void ms_plugInit( void )
    136          {
   \                     ms_plugInit:
   \   00000000   30B5               PUSH        {R4,R5,LR}
    137            UCHAR _counter = 0;
    138          
    139            usbms_context.usb_lun[usbms_context.current_lun].TotBlockNumber = (ULONG)NB_BLOCK;
   \   00000002   ....               LDR         R4,??DataTable1    ;; usbms_context
   \   00000004   201C               MOV         R0,R4
   \   00000006   B930               ADD         R0,#+185
   \   00000008   0178               LDRB        R1,[R0, #+0]
   \   0000000A   3822               MOV         R2,#+56
   \   0000000C   5143               MUL         R1,R2
   \   0000000E   6118               ADD         R1,R4,R1
   \   00000010   314A               LDR         R2,??ms_plugInit_0  ;; 0x1e8480
   \   00000012   4A60               STR         R2,[R1, #+4]
    140            usbms_context.usb_lun[usbms_context.current_lun].BlockSize      = SIZEONESECTOR;
   \   00000014   0178               LDRB        R1,[R0, #+0]
   \   00000016   3822               MOV         R2,#+56
   \   00000018   5143               MUL         R1,R2
   \   0000001A   8022               MOV         R2,#+128
   \   0000001C   9200               LSL         R2,R2,#+2          ;; #+512
   \   0000001E   6250               STR         R2,[R4, R1]
    141            usbms_context.usb_lun[usbms_context.current_lun].fail_reason    = 0;
   \   00000020   0021               MOV         R1,#+0
   \   00000022   0278               LDRB        R2,[R0, #+0]
   \   00000024   3823               MOV         R3,#+56
   \   00000026   5A43               MUL         R2,R3
   \   00000028   A218               ADD         R2,R4,R2
   \   0000002A   1181               STRH        R1,[R2, #+8]
    142            usbms_context.usb_lun[usbms_context.current_lun].media_state    = 0;
   \   0000002C   0278               LDRB        R2,[R0, #+0]
   \   0000002E   5A43               MUL         R2,R3
   \   00000030   A218               ADD         R2,R4,R2
   \   00000032   5181               STRH        R1,[R2, #+10]
    143            usbms_context.usb_lun[usbms_context.current_lun].fail_request   = 0;
   \   00000034   0278               LDRB        R2,[R0, #+0]
   \   00000036   5A43               MUL         R2,R3
   \   00000038   A218               ADD         R2,R4,R2
   \   0000003A   0023               MOV         R3,#+0
   \   0000003C   1173               STRB        R1,[R2, #+12]
    144          
    145            for( _counter=0; _counter<MAX_LUN_NUM; _counter++ )
    146            {
    147              usbms_context.usb_lun[_counter].media_state = 0;
   \   0000003E   6181               STRH        R1,[R4, #+10]
    148            }
    149          
    150            usbms_context.state = IDLE;
   \   00000040   8176               STRB        R1,[R0, #+26]
    151          
    152            /* Initialize the sense data */
    153            usbms_request_sense_data.response_code     = 0x70;  /* response code : set to 0x70  */
    154            usbms_request_sense_data.valid             = 0x01;  /* set to one; specifies the infirmation fields contains valid informations as defined in the scp3 standard or a command set standard*/
   \   00000042   ....               LDR         R0,??DataTable5    ;; usbms_request_sense_data
   \   00000044   F021               MOV         R1,#+240
   \   00000046   0170               STRB        R1,[R0, #+0]
    155            usbms_request_sense_data.segmentNum        = 0x00;  /* */
   \   00000048   4370               STRB        R3,[R0, #+1]
    156            usbms_request_sense_data.sense_key         = 0x00;  /* generic error specified in enum T_SENSE_KEY  */
    157            usbms_request_sense_data.wrongLenIndicator = 0x00;  /* */
    158            usbms_request_sense_data.endOfMedia        = 0x00;  /* */
    159            usbms_request_sense_data.filemark          = 0x00;  /* */
   \   0000004A   8178               LDRB        R1,[R0, #+2]
   \   0000004C   1022               MOV         R2,#+16
   \   0000004E   0A40               AND         R2,R1
   \   00000050   8270               STRB        R2,[R0, #+2]
    160            usbms_request_sense_data.information_0     = 0x00;  /* */
   \   00000052   C370               STRB        R3,[R0, #+3]
    161            usbms_request_sense_data.information_1     = 0x00;  /* */
   \   00000054   8380               STRH        R3,[R0, #+4]
    162            usbms_request_sense_data.information_2     = 0x00;  /* */
    163            usbms_request_sense_data.information_3     = 0x00;  /* */
   \   00000056   8371               STRB        R3,[R0, #+6]
    164            usbms_request_sense_data.additional_sense_length  = sizeof(USBMS_REQUEST_SENSE_DATA)-8;         /* Must be set to sizeof(T_REQUEST_SENSE_DATA)-8  */
   \   00000058   0A21               MOV         R1,#+10
   \   0000005A   C171               STRB        R1,[R0, #+7]
    165            usbms_request_sense_data.command_specific_information_0  = 0x00;  /* */
   \   0000005C   8360               STR         R3,[R0, #+8]
    166            usbms_request_sense_data.command_specific_information_1  = 0x00;  /* */
    167            usbms_request_sense_data.command_specific_information_2  = 0x00;  /* */
    168            usbms_request_sense_data.command_specific_information_3  = 0x00;  /* */
    169            usbms_request_sense_data.additional_sense_code           = 0x00;  /* ASC  */
   \   0000005E   C360               STR         R3,[R0, #+12]
    170            usbms_request_sense_data.additional_sense_code_qualifier = 0x00;  /* ASCQ */
    171            usbms_request_sense_data.field_replaceable_unit_code     = 0x00;  /* */
    172            usbms_request_sense_data.sense_key_specific_0            = 0x00;  /* */
    173            usbms_request_sense_data.sksv                            = 0x00;  /* sense key specific valid; set to one  */
    174            usbms_request_sense_data.sense_key_specific_1            = 0x00;  /* for an accurate definition of the content  */
   \   00000060   0382               STRH        R3,[R0, #+16]
    175            usbms_request_sense_data.sense_key_specific_2            = 0x00;  /* of this fields please refer to spc3r17, chapter 4.5.2.4  */
    176          
    177            /* Standart INQUIRY data */
    178            /* Fill the inquiry structure */
    179            usbms_context.inquiry_data.device_type = 0x00; /* SBC Direct-access device (e.g., UHD Floppy disk) */
   \   00000062   201C               MOV         R0,R4
   \   00000064   3830               ADD         R0,#+56
   \   00000066   0178               LDRB        R1,[R0, #+0]
   \   00000068   E022               MOV         R2,#+224
   \   0000006A   0A40               AND         R2,R1
   \   0000006C   0270               STRB        R2,[R0, #+0]
    180            usbms_context.inquiry_data.version     = 0x05; /* */
   \   0000006E   0521               MOV         R1,#+5
   \   00000070   8170               STRB        R1,[R0, #+2]
    181            usbms_context.inquiry_data.removable   = 0x01; /* We pretend that the Device is Removable, in order to get the "TEST_UNIT_READY" */
   \   00000072   4178               LDRB        R1,[R0, #+1]
   \   00000074   8022               MOV         R2,#+128
   \   00000076   0A43               ORR         R2,R1
   \   00000078   4270               STRB        R2,[R0, #+1]
    182            usbms_context.inquiry_data.NACA        = 0x00;
    183            usbms_context.inquiry_data.AERC        = 0x00;
   \   0000007A   C178               LDRB        R1,[R0, #+3]
   \   0000007C   5F22               MOV         R2,#+95
   \   0000007E   0A40               AND         R2,R1
   \   00000080   C270               STRB        R2,[R0, #+3]
    184            usbms_context.inquiry_data.Linked      = 0x00;
    185            usbms_context.inquiry_data.Synch       = 0x00;
    186            usbms_context.inquiry_data.Wide16      = 0x00;
   \   00000082   C179               LDRB        R1,[R0, #+7]
   \   00000084   C722               MOV         R2,#+199
   \   00000086   0A40               AND         R2,R1
   \   00000088   C271               STRB        R2,[R0, #+7]
    187          
    188            po_memcpy( usbms_context.inquiry_data.vendor_id,  VENDOR_ID, VENDOR_ID_LENGTH);
   \   0000008A   144D               LDR         R5,??ms_plugInit_0+0x4  ;; `?<Constant "ATMEL   ">`
   \   0000008C   0822               MOV         R2,#+8
   \   0000008E   291C               MOV         R1,R5
   \   00000090   201C               MOV         R0,R4
   \   00000092   4030               ADD         R0,#+64
   \   00000094   ........           _BLF        po_memcpy,??po_memcpy??rT
    189            po_memcpy( usbms_context.inquiry_data.product_id, PRODUCT_ID, PRODUCT_ID_LENGTH);
   \   00000098   1022               MOV         R2,#+16
   \   0000009A   291C               MOV         R1,R5
   \   0000009C   0C31               ADD         R1,#+12
   \   0000009E   201C               MOV         R0,R4
   \   000000A0   4830               ADD         R0,#+72
   \   000000A2   ........           _BLF        po_memcpy,??po_memcpy??rT
    190            po_memcpy( usbms_context.inquiry_data.product_revision_level, PRODUCT_REVISION_LEVEL, PRODUCT_REVISION_LEVEL_LENGTH);
   \   000000A6   0422               MOV         R2,#+4
   \   000000A8   291C               MOV         R1,R5
   \   000000AA   2031               ADD         R1,#+32
   \   000000AC   201C               MOV         R0,R4
   \   000000AE   5830               ADD         R0,#+88
   \   000000B0   ........           _BLF        po_memcpy,??po_memcpy??rT
    191            po_memcpy( usbms_context.inquiry_data.vendor_specific, VENDOR_SPECIFIC, VENDOR_SPECIFIC_LENGTH);
   \   000000B4   1422               MOV         R2,#+20
   \   000000B6   291C               MOV         R1,R5
   \   000000B8   2831               ADD         R1,#+40
   \   000000BA   201C               MOV         R0,R4
   \   000000BC   5C30               ADD         R0,#+92
   \   000000BE   ........           _BLF        po_memcpy,??po_memcpy??rT
    192            po_memcpy( usbms_context.inquiry_data.version_descriptor, VERSION_DESCRIPTOR, VERSION_DESCRIPTOR_LENGTH);
   \   000000C2   0822               MOV         R2,#+8
   \   000000C4   4035               ADD         R5,#+64
   \   000000C6   291C               MOV         R1,R5
   \   000000C8   7434               ADD         R4,#+116
   \   000000CA   201C               MOV         R0,R4
   \   000000CC   ........           _BLF        po_memcpy,??po_memcpy??rT
    193          }
   \   000000D0   30BC               POP         {R4,R5}
   \   000000D2   01BC               POP         {R0}
   \   000000D4   0047               BX          R0                 ;; return
   \   000000D6   C046               NOP         
   \                     ??ms_plugInit_0:
   \   000000D8   80841E00           DC32        0x1e8480
   \   000000DC   ........           DC32        `?<Constant "ATMEL   ">`
    194          
    195          
    196          /******************************************************************
    197          *
    198          * SUB-ROUTINE : ms_goToInit
    199          *
    200          *------------------------------------------------------------------
    201          *
    202          * purpose : Go to state INIT
    203          *
    204          * input parameters  : none
    205          *
    206          * output parameters : none
    207          *
    208          * global data : usbms_context.state
    209          *
    210          ******************************************************************/

   \                                 In segment CODE, align 4, keep-with-next
    211          void ms_goToInit( void )
    212          {
    213            /* Set state to INIT */
    214            usbms_context.state = INIT;
   \                     ms_goToInit:
   \   00000000   ....               LDR         R0,??DataTable6    ;; usbms_context + 211
   \   00000002   0621               MOV         R1,#+6
   \   00000004   0170               STRB        R1,[R0, #+0]
    215          }
   \   00000006   7047               BX          LR                 ;; return
    216          
    217          
    218          /******************************************************************
    219          *
    220          * SUB-ROUTINE : ms_rstProgStallIn
    221          *
    222          *------------------------------------------------------------------
    223          *
    224          * purpose : Stall of endpoint BULK IN
    225          *

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -