📄 ms_api.lst
字号:
\ 0000003C 1C31 ADD R1,#+28
\ 0000003E 3268 LDR R2,[R6, #+0]
\ 00000040 9142 CMP R1,R2
\ 00000042 00D2 BCS ??ms_retreiveTb_2
193 {
194 fw_readTB = fw_TB;
\ 00000044 3060 STR R0,[R6, #+0]
195 }
196 _flag = 1;
\ ??ms_retreiveTb_2:
\ 00000046 6846 MOV R0,SP
\ 00000048 0121 MOV R1,#+1
\ 0000004A 0171 STRB R1,[R0, #+4]
197 }
\ ??ms_retreiveTb_0:
\ 0000004C 0398 LDR R0,[SP, #+12]
\ 0000004E 8442 CMP R4,R0
\ 00000050 21D0 BEQ ??ms_retreiveTb_3
\ 00000052 3068 LDR R0,[R6, #+0]
\ 00000054 0568 LDR R5,[R0, #+0]
\ 00000056 2868 LDR R0,[R5, #+0]
\ 00000058 0006 LSL R0,R0,#+24
\ 0000005A 1CD5 BPL ??ms_retreiveTb_3
\ 0000005C 2F1D ADD R7,R5,#+4
\ 0000005E 0398 LDR R0,[SP, #+12]
\ 00000060 001B SUB R0,R0,R4
\ 00000062 0090 STR R0,[SP, #+0]
\ 00000064 3868 LDR R0,[R7, #+0]
\ 00000066 0099 LDR R1,[SP, #+0]
\ 00000068 8842 CMP R0,R1
\ 0000006A 00D2 BCS ??ms_retreiveTb_4
\ 0000006C 0090 STR R0,[SP, #+0]
\ ??ms_retreiveTb_4:
\ 0000006E 009A LDR R2,[SP, #+0]
\ 00000070 A868 LDR R0,[R5, #+8]
\ 00000072 2918 ADD R1,R5,R0
\ 00000074 0C31 ADD R1,#+12
\ 00000076 0298 LDR R0,[SP, #+8]
\ 00000078 0019 ADD R0,R0,R4
\ 0000007A ........ _BLF po_memcpy,??po_memcpy??rT
\ 0000007E 3868 LDR R0,[R7, #+0]
\ 00000080 0099 LDR R1,[SP, #+0]
\ 00000082 401A SUB R0,R0,R1
\ 00000084 3860 STR R0,[R7, #+0]
\ 00000086 0099 LDR R1,[SP, #+0]
\ 00000088 6418 ADD R4,R4,R1
\ 0000008A 0028 CMP R0,#+0
\ 0000008C BFD0 BEQ ??ms_retreiveTb_1
198 else
199 {
200 /* new read index of data buffer*/
201 _TB->index += _len;
\ 0000008E A868 LDR R0,[R5, #+8]
\ 00000090 4018 ADD R0,R0,R1
\ 00000092 A860 STR R0,[R5, #+8]
\ 00000094 DAE7 B ??ms_retreiveTb_0
202 }
203 }
204
205 if((fw_deviceState & FW_DS_TB_FULL) && _flag)
\ ??ms_retreiveTb_3:
\ 00000096 .... LDR R0,??DataTable10 ;; fw_deviceState
\ 00000098 0178 LDRB R1,[R0, #+0]
\ 0000009A C906 LSL R1,R1,#+27
\ 0000009C 07D5 BPL ??ms_retreiveTb_5
\ 0000009E 6946 MOV R1,SP
\ 000000A0 0979 LDRB R1,[R1, #+4]
\ 000000A2 0029 CMP R1,#+0
\ 000000A4 03D0 BEQ ??ms_retreiveTb_5
206 {
207 TRACE_ERROR( "TB N FULL\n\r");
208 /* the TB pool isn't full anymore */
209 fw_deviceState &= ~FW_DS_TB_FULL;
\ 000000A6 0178 LDRB R1,[R0, #+0]
\ 000000A8 EF22 MOV R2,#+239
\ 000000AA 0A40 AND R2,R1
\ 000000AC 0270 STRB R2,[R0, #+0]
210 }
211
212 return _lengthRead;
\ ??ms_retreiveTb_5:
\ 000000AE 201C MOV R0,R4
\ 000000B0 04B0 ADD SP,#+16
\ 000000B2 C046 NOP
\ 000000B4 REQUIRE ?Subroutine3
\ 000000B4 ;; // Fall through to label ?Subroutine3
213 }
214
215
216 /*****************************************************************
217 *
218 * ROUTINE usb_send
219 *
220 *-----------------------------------------------------------------
221 *
222 * Purpose :
223 * queues data in the IN FIFO and signal the driver if the fifo is
224 * full.
225 *
226 * Input parameters : DataBuffer : buffer containing data
227 * Length : length of data
228 *
229 * Output parameters : length of data put in the IN FIFO
230 *
231 * Global data : fw_fifoId : ID of the IN FIFO
232 *
233 *****************************************************************/
\ In segment CODE, align 4, keep-with-next
234 USHORT usb_send(char *DataBuffer, USHORT Length)
235 {
\ usb_send:
\ 00000000 30B5 PUSH {R4,R5,LR}
236 USHORT _len = 0;
237
238 _len = po_rngBufPut(&fw_fifoId, DataBuffer,Length);
\ 00000002 .... LDR R5,??DataTable9 ;; fw_fifoId
\ 00000004 0A1C MOV R2,R1
\ 00000006 011C MOV R1,R0
\ 00000008 281C MOV R0,R5
\ 0000000A ........ _BLF po_rngBufPut,??po_rngBufPut??rT
\ 0000000E 041C MOV R4,R0
239
240 if( po_rngNBytes(&fw_fifoId) > FW_IN_FIFO_FULL )
\ 00000010 281C MOV R0,R5
\ 00000012 ........ _BLF po_rngNBytes,??po_rngNBytes??rT
\ 00000016 CD21 MOV R1,#+205
\ 00000018 4900 LSL R1,R1,#+1 ;; #+410
\ 0000001A 8842 CMP R0,R1
\ 0000001C 04DB BLT ??usb_send_0
241 {
242 fw_deviceState |= FW_DS_FIFO_FULL;
\ 0000001E .... LDR R0,??DataTable10 ;; fw_deviceState
\ 00000020 0178 LDRB R1,[R0, #+0]
\ 00000022 4022 MOV R2,#+64
\ 00000024 0A43 ORR R2,R1
\ 00000026 0270 STRB R2,[R0, #+0]
243 }
244 return _len;
\ ??usb_send_0:
\ 00000028 2004 LSL R0,R4,#+16
\ 0000002A 000C LSR R0,R0,#+16
\ 0000002C 30BC POP {R4,R5}
\ 0000002E 02BC POP {R1}
\ 00000030 0847 BX R1 ;; return
245 }
\ In segment CODE, align 4, keep-with-next
\ ??DataTable5:
\ 00000000 ........ DC32 fw_readTB
\ In segment CODE, align 4, keep-with-next
\ ??DataTable6:
\ 00000000 ........ DC32 USB_RX
\ In segment CODE, align 4, keep-with-next
\ ??DataTable7:
\ 00000000 ........ DC32 fw_TB
\ In segment CODE, align 4, keep-with-next
\ ??DataTable9:
\ 00000000 ........ DC32 fw_fifoId
\ In segment CODE, align 4, keep-with-next
\ ??DataTable10:
\ 00000000 ........ DC32 fw_deviceState
246
247
248
249
250
251
252
Maximum stack usage in bytes:
Function CSTACK
-------- ------
ms_retreiveTb 36
usb_send 12
usbms_init 48
Segment part sizes:
Function/Label Bytes
-------------- -----
usbms_init 264
?Subroutine3 6
ms_retreiveTb 180
usb_send 50
??DataTable5 4
??DataTable6 4
??DataTable7 4
??DataTable9 4
??DataTable10 4
Others 104
624 bytes in segment CODE
520 bytes of CODE memory (+ 104 bytes shared)
Errors: none
Warnings: none
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -