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

📄 memory.txt

📁 STM32外部SRAM用作datamemery的程序 开发环境MDK
💻 TXT
字号:
; generated by ARM/Thumb C/C++ Compiler with , RVCT3.1 [Build 934] for uVision
; commandline ArmCC [--split_sections --debug -c --asm --interleave -o.\Obj\memory.o --depend=.\Obj\memory.d --device=DARMSTM --apcs=interwork -O3 -I..\..\include -I..\..\..\FWLib\library\inc -I..\..\..\USBLib\library\inc -I..\..\SRAM -I"D:\Program Files\MDK KEIL\ARM\INC\ST\STM32F10x" -D__MICROLIB --omf_browse=.\Obj\memory.crf ..\..\source\memory.c]
                          THUMB

                          AREA ||i.Read_Memory||, CODE, READONLY, ALIGN=2

                  Read_Memory PROC
;;;57     void Read_Memory(u8 lun, u32 Memory_Offset, u32 Transfer_Length)
;;;58     {
000000  b570              PUSH     {r4-r6,lr}
;;;59       static u32 Offset, Length;
;;;60     
;;;61       if (TransferState == TXFR_IDLE )
000002  4c2a              LDR      r4,|L1.172|
000004  4605              MOV      r5,r0                 ;58
000006  7820              LDRB     r0,[r4,#0]  ; TransferState
000008  4e29              LDR      r6,|L1.176|
00000a  b940              CBNZ     r0,|L1.30|
;;;62       {
;;;63         Offset = Memory_Offset * Mass_Block_Size[lun];
00000c  f856f856          LDR      r0,[r6,r5,LSL #2]
000010  4341              MULS     r1,r0,r1
;;;64         Length = Transfer_Length * Mass_Block_Size[lun];
000012  4350              MULS     r0,r2,r0
;;;65         TransferState = TXFR_ONGOING;
000014  e9c4e9c4          STRD     r1,r0,[r4,#0xc]
000018  2001              MOVS     r0,#1
00001a  7020              STRB     r0,[r4,#0]  ; TransferState
00001c  e001              B        |L1.34|
                  |L1.30|
;;;66       }
;;;67     
;;;68       if (TransferState == TXFR_ONGOING )
00001e  2801              CMP      r0,#1
000020  d135              BNE      |L1.142|
                  |L1.34|
;;;69       {
;;;70         if (!Block_Read_count)
000022  6860              LDR      r0,[r4,#4]  ; Block_Read_count
000024  b990              CBNZ     r0,|L1.76|
;;;71         {
;;;72           MAL_Read(lun ,
000026  f856f856          LDR      r0,[r6,r5,LSL #2]
00002a  4a22              LDR      r2,|L1.180|
00002c  b283              UXTH     r3,r0
00002e  4628              MOV      r0,r5
000030  68e1              LDR      r1,[r4,#0xc]  ; Offset@Read_Memory_0
000032  f7fff7ff          BL       MAL_Read
;;;73                    Offset ,
;;;74                    Data_Buffer,
;;;75                    Mass_Block_Size[lun]);
;;;76     
;;;77           UserToPMABufferCopy((u8 *)Data_Buffer, ENDP1_TXADDR, BULK_MAX_PACKET_SIZE);
000036  2240              MOVS     r2,#0x40
000038  2198              MOVS     r1,#0x98
00003a  481e              LDR      r0,|L1.180|
00003c  f7fff7ff          BL       UserToPMABufferCopy
;;;78           Block_Read_count = Mass_Block_Size[lun] - BULK_MAX_PACKET_SIZE;
000040  f856f856          LDR      r0,[r6,r5,LSL #2]
000044  3840              SUBS     r0,r0,#0x40
000046  6060              STR      r0,[r4,#4]  ; Block_Read_count
;;;79           Block_offset = BULK_MAX_PACKET_SIZE;
000048  2040              MOVS     r0,#0x40
00004a  e00b              B        |L1.100|
                  |L1.76|
;;;80         }
;;;81         else
;;;82         {
;;;83           UserToPMABufferCopy((u8 *)Data_Buffer + Block_offset, ENDP1_TXADDR, BULK_MAX_PACKET_SIZE);
00004c  4819              LDR      r0,|L1.180|
00004e  69e1              LDR      r1,[r4,#0x1c]  ; Block_offset
000050  2240              MOVS     r2,#0x40
000052  4408              ADD      r0,r0,r1
000054  2198              MOVS     r1,#0x98
000056  f7fff7ff          BL       UserToPMABufferCopy
;;;84           Block_Read_count -= BULK_MAX_PACKET_SIZE;
00005a  6860              LDR      r0,[r4,#4]  ; Block_Read_count
00005c  3840              SUBS     r0,r0,#0x40
00005e  6060              STR      r0,[r4,#4]  ; Block_Read_count
;;;85           Block_offset += BULK_MAX_PACKET_SIZE;
000060  69e0              LDR      r0,[r4,#0x1c]  ; Block_offset
000062  3040              ADDS     r0,r0,#0x40
                  |L1.100|
000064  61e0              STR      r0,[r4,#0x1c]  ; Block_offset
;;;86         }
;;;87     
;;;88         SetEPTxCount(ENDP1, BULK_MAX_PACKET_SIZE);
000066  2140              MOVS     r1,#0x40
000068  2001              MOVS     r0,#1
00006a  f7fff7ff          BL       SetEPTxCount
;;;89         SetEPTxStatus(ENDP1, EP_TX_VALID);
00006e  2130              MOVS     r1,#0x30
000070  2001              MOVS     r0,#1
000072  f7fff7ff          BL       SetEPTxStatus
;;;90         Offset += BULK_MAX_PACKET_SIZE;
000076  68e0              LDR      r0,[r4,#0xc]  ; Offset@Read_Memory_0
000078  3040              ADDS     r0,r0,#0x40
;;;91         Length -= BULK_MAX_PACKET_SIZE;
00007a  60e0              STR      r0,[r4,#0xc]  ; Offset@Read_Memory_0
00007c  6920              LDR      r0,[r4,#0x10]  ; Length@Read_Memory_1
00007e  3840              SUBS     r0,r0,#0x40
;;;92     
;;;93         CSW.dDataResidue -= BULK_MAX_PACKET_SIZE;
000080  6120              STR      r0,[r4,#0x10]  ; Length@Read_Memory_1
000082  480d              LDR      r0,|L1.184|
000084  6881              LDR      r1,[r0,#8]  ; CSW
000086  3940              SUBS     r1,r1,#0x40
;;;94         Led_RW_ON();
000088  6081              STR      r1,[r0,#8]  ; CSW
00008a  f7fff7ff          BL       Led_RW_ON
                  |L1.142|
;;;95       }
;;;96       if (Length == 0)
00008e  6920              LDR      r0,[r4,#0x10]  ; Length@Read_Memory_1
000090  2800              CMP      r0,#0
000092  d10a              BNE      |L1.170|
;;;97       {
;;;98         Block_Read_count = 0;
000094  6060              STR      r0,[r4,#4]  ; Block_Read_count
;;;99         Block_offset = 0;
000096  61e0              STR      r0,[r4,#0x1c]  ; Block_offset
;;;100        Offset = 0;
;;;101        Bot_State = BOT_DATA_IN_LAST;
000098  4a08              LDR      r2,|L1.188|
00009a  2103              MOVS     r1,#3
00009c  60e0              STR      r0,[r4,#0xc]  ; Offset@Read_Memory_0
00009e  7011              STRB     r1,[r2,#0]  ; Bot_State
;;;102        TransferState = TXFR_IDLE;
0000a0  7020              STRB     r0,[r4,#0]  ; TransferState
;;;103        Led_RW_OFF();
0000a2  e8bde8bd          POP      {r4-r6,lr}
0000a6  f7fff7ff          B.W      Led_RW_OFF
                  |L1.170|
;;;104      }
;;;105    }
0000aa  bd70              POP      {r4-r6,pc}
;;;106    
                          ENDP

                  |L1.172|
0000ac  00000000          DCD      ||.data||
                  |L1.176|
0000b0  00000000          DCD      Mass_Block_Size
                  |L1.180|
0000b4  00000000          DCD      ||.bss||
                  |L1.184|
0000b8  00000000          DCD      ||CSW||
                  |L1.188|
0000bc  00000000          DCD      Bot_State

                          AREA ||i.Write_Memory||, CODE, READONLY, ALIGN=2

                  Write_Memory PROC
;;;114    void Write_Memory(u8 lun, u32 Memory_Offset, u32 Transfer_Length)
;;;115    {
000000  e92de92d          PUSH     {r4-r8,lr}
;;;116    
;;;117      static u32 W_Offset, W_Length;
;;;118    
;;;119      u32 temp =  Counter + 64;
000004  4c2c              LDR      r4,|L2.184|
000006  68a7              LDR      r7,[r4,#8]  ; Counter
;;;120    
;;;121      if (TransferState == TXFR_IDLE )
000008  7823              LDRB     r3,[r4,#0]  ; TransferState
00000a  3740              ADDS     r7,r7,#0x40           ;119
00000c  f8dff8df          LDR      r12,|L2.188|
000010  2600              MOVS     r6,#0                 ;119
000012  b943              CBNZ     r3,|L2.38|
;;;122      {
;;;123        W_Offset = Memory_Offset * Mass_Block_Size[lun];
000014  f85cf85c          LDR      r3,[r12,r0,LSL #2]
000018  4359              MULS     r1,r3,r1
;;;124        W_Length = Transfer_Length * Mass_Block_Size[lun];
00001a  4353              MULS     r3,r2,r3
;;;125        TransferState = TXFR_ONGOING;
00001c  e9c4e9c4          STRD     r1,r3,[r4,#0x14]
000020  2101              MOVS     r1,#1
000022  7021              STRB     r1,[r4,#0]  ; TransferState
000024  e001              B        |L2.42|
                  |L2.38|
;;;126      }
;;;127    
;;;128      if (TransferState == TXFR_ONGOING )
000026  2b01              CMP      r3,#1
000028  d133              BNE      |L2.146|
                  |L2.42|
;;;129      {
;;;130    
;;;131        for (Idx = 0 ; Counter < temp; Counter++)
00002a  f8dff8df          LDR      lr,|L2.192|
00002e  4a25              LDR      r2,|L2.196|
000030  6226              STR      r6,[r4,#0x20]  ; Idx
000032  e009              B        |L2.72|
                  |L2.52|
;;;132        {
;;;133          *((u8 *)Data_Buffer + Counter) = Bulk_Data_Buff[Idx++];
000034  6a21              LDR      r1,[r4,#0x20]  ; Idx
000036  68a5              LDR      r5,[r4,#8]  ; Counter
000038  f81ef81e          LDRB     r3,[lr,r1]
00003c  1c49              ADDS     r1,r1,#1
00003e  5553              STRB     r3,[r2,r5]
000040  6221              STR      r1,[r4,#0x20]         ;131  ; Idx
000042  68a1              LDR      r1,[r4,#8]            ;131  ; Counter
000044  1c49              ADDS     r1,r1,#1              ;131
000046  60a1              STR      r1,[r4,#8]            ;131  ; Counter
                  |L2.72|
000048  68a1              LDR      r1,[r4,#8]            ;131  ; Counter
00004a  42b9              CMP      r1,r7                 ;131
00004c  d3f2              BCC      |L2.52|
;;;134        }
;;;135    
;;;136        W_Offset += Data_Len;
00004e  4d1e              LDR      r5,|L2.200|
000050  6962              LDR      r2,[r4,#0x14]  ; W_Offset@Write_Memory_0
000052  8829              LDRH     r1,[r5,#0]  ; Data_Len
000054  4623              MOV      r3,r4
000056  1857              ADDS     r7,r2,r1
;;;137        W_Length -= Data_Len;
000058  6167              STR      r7,[r4,#0x14]  ; W_Offset@Write_Memory_0
00005a  69a2              LDR      r2,[r4,#0x18]  ; W_Length@Write_Memory_1
00005c  1a52              SUBS     r2,r2,r1
;;;138    
;;;139        if (!(W_Length % Mass_Block_Size[lun]))
00005e  61a2              STR      r2,[r4,#0x18]  ; W_Length@Write_Memory_1
000060  f85cf85c          LDR      r1,[r12,r0,LSL #2]
000064  fbb2fbb2          UDIV     r12,r2,r1
000068  fb01fb01          MLS      r2,r1,r12,r2
00006c  b92a              CBNZ     r2,|L2.122|
;;;140        {
;;;141          Counter = 0;
00006e  609e              STR      r6,[r3,#8]  ; Counter
;;;142          MAL_Write(lun ,
000070  b28b              UXTH     r3,r1
000072  1a79              SUBS     r1,r7,r1
000074  4a13              LDR      r2,|L2.196|
000076  f7fff7ff          BL       MAL_Write
                  |L2.122|
;;;143                    W_Offset - Mass_Block_Size[lun],
;;;144                    Data_Buffer,
;;;145                    Mass_Block_Size[lun]);
;;;146        }
;;;147    
;;;148        CSW.dDataResidue -= Data_Len;
00007a  4814              LDR      r0,|L2.204|
00007c  882a              LDRH     r2,[r5,#0]  ; Data_Len
00007e  6881              LDR      r1,[r0,#8]  ; CSW
000080  1a89              SUBS     r1,r1,r2
;;;149        SetEPRxStatus(ENDP2, EP_RX_VALID); /* enable the next transaction*/
000082  6081              STR      r1,[r0,#8]  ; CSW
000084  f44ff44f          MOV      r1,#0x3000
000088  2002              MOVS     r0,#2
00008a  f7fff7ff          BL       SetEPRxStatus
;;;150    
;;;151        Led_RW_ON();
00008e  f7fff7ff          BL       Led_RW_ON
                  |L2.146|
;;;152      }
;;;153    
;;;154      if ((W_Length == 0) || (Bot_State == BOT_CSW_Send))
000092  69a0              LDR      r0,[r4,#0x18]  ; W_Length@Write_Memory_1
000094  b118              CBZ      r0,|L2.158|
000096  480e              LDR      r0,|L2.208|
000098  7800              LDRB     r0,[r0,#0]  ; Bot_State
00009a  2804              CMP      r0,#4
00009c  d109              BNE      |L2.178|
                  |L2.158|
;;;155      {
;;;156        Counter = 0;
00009e  60a6              STR      r6,[r4,#8]  ; Counter
;;;157        Set_CSW (CSW_CMD_PASSED, SEND_CSW_ENABLE);
0000a0  2101              MOVS     r1,#1
0000a2  2000              MOVS     r0,#0
0000a4  f7fff7ff          BL       Set_CSW
;;;158        TransferState = TXFR_IDLE;
0000a8  7026              STRB     r6,[r4,#0]  ; TransferState
;;;159        Led_RW_OFF();
0000aa  e8bde8bd          POP      {r4-r8,lr}
0000ae  f7fff7ff          B.W      Led_RW_OFF
                  |L2.178|
;;;160      }
;;;161    }
0000b2  e8bde8bd          POP      {r4-r8,pc}
;;;162    
                          ENDP

0000b6  0000              DCW      0x0000
                  |L2.184|
0000b8  00000000          DCD      ||.data||
                  |L2.188|
0000bc  00000000          DCD      Mass_Block_Size
                  |L2.192|
0000c0  00000000          DCD      Bulk_Data_Buff
                  |L2.196|
0000c4  00000000          DCD      ||.bss||
                  |L2.200|
0000c8  00000000          DCD      Data_Len
                  |L2.204|
0000cc  00000000          DCD      ||CSW||
                  |L2.208|
0000d0  00000000          DCD      Bot_State

                          AREA ||.data||, DATA, ALIGN=2

                  TransferState
000000  00000000          DCB      0x00,0x00,0x00,0x00
                  Block_Read_count
000004  00000000          DCD      0x00000000
                  Counter
000008  00000000          DCD      0x00000000
                  ||Offset@Read_Memory_0||
00000c  00000000          DCD      0x00000000
                  ||Length@Read_Memory_1||
000010  00000000          DCD      0x00000000
                  ||W_Offset@Write_Memory_0||
000014  00000000          DCD      0x00000000
                  ||W_Length@Write_Memory_1||
000018  00000000          DCD      0x00000000
                  Block_offset
00001c  00000000          DCD      0x00000000
                  Idx
000020  00000000          DCD      0x00000000

                          AREA ||.bss||, DATA, NOINIT, ALIGN=2

                  Data_Buffer
                          %        512

⌨️ 快捷键说明

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