Files
RadioPhotonic_PCB_software/build/sd_diskio.lst
2025-03-03 16:03:02 +03:00

748 lines
31 KiB
Plaintext
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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