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

📄 mass_mal.txt

📁 stm32.rar
💻 TXT
字号:
; generated by ARM/Thumb C/C++ Compiler with , RVCT3.1 [Build 942] for uVision
; commandline ArmCC [--split_sections --debug -c --asm --interleave -o.\Int_Flash\mass_mal.o --depend=.\Int_Flash\mass_mal.d --device=DARMSTM --apcs=interwork -O3 -I..\include -I..\..\..\..\..\INC\ST\STM32F10x\USB -Id:\Keil\ARM\INC\ST\STM32F10x -D__MICROLIB --omf_browse=.\Int_Flash\mass_mal.crf ..\source\mass_mal.c]
                          THUMB

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

                  MAL_Init PROC
;;;40     u16 MAL_Init(u8 lun)
;;;41     {
000000  b510              PUSH     {r4,lr}
;;;42       u16 status = MAL_OK;
;;;43     
;;;44       switch (lun)
000002  b958              CBNZ     r0,|L1.28|
;;;45       {
;;;46         case 0:
;;;47           status = SD_Init();
000004  f7fffffe          BL       SD_Init
000008  4604              MOV      r4,r0
;;;48           SD_EnableWideBusOperation(SDIO_BusWide_4b);
00000a  f44f6000          MOV      r0,#0x800
00000e  f7fffffe          BL       SD_EnableWideBusOperation
;;;49           SD_SetDeviceMode(SD_POLLING_MODE);
000012  2002              MOVS     r0,#2
000014  f7fffffe          BL       SD_SetDeviceMode
;;;50           break;
;;;51         case 1:
;;;52     //    status = NAND_Init();
;;;53     //    break;
;;;54         default:
;;;55           return MAL_FAIL;
;;;56       }
;;;57       return status;
000018  4620              MOV      r0,r4
;;;58     }
00001a  bd10              POP      {r4,pc}
                  |L1.28|
00001c  2001              MOVS     r0,#1                 ;55
00001e  bd10              POP      {r4,pc}
;;;59     /*******************************************************************************
                          ENDP


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

                  MAL_Write PROC
;;;66     u16 MAL_Write(u8 lun, u32 Memory_Offset, u32 *Writebuff, u16 Transfer_Length)
;;;67     {
000000  b510              PUSH     {r4,lr}
000002  460c              MOV      r4,r1
000004  4611              MOV      r1,r2
000006  461a              MOV      r2,r3
;;;68     
;;;69       switch (lun)
000008  b920              CBNZ     r0,|L2.20|
;;;70       {
;;;71         case 0:
;;;72           SD_WriteBlock(Memory_Offset, Writebuff, Transfer_Length);
00000a  4620              MOV      r0,r4
00000c  f7fffffe          BL       SD_WriteBlock
;;;73           break;
;;;74     
;;;75         case 1:
;;;76     //    NAND_Write(Memory_Offset, Writebuff, Transfer_Length);
;;;77     //    break;
;;;78     
;;;79         default:
;;;80           return MAL_FAIL;
;;;81       }
;;;82       return MAL_OK;
000010  2000              MOVS     r0,#0
;;;83     }
000012  bd10              POP      {r4,pc}
                  |L2.20|
000014  2001              MOVS     r0,#1                 ;80
000016  bd10              POP      {r4,pc}
;;;84     
                          ENDP


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

                  MAL_Read PROC
;;;92     u16 MAL_Read(u8 lun, u32 Memory_Offset, u32 *Readbuff, u16 Transfer_Length)
;;;93     {
000000  b510              PUSH     {r4,lr}
000002  460c              MOV      r4,r1
000004  4611              MOV      r1,r2
000006  461a              MOV      r2,r3
;;;94     
;;;95       switch (lun)
000008  b920              CBNZ     r0,|L3.20|
;;;96       {
;;;97         case 0:
;;;98     
;;;99           SD_ReadBlock(Memory_Offset, Readbuff, Transfer_Length);
00000a  4620              MOV      r0,r4
00000c  f7fffffe          BL       SD_ReadBlock
;;;100          break;
;;;101    
;;;102        case 1:
;;;103    //    NAND_Read(Memory_Offset, Readbuff, Transfer_Length);
;;;104    //    break;
;;;105    
;;;106        default:
;;;107          return MAL_FAIL;
;;;108      }
;;;109      return MAL_OK;
000010  2000              MOVS     r0,#0
;;;110    }
000012  bd10              POP      {r4,pc}
                  |L3.20|
000014  2001              MOVS     r0,#1                 ;107
000016  bd10              POP      {r4,pc}
;;;111    
                          ENDP


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

                  MAL_GetStatus PROC
;;;119    u16 MAL_GetStatus (u8 lun)
;;;120    {
000000  b530              PUSH     {r4,r5,lr}
000002  4d18              LDR      r5,|L4.100|
000004  b091              SUB      sp,sp,#0x44
;;;121      SD_CardInfo SD_cardinfo;
;;;122      u32 DeviceSizeMul = 0;
;;;123    //NAND_IDTypeDef NAND_ID;
;;;124    
;;;125    
;;;126      if (lun == 0)
000006  bb30              CBNZ     r0,|L4.86|
;;;127      {
;;;128        if (SD_Init() == SD_OK)
000008  f7fffffe          BL       SD_Init
00000c  282a              CMP      r0,#0x2a
00000e  d122              BNE      |L4.86|
;;;129        {
;;;130          SD_GetCardInfo(&SD_cardinfo);
000010  4668              MOV      r0,sp
000012  f7fffffe          BL       SD_GetCardInfo
;;;131          DeviceSizeMul = (SD_cardinfo.SD_csd.DeviceSizeMul + 2);
000016  f89d4014          LDRB     r4,[sp,#0x14]
;;;132          SD_SelectDeselect((u32) (SD_cardinfo.RCA << 16));
00001a  f8bd0042          LDRH     r0,[sp,#0x42]
00001e  1ca4              ADDS     r4,r4,#2              ;131
000020  0400              LSLS     r0,r0,#16
000022  f7fffffe          BL       SD_SelectDeselect
;;;133          Mass_Block_Count[0] = (SD_cardinfo.SD_csd.DeviceSize + 1) * (1 << DeviceSizeMul);
000026  f8bd000e          LDRH     r0,[sp,#0xe]
00002a  490f              LDR      r1,|L4.104|
00002c  1c40              ADDS     r0,r0,#1
00002e  40a0              LSLS     r0,r0,r4
;;;134          Mass_Block_Size[0]  = 1 << (SD_cardinfo.SD_csd.RdBlockLen);
000030  6008              STR      r0,[r1,#0]  ; Mass_Block_Count
000032  f89d2008          LDRB     r2,[sp,#8]
000036  2101              MOVS     r1,#1
000038  4091              LSLS     r1,r1,r2
00003a  4a0b              LDR      r2,|L4.104|
;;;135    
;;;136          Mass_Memory_Size[0] = Mass_Block_Count[0] * Mass_Block_Size[0];
00003c  4348              MULS     r0,r1,r0
00003e  3a08              SUBS     r2,r2,#8              ;134
000040  6011              STR      r1,[r2,#0]  ; Mass_Block_Size
000042  f1a20108          SUB      r1,r2,#8
;;;137          GPIO_SetBits(USB_LED_PORT, GPIO_Pin_7);
000046  6008              STR      r0,[r1,#0]  ; Mass_Memory_Size
000048  2180              MOVS     r1,#0x80
00004a  4628              MOV      r0,r5
00004c  f7fffffe          BL       GPIO_SetBits
;;;138          return MAL_OK;
000050  2000              MOVS     r0,#0
                  |L4.82|
;;;139        }
;;;140      }
;;;141    //else
;;;142    //{
;;;143    //  FSMC_NAND_ReadID(&NAND_ID);
;;;144    //  if (NAND_ID.Device_ID != 0 )
;;;145    //  {
;;;146    //    /* only one zone is used */
;;;147    //    Mass_Block_Count[1] = NAND_ZONE_SIZE * NAND_BLOCK_SIZE * NAND_MAX_ZONE ;
;;;148    //    Mass_Block_Size[1]  = NAND_PAGE_SIZE;
;;;149    //    Mass_Memory_Size[1] = (Mass_Block_Count[1] * Mass_Block_Size[1]);
;;;150    //    return MAL_OK;
;;;151    //  }
;;;152    //}
;;;153      GPIO_ResetBits(USB_LED_PORT, GPIO_Pin_7);
;;;154      return MAL_FAIL;
;;;155    }
000052  b011              ADD      sp,sp,#0x44
000054  bd30              POP      {r4,r5,pc}
                  |L4.86|
000056  2180              MOVS     r1,#0x80              ;153
000058  4628              MOV      r0,r5                 ;153
00005a  f7fffffe          BL       GPIO_ResetBits
00005e  2001              MOVS     r0,#1                 ;154
000060  e7f7              B        |L4.82|
;;;156    
                          ENDP

000062  0000              DCW      0x0000
                  |L4.100|
000064  40011c00          DCD      0x40011c00
                  |L4.104|
000068  00000010          DCD      ||.data||+0x10

                          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 + -