ARM GAS /tmp/ccVIJNmt.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 "bsp_driver_sd.c" 15 .text 16 .Ltext0: 17 .cfi_sections .debug_frame 18 .file 1 "Src/bsp_driver_sd.c" 19 .section .text.BSP_SD_GetDebugInfo,"ax",%progbits 20 .align 1 21 .global BSP_SD_GetDebugInfo 22 .syntax unified 23 .thumb 24 .thumb_func 26 BSP_SD_GetDebugInfo: 27 .LVL0: 28 .LFB141: 1:Src/bsp_driver_sd.c **** /* USER CODE BEGIN Header */ 2:Src/bsp_driver_sd.c **** /** 3:Src/bsp_driver_sd.c **** ****************************************************************************** 4:Src/bsp_driver_sd.c **** * @file bsp_driver_sd.c for F7 (based on stm32756g_eval_sd.c) 5:Src/bsp_driver_sd.c **** * @brief This file includes a generic uSD card driver. 6:Src/bsp_driver_sd.c **** * To be completed by the user according to the board used for the project. 7:Src/bsp_driver_sd.c **** * @note Some functions generated as weak: they can be overridden by 8:Src/bsp_driver_sd.c **** * - code in user files 9:Src/bsp_driver_sd.c **** * - or BSP code from the FW pack files 10:Src/bsp_driver_sd.c **** * if such files are added to the generated project (by the user). 11:Src/bsp_driver_sd.c **** ****************************************************************************** 12:Src/bsp_driver_sd.c **** * @attention 13:Src/bsp_driver_sd.c **** * 14:Src/bsp_driver_sd.c **** * Copyright (c) 2023 STMicroelectronics. 15:Src/bsp_driver_sd.c **** * All rights reserved. 16:Src/bsp_driver_sd.c **** * 17:Src/bsp_driver_sd.c **** * This software is licensed under terms that can be found in the LICENSE file 18:Src/bsp_driver_sd.c **** * in the root directory of this software component. 19:Src/bsp_driver_sd.c **** * If no LICENSE file comes with this software, it is provided AS-IS. 20:Src/bsp_driver_sd.c **** * 21:Src/bsp_driver_sd.c **** ****************************************************************************** 22:Src/bsp_driver_sd.c **** */ 23:Src/bsp_driver_sd.c **** /* USER CODE END Header */ 24:Src/bsp_driver_sd.c **** 25:Src/bsp_driver_sd.c **** #ifdef OLD_API 26:Src/bsp_driver_sd.c **** /* kept to avoid issue when migrating old projects. */ 27:Src/bsp_driver_sd.c **** /* USER CODE BEGIN 0 */ 28:Src/bsp_driver_sd.c **** 29:Src/bsp_driver_sd.c **** /* USER CODE END 0 */ 30:Src/bsp_driver_sd.c **** #else ARM GAS /tmp/ccVIJNmt.s page 2 31:Src/bsp_driver_sd.c **** /* USER CODE BEGIN FirstSection */ 32:Src/bsp_driver_sd.c **** /* can be used to modify / undefine following code or add new definitions */ 33:Src/bsp_driver_sd.c **** /* USER CODE END FirstSection */ 34:Src/bsp_driver_sd.c **** /* Includes ------------------------------------------------------------------*/ 35:Src/bsp_driver_sd.c **** #include "bsp_driver_sd.h" 36:Src/bsp_driver_sd.c **** 37:Src/bsp_driver_sd.c **** /* Extern variables ---------------------------------------------------------*/ 38:Src/bsp_driver_sd.c **** 39:Src/bsp_driver_sd.c **** extern SD_HandleTypeDef hsd1; 40:Src/bsp_driver_sd.c **** 41:Src/bsp_driver_sd.c **** /* USER CODE BEGIN BeforeInitSection */ 42:Src/bsp_driver_sd.c **** /* can be used to modify / undefine following code or add code */ 43:Src/bsp_driver_sd.c **** static volatile uint8_t g_last_bsp_sd_init_status = MSD_ERROR_SD_NOT_PRESENT; 44:Src/bsp_driver_sd.c **** static volatile uint8_t g_last_bsp_sd_detect_status = SD_NOT_PRESENT; 45:Src/bsp_driver_sd.c **** static volatile uint8_t g_last_bsp_sd_hal_init_status = HAL_ERROR; 46:Src/bsp_driver_sd.c **** static volatile uint8_t g_last_bsp_sd_wide_bus_status = HAL_ERROR; 47:Src/bsp_driver_sd.c **** static volatile uint32_t g_last_bsp_sd_hal_error = 0u; 48:Src/bsp_driver_sd.c **** 49:Src/bsp_driver_sd.c **** void BSP_SD_GetDebugInfo(bsp_sd_debug_info_t *out_info) 50:Src/bsp_driver_sd.c **** { 29 .loc 1 50 1 view -0 30 .cfi_startproc 31 @ args = 0, pretend = 0, frame = 0 32 @ frame_needed = 0, uses_anonymous_args = 0 33 @ link register save eliminated. 51:Src/bsp_driver_sd.c **** if (out_info == NULL) 34 .loc 1 51 3 view .LVU1 35 .loc 1 51 6 is_stmt 0 view .LVU2 36 0000 70B1 cbz r0, .L1 52:Src/bsp_driver_sd.c **** { 53:Src/bsp_driver_sd.c **** return; 54:Src/bsp_driver_sd.c **** } 55:Src/bsp_driver_sd.c **** 56:Src/bsp_driver_sd.c **** out_info->last_init_status = g_last_bsp_sd_init_status; 37 .loc 1 56 3 is_stmt 1 view .LVU3 38 .loc 1 56 30 is_stmt 0 view .LVU4 39 0002 084A ldr r2, .L3 40 0004 1278 ldrb r2, [r2] @ zero_extendqisi2 41 0006 0270 strb r2, [r0] 57:Src/bsp_driver_sd.c **** out_info->last_detect_status = g_last_bsp_sd_detect_status; 42 .loc 1 57 3 is_stmt 1 view .LVU5 43 .loc 1 57 32 is_stmt 0 view .LVU6 44 0008 074A ldr r2, .L3+4 45 000a 1278 ldrb r2, [r2] @ zero_extendqisi2 46 000c 4270 strb r2, [r0, #1] 58:Src/bsp_driver_sd.c **** out_info->last_hal_init_status = g_last_bsp_sd_hal_init_status; 47 .loc 1 58 3 is_stmt 1 view .LVU7 48 .loc 1 58 34 is_stmt 0 view .LVU8 49 000e 074A ldr r2, .L3+8 50 0010 1278 ldrb r2, [r2] @ zero_extendqisi2 51 0012 8270 strb r2, [r0, #2] 59:Src/bsp_driver_sd.c **** out_info->last_wide_bus_status = g_last_bsp_sd_wide_bus_status; 52 .loc 1 59 3 is_stmt 1 view .LVU9 53 .loc 1 59 34 is_stmt 0 view .LVU10 54 0014 064A ldr r2, .L3+12 55 0016 1278 ldrb r2, [r2] @ zero_extendqisi2 56 0018 C270 strb r2, [r0, #3] ARM GAS /tmp/ccVIJNmt.s page 3 60:Src/bsp_driver_sd.c **** out_info->last_hal_error = g_last_bsp_sd_hal_error; 57 .loc 1 60 3 is_stmt 1 view .LVU11 58 .loc 1 60 28 is_stmt 0 view .LVU12 59 001a 064A ldr r2, .L3+16 60 001c 1268 ldr r2, [r2] 61 001e 4260 str r2, [r0, #4] 62 .L1: 61:Src/bsp_driver_sd.c **** } 63 .loc 1 61 1 view .LVU13 64 0020 7047 bx lr 65 .L4: 66 0022 00BF .align 2 67 .L3: 68 0024 00000000 .word g_last_bsp_sd_init_status 69 0028 00000000 .word g_last_bsp_sd_detect_status 70 002c 00000000 .word g_last_bsp_sd_hal_init_status 71 0030 00000000 .word g_last_bsp_sd_wide_bus_status 72 0034 00000000 .word g_last_bsp_sd_hal_error 73 .cfi_endproc 74 .LFE141: 76 .section .text.BSP_SD_ITConfig,"ax",%progbits 77 .align 1 78 .weak BSP_SD_ITConfig 79 .syntax unified 80 .thumb 81 .thumb_func 83 BSP_SD_ITConfig: 84 .LFB143: 62:Src/bsp_driver_sd.c **** /* USER CODE END BeforeInitSection */ 63:Src/bsp_driver_sd.c **** /** 64:Src/bsp_driver_sd.c **** * @brief Initializes the SD card device. 65:Src/bsp_driver_sd.c **** * @retval SD status 66:Src/bsp_driver_sd.c **** */ 67:Src/bsp_driver_sd.c **** __weak uint8_t BSP_SD_Init(void) 68:Src/bsp_driver_sd.c **** { 69:Src/bsp_driver_sd.c **** uint8_t sd_state = MSD_OK; 70:Src/bsp_driver_sd.c **** g_last_bsp_sd_detect_status = BSP_SD_IsDetected(); 71:Src/bsp_driver_sd.c **** g_last_bsp_sd_hal_init_status = HAL_ERROR; 72:Src/bsp_driver_sd.c **** g_last_bsp_sd_wide_bus_status = HAL_ERROR; 73:Src/bsp_driver_sd.c **** g_last_bsp_sd_hal_error = 0u; 74:Src/bsp_driver_sd.c **** /* Check if the SD card is plugged in the slot */ 75:Src/bsp_driver_sd.c **** if (g_last_bsp_sd_detect_status != SD_PRESENT) 76:Src/bsp_driver_sd.c **** { 77:Src/bsp_driver_sd.c **** g_last_bsp_sd_init_status = MSD_ERROR_SD_NOT_PRESENT; 78:Src/bsp_driver_sd.c **** return MSD_ERROR_SD_NOT_PRESENT; 79:Src/bsp_driver_sd.c **** } 80:Src/bsp_driver_sd.c **** hsd1.Init.BusWide = SDMMC_BUS_WIDE_1B; 81:Src/bsp_driver_sd.c **** hsd1.Init.ClockDiv = 118u; 82:Src/bsp_driver_sd.c **** /* HAL SD initialization */ 83:Src/bsp_driver_sd.c **** sd_state = HAL_SD_Init(&hsd1); 84:Src/bsp_driver_sd.c **** g_last_bsp_sd_hal_init_status = sd_state; 85:Src/bsp_driver_sd.c **** g_last_bsp_sd_hal_error = hsd1.ErrorCode; 86:Src/bsp_driver_sd.c **** /* Configure SD Bus width (4 bits mode selected) */ 87:Src/bsp_driver_sd.c **** if (sd_state == MSD_OK) 88:Src/bsp_driver_sd.c **** { 89:Src/bsp_driver_sd.c **** g_last_bsp_sd_wide_bus_status = HAL_OK; 90:Src/bsp_driver_sd.c **** } ARM GAS /tmp/ccVIJNmt.s page 4 91:Src/bsp_driver_sd.c **** 92:Src/bsp_driver_sd.c **** g_last_bsp_sd_init_status = sd_state; 93:Src/bsp_driver_sd.c **** return sd_state; 94:Src/bsp_driver_sd.c **** } 95:Src/bsp_driver_sd.c **** /* USER CODE BEGIN AfterInitSection */ 96:Src/bsp_driver_sd.c **** /* can be used to modify previous code / undefine following code / add code */ 97:Src/bsp_driver_sd.c **** /* USER CODE END AfterInitSection */ 98:Src/bsp_driver_sd.c **** 99:Src/bsp_driver_sd.c **** /* USER CODE BEGIN InterruptMode */ 100:Src/bsp_driver_sd.c **** /** 101:Src/bsp_driver_sd.c **** * @brief Configures Interrupt mode for SD detection pin. 102:Src/bsp_driver_sd.c **** * @retval Returns 0 103:Src/bsp_driver_sd.c **** */ 104:Src/bsp_driver_sd.c **** __weak uint8_t BSP_SD_ITConfig(void) 105:Src/bsp_driver_sd.c **** { 85 .loc 1 105 1 is_stmt 1 view -0 86 .cfi_startproc 87 @ args = 0, pretend = 0, frame = 0 88 @ frame_needed = 0, uses_anonymous_args = 0 89 @ link register save eliminated. 106:Src/bsp_driver_sd.c **** /* Code to be updated by the user or replaced by one from the FW pack (in a stmxxxx_sd.c file) */ 107:Src/bsp_driver_sd.c **** 108:Src/bsp_driver_sd.c **** return (uint8_t)0; 90 .loc 1 108 3 view .LVU15 109:Src/bsp_driver_sd.c **** } 91 .loc 1 109 1 is_stmt 0 view .LVU16 92 0000 0020 movs r0, #0 93 0002 7047 bx lr 94 .cfi_endproc 95 .LFE143: 97 .section .text.BSP_SD_ReadBlocks,"ax",%progbits 98 .align 1 99 .weak BSP_SD_ReadBlocks 100 .syntax unified 101 .thumb 102 .thumb_func 104 BSP_SD_ReadBlocks: 105 .LVL1: 106 .LFB144: 110:Src/bsp_driver_sd.c **** 111:Src/bsp_driver_sd.c **** /* USER CODE END InterruptMode */ 112:Src/bsp_driver_sd.c **** 113:Src/bsp_driver_sd.c **** /* USER CODE BEGIN BeforeReadBlocksSection */ 114:Src/bsp_driver_sd.c **** /* can be used to modify previous code / undefine following code / add code */ 115:Src/bsp_driver_sd.c **** /* USER CODE END BeforeReadBlocksSection */ 116:Src/bsp_driver_sd.c **** /** 117:Src/bsp_driver_sd.c **** * @brief Reads block(s) from a specified address in an SD card, in polling mode. 118:Src/bsp_driver_sd.c **** * @param pData: Pointer to the buffer that will contain the data to transmit 119:Src/bsp_driver_sd.c **** * @param ReadAddr: Address from where data is to be read 120:Src/bsp_driver_sd.c **** * @param NumOfBlocks: Number of SD blocks to read 121:Src/bsp_driver_sd.c **** * @param Timeout: Timeout for read operation 122:Src/bsp_driver_sd.c **** * @retval SD status 123:Src/bsp_driver_sd.c **** */ 124:Src/bsp_driver_sd.c **** __weak uint8_t BSP_SD_ReadBlocks(uint32_t *pData, uint32_t ReadAddr, uint32_t NumOfBlocks, uint32_t 125:Src/bsp_driver_sd.c **** { 107 .loc 1 125 1 is_stmt 1 view -0 108 .cfi_startproc ARM GAS /tmp/ccVIJNmt.s page 5 109 @ args = 0, pretend = 0, frame = 0 110 @ frame_needed = 0, uses_anonymous_args = 0 111 .loc 1 125 1 is_stmt 0 view .LVU18 112 0000 00B5 push {lr} 113 .LCFI0: 114 .cfi_def_cfa_offset 4 115 .cfi_offset 14, -4 116 0002 83B0 sub sp, sp, #12 117 .LCFI1: 118 .cfi_def_cfa_offset 16 126:Src/bsp_driver_sd.c **** uint8_t sd_state = MSD_OK; 119 .loc 1 126 3 is_stmt 1 view .LVU19 120 .LVL2: 127:Src/bsp_driver_sd.c **** 128:Src/bsp_driver_sd.c **** if (HAL_SD_ReadBlocks(&hsd1, (uint8_t *)pData, ReadAddr, NumOfBlocks, Timeout) != HAL_OK) 121 .loc 1 128 3 view .LVU20 122 .loc 1 128 7 is_stmt 0 view .LVU21 123 0004 0093 str r3, [sp] 124 0006 1346 mov r3, r2 125 .LVL3: 126 .loc 1 128 7 view .LVU22 127 0008 0A46 mov r2, r1 128 .LVL4: 129 .loc 1 128 7 view .LVU23 130 000a 0146 mov r1, r0 131 .LVL5: 132 .loc 1 128 7 view .LVU24 133 000c 0348 ldr r0, .L10 134 .LVL6: 135 .loc 1 128 7 view .LVU25 136 000e FFF7FEFF bl HAL_SD_ReadBlocks 137 .LVL7: 138 .loc 1 128 6 discriminator 1 view .LVU26 139 0012 00B1 cbz r0, .L7 129:Src/bsp_driver_sd.c **** { 130:Src/bsp_driver_sd.c **** sd_state = MSD_ERROR; 140 .loc 1 130 14 view .LVU27 141 0014 0120 movs r0, #1 142 .L7: 143 .LVL8: 131:Src/bsp_driver_sd.c **** } 132:Src/bsp_driver_sd.c **** 133:Src/bsp_driver_sd.c **** return sd_state; 144 .loc 1 133 3 is_stmt 1 view .LVU28 134:Src/bsp_driver_sd.c **** } 145 .loc 1 134 1 is_stmt 0 view .LVU29 146 0016 03B0 add sp, sp, #12 147 .LCFI2: 148 .cfi_def_cfa_offset 4 149 @ sp needed 150 0018 5DF804FB ldr pc, [sp], #4 151 .L11: 152 .align 2 153 .L10: 154 001c 00000000 .word hsd1 155 .cfi_endproc 156 .LFE144: ARM GAS /tmp/ccVIJNmt.s page 6 158 .section .text.BSP_SD_WriteBlocks,"ax",%progbits 159 .align 1 160 .weak BSP_SD_WriteBlocks 161 .syntax unified 162 .thumb 163 .thumb_func 165 BSP_SD_WriteBlocks: 166 .LVL9: 167 .LFB145: 135:Src/bsp_driver_sd.c **** 136:Src/bsp_driver_sd.c **** /* USER CODE BEGIN BeforeWriteBlocksSection */ 137:Src/bsp_driver_sd.c **** /* can be used to modify previous code / undefine following code / add code */ 138:Src/bsp_driver_sd.c **** /* USER CODE END BeforeWriteBlocksSection */ 139:Src/bsp_driver_sd.c **** /** 140:Src/bsp_driver_sd.c **** * @brief Writes block(s) to a specified address in an SD card, in polling mode. 141:Src/bsp_driver_sd.c **** * @param pData: Pointer to the buffer that will contain the data to transmit 142:Src/bsp_driver_sd.c **** * @param WriteAddr: Address from where data is to be written 143:Src/bsp_driver_sd.c **** * @param NumOfBlocks: Number of SD blocks to write 144:Src/bsp_driver_sd.c **** * @param Timeout: Timeout for write operation 145:Src/bsp_driver_sd.c **** * @retval SD status 146:Src/bsp_driver_sd.c **** */ 147:Src/bsp_driver_sd.c **** __weak uint8_t BSP_SD_WriteBlocks(uint32_t *pData, uint32_t WriteAddr, uint32_t NumOfBlocks, uint32 148:Src/bsp_driver_sd.c **** { 168 .loc 1 148 1 is_stmt 1 view -0 169 .cfi_startproc 170 @ args = 0, pretend = 0, frame = 0 171 @ frame_needed = 0, uses_anonymous_args = 0 172 .loc 1 148 1 is_stmt 0 view .LVU31 173 0000 00B5 push {lr} 174 .LCFI3: 175 .cfi_def_cfa_offset 4 176 .cfi_offset 14, -4 177 0002 83B0 sub sp, sp, #12 178 .LCFI4: 179 .cfi_def_cfa_offset 16 149:Src/bsp_driver_sd.c **** uint8_t sd_state = MSD_OK; 180 .loc 1 149 3 is_stmt 1 view .LVU32 181 .LVL10: 150:Src/bsp_driver_sd.c **** 151:Src/bsp_driver_sd.c **** if (HAL_SD_WriteBlocks(&hsd1, (uint8_t *)pData, WriteAddr, NumOfBlocks, Timeout) != HAL_OK) 182 .loc 1 151 3 view .LVU33 183 .loc 1 151 7 is_stmt 0 view .LVU34 184 0004 0093 str r3, [sp] 185 0006 1346 mov r3, r2 186 .LVL11: 187 .loc 1 151 7 view .LVU35 188 0008 0A46 mov r2, r1 189 .LVL12: 190 .loc 1 151 7 view .LVU36 191 000a 0146 mov r1, r0 192 .LVL13: 193 .loc 1 151 7 view .LVU37 194 000c 0348 ldr r0, .L16 195 .LVL14: 196 .loc 1 151 7 view .LVU38 197 000e FFF7FEFF bl HAL_SD_WriteBlocks 198 .LVL15: ARM GAS /tmp/ccVIJNmt.s page 7 199 .loc 1 151 6 discriminator 1 view .LVU39 200 0012 00B1 cbz r0, .L13 152:Src/bsp_driver_sd.c **** { 153:Src/bsp_driver_sd.c **** sd_state = MSD_ERROR; 201 .loc 1 153 14 view .LVU40 202 0014 0120 movs r0, #1 203 .L13: 204 .LVL16: 154:Src/bsp_driver_sd.c **** } 155:Src/bsp_driver_sd.c **** 156:Src/bsp_driver_sd.c **** return sd_state; 205 .loc 1 156 3 is_stmt 1 view .LVU41 157:Src/bsp_driver_sd.c **** } 206 .loc 1 157 1 is_stmt 0 view .LVU42 207 0016 03B0 add sp, sp, #12 208 .LCFI5: 209 .cfi_def_cfa_offset 4 210 @ sp needed 211 0018 5DF804FB ldr pc, [sp], #4 212 .L17: 213 .align 2 214 .L16: 215 001c 00000000 .word hsd1 216 .cfi_endproc 217 .LFE145: 219 .section .text.BSP_SD_ReadBlocks_DMA,"ax",%progbits 220 .align 1 221 .weak BSP_SD_ReadBlocks_DMA 222 .syntax unified 223 .thumb 224 .thumb_func 226 BSP_SD_ReadBlocks_DMA: 227 .LVL17: 228 .LFB146: 158:Src/bsp_driver_sd.c **** 159:Src/bsp_driver_sd.c **** /* USER CODE BEGIN BeforeReadDMABlocksSection */ 160:Src/bsp_driver_sd.c **** /* can be used to modify previous code / undefine following code / add code */ 161:Src/bsp_driver_sd.c **** /* USER CODE END BeforeReadDMABlocksSection */ 162:Src/bsp_driver_sd.c **** /** 163:Src/bsp_driver_sd.c **** * @brief Reads block(s) from a specified address in an SD card, in DMA mode. 164:Src/bsp_driver_sd.c **** * @param pData: Pointer to the buffer that will contain the data to transmit 165:Src/bsp_driver_sd.c **** * @param ReadAddr: Address from where data is to be read 166:Src/bsp_driver_sd.c **** * @param NumOfBlocks: Number of SD blocks to read 167:Src/bsp_driver_sd.c **** * @retval SD status 168:Src/bsp_driver_sd.c **** */ 169:Src/bsp_driver_sd.c **** __weak uint8_t BSP_SD_ReadBlocks_DMA(uint32_t *pData, uint32_t ReadAddr, uint32_t NumOfBlocks) 170:Src/bsp_driver_sd.c **** { 229 .loc 1 170 1 is_stmt 1 view -0 230 .cfi_startproc 231 @ args = 0, pretend = 0, frame = 0 232 @ frame_needed = 0, uses_anonymous_args = 0 233 .loc 1 170 1 is_stmt 0 view .LVU44 234 0000 08B5 push {r3, lr} 235 .LCFI6: 236 .cfi_def_cfa_offset 8 237 .cfi_offset 3, -8 238 .cfi_offset 14, -4 ARM GAS /tmp/ccVIJNmt.s page 8 239 0002 1346 mov r3, r2 171:Src/bsp_driver_sd.c **** uint8_t sd_state = MSD_OK; 240 .loc 1 171 3 is_stmt 1 view .LVU45 241 .LVL18: 172:Src/bsp_driver_sd.c **** 173:Src/bsp_driver_sd.c **** /* Read block(s) in DMA transfer mode */ 174:Src/bsp_driver_sd.c **** if (HAL_SD_ReadBlocks_DMA(&hsd1, (uint8_t *)pData, ReadAddr, NumOfBlocks) != HAL_OK) 242 .loc 1 174 3 view .LVU46 243 .loc 1 174 7 is_stmt 0 view .LVU47 244 0004 0A46 mov r2, r1 245 .LVL19: 246 .loc 1 174 7 view .LVU48 247 0006 0146 mov r1, r0 248 .LVL20: 249 .loc 1 174 7 view .LVU49 250 0008 0248 ldr r0, .L22 251 .LVL21: 252 .loc 1 174 7 view .LVU50 253 000a FFF7FEFF bl HAL_SD_ReadBlocks_DMA 254 .LVL22: 255 .loc 1 174 6 discriminator 1 view .LVU51 256 000e 00B1 cbz r0, .L19 175:Src/bsp_driver_sd.c **** { 176:Src/bsp_driver_sd.c **** sd_state = MSD_ERROR; 257 .loc 1 176 14 view .LVU52 258 0010 0120 movs r0, #1 259 .L19: 260 .LVL23: 177:Src/bsp_driver_sd.c **** } 178:Src/bsp_driver_sd.c **** 179:Src/bsp_driver_sd.c **** return sd_state; 261 .loc 1 179 3 is_stmt 1 view .LVU53 180:Src/bsp_driver_sd.c **** } 262 .loc 1 180 1 is_stmt 0 view .LVU54 263 0012 08BD pop {r3, pc} 264 .L23: 265 .align 2 266 .L22: 267 0014 00000000 .word hsd1 268 .cfi_endproc 269 .LFE146: 271 .section .text.BSP_SD_WriteBlocks_DMA,"ax",%progbits 272 .align 1 273 .weak BSP_SD_WriteBlocks_DMA 274 .syntax unified 275 .thumb 276 .thumb_func 278 BSP_SD_WriteBlocks_DMA: 279 .LVL24: 280 .LFB147: 181:Src/bsp_driver_sd.c **** 182:Src/bsp_driver_sd.c **** /* USER CODE BEGIN BeforeWriteDMABlocksSection */ 183:Src/bsp_driver_sd.c **** /* can be used to modify previous code / undefine following code / add code */ 184:Src/bsp_driver_sd.c **** /* USER CODE END BeforeWriteDMABlocksSection */ 185:Src/bsp_driver_sd.c **** /** 186:Src/bsp_driver_sd.c **** * @brief Writes block(s) to a specified address in an SD card, in DMA mode. 187:Src/bsp_driver_sd.c **** * @param pData: Pointer to the buffer that will contain the data to transmit ARM GAS /tmp/ccVIJNmt.s page 9 188:Src/bsp_driver_sd.c **** * @param WriteAddr: Address from where data is to be written 189:Src/bsp_driver_sd.c **** * @param NumOfBlocks: Number of SD blocks to write 190:Src/bsp_driver_sd.c **** * @retval SD status 191:Src/bsp_driver_sd.c **** */ 192:Src/bsp_driver_sd.c **** __weak uint8_t BSP_SD_WriteBlocks_DMA(uint32_t *pData, uint32_t WriteAddr, uint32_t NumOfBlocks) 193:Src/bsp_driver_sd.c **** { 281 .loc 1 193 1 is_stmt 1 view -0 282 .cfi_startproc 283 @ args = 0, pretend = 0, frame = 0 284 @ frame_needed = 0, uses_anonymous_args = 0 285 .loc 1 193 1 is_stmt 0 view .LVU56 286 0000 08B5 push {r3, lr} 287 .LCFI7: 288 .cfi_def_cfa_offset 8 289 .cfi_offset 3, -8 290 .cfi_offset 14, -4 291 0002 1346 mov r3, r2 194:Src/bsp_driver_sd.c **** uint8_t sd_state = MSD_OK; 292 .loc 1 194 3 is_stmt 1 view .LVU57 293 .LVL25: 195:Src/bsp_driver_sd.c **** 196:Src/bsp_driver_sd.c **** /* Write block(s) in DMA transfer mode */ 197:Src/bsp_driver_sd.c **** if (HAL_SD_WriteBlocks_DMA(&hsd1, (uint8_t *)pData, WriteAddr, NumOfBlocks) != HAL_OK) 294 .loc 1 197 3 view .LVU58 295 .loc 1 197 7 is_stmt 0 view .LVU59 296 0004 0A46 mov r2, r1 297 .LVL26: 298 .loc 1 197 7 view .LVU60 299 0006 0146 mov r1, r0 300 .LVL27: 301 .loc 1 197 7 view .LVU61 302 0008 0248 ldr r0, .L28 303 .LVL28: 304 .loc 1 197 7 view .LVU62 305 000a FFF7FEFF bl HAL_SD_WriteBlocks_DMA 306 .LVL29: 307 .loc 1 197 6 discriminator 1 view .LVU63 308 000e 00B1 cbz r0, .L25 198:Src/bsp_driver_sd.c **** { 199:Src/bsp_driver_sd.c **** sd_state = MSD_ERROR; 309 .loc 1 199 14 view .LVU64 310 0010 0120 movs r0, #1 311 .L25: 312 .LVL30: 200:Src/bsp_driver_sd.c **** } 201:Src/bsp_driver_sd.c **** 202:Src/bsp_driver_sd.c **** return sd_state; 313 .loc 1 202 3 is_stmt 1 view .LVU65 203:Src/bsp_driver_sd.c **** } 314 .loc 1 203 1 is_stmt 0 view .LVU66 315 0012 08BD pop {r3, pc} 316 .L29: 317 .align 2 318 .L28: 319 0014 00000000 .word hsd1 320 .cfi_endproc 321 .LFE147: ARM GAS /tmp/ccVIJNmt.s page 10 323 .section .text.BSP_SD_Erase,"ax",%progbits 324 .align 1 325 .weak BSP_SD_Erase 326 .syntax unified 327 .thumb 328 .thumb_func 330 BSP_SD_Erase: 331 .LVL31: 332 .LFB148: 204:Src/bsp_driver_sd.c **** 205:Src/bsp_driver_sd.c **** /* USER CODE BEGIN BeforeEraseSection */ 206:Src/bsp_driver_sd.c **** /* can be used to modify previous code / undefine following code / add code */ 207:Src/bsp_driver_sd.c **** /* USER CODE END BeforeEraseSection */ 208:Src/bsp_driver_sd.c **** /** 209:Src/bsp_driver_sd.c **** * @brief Erases the specified memory area of the given SD card. 210:Src/bsp_driver_sd.c **** * @param StartAddr: Start byte address 211:Src/bsp_driver_sd.c **** * @param EndAddr: End byte address 212:Src/bsp_driver_sd.c **** * @retval SD status 213:Src/bsp_driver_sd.c **** */ 214:Src/bsp_driver_sd.c **** __weak uint8_t BSP_SD_Erase(uint32_t StartAddr, uint32_t EndAddr) 215:Src/bsp_driver_sd.c **** { 333 .loc 1 215 1 is_stmt 1 view -0 334 .cfi_startproc 335 @ args = 0, pretend = 0, frame = 0 336 @ frame_needed = 0, uses_anonymous_args = 0 337 .loc 1 215 1 is_stmt 0 view .LVU68 338 0000 08B5 push {r3, lr} 339 .LCFI8: 340 .cfi_def_cfa_offset 8 341 .cfi_offset 3, -8 342 .cfi_offset 14, -4 343 0002 0A46 mov r2, r1 216:Src/bsp_driver_sd.c **** uint8_t sd_state = MSD_OK; 344 .loc 1 216 3 is_stmt 1 view .LVU69 345 .LVL32: 217:Src/bsp_driver_sd.c **** 218:Src/bsp_driver_sd.c **** if (HAL_SD_Erase(&hsd1, StartAddr, EndAddr) != HAL_OK) 346 .loc 1 218 3 view .LVU70 347 .loc 1 218 7 is_stmt 0 view .LVU71 348 0004 0146 mov r1, r0 349 .LVL33: 350 .loc 1 218 7 view .LVU72 351 0006 0348 ldr r0, .L34 352 .LVL34: 353 .loc 1 218 7 view .LVU73 354 0008 FFF7FEFF bl HAL_SD_Erase 355 .LVL35: 356 .loc 1 218 6 discriminator 1 view .LVU74 357 000c 00B1 cbz r0, .L31 219:Src/bsp_driver_sd.c **** { 220:Src/bsp_driver_sd.c **** sd_state = MSD_ERROR; 358 .loc 1 220 14 view .LVU75 359 000e 0120 movs r0, #1 360 .L31: 361 .LVL36: 221:Src/bsp_driver_sd.c **** } 222:Src/bsp_driver_sd.c **** ARM GAS /tmp/ccVIJNmt.s page 11 223:Src/bsp_driver_sd.c **** return sd_state; 362 .loc 1 223 3 is_stmt 1 view .LVU76 224:Src/bsp_driver_sd.c **** } 363 .loc 1 224 1 is_stmt 0 view .LVU77 364 0010 08BD pop {r3, pc} 365 .L35: 366 0012 00BF .align 2 367 .L34: 368 0014 00000000 .word hsd1 369 .cfi_endproc 370 .LFE148: 372 .section .text.BSP_SD_GetCardState,"ax",%progbits 373 .align 1 374 .weak BSP_SD_GetCardState 375 .syntax unified 376 .thumb 377 .thumb_func 379 BSP_SD_GetCardState: 380 .LFB149: 225:Src/bsp_driver_sd.c **** 226:Src/bsp_driver_sd.c **** /* USER CODE BEGIN BeforeGetCardStateSection */ 227:Src/bsp_driver_sd.c **** /* can be used to modify previous code / undefine following code / add code */ 228:Src/bsp_driver_sd.c **** /* USER CODE END BeforeGetCardStateSection */ 229:Src/bsp_driver_sd.c **** 230:Src/bsp_driver_sd.c **** /** 231:Src/bsp_driver_sd.c **** * @brief Gets the current SD card data status. 232:Src/bsp_driver_sd.c **** * @param None 233:Src/bsp_driver_sd.c **** * @retval Data transfer state. 234:Src/bsp_driver_sd.c **** * This value can be one of the following values: 235:Src/bsp_driver_sd.c **** * @arg SD_TRANSFER_OK: No data transfer is acting 236:Src/bsp_driver_sd.c **** * @arg SD_TRANSFER_BUSY: Data transfer is acting 237:Src/bsp_driver_sd.c **** */ 238:Src/bsp_driver_sd.c **** __weak uint8_t BSP_SD_GetCardState(void) 239:Src/bsp_driver_sd.c **** { 381 .loc 1 239 1 is_stmt 1 view -0 382 .cfi_startproc 383 @ args = 0, pretend = 0, frame = 0 384 @ frame_needed = 0, uses_anonymous_args = 0 385 0000 08B5 push {r3, lr} 386 .LCFI9: 387 .cfi_def_cfa_offset 8 388 .cfi_offset 3, -8 389 .cfi_offset 14, -4 240:Src/bsp_driver_sd.c **** return ((HAL_SD_GetCardState(&hsd1) == HAL_SD_CARD_TRANSFER ) ? SD_TRANSFER_OK : SD_TRANSFER_BUSY 390 .loc 1 240 3 view .LVU79 391 .loc 1 240 12 is_stmt 0 view .LVU80 392 0002 0348 ldr r0, .L38 393 0004 FFF7FEFF bl HAL_SD_GetCardState 394 .LVL37: 241:Src/bsp_driver_sd.c **** } 395 .loc 1 241 1 view .LVU81 396 0008 0438 subs r0, r0, #4 397 000a 18BF it ne 398 000c 0120 movne r0, #1 399 000e 08BD pop {r3, pc} 400 .L39: 401 .align 2 ARM GAS /tmp/ccVIJNmt.s page 12 402 .L38: 403 0010 00000000 .word hsd1 404 .cfi_endproc 405 .LFE149: 407 .section .text.BSP_SD_GetCardInfo,"ax",%progbits 408 .align 1 409 .weak BSP_SD_GetCardInfo 410 .syntax unified 411 .thumb 412 .thumb_func 414 BSP_SD_GetCardInfo: 415 .LVL38: 416 .LFB150: 242:Src/bsp_driver_sd.c **** 243:Src/bsp_driver_sd.c **** /** 244:Src/bsp_driver_sd.c **** * @brief Get SD information about specific SD card. 245:Src/bsp_driver_sd.c **** * @param CardInfo: Pointer to HAL_SD_CardInfoTypedef structure 246:Src/bsp_driver_sd.c **** * @retval None 247:Src/bsp_driver_sd.c **** */ 248:Src/bsp_driver_sd.c **** __weak void BSP_SD_GetCardInfo(HAL_SD_CardInfoTypeDef *CardInfo) 249:Src/bsp_driver_sd.c **** { 417 .loc 1 249 1 is_stmt 1 view -0 418 .cfi_startproc 419 @ args = 0, pretend = 0, frame = 0 420 @ frame_needed = 0, uses_anonymous_args = 0 421 .loc 1 249 1 is_stmt 0 view .LVU83 422 0000 08B5 push {r3, lr} 423 .LCFI10: 424 .cfi_def_cfa_offset 8 425 .cfi_offset 3, -8 426 .cfi_offset 14, -4 427 0002 0146 mov r1, r0 250:Src/bsp_driver_sd.c **** /* Get SD card Information */ 251:Src/bsp_driver_sd.c **** HAL_SD_GetCardInfo(&hsd1, CardInfo); 428 .loc 1 251 3 is_stmt 1 view .LVU84 429 0004 0148 ldr r0, .L42 430 .LVL39: 431 .loc 1 251 3 is_stmt 0 view .LVU85 432 0006 FFF7FEFF bl HAL_SD_GetCardInfo 433 .LVL40: 252:Src/bsp_driver_sd.c **** } 434 .loc 1 252 1 view .LVU86 435 000a 08BD pop {r3, pc} 436 .L43: 437 .align 2 438 .L42: 439 000c 00000000 .word hsd1 440 .cfi_endproc 441 .LFE150: 443 .section .text.BSP_SD_AbortCallback,"ax",%progbits 444 .align 1 445 .weak BSP_SD_AbortCallback 446 .syntax unified 447 .thumb 448 .thumb_func 450 BSP_SD_AbortCallback: 451 .LFB154: ARM GAS /tmp/ccVIJNmt.s page 13 253:Src/bsp_driver_sd.c **** 254:Src/bsp_driver_sd.c **** /* USER CODE BEGIN BeforeCallBacksSection */ 255:Src/bsp_driver_sd.c **** /* can be used to modify previous code / undefine following code / add code */ 256:Src/bsp_driver_sd.c **** /* USER CODE END BeforeCallBacksSection */ 257:Src/bsp_driver_sd.c **** /** 258:Src/bsp_driver_sd.c **** * @brief SD Abort callbacks 259:Src/bsp_driver_sd.c **** * @param hsd: SD handle 260:Src/bsp_driver_sd.c **** * @retval None 261:Src/bsp_driver_sd.c **** */ 262:Src/bsp_driver_sd.c **** void HAL_SD_AbortCallback(SD_HandleTypeDef *hsd) 263:Src/bsp_driver_sd.c **** { 264:Src/bsp_driver_sd.c **** BSP_SD_AbortCallback(); 265:Src/bsp_driver_sd.c **** } 266:Src/bsp_driver_sd.c **** 267:Src/bsp_driver_sd.c **** /** 268:Src/bsp_driver_sd.c **** * @brief Tx Transfer completed callback 269:Src/bsp_driver_sd.c **** * @param hsd: SD handle 270:Src/bsp_driver_sd.c **** * @retval None 271:Src/bsp_driver_sd.c **** */ 272:Src/bsp_driver_sd.c **** void HAL_SD_TxCpltCallback(SD_HandleTypeDef *hsd) 273:Src/bsp_driver_sd.c **** { 274:Src/bsp_driver_sd.c **** BSP_SD_WriteCpltCallback(); 275:Src/bsp_driver_sd.c **** } 276:Src/bsp_driver_sd.c **** 277:Src/bsp_driver_sd.c **** /** 278:Src/bsp_driver_sd.c **** * @brief Rx Transfer completed callback 279:Src/bsp_driver_sd.c **** * @param hsd: SD handle 280:Src/bsp_driver_sd.c **** * @retval None 281:Src/bsp_driver_sd.c **** */ 282:Src/bsp_driver_sd.c **** void HAL_SD_RxCpltCallback(SD_HandleTypeDef *hsd) 283:Src/bsp_driver_sd.c **** { 284:Src/bsp_driver_sd.c **** BSP_SD_ReadCpltCallback(); 285:Src/bsp_driver_sd.c **** } 286:Src/bsp_driver_sd.c **** 287:Src/bsp_driver_sd.c **** /* USER CODE BEGIN CallBacksSection_C */ 288:Src/bsp_driver_sd.c **** /** 289:Src/bsp_driver_sd.c **** * @brief BSP SD Abort callback 290:Src/bsp_driver_sd.c **** * @retval None 291:Src/bsp_driver_sd.c **** * @note empty (up to the user to fill it in or to remove it if useless) 292:Src/bsp_driver_sd.c **** */ 293:Src/bsp_driver_sd.c **** __weak void BSP_SD_AbortCallback(void) 294:Src/bsp_driver_sd.c **** { 452 .loc 1 294 1 is_stmt 1 view -0 453 .cfi_startproc 454 @ args = 0, pretend = 0, frame = 0 455 @ frame_needed = 0, uses_anonymous_args = 0 456 @ link register save eliminated. 295:Src/bsp_driver_sd.c **** 296:Src/bsp_driver_sd.c **** } 457 .loc 1 296 1 view .LVU88 458 0000 7047 bx lr 459 .cfi_endproc 460 .LFE154: 462 .section .text.HAL_SD_AbortCallback,"ax",%progbits 463 .align 1 464 .global HAL_SD_AbortCallback 465 .syntax unified ARM GAS /tmp/ccVIJNmt.s page 14 466 .thumb 467 .thumb_func 469 HAL_SD_AbortCallback: 470 .LVL41: 471 .LFB151: 263:Src/bsp_driver_sd.c **** BSP_SD_AbortCallback(); 472 .loc 1 263 1 view -0 473 .cfi_startproc 474 @ args = 0, pretend = 0, frame = 0 475 @ frame_needed = 0, uses_anonymous_args = 0 263:Src/bsp_driver_sd.c **** BSP_SD_AbortCallback(); 476 .loc 1 263 1 is_stmt 0 view .LVU90 477 0000 08B5 push {r3, lr} 478 .LCFI11: 479 .cfi_def_cfa_offset 8 480 .cfi_offset 3, -8 481 .cfi_offset 14, -4 264:Src/bsp_driver_sd.c **** } 482 .loc 1 264 3 is_stmt 1 view .LVU91 483 0002 FFF7FEFF bl BSP_SD_AbortCallback 484 .LVL42: 265:Src/bsp_driver_sd.c **** 485 .loc 1 265 1 is_stmt 0 view .LVU92 486 0006 08BD pop {r3, pc} 487 .cfi_endproc 488 .LFE151: 490 .section .text.BSP_SD_WriteCpltCallback,"ax",%progbits 491 .align 1 492 .weak BSP_SD_WriteCpltCallback 493 .syntax unified 494 .thumb 495 .thumb_func 497 BSP_SD_WriteCpltCallback: 498 .LFB155: 297:Src/bsp_driver_sd.c **** 298:Src/bsp_driver_sd.c **** /** 299:Src/bsp_driver_sd.c **** * @brief BSP Tx Transfer completed callback 300:Src/bsp_driver_sd.c **** * @retval None 301:Src/bsp_driver_sd.c **** * @note empty (up to the user to fill it in or to remove it if useless) 302:Src/bsp_driver_sd.c **** */ 303:Src/bsp_driver_sd.c **** __weak void BSP_SD_WriteCpltCallback(void) 304:Src/bsp_driver_sd.c **** { 499 .loc 1 304 1 is_stmt 1 view -0 500 .cfi_startproc 501 @ args = 0, pretend = 0, frame = 0 502 @ frame_needed = 0, uses_anonymous_args = 0 503 @ link register save eliminated. 305:Src/bsp_driver_sd.c **** 306:Src/bsp_driver_sd.c **** } 504 .loc 1 306 1 view .LVU94 505 0000 7047 bx lr 506 .cfi_endproc 507 .LFE155: 509 .section .text.HAL_SD_TxCpltCallback,"ax",%progbits 510 .align 1 511 .global HAL_SD_TxCpltCallback 512 .syntax unified ARM GAS /tmp/ccVIJNmt.s page 15 513 .thumb 514 .thumb_func 516 HAL_SD_TxCpltCallback: 517 .LVL43: 518 .LFB152: 273:Src/bsp_driver_sd.c **** BSP_SD_WriteCpltCallback(); 519 .loc 1 273 1 view -0 520 .cfi_startproc 521 @ args = 0, pretend = 0, frame = 0 522 @ frame_needed = 0, uses_anonymous_args = 0 273:Src/bsp_driver_sd.c **** BSP_SD_WriteCpltCallback(); 523 .loc 1 273 1 is_stmt 0 view .LVU96 524 0000 08B5 push {r3, lr} 525 .LCFI12: 526 .cfi_def_cfa_offset 8 527 .cfi_offset 3, -8 528 .cfi_offset 14, -4 274:Src/bsp_driver_sd.c **** } 529 .loc 1 274 3 is_stmt 1 view .LVU97 530 0002 FFF7FEFF bl BSP_SD_WriteCpltCallback 531 .LVL44: 275:Src/bsp_driver_sd.c **** 532 .loc 1 275 1 is_stmt 0 view .LVU98 533 0006 08BD pop {r3, pc} 534 .cfi_endproc 535 .LFE152: 537 .section .text.BSP_SD_ReadCpltCallback,"ax",%progbits 538 .align 1 539 .weak BSP_SD_ReadCpltCallback 540 .syntax unified 541 .thumb 542 .thumb_func 544 BSP_SD_ReadCpltCallback: 545 .LFB156: 307:Src/bsp_driver_sd.c **** 308:Src/bsp_driver_sd.c **** /** 309:Src/bsp_driver_sd.c **** * @brief BSP Rx Transfer completed callback 310:Src/bsp_driver_sd.c **** * @retval None 311:Src/bsp_driver_sd.c **** * @note empty (up to the user to fill it in or to remove it if useless) 312:Src/bsp_driver_sd.c **** */ 313:Src/bsp_driver_sd.c **** __weak void BSP_SD_ReadCpltCallback(void) 314:Src/bsp_driver_sd.c **** { 546 .loc 1 314 1 is_stmt 1 view -0 547 .cfi_startproc 548 @ args = 0, pretend = 0, frame = 0 549 @ frame_needed = 0, uses_anonymous_args = 0 550 @ link register save eliminated. 315:Src/bsp_driver_sd.c **** 316:Src/bsp_driver_sd.c **** } 551 .loc 1 316 1 view .LVU100 552 0000 7047 bx lr 553 .cfi_endproc 554 .LFE156: 556 .section .text.HAL_SD_RxCpltCallback,"ax",%progbits 557 .align 1 558 .global HAL_SD_RxCpltCallback 559 .syntax unified ARM GAS /tmp/ccVIJNmt.s page 16 560 .thumb 561 .thumb_func 563 HAL_SD_RxCpltCallback: 564 .LVL45: 565 .LFB153: 283:Src/bsp_driver_sd.c **** BSP_SD_ReadCpltCallback(); 566 .loc 1 283 1 view -0 567 .cfi_startproc 568 @ args = 0, pretend = 0, frame = 0 569 @ frame_needed = 0, uses_anonymous_args = 0 283:Src/bsp_driver_sd.c **** BSP_SD_ReadCpltCallback(); 570 .loc 1 283 1 is_stmt 0 view .LVU102 571 0000 08B5 push {r3, lr} 572 .LCFI13: 573 .cfi_def_cfa_offset 8 574 .cfi_offset 3, -8 575 .cfi_offset 14, -4 284:Src/bsp_driver_sd.c **** } 576 .loc 1 284 3 is_stmt 1 view .LVU103 577 0002 FFF7FEFF bl BSP_SD_ReadCpltCallback 578 .LVL46: 285:Src/bsp_driver_sd.c **** 579 .loc 1 285 1 is_stmt 0 view .LVU104 580 0006 08BD pop {r3, pc} 581 .cfi_endproc 582 .LFE153: 584 .section .text.BSP_SD_IsDetected,"ax",%progbits 585 .align 1 586 .weak BSP_SD_IsDetected 587 .syntax unified 588 .thumb 589 .thumb_func 591 BSP_SD_IsDetected: 592 .LFB157: 317:Src/bsp_driver_sd.c **** /* USER CODE END CallBacksSection_C */ 318:Src/bsp_driver_sd.c **** #endif 319:Src/bsp_driver_sd.c **** 320:Src/bsp_driver_sd.c **** /** 321:Src/bsp_driver_sd.c **** * @brief Detects if SD card is correctly plugged in the memory slot or not. 322:Src/bsp_driver_sd.c **** * @param None 323:Src/bsp_driver_sd.c **** * @retval Returns if SD is detected or not 324:Src/bsp_driver_sd.c **** */ 325:Src/bsp_driver_sd.c **** __weak uint8_t BSP_SD_IsDetected(void) 326:Src/bsp_driver_sd.c **** { 593 .loc 1 326 1 is_stmt 1 view -0 594 .cfi_startproc 595 @ args = 0, pretend = 0, frame = 8 596 @ frame_needed = 0, uses_anonymous_args = 0 597 0000 00B5 push {lr} 598 .LCFI14: 599 .cfi_def_cfa_offset 4 600 .cfi_offset 14, -4 601 0002 83B0 sub sp, sp, #12 602 .LCFI15: 603 .cfi_def_cfa_offset 16 327:Src/bsp_driver_sd.c **** __IO uint8_t status = SD_PRESENT; 604 .loc 1 327 3 view .LVU106 ARM GAS /tmp/ccVIJNmt.s page 17 605 .loc 1 327 16 is_stmt 0 view .LVU107 606 0004 0123 movs r3, #1 607 0006 8DF80730 strb r3, [sp, #7] 328:Src/bsp_driver_sd.c **** 329:Src/bsp_driver_sd.c **** if (BSP_PlatformIsDetected() == 0x0) 608 .loc 1 329 3 is_stmt 1 view .LVU108 609 .loc 1 329 7 is_stmt 0 view .LVU109 610 000a FFF7FEFF bl BSP_PlatformIsDetected 611 .LVL47: 612 .loc 1 329 6 discriminator 1 view .LVU110 613 000e 10B9 cbnz r0, .L54 330:Src/bsp_driver_sd.c **** { 331:Src/bsp_driver_sd.c **** status = SD_NOT_PRESENT; 614 .loc 1 331 5 is_stmt 1 view .LVU111 615 .loc 1 331 12 is_stmt 0 view .LVU112 616 0010 0023 movs r3, #0 617 0012 8DF80730 strb r3, [sp, #7] 618 .L54: 332:Src/bsp_driver_sd.c **** } 333:Src/bsp_driver_sd.c **** 334:Src/bsp_driver_sd.c **** return status; 619 .loc 1 334 3 is_stmt 1 view .LVU113 620 .loc 1 334 10 is_stmt 0 view .LVU114 621 0016 9DF80700 ldrb r0, [sp, #7] @ zero_extendqisi2 335:Src/bsp_driver_sd.c **** } 622 .loc 1 335 1 view .LVU115 623 001a 03B0 add sp, sp, #12 624 .LCFI16: 625 .cfi_def_cfa_offset 4 626 @ sp needed 627 001c 5DF804FB ldr pc, [sp], #4 628 .cfi_endproc 629 .LFE157: 631 .section .text.BSP_SD_Init,"ax",%progbits 632 .align 1 633 .weak BSP_SD_Init 634 .syntax unified 635 .thumb 636 .thumb_func 638 BSP_SD_Init: 639 .LFB142: 68:Src/bsp_driver_sd.c **** uint8_t sd_state = MSD_OK; 640 .loc 1 68 1 is_stmt 1 view -0 641 .cfi_startproc 642 @ args = 0, pretend = 0, frame = 0 643 @ frame_needed = 0, uses_anonymous_args = 0 644 0000 10B5 push {r4, lr} 645 .LCFI17: 646 .cfi_def_cfa_offset 8 647 .cfi_offset 4, -8 648 .cfi_offset 14, -4 69:Src/bsp_driver_sd.c **** g_last_bsp_sd_detect_status = BSP_SD_IsDetected(); 649 .loc 1 69 3 view .LVU117 650 .LVL48: 70:Src/bsp_driver_sd.c **** g_last_bsp_sd_hal_init_status = HAL_ERROR; 651 .loc 1 70 3 view .LVU118 70:Src/bsp_driver_sd.c **** g_last_bsp_sd_hal_init_status = HAL_ERROR; ARM GAS /tmp/ccVIJNmt.s page 18 652 .loc 1 70 33 is_stmt 0 view .LVU119 653 0002 FFF7FEFF bl BSP_SD_IsDetected 654 .LVL49: 70:Src/bsp_driver_sd.c **** g_last_bsp_sd_hal_init_status = HAL_ERROR; 655 .loc 1 70 31 discriminator 1 view .LVU120 656 0006 134B ldr r3, .L61 657 0008 1870 strb r0, [r3] 71:Src/bsp_driver_sd.c **** g_last_bsp_sd_wide_bus_status = HAL_ERROR; 658 .loc 1 71 3 is_stmt 1 view .LVU121 71:Src/bsp_driver_sd.c **** g_last_bsp_sd_wide_bus_status = HAL_ERROR; 659 .loc 1 71 33 is_stmt 0 view .LVU122 660 000a 0122 movs r2, #1 661 000c 1249 ldr r1, .L61+4 662 000e 0A70 strb r2, [r1] 72:Src/bsp_driver_sd.c **** g_last_bsp_sd_hal_error = 0u; 663 .loc 1 72 3 is_stmt 1 view .LVU123 72:Src/bsp_driver_sd.c **** g_last_bsp_sd_hal_error = 0u; 664 .loc 1 72 33 is_stmt 0 view .LVU124 665 0010 1249 ldr r1, .L61+8 666 0012 0A70 strb r2, [r1] 73:Src/bsp_driver_sd.c **** /* Check if the SD card is plugged in the slot */ 667 .loc 1 73 3 is_stmt 1 view .LVU125 73:Src/bsp_driver_sd.c **** /* Check if the SD card is plugged in the slot */ 668 .loc 1 73 27 is_stmt 0 view .LVU126 669 0014 124A ldr r2, .L61+12 670 0016 0021 movs r1, #0 671 0018 1160 str r1, [r2] 75:Src/bsp_driver_sd.c **** { 672 .loc 1 75 3 is_stmt 1 view .LVU127 75:Src/bsp_driver_sd.c **** { 673 .loc 1 75 35 is_stmt 0 view .LVU128 674 001a 1B78 ldrb r3, [r3] @ zero_extendqisi2 675 001c DBB2 uxtb r3, r3 75:Src/bsp_driver_sd.c **** { 676 .loc 1 75 6 view .LVU129 677 001e 012B cmp r3, #1 678 0020 03D0 beq .L57 77:Src/bsp_driver_sd.c **** return MSD_ERROR_SD_NOT_PRESENT; 679 .loc 1 77 5 is_stmt 1 view .LVU130 77:Src/bsp_driver_sd.c **** return MSD_ERROR_SD_NOT_PRESENT; 680 .loc 1 77 31 is_stmt 0 view .LVU131 681 0022 0220 movs r0, #2 682 0024 0F4B ldr r3, .L61+16 683 0026 1870 strb r0, [r3] 78:Src/bsp_driver_sd.c **** } 684 .loc 1 78 5 is_stmt 1 view .LVU132 685 .LVL50: 686 .L58: 94:Src/bsp_driver_sd.c **** /* USER CODE BEGIN AfterInitSection */ 687 .loc 1 94 1 is_stmt 0 view .LVU133 688 0028 10BD pop {r4, pc} 689 .LVL51: 690 .L57: 80:Src/bsp_driver_sd.c **** hsd1.Init.ClockDiv = 118u; 691 .loc 1 80 3 is_stmt 1 view .LVU134 80:Src/bsp_driver_sd.c **** hsd1.Init.ClockDiv = 118u; 692 .loc 1 80 21 is_stmt 0 view .LVU135 ARM GAS /tmp/ccVIJNmt.s page 19 693 002a 0F4C ldr r4, .L61+20 694 002c 0023 movs r3, #0 695 002e 2361 str r3, [r4, #16] 81:Src/bsp_driver_sd.c **** /* HAL SD initialization */ 696 .loc 1 81 3 is_stmt 1 view .LVU136 81:Src/bsp_driver_sd.c **** /* HAL SD initialization */ 697 .loc 1 81 22 is_stmt 0 view .LVU137 698 0030 7623 movs r3, #118 699 0032 A361 str r3, [r4, #24] 83:Src/bsp_driver_sd.c **** g_last_bsp_sd_hal_init_status = sd_state; 700 .loc 1 83 3 is_stmt 1 view .LVU138 83:Src/bsp_driver_sd.c **** g_last_bsp_sd_hal_init_status = sd_state; 701 .loc 1 83 14 is_stmt 0 view .LVU139 702 0034 2046 mov r0, r4 703 0036 FFF7FEFF bl HAL_SD_Init 704 .LVL52: 84:Src/bsp_driver_sd.c **** g_last_bsp_sd_hal_error = hsd1.ErrorCode; 705 .loc 1 84 3 is_stmt 1 view .LVU140 84:Src/bsp_driver_sd.c **** g_last_bsp_sd_hal_error = hsd1.ErrorCode; 706 .loc 1 84 33 is_stmt 0 view .LVU141 707 003a 074B ldr r3, .L61+4 708 003c 1870 strb r0, [r3] 85:Src/bsp_driver_sd.c **** /* Configure SD Bus width (4 bits mode selected) */ 709 .loc 1 85 3 is_stmt 1 view .LVU142 85:Src/bsp_driver_sd.c **** /* Configure SD Bus width (4 bits mode selected) */ 710 .loc 1 85 33 is_stmt 0 view .LVU143 711 003e A26B ldr r2, [r4, #56] 85:Src/bsp_driver_sd.c **** /* Configure SD Bus width (4 bits mode selected) */ 712 .loc 1 85 27 view .LVU144 713 0040 074B ldr r3, .L61+12 714 0042 1A60 str r2, [r3] 87:Src/bsp_driver_sd.c **** { 715 .loc 1 87 3 is_stmt 1 view .LVU145 87:Src/bsp_driver_sd.c **** { 716 .loc 1 87 6 is_stmt 0 view .LVU146 717 0044 10B9 cbnz r0, .L59 89:Src/bsp_driver_sd.c **** } 718 .loc 1 89 5 is_stmt 1 view .LVU147 89:Src/bsp_driver_sd.c **** } 719 .loc 1 89 35 is_stmt 0 view .LVU148 720 0046 054B ldr r3, .L61+8 721 0048 0022 movs r2, #0 722 004a 1A70 strb r2, [r3] 723 .L59: 92:Src/bsp_driver_sd.c **** return sd_state; 724 .loc 1 92 3 is_stmt 1 view .LVU149 92:Src/bsp_driver_sd.c **** return sd_state; 725 .loc 1 92 29 is_stmt 0 view .LVU150 726 004c 054B ldr r3, .L61+16 727 004e 1870 strb r0, [r3] 93:Src/bsp_driver_sd.c **** } 728 .loc 1 93 3 is_stmt 1 view .LVU151 93:Src/bsp_driver_sd.c **** } 729 .loc 1 93 10 is_stmt 0 view .LVU152 730 0050 EAE7 b .L58 731 .L62: 732 0052 00BF .align 2 ARM GAS /tmp/ccVIJNmt.s page 20 733 .L61: 734 0054 00000000 .word g_last_bsp_sd_detect_status 735 0058 00000000 .word g_last_bsp_sd_hal_init_status 736 005c 00000000 .word g_last_bsp_sd_wide_bus_status 737 0060 00000000 .word g_last_bsp_sd_hal_error 738 0064 00000000 .word g_last_bsp_sd_init_status 739 0068 00000000 .word hsd1 740 .cfi_endproc 741 .LFE142: 743 .section .bss.g_last_bsp_sd_hal_error,"aw",%nobits 744 .align 2 747 g_last_bsp_sd_hal_error: 748 0000 00000000 .space 4 749 .section .data.g_last_bsp_sd_wide_bus_status,"aw" 752 g_last_bsp_sd_wide_bus_status: 753 0000 01 .byte 1 754 .section .data.g_last_bsp_sd_hal_init_status,"aw" 757 g_last_bsp_sd_hal_init_status: 758 0000 01 .byte 1 759 .section .bss.g_last_bsp_sd_detect_status,"aw",%nobits 762 g_last_bsp_sd_detect_status: 763 0000 00 .space 1 764 .section .data.g_last_bsp_sd_init_status,"aw" 767 g_last_bsp_sd_init_status: 768 0000 02 .byte 2 769 .text 770 .Letext0: 771 .file 2 "/usr/lib/gcc/arm-none-eabi/13.2.1/include/stdint.h" 772 .file 3 "Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f767xx.h" 773 .file 4 "Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_def.h" 774 .file 5 "Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_dma.h" 775 .file 6 "Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_sdmmc.h" 776 .file 7 "Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_sd.h" 777 .file 8 "Inc/bsp_driver_sd.h" 778 .file 9 "Inc/fatfs_platform.h" ARM GAS /tmp/ccVIJNmt.s page 21 DEFINED SYMBOLS *ABS*:00000000 bsp_driver_sd.c /tmp/ccVIJNmt.s:20 .text.BSP_SD_GetDebugInfo:00000000 $t /tmp/ccVIJNmt.s:26 .text.BSP_SD_GetDebugInfo:00000000 BSP_SD_GetDebugInfo /tmp/ccVIJNmt.s:68 .text.BSP_SD_GetDebugInfo:00000024 $d /tmp/ccVIJNmt.s:767 .data.g_last_bsp_sd_init_status:00000000 g_last_bsp_sd_init_status /tmp/ccVIJNmt.s:762 .bss.g_last_bsp_sd_detect_status:00000000 g_last_bsp_sd_detect_status /tmp/ccVIJNmt.s:757 .data.g_last_bsp_sd_hal_init_status:00000000 g_last_bsp_sd_hal_init_status /tmp/ccVIJNmt.s:752 .data.g_last_bsp_sd_wide_bus_status:00000000 g_last_bsp_sd_wide_bus_status /tmp/ccVIJNmt.s:747 .bss.g_last_bsp_sd_hal_error:00000000 g_last_bsp_sd_hal_error /tmp/ccVIJNmt.s:77 .text.BSP_SD_ITConfig:00000000 $t /tmp/ccVIJNmt.s:83 .text.BSP_SD_ITConfig:00000000 BSP_SD_ITConfig /tmp/ccVIJNmt.s:98 .text.BSP_SD_ReadBlocks:00000000 $t /tmp/ccVIJNmt.s:104 .text.BSP_SD_ReadBlocks:00000000 BSP_SD_ReadBlocks /tmp/ccVIJNmt.s:154 .text.BSP_SD_ReadBlocks:0000001c $d /tmp/ccVIJNmt.s:159 .text.BSP_SD_WriteBlocks:00000000 $t /tmp/ccVIJNmt.s:165 .text.BSP_SD_WriteBlocks:00000000 BSP_SD_WriteBlocks /tmp/ccVIJNmt.s:215 .text.BSP_SD_WriteBlocks:0000001c $d /tmp/ccVIJNmt.s:220 .text.BSP_SD_ReadBlocks_DMA:00000000 $t /tmp/ccVIJNmt.s:226 .text.BSP_SD_ReadBlocks_DMA:00000000 BSP_SD_ReadBlocks_DMA /tmp/ccVIJNmt.s:267 .text.BSP_SD_ReadBlocks_DMA:00000014 $d /tmp/ccVIJNmt.s:272 .text.BSP_SD_WriteBlocks_DMA:00000000 $t /tmp/ccVIJNmt.s:278 .text.BSP_SD_WriteBlocks_DMA:00000000 BSP_SD_WriteBlocks_DMA /tmp/ccVIJNmt.s:319 .text.BSP_SD_WriteBlocks_DMA:00000014 $d /tmp/ccVIJNmt.s:324 .text.BSP_SD_Erase:00000000 $t /tmp/ccVIJNmt.s:330 .text.BSP_SD_Erase:00000000 BSP_SD_Erase /tmp/ccVIJNmt.s:368 .text.BSP_SD_Erase:00000014 $d /tmp/ccVIJNmt.s:373 .text.BSP_SD_GetCardState:00000000 $t /tmp/ccVIJNmt.s:379 .text.BSP_SD_GetCardState:00000000 BSP_SD_GetCardState /tmp/ccVIJNmt.s:403 .text.BSP_SD_GetCardState:00000010 $d /tmp/ccVIJNmt.s:408 .text.BSP_SD_GetCardInfo:00000000 $t /tmp/ccVIJNmt.s:414 .text.BSP_SD_GetCardInfo:00000000 BSP_SD_GetCardInfo /tmp/ccVIJNmt.s:439 .text.BSP_SD_GetCardInfo:0000000c $d /tmp/ccVIJNmt.s:444 .text.BSP_SD_AbortCallback:00000000 $t /tmp/ccVIJNmt.s:450 .text.BSP_SD_AbortCallback:00000000 BSP_SD_AbortCallback /tmp/ccVIJNmt.s:463 .text.HAL_SD_AbortCallback:00000000 $t /tmp/ccVIJNmt.s:469 .text.HAL_SD_AbortCallback:00000000 HAL_SD_AbortCallback /tmp/ccVIJNmt.s:491 .text.BSP_SD_WriteCpltCallback:00000000 $t /tmp/ccVIJNmt.s:497 .text.BSP_SD_WriteCpltCallback:00000000 BSP_SD_WriteCpltCallback /tmp/ccVIJNmt.s:510 .text.HAL_SD_TxCpltCallback:00000000 $t /tmp/ccVIJNmt.s:516 .text.HAL_SD_TxCpltCallback:00000000 HAL_SD_TxCpltCallback /tmp/ccVIJNmt.s:538 .text.BSP_SD_ReadCpltCallback:00000000 $t /tmp/ccVIJNmt.s:544 .text.BSP_SD_ReadCpltCallback:00000000 BSP_SD_ReadCpltCallback /tmp/ccVIJNmt.s:557 .text.HAL_SD_RxCpltCallback:00000000 $t /tmp/ccVIJNmt.s:563 .text.HAL_SD_RxCpltCallback:00000000 HAL_SD_RxCpltCallback /tmp/ccVIJNmt.s:585 .text.BSP_SD_IsDetected:00000000 $t /tmp/ccVIJNmt.s:591 .text.BSP_SD_IsDetected:00000000 BSP_SD_IsDetected /tmp/ccVIJNmt.s:632 .text.BSP_SD_Init:00000000 $t /tmp/ccVIJNmt.s:638 .text.BSP_SD_Init:00000000 BSP_SD_Init /tmp/ccVIJNmt.s:734 .text.BSP_SD_Init:00000054 $d /tmp/ccVIJNmt.s:744 .bss.g_last_bsp_sd_hal_error:00000000 $d /tmp/ccVIJNmt.s:763 .bss.g_last_bsp_sd_detect_status:00000000 $d UNDEFINED SYMBOLS HAL_SD_ReadBlocks hsd1 HAL_SD_WriteBlocks ARM GAS /tmp/ccVIJNmt.s page 22 HAL_SD_ReadBlocks_DMA HAL_SD_WriteBlocks_DMA HAL_SD_Erase HAL_SD_GetCardState HAL_SD_GetCardInfo BSP_PlatformIsDetected HAL_SD_Init