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

📄 ms_bot.lst

📁 at91sam7x256 FREERTOS sd卡的读写程序
💻 LST
📖 第 1 页 / 共 5 页
字号:
##############################################################################
#                                                                            #
# IAR ARM ANSI C/C++ Compiler V4.31A/W32 EVALUATION    16/Nov/2007  09:02:47 #
# 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_bot #
#                       .c                                                   #
#    Command line    =  G:\AT91_ENERGY\ATMEL_ARM\x256_mmc\MASSSTORAGE\ms_bot #
#                       .c -D AT91SAM7X256 -D PULL_UP_USB -D USE_LED -lC     #
#                       "G:\AT91_ENERGY\ATMEL_ARM\x256_mmc\AT91SAM7X-Mass    #
#                       Storage\compil\RAM_Debug\List\" --remarks -o         #
#                       "G:\AT91_ENERGY\ATMEL_ARM\x256_mmc\AT91SAM7X-Mass    #
#                       Storage\compil\RAM_Debug\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\RAM_Debug\List\ms_bot.lst             #
#    Object file     =  G:\AT91_ENERGY\ATMEL_ARM\x256_mmc\AT91SAM7X-Mass     #
#                       Storage\compil\RAM_Debug\Obj\ms_bot.r79              #
#                                                                            #
#                                                                            #
##############################################################################

G:\AT91_ENERGY\ATMEL_ARM\x256_mmc\MASSSTORAGE\ms_bot.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_bot.c
     12          // Object              : bot commandes (BOT: Bulk Only Transport)
     13          // Creation            : JCB 15/apr/2005
     14          // Modif               :
     15          // ----------------------------------------------------------------------------
     16          #include "po_types.h"
     17          #include "trace.h"
     18          //#include "bfsa_flash.h"
     19          #include "mmc.h"
     20          #include "fw_usb.h"
     21          #include "po_kernel.h"
     22          #include "ms_device.h"
     23          #include "ms_rbc.h"
     24          

   \                                 In segment DATA_Z, align 4, align-sorted
     25          USBMS_CONTEXT usbms_context;
   \                     usbms_context:
   \   00000000                      DS8 212

   \                                 In segment DATA_Z, align 4, align-sorted
     26          USBMS_REQUEST_SENSE_DATA usbms_request_sense_data;
   \                     usbms_request_sense_data:
   \   00000000                      DS8 20
     27          
     28          #ifdef TR_ERROR
     29            UCHAR  DBG_EVT ;
     30          #endif
     31          
     32          
     33          /*****************************************************************
     34          *
     35          * ROUTINE : ms_stallPipe
     36          *
     37          *-----------------------------------------------------------------
     38          *
     39          * Purpose : Stall the endpoind (IN, OUT, or CTRL)
     40          *
     41          * Input parameters  : endpoint:   FW_EP_CTRL, FW_EP_BULK_IN, FW_EP_BULK_OUT
     42          *
     43          * Output parameters : none
     44          *
     45          * Global data : none
     46          *
     47          *****************************************************************/

   \                                 In segment CODE, align 4, keep-with-next
     48          void ms_stallPipe( EPx ep )
     49          {
   \                     ms_stallPipe:
   \   00000000   00B5               PUSH        {LR}
     50            fw_setEndpointStatus(ep, 1);
   \   00000002   0121               MOV         R1,#+1
   \   00000004   ........           _BLF        fw_setEndpointStatus,??fw_setEndpointStatus??rT
     51          }
   \   00000008   01BC               POP         {R0}
   \   0000000A   0047               BX          R0                 ;; return
     52          
     53          
     54          /*****************************************************************
     55          *
     56          * ROUTINE : ms_computeCSW
     57          *
     58          *-----------------------------------------------------------------
     59          *
     60          * Purpose : formats and send the BOT status
     61          *           Command Status Wrapper (CSW)
     62          *
     63          * Input Parameters  :
     64          *   command_block_status : Status of the BOT
     65          *   data_residue         : amount of data that have not been processed
     66          *
     67          * Output Parameters : none
     68          *
     69          *****************************************************************/

   \                                 In segment CODE, align 4, keep-with-next
     70          void ms_computeCSW( COMMAND_BLOCK_STATUS command_block_status,
     71                                   ULONG data_residue  )
     72          {
   \                     ms_computeCSW:
   \   00000000   30B4               PUSH        {R4,R5}
     73          /*  TRACE_DEBUG_H( "ms_computeCSW\n\r");
     74            TRACE_DEBUG_H( "Status =%d \n\r",command_block_status);
     75            TRACE_DEBUG_H( "data residue =%d \n\r",data_residue);
     76          */
     77            /* build the CSW structure */
     78            usbms_context.csw.dCSWSignature_0    = (UCHAR)(CSW_SIGNATURE);     /* 0x55; */
   \   00000002   ....               LDR         R2,??DataTable1    ;; usbms_context
   \   00000004   131C               MOV         R3,R2
   \   00000006   AC33               ADD         R3,#+172
   \   00000008   5524               MOV         R4,#+85
   \   0000000A   1C70               STRB        R4,[R3, #+0]
     79            usbms_context.csw.dCSWSignature_1    = (UCHAR)(CSW_SIGNATURE>>8);  /* 0x53; */
   \   0000000C   5324               MOV         R4,#+83
   \   0000000E   5C70               STRB        R4,[R3, #+1]
     80            usbms_context.csw.dCSWSignature_2    = (UCHAR)(CSW_SIGNATURE>>16); /* 0x42; */
   \   00000010   4225               MOV         R5,#+66
   \   00000012   9D70               STRB        R5,[R3, #+2]
     81            usbms_context.csw.dCSWSignature_3    = (UCHAR)(CSW_SIGNATURE>>24); /* 0x53; */
   \   00000014   DC70               STRB        R4,[R3, #+3]
     82            usbms_context.csw.dCSWDataResidue_0  = (UCHAR)(data_residue);
   \   00000016   1972               STRB        R1,[R3, #+8]
     83            usbms_context.csw.dCSWDataResidue_1  = (UCHAR)(data_residue>>8);
   \   00000018   0C0A               LSR         R4,R1,#+8
   \   0000001A   5C72               STRB        R4,[R3, #+9]
     84            usbms_context.csw.dCSWDataResidue_2  = (UCHAR)(data_residue>>16);
   \   0000001C   0C0C               LSR         R4,R1,#+16
   \   0000001E   9C72               STRB        R4,[R3, #+10]
     85            usbms_context.csw.dCSWDataResidue_3  = (UCHAR)(data_residue>>24);
   \   00000020   090E               LSR         R1,R1,#+24
   \   00000022   D972               STRB        R1,[R3, #+11]
     86            usbms_context.csw.bCSWStatus         = command_block_status;
   \   00000024   1873               STRB        R0,[R3, #+12]
     87          
     88            /* reset the bot state */
     89            usbms_context.usb_lun[usbms_context.current_lun].fail_reason  = GOOD_STATUS;
   \   00000026   587B               LDRB        R0,[R3, #+13]
   \   00000028   3821               MOV         R1,#+56
   \   0000002A   4843               MUL         R0,R1
   \   0000002C   1018               ADD         R0,R2,R0
   \   0000002E   0021               MOV         R1,#+0
   \   00000030   0181               STRH        R1,[R0, #+8]
     90            usbms_context.usb_lun[usbms_context.current_lun].fail_request = FALSE;
   \   00000032   587B               LDRB        R0,[R3, #+13]
   \   00000034   3821               MOV         R1,#+56
   \   00000036   4843               MUL         R0,R1
   \   00000038   1018               ADD         R0,R2,R0
   \   0000003A   0021               MOV         R1,#+0
   \   0000003C   0173               STRB        R1,[R0, #+12]
     91          }
   \   0000003E   30BC               POP         {R4,R5}
   \   00000040   7047               BX          LR                 ;; return
     92          
     93          
     94          /*****************************************************************
     95          *
     96          * ROUTINE : ms_send_bot_status
     97          *
     98          *-----------------------------------------------------------------
     99          *
    100          * Purpose : formats and send the BOT status
    101          *
    102          * Input Parameters  :
    103          *   command_block_status : Status of the BOT
    104          *   data_residue         : amount of data that have not been processed
    105          *
    106          * Output Parameters : none
    107          *
    108          *****************************************************************/

   \                                 In segment CODE, align 4, keep-with-next
    109          void ms_send_bot_status( COMMAND_BLOCK_STATUS command_block_status,
    110                                        ULONG data_residue )
    111          {
   \                     ms_send_bot_status:
   \   00000000   00B5               PUSH        {LR}
    112            ms_computeCSW( command_block_status, data_residue );
   \   00000002   ........           BL          ms_computeCSW
    113            /* sends the BOT status  */
    114            usb_send((char*)&usbms_context.csw, sizeof(USBMS_CSW));
   \   00000006   0D21               MOV         R1,#+13
   \   00000008   0248               LDR         R0,??ms_send_bot_status_0  ;; usbms_context + 172
   \   0000000A   ........           _BLF        usb_send,??usb_send??rT
    115          }
   \   0000000E   01BC               POP         {R0}
   \   00000010   0047               BX          R0                 ;; return
   \   00000012   C046               NOP         

⌨️ 快捷键说明

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