📄 mass_mal.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\mass_mal.o --depend=.\Obj\mass_mal.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\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 b128 CBZ r0,|L1.16|
000004 2801 CMP r0,#1
000006 d10f BNE |L1.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 f7fff7ff BL NAND_Init
00000c 4604 MOV r4,r0
;;;53 break;
00000e e009 B |L1.36|
|L1.16|
000010 f7fff7ff BL SD_Init
000014 4604 MOV r4,r0 ;47
000016 f44ff44f MOV r0,#0x800 ;48
00001a f7fff7ff BL SD_EnableWideBusOperation
00001e 2002 MOVS r0,#2 ;49
000020 f7fff7ff BL SD_SetDeviceMode
|L1.36|
;;;54 default:
;;;55 return MAL_FAIL;
;;;56 }
;;;57 return status;
000024 4620 MOV r0,r4
;;;58 }
000026 bd10 POP {r4,pc}
|L1.40|
000028 2001 MOVS r0,#1 ;55
00002a 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 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 |L2.22|
00000c 2c01 CMP r4,#1
00000e d106 BNE |L2.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 f7fff7ff BL NAND_Write
;;;77 break;
000014 e001 B |L2.26|
|L2.22|
000016 f7fff7ff BL SD_WriteBlock
|L2.26|
;;;78
;;;79 default:
;;;80 return MAL_FAIL;
;;;81 }
;;;82 return MAL_OK;
00001a 2000 MOVS r0,#0
;;;83 }
00001c bd10 POP {r4,pc}
|L2.30|
00001e 2001 MOVS r0,#1 ;80
000020 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 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 f7fff7ff BL NAND_Read
;;;104 break;
000014 e001 B |L3.26|
|L3.22|
000016 f7fff7ff 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_GetStatus||, CODE, READONLY, ALIGN=2
MAL_GetStatus PROC
;;;119 u16 MAL_GetStatus (u8 lun)
;;;120 {
000000 e92de92d PUSH {r4-r8,lr}
000004 f8dff8df LDR r8,|L4.136|
000008 4e20 LDR r6,|L4.140|
00000a f1a8f1a8 SUB r7,r8,#8
00000e b092 SUB sp,sp,#0x48
000010 f1a7f1a7 SUB r5,r7,#8
;;;121 SD_CardInfo SD_cardinfo;
;;;122 u32 DeviceSizeMul = 0;
;;;123 NAND_IDTypeDef NAND_ID;
;;;124
;;;125
;;;126 if (lun == 0)
000014 bb00 CBNZ r0,|L4.88|
;;;127 {
;;;128 if (SD_Init() == SD_OK)
000016 f7fff7ff BL SD_Init
00001a 282a CMP r0,#0x2a
00001c d12e BNE |L4.124|
;;;129 {
;;;130 SD_GetCardInfo(&SD_cardinfo);
00001e a801 ADD r0,sp,#4
000020 f7fff7ff BL SD_GetCardInfo
;;;131 DeviceSizeMul = (SD_cardinfo.SD_csd.DeviceSizeMul + 2);
000024 f89df89d LDRB r4,[sp,#0x18]
;;;132 SD_SelectDeselect((u32) (SD_cardinfo.RCA << 16));
000028 f8bdf8bd LDRH r0,[sp,#0x46]
00002c 1ca4 ADDS r4,r4,#2 ;131
00002e 0400 LSLS r0,r0,#16
000030 f7fff7ff BL SD_SelectDeselect
;;;133 Mass_Block_Count[0] = (SD_cardinfo.SD_csd.DeviceSize + 1) * (1 << DeviceSizeMul);
000034 f8bdf8bd LDRH r0,[sp,#0x12]
000038 1c40 ADDS r0,r0,#1
00003a 40a0 LSLS r0,r0,r4
;;;134 Mass_Block_Size[0] = 1 << (SD_cardinfo.SD_csd.RdBlockLen);
00003c f8c8f8c8 STR r0,[r8,#0] ; Mass_Block_Count
000040 f89df89d LDRB r2,[sp,#0xc]
000044 2101 MOVS r1,#1
000046 4091 LSLS r1,r1,r2
;;;135
;;;136 Mass_Memory_Size[0] = Mass_Block_Count[0] * Mass_Block_Size[0];
000048 4348 MULS r0,r1,r0
00004a 6039 STR r1,[r7,#0] ; Mass_Block_Size
;;;137 GPIO_SetBits(USB_LED_PORT, GPIO_Pin_7);
00004c 6028 STR r0,[r5,#0] ; Mass_Memory_Size
00004e 2180 MOVS r1,#0x80
000050 4630 MOV r0,r6
000052 f7fff7ff BL GPIO_SetBits
;;;138 return MAL_OK;
000056 e00d B |L4.116|
|L4.88|
;;;139 }
;;;140 }
;;;141 else
;;;142 {
;;;143 FSMC_NAND_ReadID(&NAND_ID);
000058 4668 MOV r0,sp
00005a f7fff7ff BL FSMC_NAND_ReadID
;;;144 if (NAND_ID.Device_ID != 0 )
00005e f89df89d LDRB r0,[sp,#1]
000062 b158 CBZ r0,|L4.124|
;;;145 {
;;;146 /* only one zone is used */
;;;147 Mass_Block_Count[1] = NAND_ZONE_SIZE * NAND_BLOCK_SIZE * NAND_MAX_ZONE ;
000064 f44ff44f MOV r0,#0x20000
;;;148 Mass_Block_Size[1] = NAND_PAGE_SIZE;
000068 f8c8f8c8 STR r0,[r8,#4] ; Mass_Block_Count
00006c 1200 ASRS r0,r0,#8
;;;149 Mass_Memory_Size[1] = (Mass_Block_Count[1] * Mass_Block_Size[1]);
00006e 6078 STR r0,[r7,#4] ; Mass_Block_Size
000070 0440 LSLS r0,r0,#17
000072 6068 STR r0,[r5,#4] ; Mass_Memory_Size
|L4.116|
;;;150 return MAL_OK;
000074 2000 MOVS r0,#0
|L4.118|
;;;151 }
;;;152 }
;;;153 GPIO_ResetBits(USB_LED_PORT, GPIO_Pin_7);
;;;154 return MAL_FAIL;
;;;155 }
000076 b012 ADD sp,sp,#0x48
000078 e8bde8bd POP {r4-r8,pc}
|L4.124|
00007c 2180 MOVS r1,#0x80 ;153
00007e 4630 MOV r0,r6 ;153
000080 f7fff7ff BL GPIO_ResetBits
000084 2001 MOVS r0,#1 ;154
000086 e7f6 B |L4.118|
;;;156
ENDP
|L4.136|
000088 00000010 DCD ||.data||+0x10
|L4.140|
00008c 40011c00 DCD 0x40011c00
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 + -