📄 ms_bot.lst
字号:
##############################################################################
# #
# 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 + -