📄 ms_api.lst
字号:
##############################################################################
# #
# IAR ARM ANSI C/C++ Compiler V4.31A/W32 EVALUATION 29/Nov/2007 16:54:00 #
# 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_api #
# .c #
# Command line = G:\AT91_ENERGY\ATMEL_ARM\x256_mmc\MASSSTORAGE\ms_api #
# .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_api.lst #
# Object file = G:\AT91_ENERGY\ATMEL_ARM\x256_mmc\AT91SAM7X-Mass #
# Storage\compil\Binary\Obj\ms_api.r79 #
# #
# #
##############################################################################
G:\AT91_ENERGY\ATMEL_ARM\x256_mmc\MASSSTORAGE\ms_api.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_api.c
12 // Object : command sent to the chip
13 // Creation : JCB 15/apr/2005
14 // Modif :
15 // ----------------------------------------------------------------------------
16 #include "po_types.h"
17 #include "trace.h"
18 #include "fw_usb.h"
19 #include "po_kernel.h"
20 #include "ms_device.h"
21
22 /*****************************************************************
23 *
24 * ROUTINE : usbms_init
25 *
26 *-----------------------------------------------------------------
27 *
28 * Purpose : some initializations, TB, FIFO, flags
29 *
30 * Input Parameters : NONE
31 *
32 * Output Parameters : USBMS_OK
33 * USBMS_ERROR
34 *
35 *****************************************************************/
\ In segment CODE, align 4, keep-with-next
36 USBMS_RETURN usbms_init( void )
37 {
\ usbms_init:
\ 00000000 F0B5 PUSH {R4-R7,LR}
\ 00000002 87B0 SUB SP,#+28
38 USBMS_RETURN _status = USBMS_OK;
\ 00000004 6846 MOV R0,SP
\ 00000006 0021 MOV R1,#+0
\ 00000008 0170 STRB R1,[R0, #+0]
39 UCHAR _error = 0,_i = 0,_j = 0;
40
41 ms_initAutomat();
\ 0000000A ........ _BLF ms_initAutomat,??ms_initAutomat??rT
42
43 USB_RX = 0;
\ 0000000E .... LDR R0,??DataTable6 ;; USB_RX
\ 00000010 0021 MOV R1,#+0
\ 00000012 0160 STR R1,[R0, #+0]
44
45 /*initialize the ms internal buffer*/
46 for(_i = 0; _i < MAX_LUN_NUM; _i ++)
\ 00000014 0024 MOV R4,#+0
\ 00000016 374E LDR R6,??usbms_init_0 ;; usbms_context
\ 00000018 8025 MOV R5,#+128
\ 0000001A AD00 LSL R5,R5,#+2 ;; #+512
47 {
48 usbms_context.usb_lun[_i].cur_request.data_buff = po_rngCreate(MAX_TRANSFER_SIZE);
\ ??usbms_init_1:
\ 0000001C 291C MOV R1,R5
\ 0000001E 01A8 ADD R0,SP,#+4
\ 00000020 ........ _BLF po_rngCreate,??po_rngCreate??rT
\ 00000024 3820 MOV R0,#+56
\ 00000026 6043 MUL R0,R4
\ 00000028 311C MOV R1,R6
\ 0000002A 1431 ADD R1,#+20
\ 0000002C 0918 ADD R1,R1,R0
\ 0000002E 01AA ADD R2,SP,#+4
\ 00000030 1827 MOV R7,#+24
\ ??usbms_init_2:
\ 00000032 3F1F SUB R7,R7,#+4
\ 00000034 D359 LDR R3,[R2, R7]
\ 00000036 CB51 STR R3,[R1, R7]
\ 00000038 FBD1 BNE ??usbms_init_2
49 if(usbms_context.usb_lun[_i].cur_request.data_buff.status != 1)
\ 0000003A 311C MOV R1,R6
\ 0000003C 2831 ADD R1,#+40
\ 0000003E 0858 LDR R0,[R1, R0]
\ 00000040 0128 CMP R0,#+1
\ 00000042 02D0 BEQ ??usbms_init_3
50 {
51 /*allocation failed*/
52 TRACE_ERROR( "buffer failed\n\r");
53 return USBMS_ERROR;
\ 00000044 0020 MOV R0,#+0
\ 00000046 C043 MVN R0,R0 ;; #-1
\ 00000048 39E0 B ??usbms_init_4
54 }
55 }
\ ??usbms_init_3:
\ 0000004A 641C ADD R4,R4,#+1
\ 0000004C 2006 LSL R0,R4,#+24
\ 0000004E E5D0 BEQ ??usbms_init_1
56
57 /* create the FIFO == output fifo*/
58 fw_fifoId = po_rngCreate(FW_FIFO_SIZE);
\ 00000050 .... LDR R6,??DataTable9 ;; fw_fifoId
\ 00000052 291C MOV R1,R5
\ 00000054 301C MOV R0,R6
\ 00000056 ........ _BLF po_rngCreate,??po_rngCreate??rT
59
60 if(fw_fifoId.status == 1)
\ 0000005A 7069 LDR R0,[R6, #+20]
\ 0000005C 0128 CMP R0,#+1
\ 0000005E 19D1 BNE ??usbms_init_5
61 {
62 /* allocate the TBs */
63 for(_i = 0; _i < FW_TB_NUM; _i++)
\ 00000060 0024 MOV R4,#+0
\ 00000062 .... LDR R5,??DataTable7 ;; fw_TB
64 {
65 fw_TB[_i] = (structTB *) po_malloc(sizeof(structTB));
\ ??usbms_init_6:
\ 00000064 A000 LSL R0,R4,#+2
\ 00000066 2F18 ADD R7,R5,R0
\ 00000068 4C20 MOV R0,#+76
\ 0000006A ........ _BLF po_malloc,??po_malloc??rT
\ 0000006E 3860 STR R0,[R7, #+0]
66
67 if(!fw_TB[_i])
\ 00000070 0028 CMP R0,#+0
\ 00000072 26D1 BNE ??usbms_init_7
68 {
69 TRACE_ERROR( "_i= : %d ERROR\n\r",_i);
70 for(_j = 0;_j < _i ; _j++)
\ 00000074 0027 MOV R7,#+0
\ 00000076 04E0 B ??usbms_init_8
71 {
72 /* free the TB already allocated */
73 po_free(fw_TB[_j]);
\ ??usbms_init_9:
\ 00000078 B800 LSL R0,R7,#+2
\ 0000007A 2858 LDR R0,[R5, R0]
\ 0000007C ........ _BLF po_free,??po_free??rT
74 }
\ 00000080 7F1C ADD R7,R7,#+1
\ ??usbms_init_8:
\ 00000082 3806 LSL R0,R7,#+24
\ 00000084 000E LSR R0,R0,#+24
\ 00000086 2106 LSL R1,R4,#+24
\ 00000088 090E LSR R1,R1,#+24
\ 0000008A 8842 CMP R0,R1
\ 0000008C F4D3 BCC ??usbms_init_9
75 _error++;
76 break;
77 }
78 }
79 if(_error == 0)
80 {
81 /* initialize all TBs */
82 fw_writeTB = fw_TB;
83 fw_readTB = fw_TB;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -