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

📄 mass_mal.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\mass_mal.o --depend=.\Obj\mass_mal.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\mass_mal.c]
                          THUMB

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

                  MAL_GetStatus PROC
;;;118    *******************************************************************************/
;;;119    u16 MAL_GetStatus (u8 lun)
000000  e92d41f0          PUSH     {r4-r8,lr}
;;;120    {
;;;121      SD_CardInfo SD_cardinfo;
;;;122      u32 DeviceSizeMul = 0;
;;;123      NAND_IDTypeDef NAND_ID;
;;;124    
;;;125    
;;;126      if (lun == 0)
;;;127      {
;;;128        if (SD_Init() == SD_OK)
;;;129        {
;;;130          SD_GetCardInfo(&SD_cardinfo);
;;;131          DeviceSizeMul = (SD_cardinfo.SD_csd.DeviceSizeMul + 2);
;;;132          SD_SelectDeselect((u32) (SD_cardinfo.RCA << 16));
;;;133          Mass_Block_Count[0] = (SD_cardinfo.SD_csd.DeviceSize + 1) * (1 << DeviceSizeMul);
000004  4d1f              LDR      r5,|L1.132|
;;;134          Mass_Block_Size[0]  = 1 << (SD_cardinfo.SD_csd.RdBlockLen);
;;;135    
;;;136          Mass_Memory_Size[0] = Mass_Block_Count[0] * Mass_Block_Size[0];
;;;137          GPIO_SetBits(USB_LED_PORT, GPIO_Pin_7);
000006  f8df8080          LDR      r8,|L1.136|
00000a  b092              SUB      sp,sp,#0x48           ;120
00000c  f1a50608          SUB      r6,r5,#8              ;134
000010  f1a50710          SUB      r7,r5,#0x10           ;136
000014  b9f8              CBNZ     r0,|L1.86|
000016  f7fffffe          BL       SD_Init
00001a  282a              CMP      r0,#0x2a              ;128
00001c  d12c              BNE      |L1.120|
00001e  a801              ADD      r0,sp,#4              ;130
000020  f7fffffe          BL       SD_GetCardInfo
000024  f89d4018          LDRB     r4,[sp,#0x18]         ;131
000028  f8bd0046          LDRH     r0,[sp,#0x46]         ;132
00002c  1ca4              ADDS     r4,r4,#2              ;131
00002e  0400              LSLS     r0,r0,#16             ;132
000030  f7fffffe          BL       SD_SelectDeselect
000034  f8bd0012          LDRH     r0,[sp,#0x12]         ;133
000038  1c40              ADDS     r0,r0,#1              ;133
00003a  40a0              LSLS     r0,r0,r4              ;133
00003c  6028              STR      r0,[r5,#0]            ;134  ; Mass_Block_Count
00003e  f89d200c          LDRB     r2,[sp,#0xc]          ;134
000042  2101              MOVS     r1,#1                 ;134
000044  4091              LSLS     r1,r1,r2              ;134
000046  4348              MULS     r0,r1,r0              ;136
000048  6031              STR      r1,[r6,#0]            ;136  ; Mass_Block_Size
00004a  6038              STR      r0,[r7,#0]  ; Mass_Memory_Size
00004c  2180              MOVS     r1,#0x80
00004e  4640              MOV      r0,r8
000050  f7fffffe          BL       GPIO_SetBits
;;;138          return MAL_OK;
000054  e00c              B        |L1.112|
                  |L1.86|
;;;139        }
;;;140      }
;;;141      else
;;;142      {
;;;143        FSMC_NAND_ReadID(&NAND_ID);
000056  4668              MOV      r0,sp
000058  f7fffffe          BL       FSMC_NAND_ReadID
;;;144        if (NAND_ID.Device_ID != 0 )
00005c  f89d0001          LDRB     r0,[sp,#1]
000060  b150              CBZ      r0,|L1.120|
;;;145        {
;;;146          /* only one zone is used */
;;;147          Mass_Block_Count[1] = NAND_ZONE_SIZE * NAND_BLOCK_SIZE * NAND_MAX_ZONE ;
000062  f44f3000          MOV      r0,#0x20000
;;;148          Mass_Block_Size[1]  = NAND_PAGE_SIZE;
000066  6068              STR      r0,[r5,#4]  ; Mass_Block_Count
000068  1200              ASRS     r0,r0,#8
;;;149          Mass_Memory_Size[1] = (Mass_Block_Count[1] * Mass_Block_Size[1]);
00006a  6070              STR      r0,[r6,#4]  ; Mass_Block_Size
00006c  0440              LSLS     r0,r0,#17
00006e  6078              STR      r0,[r7,#4]  ; Mass_Memory_Size
                  |L1.112|
;;;150          return MAL_OK;
000070  2000              MOVS     r0,#0
                  |L1.114|
;;;151        }
;;;152      }
;;;153      GPIO_ResetBits(USB_LED_PORT, GPIO_Pin_7);
;;;154      return MAL_FAIL;
;;;155    }
000072  b012              ADD      sp,sp,#0x48
000074  e8bd81f0          POP      {r4-r8,pc}
                  |L1.120|
000078  2180              MOVS     r1,#0x80              ;153
00007a  4640              MOV      r0,r8                 ;153
00007c  f7fffffe          BL       GPIO_ResetBits
000080  2001              MOVS     r0,#1                 ;154
000082  e7f6              B        |L1.114|
;;;156    
                          ENDP

                  |L1.132|
                          DCD      ||.data||+0x10
                  |L1.136|
                          DCD      0x40011c00

                          AREA ||i.MAL_Init||, CODE, READONLY, ALIGN=1

                  MAL_Init PROC
;;;39     *******************************************************************************/
;;;40     u16 MAL_Init(u8 lun)
000000  b510              PUSH     {r4,lr}
;;;41     {
;;;42       u16 status = MAL_OK;
;;;43     
;;;44       switch (lun)
000002  b128              CBZ      r0,|L2.16|
000004  2801              CMP      r0,#1
000006  d10f              BNE      |L2.40|
;;;45       {
;;;46         case 0:
;;;47           status = SD_Init();
;;;48           SD_EnableWideBusOperation(SDIO_BusWide_4b);
;;;49           SD_SetDeviceMode(SD_POLLING_MODE);
;;;50           break;
;;;51         case 1:
;;;52           status = NAND_Init();
000008  f7fffffe          BL       NAND_Init
00000c  4604              MOV      r4,r0
;;;53           break;
00000e  e009              B        |L2.36|
                  |L2.16|
000010  f7fffffe          BL       SD_Init
000014  4604              MOV      r4,r0                 ;47
000016  f44f6000          MOV      r0,#0x800             ;48
00001a  f7fffffe          BL       SD_EnableWideBusOperation
00001e  2002              MOVS     r0,#2                 ;49
000020  f7fffffe          BL       SD_SetDeviceMode
                  |L2.36|
;;;54         default:
;;;55           return MAL_FAIL;
;;;56       }
;;;57       return status;
000024  4620              MOV      r0,r4
;;;58     }
000026  bd10              POP      {r4,pc}
                  |L2.40|
000028  2001              MOVS     r0,#1                 ;55
00002a  bd10              POP      {r4,pc}
;;;59     /*******************************************************************************
                          ENDP


                          AREA ||i.MAL_Read||, CODE, READONLY, ALIGN=1

                  MAL_Read PROC
;;;91     *******************************************************************************/
;;;92     u16 MAL_Read(u8 lun, u32 Memory_Offset, u32 *Readbuff, u16 Transfer_Length)
000000  b510              PUSH     {r4,lr}
;;;93     {
000002  0004              MOVS     r4,r0
000004  4608              MOV      r0,r1
000006  4611              MOV      r1,r2
000008  461a              MOV      r2,r3
;;;94     
;;;95       switch (lun)
00000a  d004              BEQ      |L3.22|
00000c  2c01              CMP      r4,#1
00000e  d106              BNE      |L3.30|
;;;96       {
;;;97         case 0:
;;;98     
;;;99           SD_ReadBlock(Memory_Offset, Readbuff, Transfer_Length);
;;;100          break;
;;;101    
;;;102        case 1:
;;;103          NAND_Read(Memory_Offset, Readbuff, Transfer_Length);
000010  f7fffffe          BL       NAND_Read
;;;104          break;
000014  e001              B        |L3.26|
                  |L3.22|
000016  f7fffffe          BL       SD_ReadBlock
                  |L3.26|
;;;105    
;;;106        default:
;;;107          return MAL_FAIL;
;;;108      }
;;;109      return MAL_OK;
00001a  2000              MOVS     r0,#0
;;;110    }
00001c  bd10              POP      {r4,pc}
                  |L3.30|
00001e  2001              MOVS     r0,#1                 ;107
000020  bd10              POP      {r4,pc}
;;;111    
                          ENDP


                          AREA ||i.MAL_Write||, CODE, READONLY, ALIGN=1

                  MAL_Write PROC
;;;65     *******************************************************************************/
;;;66     u16 MAL_Write(u8 lun, u32 Memory_Offset, u32 *Writebuff, u16 Transfer_Length)
000000  b510              PUSH     {r4,lr}
;;;67     {
000002  0004              MOVS     r4,r0
000004  4608              MOV      r0,r1
000006  4611              MOV      r1,r2
000008  461a              MOV      r2,r3
;;;68     
;;;69       switch (lun)
00000a  d004              BEQ      |L4.22|
00000c  2c01              CMP      r4,#1
00000e  d106              BNE      |L4.30|
;;;70       {
;;;71         case 0:
;;;72           SD_WriteBlock(Memory_Offset, Writebuff, Transfer_Length);
;;;73           break;
;;;74     
;;;75         case 1:
;;;76           NAND_Write(Memory_Offset, Writebuff, Transfer_Length);
000010  f7fffffe          BL       NAND_Write
;;;77           break;
000014  e001              B        |L4.26|
                  |L4.22|
000016  f7fffffe          BL       SD_WriteBlock
                  |L4.26|
;;;78     
;;;79         default:
;;;80           return MAL_FAIL;
;;;81       }
;;;82       return MAL_OK;
00001a  2000              MOVS     r0,#0
;;;83     }
00001c  bd10              POP      {r4,pc}
                  |L4.30|
00001e  2001              MOVS     r0,#1                 ;80
000020  bd10              POP      {r4,pc}
;;;84     
                          ENDP


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

                  Mass_Memory_Size
                          %        8
                  Mass_Block_Size
                          %        8
                  Mass_Block_Count
                          %        8

⌨️ 快捷键说明

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