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

📄 ms_rbc.lst

📁 at91sam7x256 FREERTOS sd卡的读写程序
💻 LST
📖 第 1 页 / 共 5 页
字号:
##############################################################################
#                                                                            #
# IAR ARM ANSI C/C++ Compiler V4.31A/W32 EVALUATION    29/Nov/2007  16:53:54 #
# Copyright 1999-2005 IAR Systems. All rights reserved.                      #
#                                                                            #
#    Cpu mode        =  interwork                                            #
#    Endian          =  little                                               #
#    Stack alignment =  4                                                    #
#    Source file     =  G:\AT91_ENERGY\ATMEL_ARM\x256_mmc\MASSSTORAGE\ms_rbc #
#                       .c                                                   #
#    Command line    =  G:\AT91_ENERGY\ATMEL_ARM\x256_mmc\MASSSTORAGE\ms_rbc #
#                       .c -D AT91SAM7X256 -D PULL_UP_USB -D USE_LED -lC     #
#                       "G:\AT91_ENERGY\ATMEL_ARM\x256_mmc\AT91SAM7X-Mass    #
#                       Storage\compil\Binary\List\" -o                      #
#                       "G:\AT91_ENERGY\ATMEL_ARM\x256_mmc\AT91SAM7X-Mass    #
#                       Storage\compil\Binary\Obj\" -z9 --debug --cpu_mode   #
#                       thumb --endian little --cpu ARM7TDMI --stack_align   #
#                       4 --interwork -e --fpu None --dlib_config            #
#                       "C:\Program Files\IAR Systems\Embedded Workbench     #
#                       4.0 Evaluation\ARM\LIB\dl4tptinl8f.h" -I             #
#                       "G:\AT91_ENERGY\ATMEL_ARM\x256_mmc\AT91SAM7X-Mass    #
#                       Storage\compil\srcIAR\" -I                           #
#                       "G:\AT91_ENERGY\ATMEL_ARM\x256_mmc\AT91SAM7X-Mass    #
#                       Storage\compil\..\src\" -I                           #
#                       "G:\AT91_ENERGY\ATMEL_ARM\x256_mmc\AT91SAM7X-Mass    #
#                       Storage\compil\..\..\" -I                            #
#                       "G:\AT91_ENERGY\ATMEL_ARM\x256_mmc\AT91SAM7X-Mass    #
#                       Storage\compil\..\..\FILESYSTEM\inc\" -I             #
#                       "G:\AT91_ENERGY\ATMEL_ARM\x256_mmc\AT91SAM7X-Mass    #
#                       Storage\compil\..\..\MASSSTORAGE\inc\" -I            #
#                       "G:\AT91_ENERGY\ATMEL_ARM\x256_mmc\AT91SAM7X-Mass    #
#                       Storage\compil\..\..\AT91SAM7X256\" -I               #
#                       "G:\AT91_ENERGY\ATMEL_ARM\x256_mmc\AT91SAM7X-Mass    #
#                       Storage\compil\..\inc\" -I                           #
#                       "G:\AT91_ENERGY\ATMEL_ARM\x256_mmc\AT91SAM7X-Mass    #
#                       Storage\compil\..\..\mmc_sd\" -I                     #
#                       "G:\AT91_ENERGY\ATMEL_ARM\x256_mmc\AT91SAM7X-Mass    #
#                       Storage\compil\..\..\COMMON_FS_MS\" -I "C:\Program   #
#                       Files\IAR Systems\Embedded Workbench 4.0             #
#                       Evaluation\ARM\INC\"                                 #
#    List file       =  G:\AT91_ENERGY\ATMEL_ARM\x256_mmc\AT91SAM7X-Mass     #
#                       Storage\compil\Binary\List\ms_rbc.lst                #
#    Object file     =  G:\AT91_ENERGY\ATMEL_ARM\x256_mmc\AT91SAM7X-Mass     #
#                       Storage\compil\Binary\Obj\ms_rbc.r79                 #
#                                                                            #
#                                                                            #
##############################################################################

G:\AT91_ENERGY\ATMEL_ARM\x256_mmc\MASSSTORAGE\ms_rbc.c
      1          //  ----------------------------------------------------------------------------
      2          //          ATMEL Microcontroller Software Support  -  ROUSSET  -
      3          //  ----------------------------------------------------------------------------
      4          //  DISCLAIMER:  CONDITIONS AS PER SIGNED LIMITED LICENSE AGREEMENT (AT91
      5          //  SOFTWARE AND USER DOCUMENTATION)
      6          //  ALL SOFTWARE IS PROVIDED AS IS, WITH ALL FAULTS, AND WITH NO WARRANTY
      7          //  WHATSOEVER.  ATMEL EXPRESSLY DISCLAIMS ALL WARRANTIES, EXPRESS, IMPLIED,
      8          //  OR STATUTORY, INCLUDING WITHOUT LIMITATION ANY WARRANTIES OF MERCHANTABILITY,
      9          //  FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT.
     10          //  ----------------------------------------------------------------------------
     11          // File Name           : ms_rbc.c
     12          // Object              : Reduced Block commands
     13          //                       Ref: rbc-r10a.pdf, NCITS-330 T10/1240-D,
     14          //                       revision 10a, August 18,1999
     15          // Creation            : JCB 15/apr/2005
     16          // Modif               :
     17          // ----------------------------------------------------------------------------
     18          #include "po_types.h"
     19          #include "trace.h"
     20          //#include "bfsa_flash.h"
     21          #include "fw_usb.h"
     22          #include "po_kernel.h"
     23          #include "ms_device.h"
     24          #include "ms_rbc.h"
     25          #include "mmc.h"
     26          
     27          #define VALUE_32(p1,p2,p3,p4) ((p1)|(p2<<8)|(p3<<16)|(p4<<24))
     28          
     29          
     30          /*****************************************************************
     31          *
     32          * ROUTINE : rbc_inquiry
     33          *
     34          *-----------------------------------------------------------------
     35          *
     36          * Purpose : processes the rbc inquiry command
     37          *
     38          * Input Parameters  : Structure defining the inquiry command
     39          *
     40          * Output Parameters : status of the operation.
     41          *
     42          *****************************************************************/

   \                                 In segment CODE, align 4, keep-with-next
     43          USBMS_RETURN rbc_inquiry(USBMS_INQUIRY *inquiry)
     44          {
   \                     rbc_inquiry:
   \   00000000   70B5               PUSH        {R4-R6,LR}
   \   00000002   011C               MOV         R1,R0
     45            USBMS_RETURN  _status = USBMS_OK;
     46            USHORT        _size;
     47          
     48            /* define in ms_plugInit */
     49            if( (inquiry->enable_vpd==0) && (inquiry->page_code==0) )
   \   00000004   0024               MOV         R4,#+0
   \   00000006   E443               MVN         R4,R4              ;; #-1
   \   00000008   4078               LDRB        R0,[R0, #+1]
   \   0000000A   C007               LSL         R0,R0,#+31
   \   0000000C   2BD4               BMI         ??rbc_inquiry_0
   \   0000000E   8878               LDRB        R0,[R1, #+2]
   \   00000010   0028               CMP         R0,#+0
   \   00000012   28D1               BNE         ??rbc_inquiry_0
     50            {
     51              usbms_context.usb_lun[usbms_context.current_lun].cur_request.current_block    = 0;
   \   00000014   ....               LDR         R0,??DataTable5    ;; usbms_context
   \   00000016   021C               MOV         R2,R0
   \   00000018   B932               ADD         R2,#+185
   \   0000001A   1378               LDRB        R3,[R2, #+0]
   \   0000001C   3825               MOV         R5,#+56
   \   0000001E   6B43               MUL         R3,R5
   \   00000020   C318               ADD         R3,R0,R3
   \   00000022   0025               MOV         R5,#+0
   \   00000024   1D82               STRH        R5,[R3, #+16]
     52              usbms_context.usb_lun[usbms_context.current_lun].cur_request.buffer_size      = 0;
   \   00000026   0023               MOV         R3,#+0
   \   00000028   1578               LDRB        R5,[R2, #+0]
   \   0000002A   3826               MOV         R6,#+56
   \   0000002C   7543               MUL         R5,R6
   \   0000002E   4519               ADD         R5,R0,R5
   \   00000030   EB62               STR         R3,[R5, #+44]
     53              usbms_context.usb_lun[usbms_context.current_lun].cur_request.command_size     = 0;
   \   00000032   1578               LDRB        R5,[R2, #+0]
   \   00000034   7543               MUL         R5,R6
   \   00000036   4519               ADD         R5,R0,R5
   \   00000038   2B63               STR         R3,[R5, #+48]
     54              usbms_context.usb_lun[usbms_context.current_lun].cur_request.transferred_size = 0;
   \   0000003A   1578               LDRB        R5,[R2, #+0]
   \   0000003C   7543               MUL         R5,R6
   \   0000003E   4519               ADD         R5,R0,R5
   \   00000040   6B63               STR         R3,[R5, #+52]
     55              usbms_context.usb_lun[usbms_context.current_lun].fail_reason  = GOOD_STATUS;
   \   00000042   1278               LDRB        R2,[R2, #+0]
   \   00000044   7243               MUL         R2,R6
   \   00000046   8218               ADD         R2,R0,R2
   \   00000048   1381               STRH        R3,[R2, #+8]
     56          
     57              /* standard inquiry data are required  */
     58              _size = (inquiry->length_0)+((inquiry->length_1)<<8);
   \   0000004A   0A79               LDRB        R2,[R1, #+4]
   \   0000004C   C978               LDRB        R1,[R1, #+3]
   \   0000004E   0902               LSL         R1,R1,#+8
   \   00000050   5118               ADD         R1,R2,R1
   \   00000052   0904               LSL         R1,R1,#+16
   \   00000054   090C               LSR         R1,R1,#+16
     59              if( _size == usb_send((char*)&usbms_context.inquiry_data, _size) )
   \   00000056   0D1C               MOV         R5,R1
   \   00000058   3830               ADD         R0,#+56
   \   0000005A   ........           _BLF        usb_send,??usb_send??rT
   \   0000005E   8542               CMP         R5,R0
   \   00000060   01D1               BNE         ??rbc_inquiry_0
     60              {
     61                _status = USBMS_OK;
   \   00000062   0020               MOV         R0,#+0
   \   00000064   00E0               B           ??rbc_inquiry_1
     62              }
     63              else
     64              {
     65                _status = USBMS_ERROR;
     66              }
     67            }
     68            else
     69            {
     70              _status = USBMS_ERROR;
   \                     ??rbc_inquiry_0:
   \   00000066   201C               MOV         R0,R4
     71            }
     72            return _status;
   \                     ??rbc_inquiry_1:
   \   00000068                      REQUIRE ?Subroutine11
   \   00000068                      ;; // Fall through to label ?Subroutine11
     73          }

   \                                 In segment CODE, align 4, keep-with-next
   \                     ?Subroutine11:
   \   00000000   70BC               POP         {R4-R6}
   \   00000002   02BC               POP         {R1}
   \   00000004   0847               BX          R1                 ;; return
     74          
     75          
     76          /*****************************************************************
     77          *
     78          * ROUTINE : rbc_mode_select
     79          *
     80          *-----------------------------------------------------------------
     81          *
     82          * Purpose : processes the rbc MODE_SELECT command
     83          *
     84          * Input Parameters  : Structure defining the MODE_SELECT command
     85          *
     86          * Output Parameters : status of the operation
     87          *
     88          *****************************************************************/

   \                                 In segment CODE, align 4, keep-with-next
     89          USBMS_RETURN rbc_mode_select(void)
     90          {
     91            return USBMS_OK;
   \                     rbc_mode_select:
   \   00000000   0020               MOV         R0,#+0
   \   00000002   7047               BX          LR                 ;; return
     92          }
     93          
     94          
     95          /*****************************************************************
     96          *
     97          * ROUTINE : rbc_mode_sense
     98          *
     99          *-----------------------------------------------------------------
    100          *
    101          * Purpose : processes the rbc MODE_SENSE command
    102          *
    103          * Input Parameters  : Structure defining the MODE_SENSE command
    104          *
    105          * Output Parameters : status of the operation
    106          *
    107          *****************************************************************/

   \                                 In segment CODE, align 4, keep-with-next
    108          USBMS_RETURN rbc_mode_sense(USBMS_MODE_SENSE *mode_sense)
    109          {
   \                     rbc_mode_sense:
   \   00000000   70B5               PUSH        {R4-R6,LR}

⌨️ 快捷键说明

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