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

📄 memory.txt

📁 STM32F103ZET6+UCOSII+UCGUI源码
💻 TXT
字号:
; generated by ARM C/C++ Compiler with , RVCT4.0 [Build 524] 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..\..\Config -I..\..\GUI\Core -I..\..\GUI\Font -I..\..\GUI\ConvertColor -I..\..\GUI\AntiAlias -I..\..\GUI\ConvertMono -I..\..\GUI\JPEG -I..\..\GUI\MemDev -I..\..\GUI\MultiLayer -I..\..\GUI\Widget -I..\..\GUI\WM -IC:\Keil\ARM\INC\ST\STM32F10x ..\..\source\memory.c]
                          THUMB

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

                  Read_Memory PROC
;;;56     *******************************************************************************/
;;;57     void Read_Memory(u8 lun, u32 Memory_Offset, u32 Transfer_Length)
000000  b570              PUSH     {r4-r6,lr}
;;;58     {
;;;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
;;;62       {
;;;63         Offset = Memory_Offset * Mass_Block_Size[lun];
000008  4e29              LDR      r6,|L1.176|
00000a  b940              CBNZ     r0,|L1.30|
00000c  f8560025          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  e9c41003          STRD     r1,r0,[r4,#0xc]
000018  2001              MOVS     r0,#1
00001a  7020              STRB     r0,[r4,#0]
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  f8560025          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
000032  f7fffffe          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  f7fffffe          BL       UserToPMABufferCopy
;;;78           Block_Read_count = Mass_Block_Size[lun] - BULK_MAX_PACKET_SIZE;
000040  f8560025          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  f7fffffe          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  f7fffffe          BL       SetEPTxCount
;;;89         SetEPTxStatus(ENDP1, EP_TX_VALID);
00006e  2130              MOVS     r1,#0x30
000070  2001              MOVS     r0,#1
000072  f7fffffe          BL       SetEPTxStatus
;;;90         Offset += BULK_MAX_PACKET_SIZE;
000076  68e0              LDR      r0,[r4,#0xc]  ; Offset
;;;91         Length -= BULK_MAX_PACKET_SIZE;
;;;92     
;;;93         CSW.dDataResidue -= BULK_MAX_PACKET_SIZE;
000078  490f              LDR      r1,|L1.184|
00007a  3040              ADDS     r0,r0,#0x40           ;90
00007c  60e0              STR      r0,[r4,#0xc]          ;91  ; Offset
00007e  6920              LDR      r0,[r4,#0x10]         ;91  ; Length
000080  3840              SUBS     r0,r0,#0x40           ;91
000082  6120              STR      r0,[r4,#0x10]  ; Length
000084  6888              LDR      r0,[r1,#8]  ; CSW
000086  3840              SUBS     r0,r0,#0x40
;;;94         Led_RW_ON();
000088  6088              STR      r0,[r1,#8]  ; CSW
00008a  f7fffffe          BL       Led_RW_ON
                  |L1.142|
;;;95       }
;;;96       if (Length == 0)
00008e  6920              LDR      r0,[r4,#0x10]  ; Length
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
00009e  7011              STRB     r1,[r2,#0]
;;;102        TransferState = TXFR_IDLE;
0000a0  7020              STRB     r0,[r4,#0]
;;;103        Led_RW_OFF();
0000a2  e8bd4070          POP      {r4-r6,lr}
0000a6  f7ffbffe          B.W      Led_RW_OFF
                  |L1.170|
;;;104      }
;;;105    }
0000aa  bd70              POP      {r4-r6,pc}
;;;106    
                          ENDP

                  |L1.172|
                          DCD      ||.data||
                  |L1.176|
                          DCD      Mass_Block_Size
                  |L1.180|
                          DCD      ||.bss||
                  |L1.184|
                          DCD      ||CSW||
                  |L1.188|
                          DCD      Bot_State

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

                  Write_Memory PROC
;;;113    *******************************************************************************/
;;;114    void Write_Memory(u8 lun, u32 Memory_Offset, u32 Transfer_Length)
000000  e92d41f0          PUSH     {r4-r8,lr}
;;;115    {
;;;116    
;;;117      static u32 W_Offset, W_Length;
;;;118    
;;;119      u32 temp =  Counter + 64;
000004  4c2e              LDR      r4,|L2.192|
000006  68a3              LDR      r3,[r4,#8]  ; Counter
;;;120    
;;;121      if (TransferState == TXFR_IDLE )
000008  7825              LDRB     r5,[r4,#0]  ; TransferState
;;;122      {
;;;123        W_Offset = Memory_Offset * Mass_Block_Size[lun];
00000a  f8dfc0b8          LDR      r12,|L2.196|
00000e  3340              ADDS     r3,r3,#0x40           ;119
000010  f04f0800          MOV      r8,#0                 ;121
000014  b945              CBNZ     r5,|L2.40|
000016  f85c5020          LDR      r5,[r12,r0,LSL #2]
00001a  4369              MULS     r1,r5,r1
;;;124        W_Length = Transfer_Length * Mass_Block_Size[lun];
00001c  4355              MULS     r5,r2,r5
;;;125        TransferState = TXFR_ONGOING;
00001e  e9c41505          STRD     r1,r5,[r4,#0x14]
000022  2101              MOVS     r1,#1
000024  7021              STRB     r1,[r4,#0]
000026  e001              B        |L2.44|
                  |L2.40|
;;;126      }
;;;127    
;;;128      if (TransferState == TXFR_ONGOING )
000028  2d01              CMP      r5,#1
00002a  d134              BNE      |L2.150|
                  |L2.44|
;;;129      {
;;;130    
;;;131        for (Idx = 0 ; Counter < temp; Counter++)
00002c  46c6              MOV      lr,r8
;;;132        {
;;;133          *((u8 *)Data_Buffer + Counter) = Bulk_Data_Buff[Idx++];
00002e  4f26              LDR      r7,|L2.200|
000030  4d26              LDR      r5,|L2.204|
000032  f8c48020          STR      r8,[r4,#0x20]         ;131  ; Idx
000036  e008              B        |L2.74|
                  |L2.56|
000038  6a21              LDR      r1,[r4,#0x20]  ; Idx
00003a  68a6              LDR      r6,[r4,#8]  ; Counter
00003c  5c7a              LDRB     r2,[r7,r1]
00003e  1c49              ADDS     r1,r1,#1
000040  55aa              STRB     r2,[r5,r6]
000042  6221              STR      r1,[r4,#0x20]         ;131  ; Idx
000044  68a1              LDR      r1,[r4,#8]            ;131  ; Counter
000046  1c49              ADDS     r1,r1,#1              ;131
000048  60a1              STR      r1,[r4,#8]            ;131  ; Counter
                  |L2.74|
00004a  68a1              LDR      r1,[r4,#8]            ;131  ; Counter
00004c  4299              CMP      r1,r3                 ;131
00004e  d3f3              BCC      |L2.56|
;;;134        }
;;;135    
;;;136        W_Offset += Data_Len;
000050  4f1f              LDR      r7,|L2.208|
000052  6962              LDR      r2,[r4,#0x14]  ; W_Offset
000054  8839              LDRH     r1,[r7,#0]  ; Data_Len
000056  4623              MOV      r3,r4
000058  1855              ADDS     r5,r2,r1
;;;137        W_Length -= Data_Len;
00005a  6165              STR      r5,[r4,#0x14]  ; W_Offset
00005c  69a2              LDR      r2,[r4,#0x18]  ; W_Length
00005e  1a52              SUBS     r2,r2,r1
;;;138    
;;;139        if (!(W_Length % Mass_Block_Size[lun]))
000060  61a2              STR      r2,[r4,#0x18]  ; W_Length
000062  f85c1020          LDR      r1,[r12,r0,LSL #2]
000066  fbb2f6f1          UDIV     r6,r2,r1
00006a  fb012216          MLS      r2,r1,r6,r2
00006e  b932              CBNZ     r2,|L2.126|
;;;140        {
;;;141          Counter = 0;
000070  f8c3e008          STR      lr,[r3,#8]  ; Counter
;;;142          MAL_Write(lun ,
000074  b28b              UXTH     r3,r1
000076  1a69              SUBS     r1,r5,r1
000078  4a14              LDR      r2,|L2.204|
00007a  f7fffffe          BL       MAL_Write
                  |L2.126|
;;;143                    W_Offset - Mass_Block_Size[lun],
;;;144                    Data_Buffer,
;;;145                    Mass_Block_Size[lun]);
;;;146        }
;;;147    
;;;148        CSW.dDataResidue -= Data_Len;
00007e  4815              LDR      r0,|L2.212|
000080  883a              LDRH     r2,[r7,#0]  ; Data_Len
000082  6881              LDR      r1,[r0,#8]  ; CSW
000084  1a89              SUBS     r1,r1,r2
;;;149        SetEPRxStatus(ENDP2, EP_RX_VALID); /* enable the next transaction*/
000086  6081              STR      r1,[r0,#8]  ; CSW
000088  f44f5140          MOV      r1,#0x3000
00008c  2002              MOVS     r0,#2
00008e  f7fffffe          BL       SetEPRxStatus
;;;150    
;;;151        Led_RW_ON();
000092  f7fffffe          BL       Led_RW_ON
                  |L2.150|
;;;152      }
;;;153    
;;;154      if ((W_Length == 0) || (Bot_State == BOT_CSW_Send))
000096  69a0              LDR      r0,[r4,#0x18]  ; W_Length
000098  b118              CBZ      r0,|L2.162|
00009a  480f              LDR      r0,|L2.216|
00009c  7800              LDRB     r0,[r0,#0]  ; Bot_State
00009e  2804              CMP      r0,#4
0000a0  d10b              BNE      |L2.186|
                  |L2.162|
;;;155      {
;;;156        Counter = 0;
0000a2  4645              MOV      r5,r8
0000a4  f8c48008          STR      r8,[r4,#8]  ; Counter
;;;157        Set_CSW (CSW_CMD_PASSED, SEND_CSW_ENABLE);
0000a8  2101              MOVS     r1,#1
0000aa  2000              MOVS     r0,#0
0000ac  f7fffffe          BL       Set_CSW
;;;158        TransferState = TXFR_IDLE;
0000b0  7025              STRB     r5,[r4,#0]
;;;159        Led_RW_OFF();
0000b2  e8bd41f0          POP      {r4-r8,lr}
0000b6  f7ffbffe          B.W      Led_RW_OFF
                  |L2.186|
;;;160      }
;;;161    }
0000ba  e8bd81f0          POP      {r4-r8,pc}
;;;162    
                          ENDP

0000be  0000              DCW      0x0000
                  |L2.192|
                          DCD      ||.data||
                  |L2.196|
                          DCD      Mass_Block_Size
                  |L2.200|
                          DCD      Bulk_Data_Buff
                  |L2.204|
                          DCD      ||.bss||
                  |L2.208|
                          DCD      Data_Len
                  |L2.212|
                          DCD      ||CSW||
                  |L2.216|
                          DCD      Bot_State

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

                  Data_Buffer
                          %        512

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

                  TransferState
000000  00000000          DCB      0x00,0x00,0x00,0x00
                  Block_Read_count
                          DCD      0x00000000
                  Counter
                          DCD      0x00000000
                  Offset
                          DCD      0x00000000
                  Length
                          DCD      0x00000000
                  W_Offset
                          DCD      0x00000000
                  W_Length
                          DCD      0x00000000
                  Block_offset
                          DCD      0x00000000
                  Idx
                          DCD      0x00000000

⌨️ 快捷键说明

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