ARM GAS /tmp/cchooSA4.s page 1 1 .cpu cortex-m7 2 .arch armv7e-m 3 .fpu fpv5-d16 4 .eabi_attribute 28, 1 5 .eabi_attribute 20, 1 6 .eabi_attribute 21, 1 7 .eabi_attribute 23, 3 8 .eabi_attribute 24, 1 9 .eabi_attribute 25, 1 10 .eabi_attribute 26, 1 11 .eabi_attribute 30, 1 12 .eabi_attribute 34, 1 13 .eabi_attribute 18, 4 14 .file "sd_diskio.c" 15 .text 16 .Ltext0: 17 .cfi_sections .debug_frame 18 .file 1 "Src/sd_diskio.c" 19 .section .text.SD_CheckStatus,"ax",%progbits 20 .align 1 21 .syntax unified 22 .thumb 23 .thumb_func 25 SD_CheckStatus: 26 .LVL0: 27 .LFB1185: 1:Src/sd_diskio.c **** /* USER CODE BEGIN Header */ 2:Src/sd_diskio.c **** /** 3:Src/sd_diskio.c **** ****************************************************************************** 4:Src/sd_diskio.c **** * @file sd_diskio.c 5:Src/sd_diskio.c **** * @brief SD Disk I/O driver 6:Src/sd_diskio.c **** ****************************************************************************** 7:Src/sd_diskio.c **** * @attention 8:Src/sd_diskio.c **** * 9:Src/sd_diskio.c **** * Copyright (c) 2023 STMicroelectronics. 10:Src/sd_diskio.c **** * All rights reserved. 11:Src/sd_diskio.c **** * 12:Src/sd_diskio.c **** * This software is licensed under terms that can be found in the LICENSE file 13:Src/sd_diskio.c **** * in the root directory of this software component. 14:Src/sd_diskio.c **** * If no LICENSE file comes with this software, it is provided AS-IS. 15:Src/sd_diskio.c **** * 16:Src/sd_diskio.c **** ****************************************************************************** 17:Src/sd_diskio.c **** */ 18:Src/sd_diskio.c **** /* USER CODE END Header */ 19:Src/sd_diskio.c **** 20:Src/sd_diskio.c **** /* Note: code generation based on sd_diskio_template_bspv1.c v2.1.4 21:Src/sd_diskio.c **** as "Use dma template" is disabled. */ 22:Src/sd_diskio.c **** 23:Src/sd_diskio.c **** /* USER CODE BEGIN firstSection */ 24:Src/sd_diskio.c **** /* can be used to modify / undefine following code or add new definitions */ 25:Src/sd_diskio.c **** /* USER CODE END firstSection*/ 26:Src/sd_diskio.c **** 27:Src/sd_diskio.c **** /* Includes ------------------------------------------------------------------*/ 28:Src/sd_diskio.c **** #include "ff_gen_drv.h" 29:Src/sd_diskio.c **** #include "sd_diskio.h" 30:Src/sd_diskio.c **** 31:Src/sd_diskio.c **** /* Private typedef -----------------------------------------------------------*/ ARM GAS /tmp/cchooSA4.s page 2 32:Src/sd_diskio.c **** /* Private define ------------------------------------------------------------*/ 33:Src/sd_diskio.c **** /* use the default SD timout as defined in the platform BSP driver*/ 34:Src/sd_diskio.c **** #if defined(SDMMC_DATATIMEOUT) 35:Src/sd_diskio.c **** #define SD_TIMEOUT SDMMC_DATATIMEOUT 36:Src/sd_diskio.c **** #elif defined(SD_DATATIMEOUT) 37:Src/sd_diskio.c **** #define SD_TIMEOUT SD_DATATIMEOUT 38:Src/sd_diskio.c **** #else 39:Src/sd_diskio.c **** #define SD_TIMEOUT 30 * 1000 40:Src/sd_diskio.c **** #endif 41:Src/sd_diskio.c **** 42:Src/sd_diskio.c **** #define SD_DEFAULT_BLOCK_SIZE 512 43:Src/sd_diskio.c **** 44:Src/sd_diskio.c **** /* 45:Src/sd_diskio.c **** * Depending on the use case, the SD card initialization could be done at the 46:Src/sd_diskio.c **** * application level: if it is the case define the flag below to disable 47:Src/sd_diskio.c **** * the BSP_SD_Init() call in the SD_Initialize() and add a call to 48:Src/sd_diskio.c **** * BSP_SD_Init() elsewhere in the application. 49:Src/sd_diskio.c **** */ 50:Src/sd_diskio.c **** /* USER CODE BEGIN disableSDInit */ 51:Src/sd_diskio.c **** /* #define DISABLE_SD_INIT */ 52:Src/sd_diskio.c **** /* USER CODE END disableSDInit */ 53:Src/sd_diskio.c **** 54:Src/sd_diskio.c **** /* Private variables ---------------------------------------------------------*/ 55:Src/sd_diskio.c **** /* Disk status */ 56:Src/sd_diskio.c **** static volatile DSTATUS Stat = STA_NOINIT; 57:Src/sd_diskio.c **** static volatile DSTATUS g_last_initialize_status = STA_NOINIT; 58:Src/sd_diskio.c **** static volatile DSTATUS g_last_status_result = STA_NOINIT; 59:Src/sd_diskio.c **** 60:Src/sd_diskio.c **** /* Private function prototypes -----------------------------------------------*/ 61:Src/sd_diskio.c **** static DSTATUS SD_CheckStatus(BYTE lun); 62:Src/sd_diskio.c **** DSTATUS SD_initialize (BYTE); 63:Src/sd_diskio.c **** DSTATUS SD_status (BYTE); 64:Src/sd_diskio.c **** DRESULT SD_read (BYTE, BYTE*, DWORD, UINT); 65:Src/sd_diskio.c **** #if _USE_WRITE == 1 66:Src/sd_diskio.c **** DRESULT SD_write (BYTE, const BYTE*, DWORD, UINT); 67:Src/sd_diskio.c **** #endif /* _USE_WRITE == 1 */ 68:Src/sd_diskio.c **** #if _USE_IOCTL == 1 69:Src/sd_diskio.c **** DRESULT SD_ioctl (BYTE, BYTE, void*); 70:Src/sd_diskio.c **** #endif /* _USE_IOCTL == 1 */ 71:Src/sd_diskio.c **** 72:Src/sd_diskio.c **** const Diskio_drvTypeDef SD_Driver = 73:Src/sd_diskio.c **** { 74:Src/sd_diskio.c **** SD_initialize, 75:Src/sd_diskio.c **** SD_status, 76:Src/sd_diskio.c **** SD_read, 77:Src/sd_diskio.c **** #if _USE_WRITE == 1 78:Src/sd_diskio.c **** SD_write, 79:Src/sd_diskio.c **** #endif /* _USE_WRITE == 1 */ 80:Src/sd_diskio.c **** 81:Src/sd_diskio.c **** #if _USE_IOCTL == 1 82:Src/sd_diskio.c **** SD_ioctl, 83:Src/sd_diskio.c **** #endif /* _USE_IOCTL == 1 */ 84:Src/sd_diskio.c **** }; 85:Src/sd_diskio.c **** 86:Src/sd_diskio.c **** /* USER CODE BEGIN beforeFunctionSection */ 87:Src/sd_diskio.c **** /* can be used to modify / undefine following code or add new code */ 88:Src/sd_diskio.c **** DSTATUS sd_diskio_debug_get_last_initialize_status(void) ARM GAS /tmp/cchooSA4.s page 3 89:Src/sd_diskio.c **** { 90:Src/sd_diskio.c **** return g_last_initialize_status; 91:Src/sd_diskio.c **** } 92:Src/sd_diskio.c **** 93:Src/sd_diskio.c **** DSTATUS sd_diskio_debug_get_last_status_result(void) 94:Src/sd_diskio.c **** { 95:Src/sd_diskio.c **** return g_last_status_result; 96:Src/sd_diskio.c **** } 97:Src/sd_diskio.c **** /* USER CODE END beforeFunctionSection */ 98:Src/sd_diskio.c **** 99:Src/sd_diskio.c **** /* Private functions ---------------------------------------------------------*/ 100:Src/sd_diskio.c **** 101:Src/sd_diskio.c **** static DSTATUS SD_CheckStatus(BYTE lun) 102:Src/sd_diskio.c **** { 28 .loc 1 102 1 view -0 29 .cfi_startproc 30 @ args = 0, pretend = 0, frame = 0 31 @ frame_needed = 0, uses_anonymous_args = 0 32 .loc 1 102 1 is_stmt 0 view .LVU1 33 0000 08B5 push {r3, lr} 34 .LCFI0: 35 .cfi_def_cfa_offset 8 36 .cfi_offset 3, -8 37 .cfi_offset 14, -4 103:Src/sd_diskio.c **** Stat = STA_NOINIT; 38 .loc 1 103 3 is_stmt 1 view .LVU2 39 .loc 1 103 8 is_stmt 0 view .LVU3 40 0002 074B ldr r3, .L4 41 0004 0122 movs r2, #1 42 0006 1A70 strb r2, [r3] 104:Src/sd_diskio.c **** 105:Src/sd_diskio.c **** if(BSP_SD_GetCardState() == MSD_OK) 43 .loc 1 105 3 is_stmt 1 view .LVU4 44 .loc 1 105 6 is_stmt 0 view .LVU5 45 0008 FFF7FEFF bl BSP_SD_GetCardState 46 .LVL1: 47 .loc 1 105 5 discriminator 1 view .LVU6 48 000c 20B9 cbnz r0, .L2 106:Src/sd_diskio.c **** { 107:Src/sd_diskio.c **** Stat &= ~STA_NOINIT; 49 .loc 1 107 5 is_stmt 1 view .LVU7 50 .loc 1 107 10 is_stmt 0 view .LVU8 51 000e 044A ldr r2, .L4 52 0010 1378 ldrb r3, [r2] @ zero_extendqisi2 53 0012 03F0FE03 and r3, r3, #254 54 0016 1370 strb r3, [r2] 55 .L2: 108:Src/sd_diskio.c **** } 109:Src/sd_diskio.c **** 110:Src/sd_diskio.c **** return Stat; 56 .loc 1 110 3 is_stmt 1 view .LVU9 57 .loc 1 110 10 is_stmt 0 view .LVU10 58 0018 014B ldr r3, .L4 59 001a 1878 ldrb r0, [r3] @ zero_extendqisi2 111:Src/sd_diskio.c **** } 60 .loc 1 111 1 view .LVU11 61 001c 08BD pop {r3, pc} ARM GAS /tmp/cchooSA4.s page 4 62 .L5: 63 001e 00BF .align 2 64 .L4: 65 0020 00000000 .word Stat 66 .cfi_endproc 67 .LFE1185: 69 .section .text.SD_initialize,"ax",%progbits 70 .align 1 71 .global SD_initialize 72 .syntax unified 73 .thumb 74 .thumb_func 76 SD_initialize: 77 .LVL2: 78 .LFB1186: 112:Src/sd_diskio.c **** 113:Src/sd_diskio.c **** /** 114:Src/sd_diskio.c **** * @brief Initializes a Drive 115:Src/sd_diskio.c **** * @param lun : not used 116:Src/sd_diskio.c **** * @retval DSTATUS: Operation status 117:Src/sd_diskio.c **** */ 118:Src/sd_diskio.c **** DSTATUS SD_initialize(BYTE lun) 119:Src/sd_diskio.c **** { 79 .loc 1 119 1 is_stmt 1 view -0 80 .cfi_startproc 81 @ args = 0, pretend = 0, frame = 0 82 @ frame_needed = 0, uses_anonymous_args = 0 83 .loc 1 119 1 is_stmt 0 view .LVU13 84 0000 10B5 push {r4, lr} 85 .LCFI1: 86 .cfi_def_cfa_offset 8 87 .cfi_offset 4, -8 88 .cfi_offset 14, -4 89 0002 0446 mov r4, r0 120:Src/sd_diskio.c **** Stat = STA_NOINIT; 90 .loc 1 120 1 is_stmt 1 view .LVU14 91 .loc 1 120 6 is_stmt 0 view .LVU15 92 0004 094B ldr r3, .L10 93 0006 0122 movs r2, #1 94 0008 1A70 strb r2, [r3] 121:Src/sd_diskio.c **** 122:Src/sd_diskio.c **** #if !defined(DISABLE_SD_INIT) 123:Src/sd_diskio.c **** 124:Src/sd_diskio.c **** if(BSP_SD_Init() == MSD_OK) 95 .loc 1 124 3 is_stmt 1 view .LVU16 96 .loc 1 124 6 is_stmt 0 view .LVU17 97 000a FFF7FEFF bl BSP_SD_Init 98 .LVL3: 99 .loc 1 124 5 discriminator 1 view .LVU18 100 000e 30B1 cbz r0, .L9 101 .L7: 125:Src/sd_diskio.c **** { 126:Src/sd_diskio.c **** Stat = SD_CheckStatus(lun); 127:Src/sd_diskio.c **** } 128:Src/sd_diskio.c **** 129:Src/sd_diskio.c **** #else 130:Src/sd_diskio.c **** Stat = SD_CheckStatus(lun); ARM GAS /tmp/cchooSA4.s page 5 131:Src/sd_diskio.c **** #endif 132:Src/sd_diskio.c **** 133:Src/sd_diskio.c **** g_last_initialize_status = Stat; 102 .loc 1 133 3 is_stmt 1 view .LVU19 103 .loc 1 133 28 is_stmt 0 view .LVU20 104 0010 064A ldr r2, .L10 105 0012 1378 ldrb r3, [r2] @ zero_extendqisi2 106 0014 DBB2 uxtb r3, r3 107 0016 0649 ldr r1, .L10+4 108 0018 0B70 strb r3, [r1] 134:Src/sd_diskio.c **** 135:Src/sd_diskio.c **** return Stat; 109 .loc 1 135 3 is_stmt 1 view .LVU21 110 .loc 1 135 10 is_stmt 0 view .LVU22 111 001a 1078 ldrb r0, [r2] @ zero_extendqisi2 136:Src/sd_diskio.c **** } 112 .loc 1 136 1 view .LVU23 113 001c 10BD pop {r4, pc} 114 .LVL4: 115 .L9: 126:Src/sd_diskio.c **** } 116 .loc 1 126 5 is_stmt 1 view .LVU24 126:Src/sd_diskio.c **** } 117 .loc 1 126 12 is_stmt 0 view .LVU25 118 001e 2046 mov r0, r4 119 0020 FFF7FEFF bl SD_CheckStatus 120 .LVL5: 126:Src/sd_diskio.c **** } 121 .loc 1 126 10 discriminator 1 view .LVU26 122 0024 014B ldr r3, .L10 123 0026 1870 strb r0, [r3] 124 0028 F2E7 b .L7 125 .L11: 126 002a 00BF .align 2 127 .L10: 128 002c 00000000 .word Stat 129 0030 00000000 .word g_last_initialize_status 130 .cfi_endproc 131 .LFE1186: 133 .section .text.SD_status,"ax",%progbits 134 .align 1 135 .global SD_status 136 .syntax unified 137 .thumb 138 .thumb_func 140 SD_status: 141 .LVL6: 142 .LFB1187: 137:Src/sd_diskio.c **** 138:Src/sd_diskio.c **** /** 139:Src/sd_diskio.c **** * @brief Gets Disk Status 140:Src/sd_diskio.c **** * @param lun : not used 141:Src/sd_diskio.c **** * @retval DSTATUS: Operation status 142:Src/sd_diskio.c **** */ 143:Src/sd_diskio.c **** DSTATUS SD_status(BYTE lun) 144:Src/sd_diskio.c **** { 143 .loc 1 144 1 is_stmt 1 view -0 ARM GAS /tmp/cchooSA4.s page 6 144 .cfi_startproc 145 @ args = 0, pretend = 0, frame = 0 146 @ frame_needed = 0, uses_anonymous_args = 0 147 .loc 1 144 1 is_stmt 0 view .LVU28 148 0000 08B5 push {r3, lr} 149 .LCFI2: 150 .cfi_def_cfa_offset 8 151 .cfi_offset 3, -8 152 .cfi_offset 14, -4 145:Src/sd_diskio.c **** g_last_status_result = SD_CheckStatus(lun); 153 .loc 1 145 3 is_stmt 1 view .LVU29 154 .loc 1 145 26 is_stmt 0 view .LVU30 155 0002 FFF7FEFF bl SD_CheckStatus 156 .LVL7: 157 .loc 1 145 24 discriminator 1 view .LVU31 158 0006 024B ldr r3, .L14 159 0008 1870 strb r0, [r3] 146:Src/sd_diskio.c **** return g_last_status_result; 160 .loc 1 146 3 is_stmt 1 view .LVU32 161 .loc 1 146 10 is_stmt 0 view .LVU33 162 000a 1878 ldrb r0, [r3] @ zero_extendqisi2 147:Src/sd_diskio.c **** } 163 .loc 1 147 1 view .LVU34 164 000c 08BD pop {r3, pc} 165 .L15: 166 000e 00BF .align 2 167 .L14: 168 0010 00000000 .word g_last_status_result 169 .cfi_endproc 170 .LFE1187: 172 .section .text.SD_read,"ax",%progbits 173 .align 1 174 .global SD_read 175 .syntax unified 176 .thumb 177 .thumb_func 179 SD_read: 180 .LVL8: 181 .LFB1188: 148:Src/sd_diskio.c **** 149:Src/sd_diskio.c **** /* USER CODE BEGIN beforeReadSection */ 150:Src/sd_diskio.c **** /* can be used to modify previous code / undefine following code / add new code */ 151:Src/sd_diskio.c **** /* USER CODE END beforeReadSection */ 152:Src/sd_diskio.c **** /** 153:Src/sd_diskio.c **** * @brief Reads Sector(s) 154:Src/sd_diskio.c **** * @param lun : not used 155:Src/sd_diskio.c **** * @param *buff: Data buffer to store read data 156:Src/sd_diskio.c **** * @param sector: Sector address (LBA) 157:Src/sd_diskio.c **** * @param count: Number of sectors to read (1..128) 158:Src/sd_diskio.c **** * @retval DRESULT: Operation result 159:Src/sd_diskio.c **** */ 160:Src/sd_diskio.c **** 161:Src/sd_diskio.c **** DRESULT SD_read(BYTE lun, BYTE *buff, DWORD sector, UINT count) 162:Src/sd_diskio.c **** { 182 .loc 1 162 1 is_stmt 1 view -0 183 .cfi_startproc 184 @ args = 0, pretend = 0, frame = 0 ARM GAS /tmp/cchooSA4.s page 7 185 @ frame_needed = 0, uses_anonymous_args = 0 186 .loc 1 162 1 is_stmt 0 view .LVU36 187 0000 08B5 push {r3, lr} 188 .LCFI3: 189 .cfi_def_cfa_offset 8 190 .cfi_offset 3, -8 191 .cfi_offset 14, -4 192 0002 0846 mov r0, r1 193 .LVL9: 194 .loc 1 162 1 view .LVU37 195 0004 1146 mov r1, r2 196 .LVL10: 197 .loc 1 162 1 view .LVU38 198 0006 1A46 mov r2, r3 199 .LVL11: 163:Src/sd_diskio.c **** DRESULT res = RES_ERROR; 200 .loc 1 163 3 is_stmt 1 view .LVU39 164:Src/sd_diskio.c **** 165:Src/sd_diskio.c **** if(BSP_SD_ReadBlocks((uint32_t*)buff, 201 .loc 1 165 3 view .LVU40 202 .loc 1 165 6 is_stmt 0 view .LVU41 203 0008 4FF0FF33 mov r3, #-1 204 .LVL12: 205 .loc 1 165 6 view .LVU42 206 000c FFF7FEFF bl BSP_SD_ReadBlocks 207 .LVL13: 208 .loc 1 165 5 discriminator 1 view .LVU43 209 0010 30B9 cbnz r0, .L19 210 .L18: 166:Src/sd_diskio.c **** (uint32_t) (sector), 167:Src/sd_diskio.c **** count, SD_TIMEOUT) == MSD_OK) 168:Src/sd_diskio.c **** { 169:Src/sd_diskio.c **** /* wait until the read operation is finished */ 170:Src/sd_diskio.c **** while(BSP_SD_GetCardState()!= MSD_OK) 171:Src/sd_diskio.c **** { 172:Src/sd_diskio.c **** } 211 .loc 1 172 5 is_stmt 1 view .LVU44 170:Src/sd_diskio.c **** { 212 .loc 1 170 32 discriminator 1 view .LVU45 170:Src/sd_diskio.c **** { 213 .loc 1 170 11 is_stmt 0 discriminator 1 view .LVU46 214 0012 FFF7FEFF bl BSP_SD_GetCardState 215 .LVL14: 170:Src/sd_diskio.c **** { 216 .loc 1 170 32 discriminator 1 view .LVU47 217 0016 0346 mov r3, r0 218 0018 0028 cmp r0, #0 219 001a FAD1 bne .L18 220 .L17: 221 .LVL15: 173:Src/sd_diskio.c **** res = RES_OK; 174:Src/sd_diskio.c **** } 175:Src/sd_diskio.c **** 176:Src/sd_diskio.c **** return res; 222 .loc 1 176 3 is_stmt 1 view .LVU48 177:Src/sd_diskio.c **** } 223 .loc 1 177 1 is_stmt 0 view .LVU49 ARM GAS /tmp/cchooSA4.s page 8 224 001c 1846 mov r0, r3 225 001e 08BD pop {r3, pc} 226 .LVL16: 227 .L19: 163:Src/sd_diskio.c **** 228 .loc 1 163 11 view .LVU50 229 0020 0123 movs r3, #1 230 0022 FBE7 b .L17 231 .cfi_endproc 232 .LFE1188: 234 .section .text.SD_write,"ax",%progbits 235 .align 1 236 .global SD_write 237 .syntax unified 238 .thumb 239 .thumb_func 241 SD_write: 242 .LVL17: 243 .LFB1189: 178:Src/sd_diskio.c **** 179:Src/sd_diskio.c **** /* USER CODE BEGIN beforeWriteSection */ 180:Src/sd_diskio.c **** /* can be used to modify previous code / undefine following code / add new code */ 181:Src/sd_diskio.c **** /* USER CODE END beforeWriteSection */ 182:Src/sd_diskio.c **** /** 183:Src/sd_diskio.c **** * @brief Writes Sector(s) 184:Src/sd_diskio.c **** * @param lun : not used 185:Src/sd_diskio.c **** * @param *buff: Data to be written 186:Src/sd_diskio.c **** * @param sector: Sector address (LBA) 187:Src/sd_diskio.c **** * @param count: Number of sectors to write (1..128) 188:Src/sd_diskio.c **** * @retval DRESULT: Operation result 189:Src/sd_diskio.c **** */ 190:Src/sd_diskio.c **** #if _USE_WRITE == 1 191:Src/sd_diskio.c **** 192:Src/sd_diskio.c **** DRESULT SD_write(BYTE lun, const BYTE *buff, DWORD sector, UINT count) 193:Src/sd_diskio.c **** { 244 .loc 1 193 1 is_stmt 1 view -0 245 .cfi_startproc 246 @ args = 0, pretend = 0, frame = 0 247 @ frame_needed = 0, uses_anonymous_args = 0 248 .loc 1 193 1 is_stmt 0 view .LVU52 249 0000 08B5 push {r3, lr} 250 .LCFI4: 251 .cfi_def_cfa_offset 8 252 .cfi_offset 3, -8 253 .cfi_offset 14, -4 254 0002 0846 mov r0, r1 255 .LVL18: 256 .loc 1 193 1 view .LVU53 257 0004 1146 mov r1, r2 258 .LVL19: 259 .loc 1 193 1 view .LVU54 260 0006 1A46 mov r2, r3 261 .LVL20: 194:Src/sd_diskio.c **** DRESULT res = RES_ERROR; 262 .loc 1 194 3 is_stmt 1 view .LVU55 195:Src/sd_diskio.c **** 196:Src/sd_diskio.c **** if(BSP_SD_WriteBlocks((uint32_t*)buff, ARM GAS /tmp/cchooSA4.s page 9 263 .loc 1 196 3 view .LVU56 264 .loc 1 196 6 is_stmt 0 view .LVU57 265 0008 4FF0FF33 mov r3, #-1 266 .LVL21: 267 .loc 1 196 6 view .LVU58 268 000c FFF7FEFF bl BSP_SD_WriteBlocks 269 .LVL22: 270 .loc 1 196 5 discriminator 1 view .LVU59 271 0010 30B9 cbnz r0, .L24 272 .L23: 197:Src/sd_diskio.c **** (uint32_t)(sector), 198:Src/sd_diskio.c **** count, SD_TIMEOUT) == MSD_OK) 199:Src/sd_diskio.c **** { 200:Src/sd_diskio.c **** /* wait until the Write operation is finished */ 201:Src/sd_diskio.c **** while(BSP_SD_GetCardState() != MSD_OK) 202:Src/sd_diskio.c **** { 203:Src/sd_diskio.c **** } 273 .loc 1 203 5 is_stmt 1 view .LVU60 201:Src/sd_diskio.c **** { 274 .loc 1 201 33 discriminator 1 view .LVU61 201:Src/sd_diskio.c **** { 275 .loc 1 201 11 is_stmt 0 discriminator 1 view .LVU62 276 0012 FFF7FEFF bl BSP_SD_GetCardState 277 .LVL23: 201:Src/sd_diskio.c **** { 278 .loc 1 201 33 discriminator 1 view .LVU63 279 0016 0346 mov r3, r0 280 0018 0028 cmp r0, #0 281 001a FAD1 bne .L23 282 .L22: 283 .LVL24: 204:Src/sd_diskio.c **** res = RES_OK; 205:Src/sd_diskio.c **** } 206:Src/sd_diskio.c **** 207:Src/sd_diskio.c **** return res; 284 .loc 1 207 3 is_stmt 1 view .LVU64 208:Src/sd_diskio.c **** } 285 .loc 1 208 1 is_stmt 0 view .LVU65 286 001c 1846 mov r0, r3 287 001e 08BD pop {r3, pc} 288 .LVL25: 289 .L24: 194:Src/sd_diskio.c **** 290 .loc 1 194 11 view .LVU66 291 0020 0123 movs r3, #1 292 0022 FBE7 b .L22 293 .cfi_endproc 294 .LFE1189: 296 .section .text.SD_ioctl,"ax",%progbits 297 .align 1 298 .global SD_ioctl 299 .syntax unified 300 .thumb 301 .thumb_func 303 SD_ioctl: 304 .LVL26: 305 .LFB1190: ARM GAS /tmp/cchooSA4.s page 10 209:Src/sd_diskio.c **** #endif /* _USE_WRITE == 1 */ 210:Src/sd_diskio.c **** 211:Src/sd_diskio.c **** /* USER CODE BEGIN beforeIoctlSection */ 212:Src/sd_diskio.c **** /* can be used to modify previous code / undefine following code / add new code */ 213:Src/sd_diskio.c **** /* USER CODE END beforeIoctlSection */ 214:Src/sd_diskio.c **** /** 215:Src/sd_diskio.c **** * @brief I/O control operation 216:Src/sd_diskio.c **** * @param lun : not used 217:Src/sd_diskio.c **** * @param cmd: Control code 218:Src/sd_diskio.c **** * @param *buff: Buffer to send/receive control data 219:Src/sd_diskio.c **** * @retval DRESULT: Operation result 220:Src/sd_diskio.c **** */ 221:Src/sd_diskio.c **** #if _USE_IOCTL == 1 222:Src/sd_diskio.c **** DRESULT SD_ioctl(BYTE lun, BYTE cmd, void *buff) 223:Src/sd_diskio.c **** { 306 .loc 1 223 1 is_stmt 1 view -0 307 .cfi_startproc 308 @ args = 0, pretend = 0, frame = 32 309 @ frame_needed = 0, uses_anonymous_args = 0 310 .loc 1 223 1 is_stmt 0 view .LVU68 311 0000 30B5 push {r4, r5, lr} 312 .LCFI5: 313 .cfi_def_cfa_offset 12 314 .cfi_offset 4, -12 315 .cfi_offset 5, -8 316 .cfi_offset 14, -4 317 0002 89B0 sub sp, sp, #36 318 .LCFI6: 319 .cfi_def_cfa_offset 48 224:Src/sd_diskio.c **** DRESULT res = RES_ERROR; 320 .loc 1 224 3 is_stmt 1 view .LVU69 321 .LVL27: 225:Src/sd_diskio.c **** BSP_SD_CardInfo CardInfo; 322 .loc 1 225 3 view .LVU70 226:Src/sd_diskio.c **** 227:Src/sd_diskio.c **** if (Stat & STA_NOINIT) return RES_NOTRDY; 323 .loc 1 227 3 view .LVU71 324 .loc 1 227 12 is_stmt 0 view .LVU72 325 0004 134B ldr r3, .L36 326 0006 1878 ldrb r0, [r3] @ zero_extendqisi2 327 .LVL28: 328 .loc 1 227 6 view .LVU73 329 0008 10F00104 ands r4, r0, #1 330 000c 1BD1 bne .L33 331 000e 1546 mov r5, r2 228:Src/sd_diskio.c **** 229:Src/sd_diskio.c **** switch (cmd) 332 .loc 1 229 3 is_stmt 1 view .LVU74 333 0010 0329 cmp r1, #3 334 0012 1CD8 bhi .L34 335 0014 DFE801F0 tbb [pc, r1] 336 .L29: 337 0018 02 .byte (.L32-.L29)/2 338 0019 04 .byte (.L31-.L29)/2 339 001a 0A .byte (.L30-.L29)/2 340 001b 10 .byte (.L28-.L29)/2 341 .p2align 1 ARM GAS /tmp/cchooSA4.s page 11 342 .L32: 343 001c 0C46 mov r4, r1 344 001e 13E0 b .L27 345 .L31: 230:Src/sd_diskio.c **** { 231:Src/sd_diskio.c **** /* Make sure that no pending write process */ 232:Src/sd_diskio.c **** case CTRL_SYNC : 233:Src/sd_diskio.c **** res = RES_OK; 234:Src/sd_diskio.c **** break; 235:Src/sd_diskio.c **** 236:Src/sd_diskio.c **** /* Get number of sectors on the disk (DWORD) */ 237:Src/sd_diskio.c **** case GET_SECTOR_COUNT : 238:Src/sd_diskio.c **** BSP_SD_GetCardInfo(&CardInfo); 346 .loc 1 238 5 view .LVU75 347 0020 6846 mov r0, sp 348 0022 FFF7FEFF bl BSP_SD_GetCardInfo 349 .LVL29: 239:Src/sd_diskio.c **** *(DWORD*)buff = CardInfo.LogBlockNbr; 350 .loc 1 239 5 view .LVU76 351 .loc 1 239 29 is_stmt 0 view .LVU77 352 0026 069B ldr r3, [sp, #24] 353 .loc 1 239 19 view .LVU78 354 0028 2B60 str r3, [r5] 240:Src/sd_diskio.c **** res = RES_OK; 355 .loc 1 240 5 is_stmt 1 view .LVU79 356 .LVL30: 241:Src/sd_diskio.c **** break; 357 .loc 1 241 5 view .LVU80 358 002a 0DE0 b .L27 359 .LVL31: 360 .L30: 242:Src/sd_diskio.c **** 243:Src/sd_diskio.c **** /* Get R/W sector size (WORD) */ 244:Src/sd_diskio.c **** case GET_SECTOR_SIZE : 245:Src/sd_diskio.c **** BSP_SD_GetCardInfo(&CardInfo); 361 .loc 1 245 5 view .LVU81 362 002c 6846 mov r0, sp 363 002e FFF7FEFF bl BSP_SD_GetCardInfo 364 .LVL32: 246:Src/sd_diskio.c **** *(WORD*)buff = CardInfo.LogBlockSize; 365 .loc 1 246 5 view .LVU82 366 .loc 1 246 28 is_stmt 0 view .LVU83 367 0032 079B ldr r3, [sp, #28] 368 .loc 1 246 18 view .LVU84 369 0034 2B80 strh r3, [r5] @ movhi 247:Src/sd_diskio.c **** res = RES_OK; 370 .loc 1 247 5 is_stmt 1 view .LVU85 371 .LVL33: 248:Src/sd_diskio.c **** break; 372 .loc 1 248 5 view .LVU86 373 0036 07E0 b .L27 374 .LVL34: 375 .L28: 249:Src/sd_diskio.c **** 250:Src/sd_diskio.c **** /* Get erase block size in unit of sector (DWORD) */ 251:Src/sd_diskio.c **** case GET_BLOCK_SIZE : 252:Src/sd_diskio.c **** BSP_SD_GetCardInfo(&CardInfo); ARM GAS /tmp/cchooSA4.s page 12 376 .loc 1 252 5 view .LVU87 377 0038 6846 mov r0, sp 378 003a FFF7FEFF bl BSP_SD_GetCardInfo 379 .LVL35: 253:Src/sd_diskio.c **** *(DWORD*)buff = CardInfo.LogBlockSize / SD_DEFAULT_BLOCK_SIZE; 380 .loc 1 253 5 view .LVU88 381 .loc 1 253 29 is_stmt 0 view .LVU89 382 003e 079B ldr r3, [sp, #28] 383 .loc 1 253 43 view .LVU90 384 0040 5B0A lsrs r3, r3, #9 385 .loc 1 253 19 view .LVU91 386 0042 2B60 str r3, [r5] 254:Src/sd_diskio.c **** res = RES_OK; 387 .loc 1 254 5 is_stmt 1 view .LVU92 388 .LVL36: 255:Src/sd_diskio.c **** break; 389 .loc 1 255 5 view .LVU93 390 0044 00E0 b .L27 391 .LVL37: 392 .L33: 227:Src/sd_diskio.c **** 393 .loc 1 227 33 is_stmt 0 discriminator 1 view .LVU94 394 0046 0324 movs r4, #3 395 .LVL38: 396 .L27: 256:Src/sd_diskio.c **** 257:Src/sd_diskio.c **** default: 258:Src/sd_diskio.c **** res = RES_PARERR; 259:Src/sd_diskio.c **** } 260:Src/sd_diskio.c **** 261:Src/sd_diskio.c **** return res; 262:Src/sd_diskio.c **** } 397 .loc 1 262 1 view .LVU95 398 0048 2046 mov r0, r4 399 004a 09B0 add sp, sp, #36 400 .LCFI7: 401 .cfi_remember_state 402 .cfi_def_cfa_offset 12 403 @ sp needed 404 004c 30BD pop {r4, r5, pc} 405 .LVL39: 406 .L34: 407 .LCFI8: 408 .cfi_restore_state 258:Src/sd_diskio.c **** } 409 .loc 1 258 9 view .LVU96 410 004e 0424 movs r4, #4 411 0050 FAE7 b .L27 412 .L37: 413 0052 00BF .align 2 414 .L36: 415 0054 00000000 .word Stat 416 .cfi_endproc 417 .LFE1190: 419 .section .text.sd_diskio_debug_get_last_initialize_status,"ax",%progbits 420 .align 1 421 .global sd_diskio_debug_get_last_initialize_status ARM GAS /tmp/cchooSA4.s page 13 422 .syntax unified 423 .thumb 424 .thumb_func 426 sd_diskio_debug_get_last_initialize_status: 427 .LFB1183: 89:Src/sd_diskio.c **** return g_last_initialize_status; 428 .loc 1 89 1 is_stmt 1 view -0 429 .cfi_startproc 430 @ args = 0, pretend = 0, frame = 0 431 @ frame_needed = 0, uses_anonymous_args = 0 432 @ link register save eliminated. 90:Src/sd_diskio.c **** } 433 .loc 1 90 3 view .LVU98 90:Src/sd_diskio.c **** } 434 .loc 1 90 10 is_stmt 0 view .LVU99 435 0000 014B ldr r3, .L39 436 0002 1878 ldrb r0, [r3] @ zero_extendqisi2 91:Src/sd_diskio.c **** 437 .loc 1 91 1 view .LVU100 438 0004 7047 bx lr 439 .L40: 440 0006 00BF .align 2 441 .L39: 442 0008 00000000 .word g_last_initialize_status 443 .cfi_endproc 444 .LFE1183: 446 .section .text.sd_diskio_debug_get_last_status_result,"ax",%progbits 447 .align 1 448 .global sd_diskio_debug_get_last_status_result 449 .syntax unified 450 .thumb 451 .thumb_func 453 sd_diskio_debug_get_last_status_result: 454 .LFB1184: 94:Src/sd_diskio.c **** return g_last_status_result; 455 .loc 1 94 1 is_stmt 1 view -0 456 .cfi_startproc 457 @ args = 0, pretend = 0, frame = 0 458 @ frame_needed = 0, uses_anonymous_args = 0 459 @ link register save eliminated. 95:Src/sd_diskio.c **** } 460 .loc 1 95 3 view .LVU102 95:Src/sd_diskio.c **** } 461 .loc 1 95 10 is_stmt 0 view .LVU103 462 0000 014B ldr r3, .L42 463 0002 1878 ldrb r0, [r3] @ zero_extendqisi2 96:Src/sd_diskio.c **** /* USER CODE END beforeFunctionSection */ 464 .loc 1 96 1 view .LVU104 465 0004 7047 bx lr 466 .L43: 467 0006 00BF .align 2 468 .L42: 469 0008 00000000 .word g_last_status_result 470 .cfi_endproc 471 .LFE1184: 473 .global SD_Driver 474 .section .rodata.SD_Driver,"a" ARM GAS /tmp/cchooSA4.s page 14 475 .align 2 478 SD_Driver: 479 0000 00000000 .word SD_initialize 480 0004 00000000 .word SD_status 481 0008 00000000 .word SD_read 482 000c 00000000 .word SD_write 483 0010 00000000 .word SD_ioctl 484 .section .data.g_last_status_result,"aw" 487 g_last_status_result: 488 0000 01 .byte 1 489 .section .data.g_last_initialize_status,"aw" 492 g_last_initialize_status: 493 0000 01 .byte 1 494 .section .data.Stat,"aw" 497 Stat: 498 0000 01 .byte 1 499 .text 500 .Letext0: 501 .file 2 "Middlewares/Third_Party/FatFs/src/integer.h" 502 .file 3 "Middlewares/Third_Party/FatFs/src/diskio.h" 503 .file 4 "/usr/lib/gcc/arm-none-eabi/13.2.1/include/stdint.h" 504 .file 5 "Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_sd.h" 505 .file 6 "Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h" 506 .file 7 "Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h" 507 .file 8 "Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h" 508 .file 9 "Middlewares/Third_Party/FatFs/src/ff_gen_drv.h" 509 .file 10 "Inc/bsp_driver_sd.h" 510 .file 11 "Inc/sd_diskio.h" ARM GAS /tmp/cchooSA4.s page 15 DEFINED SYMBOLS *ABS*:00000000 sd_diskio.c /tmp/cchooSA4.s:20 .text.SD_CheckStatus:00000000 $t /tmp/cchooSA4.s:25 .text.SD_CheckStatus:00000000 SD_CheckStatus /tmp/cchooSA4.s:65 .text.SD_CheckStatus:00000020 $d /tmp/cchooSA4.s:497 .data.Stat:00000000 Stat /tmp/cchooSA4.s:70 .text.SD_initialize:00000000 $t /tmp/cchooSA4.s:76 .text.SD_initialize:00000000 SD_initialize /tmp/cchooSA4.s:128 .text.SD_initialize:0000002c $d /tmp/cchooSA4.s:492 .data.g_last_initialize_status:00000000 g_last_initialize_status /tmp/cchooSA4.s:134 .text.SD_status:00000000 $t /tmp/cchooSA4.s:140 .text.SD_status:00000000 SD_status /tmp/cchooSA4.s:168 .text.SD_status:00000010 $d /tmp/cchooSA4.s:487 .data.g_last_status_result:00000000 g_last_status_result /tmp/cchooSA4.s:173 .text.SD_read:00000000 $t /tmp/cchooSA4.s:179 .text.SD_read:00000000 SD_read /tmp/cchooSA4.s:235 .text.SD_write:00000000 $t /tmp/cchooSA4.s:241 .text.SD_write:00000000 SD_write /tmp/cchooSA4.s:297 .text.SD_ioctl:00000000 $t /tmp/cchooSA4.s:303 .text.SD_ioctl:00000000 SD_ioctl /tmp/cchooSA4.s:337 .text.SD_ioctl:00000018 $d /tmp/cchooSA4.s:341 .text.SD_ioctl:0000001c $t /tmp/cchooSA4.s:415 .text.SD_ioctl:00000054 $d /tmp/cchooSA4.s:420 .text.sd_diskio_debug_get_last_initialize_status:00000000 $t /tmp/cchooSA4.s:426 .text.sd_diskio_debug_get_last_initialize_status:00000000 sd_diskio_debug_get_last_initialize_status /tmp/cchooSA4.s:442 .text.sd_diskio_debug_get_last_initialize_status:00000008 $d /tmp/cchooSA4.s:447 .text.sd_diskio_debug_get_last_status_result:00000000 $t /tmp/cchooSA4.s:453 .text.sd_diskio_debug_get_last_status_result:00000000 sd_diskio_debug_get_last_status_result /tmp/cchooSA4.s:469 .text.sd_diskio_debug_get_last_status_result:00000008 $d /tmp/cchooSA4.s:478 .rodata.SD_Driver:00000000 SD_Driver /tmp/cchooSA4.s:475 .rodata.SD_Driver:00000000 $d UNDEFINED SYMBOLS BSP_SD_GetCardState BSP_SD_Init BSP_SD_ReadBlocks BSP_SD_WriteBlocks BSP_SD_GetCardInfo