📄 memory.txt
字号:
; generated by ARM/Thumb C/C++ Compiler with , RVCT3.1 [Build 938] for uVision
; commandline ArmCC [--split_sections --debug -c --asm --interleave -o.\Obj\memory.o --depend=.\Obj\memory.d --device=DARMSTM --apcs=interwork -O3 -I.\Code\FATSystem\INC -I.\Code\Library\INC -I.\Code\SDCard\INC -I.\Code\Speaker\INC -I.\Code\System\INC -I.\Code\USBMassStorage\INC -I.\Code\User\INC -I.\Code\VS1003\INC -ID:\Keil\ARM\INC\ST\STM32F10x --omf_browse=.\Obj\memory.crf Code\USBMassStorage\SRC\memory.c]
THUMB
AREA ||i.Read_Memory||, CODE, READONLY, ALIGN=2
Read_Memory PROC
;;;60 void Read_Memory(void)
;;;61 {
000000 b510 PUSH {r4,lr}
;;;62 if (!Block_Read_count)
000002 4c21 LDR r4,|L1.136|
000004 6820 LDR r0,[r4,#0] ; Block_Read_count
000006 b978 CBNZ r0,|L1.40|
;;;63 {
;;;64 MSD_ReadBlock(Data_Buffer, Memory_Offset, 512);
000008 68a1 LDR r1,[r4,#8] ; Memory_Offset
00000a f44f7200 MOV r2,#0x200
00000e 481f LDR r0,|L1.140|
000010 f7fffffe BL MSD_ReadBlock
;;;65 UserToPMABufferCopy(Data_Buffer, ENDP1_TXADDR, BULK_MAX_PACKET_SIZE);
000014 2240 MOVS r2,#0x40
000016 2198 MOVS r1,#0x98
000018 481c LDR r0,|L1.140|
00001a f7fffffe BL UserToPMABufferCopy
;;;66 Block_Read_count = 512 - BULK_MAX_PACKET_SIZE;
00001e f44f70e0 MOV r0,#0x1c0
000022 6020 STR r0,[r4,#0] ; Block_Read_count
;;;67 Block_offset = BULK_MAX_PACKET_SIZE;
000024 2040 MOVS r0,#0x40
000026 e00b B |L1.64|
|L1.40|
;;;68 }
;;;69 else
;;;70 {
;;;71 UserToPMABufferCopy(Data_Buffer + Block_offset, ENDP1_TXADDR, BULK_MAX_PACKET_SIZE);
000028 4818 LDR r0,|L1.140|
00002a 6921 LDR r1,[r4,#0x10] ; Block_offset
00002c 2240 MOVS r2,#0x40
00002e 4408 ADD r0,r0,r1
000030 2198 MOVS r1,#0x98
000032 f7fffffe BL UserToPMABufferCopy
;;;72 Block_Read_count -= BULK_MAX_PACKET_SIZE;
000036 6820 LDR r0,[r4,#0] ; Block_Read_count
000038 3840 SUBS r0,r0,#0x40
00003a 6020 STR r0,[r4,#0] ; Block_Read_count
;;;73 Block_offset += BULK_MAX_PACKET_SIZE;
00003c 6920 LDR r0,[r4,#0x10] ; Block_offset
00003e 3040 ADDS r0,r0,#0x40
|L1.64|
000040 6120 STR r0,[r4,#0x10] ; Block_offset
;;;74 }
;;;75
;;;76 SetEPTxCount(ENDP1, BULK_MAX_PACKET_SIZE);
000042 2140 MOVS r1,#0x40
000044 2001 MOVS r0,#1
000046 f7fffffe BL SetEPTxCount
;;;77 SetEPTxStatus(ENDP1, EP_TX_VALID);
00004a 2130 MOVS r1,#0x30
00004c 2001 MOVS r0,#1
00004e f7fffffe BL SetEPTxStatus
;;;78
;;;79
;;;80 Memory_Offset += BULK_MAX_PACKET_SIZE;
000052 68a0 LDR r0,[r4,#8] ; Memory_Offset
000054 3040 ADDS r0,r0,#0x40
000056 60a0 STR r0,[r4,#8] ; Memory_Offset
;;;81 Transfer_Length -= BULK_MAX_PACKET_SIZE;
000058 68e0 LDR r0,[r4,#0xc] ; Transfer_Length
;;;82
;;;83 CSW.dDataResidue -= BULK_MAX_PACKET_SIZE;
00005a 490d LDR r1,|L1.144|
00005c 3840 SUBS r0,r0,#0x40 ;81
00005e 60e0 STR r0,[r4,#0xc] ; Transfer_Length
000060 6888 LDR r0,[r1,#8] ; CSW
000062 3840 SUBS r0,r0,#0x40
;;;84 Led_RW_ON();
000064 6088 STR r0,[r1,#8] ; CSW
000066 f7fffffe BL Led_RW_ON
;;;85
;;;86 if (Transfer_Length == 0)
00006a 68e0 LDR r0,[r4,#0xc] ; Transfer_Length
00006c 2800 CMP r0,#0
00006e d109 BNE |L1.132|
;;;87 {
;;;88 Block_Read_count = 0;
000070 6020 STR r0,[r4,#0] ; Block_Read_count
;;;89 Block_offset = 0;
000072 6120 STR r0,[r4,#0x10] ; Block_offset
;;;90 Memory_Offset = 0;
000074 60a0 STR r0,[r4,#8] ; Memory_Offset
;;;91 Bot_State = BOT_DATA_IN_LAST;
000076 4907 LDR r1,|L1.148|
000078 2003 MOVS r0,#3
00007a 7008 STRB r0,[r1,#0] ; Bot_State
;;;92 Led_RW_OFF();
00007c e8bd4010 POP {r4,lr}
000080 f7ffbffe B.W Led_RW_OFF
|L1.132|
;;;93 }
;;;94 }
000084 bd10 POP {r4,pc}
;;;95
ENDP
000086 0000 DCW 0x0000
|L1.136|
000088 00000000 DCD ||.data||
|L1.140|
00008c 00000000 DCD ||.bss||
|L1.144|
000090 00000000 DCD ||CSW||
|L1.148|
000094 00000000 DCD Bot_State
AREA ||i.Write_Memory||, CODE, READONLY, ALIGN=2
Write_Memory PROC
;;;103 void Write_Memory(void)
;;;104 {
000000 e92d41f0 PUSH {r4-r8,lr}
;;;105 u32 temp = Counter + 64;
000004 4c21 LDR r4,|L2.140|
000006 6862 LDR r2,[r4,#4] ; Counter
;;;106
;;;107
;;;108 i = 0;
000008 2500 MOVS r5,#0
00000a 3240 ADDS r2,r2,#0x40 ;105
00000c 4920 LDR r1,|L2.144|
00000e 4b21 LDR r3,|L2.148|
000010 6165 STR r5,[r4,#0x14] ; i
000012 e008 B |L2.38|
|L2.20|
;;;109 for (; Counter < temp; Counter++)
;;;110 {
;;;111 Data_Buffer[Counter] = Bulk_Data_Buff[i];
000014 6960 LDR r0,[r4,#0x14] ; i
000016 6867 LDR r7,[r4,#4] ; Counter
000018 5c0e LDRB r6,[r1,r0]
;;;112 i++;
00001a 1c40 ADDS r0,r0,#1
00001c 55de STRB r6,[r3,r7] ;111
00001e 6160 STR r0,[r4,#0x14] ;109 ; i
000020 6860 LDR r0,[r4,#4] ;109 ; Counter
000022 1c40 ADDS r0,r0,#1 ;109
000024 6060 STR r0,[r4,#4] ;109 ; Counter
|L2.38|
000026 6860 LDR r0,[r4,#4] ;109 ; Counter
000028 4290 CMP r0,r2 ;109
00002a d3f3 BCC |L2.20|
;;;113 }
;;;114
;;;115 Memory_Offset += Data_Len;
00002c 68a1 LDR r1,[r4,#8] ; Memory_Offset
00002e 4e1a LDR r6,|L2.152|
000030 8830 LDRH r0,[r6,#0] ; Data_Len
000032 4401 ADD r1,r1,r0
000034 60a1 STR r1,[r4,#8] ; Memory_Offset
;;;116 Transfer_Length -= Data_Len;
000036 68e1 LDR r1,[r4,#0xc] ; Transfer_Length
000038 1a08 SUBS r0,r1,r0
;;;117
;;;118 if (!(Transfer_Length % 512))
00003a 60e0 STR r0,[r4,#0xc] ; Transfer_Length
00003c 05c0 LSLS r0,r0,#23
00003e d108 BNE |L2.82|
;;;119 {
;;;120 Counter = 0;
000040 6065 STR r5,[r4,#4] ; Counter
;;;121 MSD_WriteBlock(Data_Buffer, Memory_Offset - 512, 512);
000042 68a1 LDR r1,[r4,#8] ; Memory_Offset
000044 f44f7200 MOV r2,#0x200
000048 f5a17100 SUB r1,r1,#0x200
00004c 4811 LDR r0,|L2.148|
00004e f7fffffe BL MSD_WriteBlock
|L2.82|
;;;122 }
;;;123
;;;124 CSW.dDataResidue -= Data_Len;
000052 4812 LDR r0,|L2.156|
000054 8832 LDRH r2,[r6,#0] ; Data_Len
000056 6881 LDR r1,[r0,#8] ; CSW
000058 1a89 SUBS r1,r1,r2
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -