ARM GAS /tmp/ccilYzpH.s page 1 1 .cpu cortex-m7 2 .eabi_attribute 28, 1 3 .eabi_attribute 20, 1 4 .eabi_attribute 21, 1 5 .eabi_attribute 23, 3 6 .eabi_attribute 24, 1 7 .eabi_attribute 25, 1 8 .eabi_attribute 26, 1 9 .eabi_attribute 30, 1 10 .eabi_attribute 34, 1 11 .eabi_attribute 18, 4 12 .file "sd_diskio.c" 13 .text 14 .Ltext0: 15 .cfi_sections .debug_frame 16 .section .text.SD_CheckStatus,"ax",%progbits 17 .align 1 18 .arch armv7e-m 19 .syntax unified 20 .thumb 21 .thumb_func 22 .fpu fpv5-d16 24 SD_CheckStatus: 25 .LVL0: 26 .LFB1183: 27 .file 1 "Src/sd_diskio.c" 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/ccilYzpH.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 **** 58:Src/sd_diskio.c **** /* Private function prototypes -----------------------------------------------*/ 59:Src/sd_diskio.c **** static DSTATUS SD_CheckStatus(BYTE lun); 60:Src/sd_diskio.c **** DSTATUS SD_initialize (BYTE); 61:Src/sd_diskio.c **** DSTATUS SD_status (BYTE); 62:Src/sd_diskio.c **** DRESULT SD_read (BYTE, BYTE*, DWORD, UINT); 63:Src/sd_diskio.c **** #if _USE_WRITE == 1 64:Src/sd_diskio.c **** DRESULT SD_write (BYTE, const BYTE*, DWORD, UINT); 65:Src/sd_diskio.c **** #endif /* _USE_WRITE == 1 */ 66:Src/sd_diskio.c **** #if _USE_IOCTL == 1 67:Src/sd_diskio.c **** DRESULT SD_ioctl (BYTE, BYTE, void*); 68:Src/sd_diskio.c **** #endif /* _USE_IOCTL == 1 */ 69:Src/sd_diskio.c **** 70:Src/sd_diskio.c **** const Diskio_drvTypeDef SD_Driver = 71:Src/sd_diskio.c **** { 72:Src/sd_diskio.c **** SD_initialize, 73:Src/sd_diskio.c **** SD_status, 74:Src/sd_diskio.c **** SD_read, 75:Src/sd_diskio.c **** #if _USE_WRITE == 1 76:Src/sd_diskio.c **** SD_write, 77:Src/sd_diskio.c **** #endif /* _USE_WRITE == 1 */ 78:Src/sd_diskio.c **** 79:Src/sd_diskio.c **** #if _USE_IOCTL == 1 80:Src/sd_diskio.c **** SD_ioctl, 81:Src/sd_diskio.c **** #endif /* _USE_IOCTL == 1 */ 82:Src/sd_diskio.c **** }; 83:Src/sd_diskio.c **** 84:Src/sd_diskio.c **** /* USER CODE BEGIN beforeFunctionSection */ 85:Src/sd_diskio.c **** /* can be used to modify / undefine following code or add new code */ 86:Src/sd_diskio.c **** /* USER CODE END beforeFunctionSection */ 87:Src/sd_diskio.c **** 88:Src/sd_diskio.c **** /* Private functions ---------------------------------------------------------*/ ARM GAS /tmp/ccilYzpH.s page 3 89:Src/sd_diskio.c **** 90:Src/sd_diskio.c **** static DSTATUS SD_CheckStatus(BYTE lun) 91:Src/sd_diskio.c **** { 28 .loc 1 91 1 view -0 29 .cfi_startproc 30 @ args = 0, pretend = 0, frame = 0 31 @ frame_needed = 0, uses_anonymous_args = 0 32 .loc 1 91 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 92:Src/sd_diskio.c **** Stat = STA_NOINIT; 38 .loc 1 92 3 is_stmt 1 view .LVU2 39 .loc 1 92 8 is_stmt 0 view .LVU3 40 0002 074B ldr r3, .L4 41 0004 0122 movs r2, #1 42 0006 1A70 strb r2, [r3] 93:Src/sd_diskio.c **** 94:Src/sd_diskio.c **** if(BSP_SD_GetCardState() == MSD_OK) 43 .loc 1 94 3 is_stmt 1 view .LVU4 44 .loc 1 94 6 is_stmt 0 view .LVU5 45 0008 FFF7FEFF bl BSP_SD_GetCardState 46 .LVL1: 47 .loc 1 94 5 view .LVU6 48 000c 20B9 cbnz r0, .L2 95:Src/sd_diskio.c **** { 96:Src/sd_diskio.c **** Stat &= ~STA_NOINIT; 49 .loc 1 96 5 is_stmt 1 view .LVU7 50 .loc 1 96 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: 97:Src/sd_diskio.c **** } 98:Src/sd_diskio.c **** 99:Src/sd_diskio.c **** return Stat; 56 .loc 1 99 3 is_stmt 1 view .LVU9 57 .loc 1 99 10 is_stmt 0 view .LVU10 58 0018 014B ldr r3, .L4 59 001a 1878 ldrb r0, [r3] @ zero_extendqisi2 100:Src/sd_diskio.c **** } 60 .loc 1 100 1 view .LVU11 61 001c 08BD pop {r3, pc} 62 .L5: 63 001e 00BF .align 2 64 .L4: 65 0020 00000000 .word .LANCHOR0 66 .cfi_endproc 67 .LFE1183: 69 .section .text.SD_initialize,"ax",%progbits 70 .align 1 71 .global SD_initialize 72 .syntax unified 73 .thumb ARM GAS /tmp/ccilYzpH.s page 4 74 .thumb_func 75 .fpu fpv5-d16 77 SD_initialize: 78 .LVL2: 79 .LFB1184: 101:Src/sd_diskio.c **** 102:Src/sd_diskio.c **** /** 103:Src/sd_diskio.c **** * @brief Initializes a Drive 104:Src/sd_diskio.c **** * @param lun : not used 105:Src/sd_diskio.c **** * @retval DSTATUS: Operation status 106:Src/sd_diskio.c **** */ 107:Src/sd_diskio.c **** DSTATUS SD_initialize(BYTE lun) 108:Src/sd_diskio.c **** { 80 .loc 1 108 1 is_stmt 1 view -0 81 .cfi_startproc 82 @ args = 0, pretend = 0, frame = 0 83 @ frame_needed = 0, uses_anonymous_args = 0 84 .loc 1 108 1 is_stmt 0 view .LVU13 85 0000 10B5 push {r4, lr} 86 .LCFI1: 87 .cfi_def_cfa_offset 8 88 .cfi_offset 4, -8 89 .cfi_offset 14, -4 90 0002 0446 mov r4, r0 109:Src/sd_diskio.c **** Stat = STA_NOINIT; 91 .loc 1 109 1 is_stmt 1 view .LVU14 92 .loc 1 109 6 is_stmt 0 view .LVU15 93 0004 074B ldr r3, .L10 94 0006 0122 movs r2, #1 95 0008 1A70 strb r2, [r3] 110:Src/sd_diskio.c **** 111:Src/sd_diskio.c **** #if !defined(DISABLE_SD_INIT) 112:Src/sd_diskio.c **** 113:Src/sd_diskio.c **** if(BSP_SD_Init() == MSD_OK) 96 .loc 1 113 3 is_stmt 1 view .LVU16 97 .loc 1 113 6 is_stmt 0 view .LVU17 98 000a FFF7FEFF bl BSP_SD_Init 99 .LVL3: 100 .loc 1 113 5 view .LVU18 101 000e 10B1 cbz r0, .L9 102 .L7: 114:Src/sd_diskio.c **** { 115:Src/sd_diskio.c **** Stat = SD_CheckStatus(lun); 116:Src/sd_diskio.c **** } 117:Src/sd_diskio.c **** 118:Src/sd_diskio.c **** #else 119:Src/sd_diskio.c **** Stat = SD_CheckStatus(lun); 120:Src/sd_diskio.c **** #endif 121:Src/sd_diskio.c **** 122:Src/sd_diskio.c **** return Stat; 103 .loc 1 122 3 is_stmt 1 view .LVU19 104 .loc 1 122 10 is_stmt 0 view .LVU20 105 0010 044B ldr r3, .L10 106 0012 1878 ldrb r0, [r3] @ zero_extendqisi2 123:Src/sd_diskio.c **** } 107 .loc 1 123 1 view .LVU21 108 0014 10BD pop {r4, pc} ARM GAS /tmp/ccilYzpH.s page 5 109 .L9: 115:Src/sd_diskio.c **** } 110 .loc 1 115 5 is_stmt 1 view .LVU22 115:Src/sd_diskio.c **** } 111 .loc 1 115 12 is_stmt 0 view .LVU23 112 0016 2046 mov r0, r4 113 0018 FFF7FEFF bl SD_CheckStatus 114 .LVL4: 115:Src/sd_diskio.c **** } 115 .loc 1 115 10 view .LVU24 116 001c 014B ldr r3, .L10 117 001e 1870 strb r0, [r3] 118 0020 F6E7 b .L7 119 .L11: 120 0022 00BF .align 2 121 .L10: 122 0024 00000000 .word .LANCHOR0 123 .cfi_endproc 124 .LFE1184: 126 .section .text.SD_status,"ax",%progbits 127 .align 1 128 .global SD_status 129 .syntax unified 130 .thumb 131 .thumb_func 132 .fpu fpv5-d16 134 SD_status: 135 .LVL5: 136 .LFB1185: 124:Src/sd_diskio.c **** 125:Src/sd_diskio.c **** /** 126:Src/sd_diskio.c **** * @brief Gets Disk Status 127:Src/sd_diskio.c **** * @param lun : not used 128:Src/sd_diskio.c **** * @retval DSTATUS: Operation status 129:Src/sd_diskio.c **** */ 130:Src/sd_diskio.c **** DSTATUS SD_status(BYTE lun) 131:Src/sd_diskio.c **** { 137 .loc 1 131 1 is_stmt 1 view -0 138 .cfi_startproc 139 @ args = 0, pretend = 0, frame = 0 140 @ frame_needed = 0, uses_anonymous_args = 0 141 .loc 1 131 1 is_stmt 0 view .LVU26 142 0000 08B5 push {r3, lr} 143 .LCFI2: 144 .cfi_def_cfa_offset 8 145 .cfi_offset 3, -8 146 .cfi_offset 14, -4 132:Src/sd_diskio.c **** return SD_CheckStatus(lun); 147 .loc 1 132 3 is_stmt 1 view .LVU27 148 .loc 1 132 10 is_stmt 0 view .LVU28 149 0002 FFF7FEFF bl SD_CheckStatus 150 .LVL6: 133:Src/sd_diskio.c **** } 151 .loc 1 133 1 view .LVU29 152 0006 08BD pop {r3, pc} 153 .cfi_endproc 154 .LFE1185: ARM GAS /tmp/ccilYzpH.s page 6 156 .section .text.SD_read,"ax",%progbits 157 .align 1 158 .global SD_read 159 .syntax unified 160 .thumb 161 .thumb_func 162 .fpu fpv5-d16 164 SD_read: 165 .LVL7: 166 .LFB1186: 134:Src/sd_diskio.c **** 135:Src/sd_diskio.c **** /* USER CODE BEGIN beforeReadSection */ 136:Src/sd_diskio.c **** /* can be used to modify previous code / undefine following code / add new code */ 137:Src/sd_diskio.c **** /* USER CODE END beforeReadSection */ 138:Src/sd_diskio.c **** /** 139:Src/sd_diskio.c **** * @brief Reads Sector(s) 140:Src/sd_diskio.c **** * @param lun : not used 141:Src/sd_diskio.c **** * @param *buff: Data buffer to store read data 142:Src/sd_diskio.c **** * @param sector: Sector address (LBA) 143:Src/sd_diskio.c **** * @param count: Number of sectors to read (1..128) 144:Src/sd_diskio.c **** * @retval DRESULT: Operation result 145:Src/sd_diskio.c **** */ 146:Src/sd_diskio.c **** 147:Src/sd_diskio.c **** DRESULT SD_read(BYTE lun, BYTE *buff, DWORD sector, UINT count) 148:Src/sd_diskio.c **** { 167 .loc 1 148 1 is_stmt 1 view -0 168 .cfi_startproc 169 @ args = 0, pretend = 0, frame = 0 170 @ frame_needed = 0, uses_anonymous_args = 0 171 .loc 1 148 1 is_stmt 0 view .LVU31 172 0000 08B5 push {r3, lr} 173 .LCFI3: 174 .cfi_def_cfa_offset 8 175 .cfi_offset 3, -8 176 .cfi_offset 14, -4 177 0002 0846 mov r0, r1 178 .LVL8: 179 .loc 1 148 1 view .LVU32 180 0004 1146 mov r1, r2 181 .LVL9: 182 .loc 1 148 1 view .LVU33 183 0006 1A46 mov r2, r3 184 .LVL10: 149:Src/sd_diskio.c **** DRESULT res = RES_ERROR; 185 .loc 1 149 3 is_stmt 1 view .LVU34 150:Src/sd_diskio.c **** 151:Src/sd_diskio.c **** if(BSP_SD_ReadBlocks((uint32_t*)buff, 186 .loc 1 151 3 view .LVU35 187 .loc 1 151 6 is_stmt 0 view .LVU36 188 0008 4FF0FF33 mov r3, #-1 189 .LVL11: 190 .loc 1 151 6 view .LVU37 191 000c FFF7FEFF bl BSP_SD_ReadBlocks 192 .LVL12: 193 .loc 1 151 5 view .LVU38 194 0010 30B9 cbnz r0, .L17 195 .L16: ARM GAS /tmp/ccilYzpH.s page 7 152:Src/sd_diskio.c **** (uint32_t) (sector), 153:Src/sd_diskio.c **** count, SD_TIMEOUT) == MSD_OK) 154:Src/sd_diskio.c **** { 155:Src/sd_diskio.c **** /* wait until the read operation is finished */ 156:Src/sd_diskio.c **** while(BSP_SD_GetCardState()!= MSD_OK) 157:Src/sd_diskio.c **** { 158:Src/sd_diskio.c **** } 196 .loc 1 158 5 is_stmt 1 discriminator 1 view .LVU39 156:Src/sd_diskio.c **** { 197 .loc 1 156 10 discriminator 1 view .LVU40 156:Src/sd_diskio.c **** { 198 .loc 1 156 11 is_stmt 0 discriminator 1 view .LVU41 199 0012 FFF7FEFF bl BSP_SD_GetCardState 200 .LVL13: 156:Src/sd_diskio.c **** { 201 .loc 1 156 10 discriminator 1 view .LVU42 202 0016 0346 mov r3, r0 203 0018 0028 cmp r0, #0 204 001a FAD1 bne .L16 205 .L15: 206 .LVL14: 159:Src/sd_diskio.c **** res = RES_OK; 160:Src/sd_diskio.c **** } 161:Src/sd_diskio.c **** 162:Src/sd_diskio.c **** return res; 207 .loc 1 162 3 is_stmt 1 view .LVU43 163:Src/sd_diskio.c **** } 208 .loc 1 163 1 is_stmt 0 view .LVU44 209 001c 1846 mov r0, r3 210 001e 08BD pop {r3, pc} 211 .LVL15: 212 .L17: 149:Src/sd_diskio.c **** 213 .loc 1 149 11 view .LVU45 214 0020 0123 movs r3, #1 215 0022 FBE7 b .L15 216 .cfi_endproc 217 .LFE1186: 219 .section .text.SD_write,"ax",%progbits 220 .align 1 221 .global SD_write 222 .syntax unified 223 .thumb 224 .thumb_func 225 .fpu fpv5-d16 227 SD_write: 228 .LVL16: 229 .LFB1187: 164:Src/sd_diskio.c **** 165:Src/sd_diskio.c **** /* USER CODE BEGIN beforeWriteSection */ 166:Src/sd_diskio.c **** /* can be used to modify previous code / undefine following code / add new code */ 167:Src/sd_diskio.c **** /* USER CODE END beforeWriteSection */ 168:Src/sd_diskio.c **** /** 169:Src/sd_diskio.c **** * @brief Writes Sector(s) 170:Src/sd_diskio.c **** * @param lun : not used 171:Src/sd_diskio.c **** * @param *buff: Data to be written 172:Src/sd_diskio.c **** * @param sector: Sector address (LBA) ARM GAS /tmp/ccilYzpH.s page 8 173:Src/sd_diskio.c **** * @param count: Number of sectors to write (1..128) 174:Src/sd_diskio.c **** * @retval DRESULT: Operation result 175:Src/sd_diskio.c **** */ 176:Src/sd_diskio.c **** #if _USE_WRITE == 1 177:Src/sd_diskio.c **** 178:Src/sd_diskio.c **** DRESULT SD_write(BYTE lun, const BYTE *buff, DWORD sector, UINT count) 179:Src/sd_diskio.c **** { 230 .loc 1 179 1 is_stmt 1 view -0 231 .cfi_startproc 232 @ args = 0, pretend = 0, frame = 0 233 @ frame_needed = 0, uses_anonymous_args = 0 234 .loc 1 179 1 is_stmt 0 view .LVU47 235 0000 08B5 push {r3, lr} 236 .LCFI4: 237 .cfi_def_cfa_offset 8 238 .cfi_offset 3, -8 239 .cfi_offset 14, -4 240 0002 0846 mov r0, r1 241 .LVL17: 242 .loc 1 179 1 view .LVU48 243 0004 1146 mov r1, r2 244 .LVL18: 245 .loc 1 179 1 view .LVU49 246 0006 1A46 mov r2, r3 247 .LVL19: 180:Src/sd_diskio.c **** DRESULT res = RES_ERROR; 248 .loc 1 180 3 is_stmt 1 view .LVU50 181:Src/sd_diskio.c **** 182:Src/sd_diskio.c **** if(BSP_SD_WriteBlocks((uint32_t*)buff, 249 .loc 1 182 3 view .LVU51 250 .loc 1 182 6 is_stmt 0 view .LVU52 251 0008 4FF0FF33 mov r3, #-1 252 .LVL20: 253 .loc 1 182 6 view .LVU53 254 000c FFF7FEFF bl BSP_SD_WriteBlocks 255 .LVL21: 256 .loc 1 182 5 view .LVU54 257 0010 30B9 cbnz r0, .L22 258 .L21: 183:Src/sd_diskio.c **** (uint32_t)(sector), 184:Src/sd_diskio.c **** count, SD_TIMEOUT) == MSD_OK) 185:Src/sd_diskio.c **** { 186:Src/sd_diskio.c **** /* wait until the Write operation is finished */ 187:Src/sd_diskio.c **** while(BSP_SD_GetCardState() != MSD_OK) 188:Src/sd_diskio.c **** { 189:Src/sd_diskio.c **** } 259 .loc 1 189 5 is_stmt 1 discriminator 1 view .LVU55 187:Src/sd_diskio.c **** { 260 .loc 1 187 10 discriminator 1 view .LVU56 187:Src/sd_diskio.c **** { 261 .loc 1 187 11 is_stmt 0 discriminator 1 view .LVU57 262 0012 FFF7FEFF bl BSP_SD_GetCardState 263 .LVL22: 187:Src/sd_diskio.c **** { 264 .loc 1 187 10 discriminator 1 view .LVU58 265 0016 0346 mov r3, r0 266 0018 0028 cmp r0, #0 ARM GAS /tmp/ccilYzpH.s page 9 267 001a FAD1 bne .L21 268 .L20: 269 .LVL23: 190:Src/sd_diskio.c **** res = RES_OK; 191:Src/sd_diskio.c **** } 192:Src/sd_diskio.c **** 193:Src/sd_diskio.c **** return res; 270 .loc 1 193 3 is_stmt 1 view .LVU59 194:Src/sd_diskio.c **** } 271 .loc 1 194 1 is_stmt 0 view .LVU60 272 001c 1846 mov r0, r3 273 001e 08BD pop {r3, pc} 274 .LVL24: 275 .L22: 180:Src/sd_diskio.c **** 276 .loc 1 180 11 view .LVU61 277 0020 0123 movs r3, #1 278 0022 FBE7 b .L20 279 .cfi_endproc 280 .LFE1187: 282 .section .text.SD_ioctl,"ax",%progbits 283 .align 1 284 .global SD_ioctl 285 .syntax unified 286 .thumb 287 .thumb_func 288 .fpu fpv5-d16 290 SD_ioctl: 291 .LVL25: 292 .LFB1188: 195:Src/sd_diskio.c **** #endif /* _USE_WRITE == 1 */ 196:Src/sd_diskio.c **** 197:Src/sd_diskio.c **** /* USER CODE BEGIN beforeIoctlSection */ 198:Src/sd_diskio.c **** /* can be used to modify previous code / undefine following code / add new code */ 199:Src/sd_diskio.c **** /* USER CODE END beforeIoctlSection */ 200:Src/sd_diskio.c **** /** 201:Src/sd_diskio.c **** * @brief I/O control operation 202:Src/sd_diskio.c **** * @param lun : not used 203:Src/sd_diskio.c **** * @param cmd: Control code 204:Src/sd_diskio.c **** * @param *buff: Buffer to send/receive control data 205:Src/sd_diskio.c **** * @retval DRESULT: Operation result 206:Src/sd_diskio.c **** */ 207:Src/sd_diskio.c **** #if _USE_IOCTL == 1 208:Src/sd_diskio.c **** DRESULT SD_ioctl(BYTE lun, BYTE cmd, void *buff) 209:Src/sd_diskio.c **** { 293 .loc 1 209 1 is_stmt 1 view -0 294 .cfi_startproc 295 @ args = 0, pretend = 0, frame = 32 296 @ frame_needed = 0, uses_anonymous_args = 0 297 .loc 1 209 1 is_stmt 0 view .LVU63 298 0000 30B5 push {r4, r5, lr} 299 .LCFI5: 300 .cfi_def_cfa_offset 12 301 .cfi_offset 4, -12 302 .cfi_offset 5, -8 303 .cfi_offset 14, -4 304 0002 89B0 sub sp, sp, #36 ARM GAS /tmp/ccilYzpH.s page 10 305 .LCFI6: 306 .cfi_def_cfa_offset 48 210:Src/sd_diskio.c **** DRESULT res = RES_ERROR; 307 .loc 1 210 3 is_stmt 1 view .LVU64 308 .LVL26: 211:Src/sd_diskio.c **** BSP_SD_CardInfo CardInfo; 309 .loc 1 211 3 view .LVU65 212:Src/sd_diskio.c **** 213:Src/sd_diskio.c **** if (Stat & STA_NOINIT) return RES_NOTRDY; 310 .loc 1 213 3 view .LVU66 311 .loc 1 213 12 is_stmt 0 view .LVU67 312 0004 134B ldr r3, .L34 313 0006 1878 ldrb r0, [r3] @ zero_extendqisi2 314 .LVL27: 315 .loc 1 213 6 view .LVU68 316 0008 10F00104 ands r4, r0, #1 317 000c 1BD1 bne .L31 318 000e 1546 mov r5, r2 214:Src/sd_diskio.c **** 215:Src/sd_diskio.c **** switch (cmd) 319 .loc 1 215 3 is_stmt 1 view .LVU69 320 0010 0329 cmp r1, #3 321 0012 1CD8 bhi .L32 322 0014 DFE801F0 tbb [pc, r1] 323 .L27: 324 0018 02 .byte (.L30-.L27)/2 325 0019 04 .byte (.L29-.L27)/2 326 001a 0A .byte (.L28-.L27)/2 327 001b 10 .byte (.L26-.L27)/2 328 .p2align 1 329 .L30: 330 001c 0C46 mov r4, r1 331 001e 13E0 b .L25 332 .L29: 216:Src/sd_diskio.c **** { 217:Src/sd_diskio.c **** /* Make sure that no pending write process */ 218:Src/sd_diskio.c **** case CTRL_SYNC : 219:Src/sd_diskio.c **** res = RES_OK; 220:Src/sd_diskio.c **** break; 221:Src/sd_diskio.c **** 222:Src/sd_diskio.c **** /* Get number of sectors on the disk (DWORD) */ 223:Src/sd_diskio.c **** case GET_SECTOR_COUNT : 224:Src/sd_diskio.c **** BSP_SD_GetCardInfo(&CardInfo); 333 .loc 1 224 5 view .LVU70 334 0020 6846 mov r0, sp 335 0022 FFF7FEFF bl BSP_SD_GetCardInfo 336 .LVL28: 225:Src/sd_diskio.c **** *(DWORD*)buff = CardInfo.LogBlockNbr; 337 .loc 1 225 5 view .LVU71 338 .loc 1 225 29 is_stmt 0 view .LVU72 339 0026 069B ldr r3, [sp, #24] 340 .loc 1 225 19 view .LVU73 341 0028 2B60 str r3, [r5] 226:Src/sd_diskio.c **** res = RES_OK; 342 .loc 1 226 5 is_stmt 1 view .LVU74 343 .LVL29: 227:Src/sd_diskio.c **** break; ARM GAS /tmp/ccilYzpH.s page 11 344 .loc 1 227 5 view .LVU75 345 002a 0DE0 b .L25 346 .LVL30: 347 .L28: 228:Src/sd_diskio.c **** 229:Src/sd_diskio.c **** /* Get R/W sector size (WORD) */ 230:Src/sd_diskio.c **** case GET_SECTOR_SIZE : 231:Src/sd_diskio.c **** BSP_SD_GetCardInfo(&CardInfo); 348 .loc 1 231 5 view .LVU76 349 002c 6846 mov r0, sp 350 002e FFF7FEFF bl BSP_SD_GetCardInfo 351 .LVL31: 232:Src/sd_diskio.c **** *(WORD*)buff = CardInfo.LogBlockSize; 352 .loc 1 232 5 view .LVU77 353 .loc 1 232 28 is_stmt 0 view .LVU78 354 0032 079B ldr r3, [sp, #28] 355 .loc 1 232 18 view .LVU79 356 0034 2B80 strh r3, [r5] @ movhi 233:Src/sd_diskio.c **** res = RES_OK; 357 .loc 1 233 5 is_stmt 1 view .LVU80 358 .LVL32: 234:Src/sd_diskio.c **** break; 359 .loc 1 234 5 view .LVU81 360 0036 07E0 b .L25 361 .LVL33: 362 .L26: 235:Src/sd_diskio.c **** 236:Src/sd_diskio.c **** /* Get erase block size in unit of sector (DWORD) */ 237:Src/sd_diskio.c **** case GET_BLOCK_SIZE : 238:Src/sd_diskio.c **** BSP_SD_GetCardInfo(&CardInfo); 363 .loc 1 238 5 view .LVU82 364 0038 6846 mov r0, sp 365 003a FFF7FEFF bl BSP_SD_GetCardInfo 366 .LVL34: 239:Src/sd_diskio.c **** *(DWORD*)buff = CardInfo.LogBlockSize / SD_DEFAULT_BLOCK_SIZE; 367 .loc 1 239 5 view .LVU83 368 .loc 1 239 29 is_stmt 0 view .LVU84 369 003e 079B ldr r3, [sp, #28] 370 .loc 1 239 43 view .LVU85 371 0040 5B0A lsrs r3, r3, #9 372 .loc 1 239 19 view .LVU86 373 0042 2B60 str r3, [r5] 240:Src/sd_diskio.c **** res = RES_OK; 374 .loc 1 240 5 is_stmt 1 view .LVU87 375 .LVL35: 241:Src/sd_diskio.c **** break; 376 .loc 1 241 5 view .LVU88 377 0044 00E0 b .L25 378 .LVL36: 379 .L31: 213:Src/sd_diskio.c **** 380 .loc 1 213 33 is_stmt 0 view .LVU89 381 0046 0324 movs r4, #3 382 .LVL37: 383 .L25: 242:Src/sd_diskio.c **** 243:Src/sd_diskio.c **** default: ARM GAS /tmp/ccilYzpH.s page 12 244:Src/sd_diskio.c **** res = RES_PARERR; 245:Src/sd_diskio.c **** } 246:Src/sd_diskio.c **** 247:Src/sd_diskio.c **** return res; 248:Src/sd_diskio.c **** } 384 .loc 1 248 1 view .LVU90 385 0048 2046 mov r0, r4 386 004a 09B0 add sp, sp, #36 387 .LCFI7: 388 .cfi_remember_state 389 .cfi_def_cfa_offset 12 390 @ sp needed 391 004c 30BD pop {r4, r5, pc} 392 .LVL38: 393 .L32: 394 .LCFI8: 395 .cfi_restore_state 244:Src/sd_diskio.c **** } 396 .loc 1 244 9 view .LVU91 397 004e 0424 movs r4, #4 398 0050 FAE7 b .L25 399 .L35: 400 0052 00BF .align 2 401 .L34: 402 0054 00000000 .word .LANCHOR0 403 .cfi_endproc 404 .LFE1188: 406 .global SD_Driver 407 .section .data.Stat,"aw" 408 .set .LANCHOR0,. + 0 411 Stat: 412 0000 01 .byte 1 413 .section .rodata.SD_Driver,"a" 414 .align 2 417 SD_Driver: 418 0000 00000000 .word SD_initialize 419 0004 00000000 .word SD_status 420 0008 00000000 .word SD_read 421 000c 00000000 .word SD_write 422 0010 00000000 .word SD_ioctl 423 .text 424 .Letext0: 425 .file 2 "Middlewares/Third_Party/FatFs/src/integer.h" 426 .file 3 "Middlewares/Third_Party/FatFs/src/diskio.h" 427 .file 4 "/usr/lib/gcc/arm-none-eabi/10.3.1/include/stdint.h" 428 .file 5 "Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_sd.h" 429 .file 6 "Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h" 430 .file 7 "Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h" 431 .file 8 "Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h" 432 .file 9 "Middlewares/Third_Party/FatFs/src/ff_gen_drv.h" 433 .file 10 "Inc/bsp_driver_sd.h" 434 .file 11 "Inc/sd_diskio.h" ARM GAS /tmp/ccilYzpH.s page 13 DEFINED SYMBOLS *ABS*:0000000000000000 sd_diskio.c /tmp/ccilYzpH.s:17 .text.SD_CheckStatus:0000000000000000 $t /tmp/ccilYzpH.s:24 .text.SD_CheckStatus:0000000000000000 SD_CheckStatus /tmp/ccilYzpH.s:65 .text.SD_CheckStatus:0000000000000020 $d /tmp/ccilYzpH.s:70 .text.SD_initialize:0000000000000000 $t /tmp/ccilYzpH.s:77 .text.SD_initialize:0000000000000000 SD_initialize /tmp/ccilYzpH.s:122 .text.SD_initialize:0000000000000024 $d /tmp/ccilYzpH.s:127 .text.SD_status:0000000000000000 $t /tmp/ccilYzpH.s:134 .text.SD_status:0000000000000000 SD_status /tmp/ccilYzpH.s:157 .text.SD_read:0000000000000000 $t /tmp/ccilYzpH.s:164 .text.SD_read:0000000000000000 SD_read /tmp/ccilYzpH.s:220 .text.SD_write:0000000000000000 $t /tmp/ccilYzpH.s:227 .text.SD_write:0000000000000000 SD_write /tmp/ccilYzpH.s:283 .text.SD_ioctl:0000000000000000 $t /tmp/ccilYzpH.s:290 .text.SD_ioctl:0000000000000000 SD_ioctl /tmp/ccilYzpH.s:324 .text.SD_ioctl:0000000000000018 $d /tmp/ccilYzpH.s:328 .text.SD_ioctl:000000000000001c $t /tmp/ccilYzpH.s:402 .text.SD_ioctl:0000000000000054 $d /tmp/ccilYzpH.s:417 .rodata.SD_Driver:0000000000000000 SD_Driver /tmp/ccilYzpH.s:411 .data.Stat:0000000000000000 Stat /tmp/ccilYzpH.s:414 .rodata.SD_Driver:0000000000000000 $d UNDEFINED SYMBOLS BSP_SD_GetCardState BSP_SD_Init BSP_SD_ReadBlocks BSP_SD_WriteBlocks BSP_SD_GetCardInfo