874 lines
33 KiB
Plaintext
874 lines
33 KiB
Plaintext
ARM GAS /tmp/ccvqyNaH.s page 1
|
||
|
||
|
||
1 .cpu cortex-m4
|
||
2 .arch armv7e-m
|
||
3 .fpu fpv4-sp-d16
|
||
4 .eabi_attribute 27, 1
|
||
5 .eabi_attribute 28, 1
|
||
6 .eabi_attribute 20, 1
|
||
7 .eabi_attribute 21, 1
|
||
8 .eabi_attribute 23, 3
|
||
9 .eabi_attribute 24, 1
|
||
10 .eabi_attribute 25, 1
|
||
11 .eabi_attribute 26, 1
|
||
12 .eabi_attribute 30, 6
|
||
13 .eabi_attribute 34, 1
|
||
14 .eabi_attribute 18, 4
|
||
15 .file "eeprom.c"
|
||
16 .text
|
||
17 .Ltext0:
|
||
18 .cfi_sections .debug_frame
|
||
19 .file 1 "Core/Src/eeprom.c"
|
||
20 .section .bss.hi2c,"aw",%nobits
|
||
21 .align 2
|
||
24 hi2c:
|
||
25 0000 00000000 .space 4
|
||
26 .global write_address
|
||
27 .section .bss.write_address,"aw",%nobits
|
||
28 .align 2
|
||
31 write_address:
|
||
32 0000 00000000 .space 4
|
||
33 .global read_address
|
||
34 .section .bss.read_address,"aw",%nobits
|
||
35 .align 2
|
||
38 read_address:
|
||
39 0000 00000000 .space 4
|
||
40 .section .text.eeprom_init,"ax",%progbits
|
||
41 .align 1
|
||
42 .global eeprom_init
|
||
43 .syntax unified
|
||
44 .thumb
|
||
45 .thumb_func
|
||
47 eeprom_init:
|
||
48 .LFB130:
|
||
1:Core/Src/eeprom.c **** /*
|
||
2:Core/Src/eeprom.c **** * PWM_control.h
|
||
3:Core/Src/eeprom.c **** *
|
||
4:Core/Src/eeprom.c **** * Created on: 10.07.2024
|
||
5:Core/Src/eeprom.c **** * Author: Hamza
|
||
6:Core/Src/eeprom.c **** */
|
||
7:Core/Src/eeprom.c ****
|
||
8:Core/Src/eeprom.c **** #include <eeprom.h>
|
||
9:Core/Src/eeprom.c ****
|
||
10:Core/Src/eeprom.c **** // TODO: test this
|
||
11:Core/Src/eeprom.c **** static I2C_HandleTypeDef* hi2c;
|
||
12:Core/Src/eeprom.c **** uint32_t write_address, read_address;
|
||
13:Core/Src/eeprom.c ****
|
||
14:Core/Src/eeprom.c **** void eeprom_init(I2C_HandleTypeDef* handle) {
|
||
49 .loc 1 14 45
|
||
50 .cfi_startproc
|
||
ARM GAS /tmp/ccvqyNaH.s page 2
|
||
|
||
|
||
51 @ args = 0, pretend = 0, frame = 8
|
||
52 @ frame_needed = 1, uses_anonymous_args = 0
|
||
53 @ link register save eliminated.
|
||
54 0000 80B4 push {r7}
|
||
55 .cfi_def_cfa_offset 4
|
||
56 .cfi_offset 7, -4
|
||
57 0002 83B0 sub sp, sp, #12
|
||
58 .cfi_def_cfa_offset 16
|
||
59 0004 00AF add r7, sp, #0
|
||
60 .cfi_def_cfa_register 7
|
||
61 0006 7860 str r0, [r7, #4]
|
||
15:Core/Src/eeprom.c **** hi2c = handle;
|
||
62 .loc 1 15 8
|
||
63 0008 074A ldr r2, .L2
|
||
64 000a 7B68 ldr r3, [r7, #4]
|
||
65 000c 1360 str r3, [r2]
|
||
16:Core/Src/eeprom.c **** write_address = 0;
|
||
66 .loc 1 16 17
|
||
67 000e 074B ldr r3, .L2+4
|
||
68 0010 0022 movs r2, #0
|
||
69 0012 1A60 str r2, [r3]
|
||
17:Core/Src/eeprom.c **** read_address = 0;
|
||
70 .loc 1 17 16
|
||
71 0014 064B ldr r3, .L2+8
|
||
72 0016 0022 movs r2, #0
|
||
73 0018 1A60 str r2, [r3]
|
||
18:Core/Src/eeprom.c **** }
|
||
74 .loc 1 18 1
|
||
75 001a 00BF nop
|
||
76 001c 0C37 adds r7, r7, #12
|
||
77 .cfi_def_cfa_offset 4
|
||
78 001e BD46 mov sp, r7
|
||
79 .cfi_def_cfa_register 13
|
||
80 @ sp needed
|
||
81 0020 5DF8047B ldr r7, [sp], #4
|
||
82 .cfi_restore 7
|
||
83 .cfi_def_cfa_offset 0
|
||
84 0024 7047 bx lr
|
||
85 .L3:
|
||
86 0026 00BF .align 2
|
||
87 .L2:
|
||
88 0028 00000000 .word hi2c
|
||
89 002c 00000000 .word write_address
|
||
90 0030 00000000 .word read_address
|
||
91 .cfi_endproc
|
||
92 .LFE130:
|
||
94 .section .text.eeprom_write_status,"ax",%progbits
|
||
95 .align 1
|
||
96 .global eeprom_write_status
|
||
97 .syntax unified
|
||
98 .thumb
|
||
99 .thumb_func
|
||
101 eeprom_write_status:
|
||
102 .LFB131:
|
||
19:Core/Src/eeprom.c ****
|
||
20:Core/Src/eeprom.c **** void eeprom_write_status(){
|
||
103 .loc 1 20 27
|
||
ARM GAS /tmp/ccvqyNaH.s page 3
|
||
|
||
|
||
104 .cfi_startproc
|
||
105 @ args = 0, pretend = 0, frame = 32
|
||
106 @ frame_needed = 1, uses_anonymous_args = 0
|
||
107 0000 2DE9F041 push {r4, r5, r6, r7, r8, lr}
|
||
108 .cfi_def_cfa_offset 24
|
||
109 .cfi_offset 4, -24
|
||
110 .cfi_offset 5, -20
|
||
111 .cfi_offset 6, -16
|
||
112 .cfi_offset 7, -12
|
||
113 .cfi_offset 8, -8
|
||
114 .cfi_offset 14, -4
|
||
115 0004 88B0 sub sp, sp, #32
|
||
116 .cfi_def_cfa_offset 56
|
||
117 0006 00AF add r7, sp, #0
|
||
118 .cfi_def_cfa_register 7
|
||
119 .loc 1 20 27
|
||
120 0008 6B46 mov r3, sp
|
||
121 000a 9846 mov r8, r3
|
||
21:Core/Src/eeprom.c **** uint8_t data_length = 62;
|
||
122 .loc 1 21 11
|
||
123 000c 3E23 movs r3, #62
|
||
124 000e FB75 strb r3, [r7, #23]
|
||
22:Core/Src/eeprom.c **** uint8_t data[data_length] = {};
|
||
125 .loc 1 22 3
|
||
126 0010 FE7D ldrb r6, [r7, #23] @ zero_extendqisi2
|
||
127 .loc 1 22 11
|
||
128 0012 3346 mov r3, r6
|
||
129 0014 013B subs r3, r3, #1
|
||
130 0016 3B61 str r3, [r7, #16]
|
||
131 0018 F3B2 uxtb r3, r6
|
||
132 001a 0022 movs r2, #0
|
||
133 001c 1C46 mov r4, r3
|
||
134 001e 1546 mov r5, r2
|
||
135 0020 4FF00002 mov r2, #0
|
||
136 0024 4FF00003 mov r3, #0
|
||
137 0028 EB00 lsls r3, r5, #3
|
||
138 002a 43EA5473 orr r3, r3, r4, lsr #29
|
||
139 002e E200 lsls r2, r4, #3
|
||
140 0030 3446 mov r4, r6
|
||
141 0032 F3B2 uxtb r3, r6
|
||
142 0034 0022 movs r2, #0
|
||
143 0036 1846 mov r0, r3
|
||
144 0038 1146 mov r1, r2
|
||
145 003a 4FF00002 mov r2, #0
|
||
146 003e 4FF00003 mov r3, #0
|
||
147 0042 CB00 lsls r3, r1, #3
|
||
148 0044 43EA5073 orr r3, r3, r0, lsr #29
|
||
149 0048 C200 lsls r2, r0, #3
|
||
150 004a 3346 mov r3, r6
|
||
151 004c 0733 adds r3, r3, #7
|
||
152 004e DB08 lsrs r3, r3, #3
|
||
153 0050 DB00 lsls r3, r3, #3
|
||
154 0052 ADEB030D sub sp, sp, r3
|
||
155 0056 6B46 mov r3, sp
|
||
156 0058 0033 adds r3, r3, #0
|
||
157 005a FB60 str r3, [r7, #12]
|
||
158 .loc 1 22 11 is_stmt 0 discriminator 1
|
||
ARM GAS /tmp/ccvqyNaH.s page 4
|
||
|
||
|
||
159 005c FB68 ldr r3, [r7, #12]
|
||
160 005e 2246 mov r2, r4
|
||
161 0060 0021 movs r1, #0
|
||
162 0062 1846 mov r0, r3
|
||
163 0064 FFF7FEFF bl memset
|
||
23:Core/Src/eeprom.c ****
|
||
24:Core/Src/eeprom.c **** // data 0-9
|
||
25:Core/Src/eeprom.c **** data[0] = ((state.current_state << 4) | (current_powerground_status >> 4));
|
||
164 .loc 1 25 20 is_stmt 1
|
||
165 0068 534B ldr r3, .L9
|
||
166 006a 1B78 ldrb r3, [r3] @ zero_extendqisi2
|
||
167 .loc 1 25 41
|
||
168 006c 5BB2 sxtb r3, r3
|
||
169 006e 1B01 lsls r3, r3, #4
|
||
170 0070 5AB2 sxtb r2, r3
|
||
171 0072 524B ldr r3, .L9+4
|
||
172 0074 1B78 ldrb r3, [r3] @ zero_extendqisi2
|
||
173 0076 1B09 lsrs r3, r3, #4
|
||
174 0078 DBB2 uxtb r3, r3
|
||
175 007a 5BB2 sxtb r3, r3
|
||
176 007c 1343 orrs r3, r3, r2
|
||
177 007e 5BB2 sxtb r3, r3
|
||
178 0080 DAB2 uxtb r2, r3
|
||
179 .loc 1 25 11
|
||
180 0082 FB68 ldr r3, [r7, #12]
|
||
181 0084 1A70 strb r2, [r3]
|
||
26:Core/Src/eeprom.c **** data[1] = ((current_powerground_status << 4) | (state.error_source >> 4)); // 4 bit powerg
|
||
182 .loc 1 26 48
|
||
183 0086 4D4B ldr r3, .L9+4
|
||
184 0088 1B78 ldrb r3, [r3] @ zero_extendqisi2
|
||
185 008a 5BB2 sxtb r3, r3
|
||
186 008c 1B01 lsls r3, r3, #4
|
||
187 008e 5AB2 sxtb r2, r3
|
||
188 .loc 1 26 56
|
||
189 0090 494B ldr r3, .L9
|
||
190 0092 5B88 ldrh r3, [r3, #2]
|
||
191 .loc 1 26 48
|
||
192 0094 1B09 lsrs r3, r3, #4
|
||
193 0096 9BB2 uxth r3, r3
|
||
194 0098 5BB2 sxtb r3, r3
|
||
195 009a 1343 orrs r3, r3, r2
|
||
196 009c 5BB2 sxtb r3, r3
|
||
197 009e DAB2 uxtb r2, r3
|
||
198 .loc 1 26 11
|
||
199 00a0 FB68 ldr r3, [r7, #12]
|
||
200 00a2 5A70 strb r2, [r3, #1]
|
||
27:Core/Src/eeprom.c **** data[2] = ((state.error_source << 4) | (0)); // 4 bit error
|
||
201 .loc 1 27 20
|
||
202 00a4 444B ldr r3, .L9
|
||
203 00a6 5B88 ldrh r3, [r3, #2]
|
||
204 .loc 1 27 40
|
||
205 00a8 DBB2 uxtb r3, r3
|
||
206 00aa 1B01 lsls r3, r3, #4
|
||
207 00ac DAB2 uxtb r2, r3
|
||
208 .loc 1 27 11
|
||
209 00ae FB68 ldr r3, [r7, #12]
|
||
210 00b0 9A70 strb r2, [r3, #2]
|
||
ARM GAS /tmp/ccvqyNaH.s page 5
|
||
|
||
|
||
28:Core/Src/eeprom.c **** data[3] = ((int) current_soc); // 8 bit state
|
||
211 .loc 1 28 14
|
||
212 00b2 434B ldr r3, .L9+8
|
||
213 00b4 D3ED007A vldr.32 s15, [r3]
|
||
214 00b8 FDEEE77A vcvt.s32.f32 s15, s15
|
||
215 00bc C7ED017A vstr.32 s15, [r7, #4] @ int
|
||
216 .loc 1 28 11
|
||
217 00c0 3A79 ldrb r2, [r7, #4] @ zero_extendqisi2
|
||
218 00c2 FB68 ldr r3, [r7, #12]
|
||
219 00c4 DA70 strb r2, [r3, #3]
|
||
29:Core/Src/eeprom.c **** data[4] = (RELAY_BAT_SIDE_VOLTAGE >> 8); // 16 bit batte
|
||
220 .loc 1 29 37
|
||
221 00c6 3F4B ldr r3, .L9+12
|
||
222 00c8 1B68 ldr r3, [r3]
|
||
223 00ca 1B12 asrs r3, r3, #8
|
||
224 .loc 1 29 11
|
||
225 00cc DAB2 uxtb r2, r3
|
||
226 00ce FB68 ldr r3, [r7, #12]
|
||
227 00d0 1A71 strb r2, [r3, #4]
|
||
30:Core/Src/eeprom.c **** data[5] = (RELAY_BAT_SIDE_VOLTAGE);
|
||
228 .loc 1 30 11
|
||
229 00d2 3C4B ldr r3, .L9+12
|
||
230 00d4 1B68 ldr r3, [r3]
|
||
231 00d6 DAB2 uxtb r2, r3
|
||
232 00d8 FB68 ldr r3, [r7, #12]
|
||
233 00da 5A71 strb r2, [r3, #5]
|
||
31:Core/Src/eeprom.c **** data[6] = (RELAY_ESC_SIDE_VOLTAGE >> 8); // 16 bit Inver
|
||
234 .loc 1 31 37
|
||
235 00dc 3A4B ldr r3, .L9+16
|
||
236 00de 1B68 ldr r3, [r3]
|
||
237 00e0 1B12 asrs r3, r3, #8
|
||
238 .loc 1 31 11
|
||
239 00e2 DAB2 uxtb r2, r3
|
||
240 00e4 FB68 ldr r3, [r7, #12]
|
||
241 00e6 9A71 strb r2, [r3, #6]
|
||
32:Core/Src/eeprom.c **** data[7] = (RELAY_ESC_SIDE_VOLTAGE);
|
||
242 .loc 1 32 11
|
||
243 00e8 374B ldr r3, .L9+16
|
||
244 00ea 1B68 ldr r3, [r3]
|
||
245 00ec DAB2 uxtb r2, r3
|
||
246 00ee FB68 ldr r3, [r7, #12]
|
||
247 00f0 DA71 strb r2, [r3, #7]
|
||
33:Core/Src/eeprom.c **** data[8] = (CURRENT_MEASUREMENT >> 8); // 16 bit Inver
|
||
248 .loc 1 33 34
|
||
249 00f2 364B ldr r3, .L9+20
|
||
250 00f4 1B68 ldr r3, [r3]
|
||
251 00f6 1B12 asrs r3, r3, #8
|
||
252 .loc 1 33 11
|
||
253 00f8 DAB2 uxtb r2, r3
|
||
254 00fa FB68 ldr r3, [r7, #12]
|
||
255 00fc 1A72 strb r2, [r3, #8]
|
||
34:Core/Src/eeprom.c **** data[9] = (CURRENT_MEASUREMENT);
|
||
256 .loc 1 34 11
|
||
257 00fe 334B ldr r3, .L9+20
|
||
258 0100 1B68 ldr r3, [r3]
|
||
259 0102 DAB2 uxtb r2, r3
|
||
260 0104 FB68 ldr r3, [r7, #12]
|
||
ARM GAS /tmp/ccvqyNaH.s page 6
|
||
|
||
|
||
261 0106 5A72 strb r2, [r3, #9]
|
||
262 .LBB2:
|
||
35:Core/Src/eeprom.c ****
|
||
36:Core/Src/eeprom.c **** // data 10-35
|
||
37:Core/Src/eeprom.c **** for (int i = 0; i < 13; i++) {
|
||
263 .loc 1 37 12
|
||
264 0108 0023 movs r3, #0
|
||
265 010a FB61 str r3, [r7, #28]
|
||
266 .loc 1 37 3
|
||
267 010c 24E0 b .L5
|
||
268 .L6:
|
||
38:Core/Src/eeprom.c **** data[(i*2)] = ((int) module.auxVoltages[i]) >> 8;
|
||
269 .loc 1 38 45
|
||
270 010e 304A ldr r2, .L9+24
|
||
271 0110 FB69 ldr r3, [r7, #28]
|
||
272 0112 0833 adds r3, r3, #8
|
||
273 0114 9B00 lsls r3, r3, #2
|
||
274 0116 1344 add r3, r3, r2
|
||
275 0118 D3ED007A vldr.32 s15, [r3]
|
||
276 .loc 1 38 21
|
||
277 011c FDEEE77A vcvt.s32.f32 s15, s15
|
||
278 0120 17EE903A vmov r3, s15 @ int
|
||
279 .loc 1 38 50
|
||
280 0124 1A12 asrs r2, r3, #8
|
||
281 .loc 1 38 12
|
||
282 0126 FB69 ldr r3, [r7, #28]
|
||
283 0128 5B00 lsls r3, r3, #1
|
||
284 .loc 1 38 18
|
||
285 012a D1B2 uxtb r1, r2
|
||
286 012c FA68 ldr r2, [r7, #12]
|
||
287 012e D154 strb r1, [r2, r3]
|
||
39:Core/Src/eeprom.c **** data[(i*2)+1] = ((int) module.auxVoltages[i]);
|
||
288 .loc 1 39 47
|
||
289 0130 274A ldr r2, .L9+24
|
||
290 0132 FB69 ldr r3, [r7, #28]
|
||
291 0134 0833 adds r3, r3, #8
|
||
292 0136 9B00 lsls r3, r3, #2
|
||
293 0138 1344 add r3, r3, r2
|
||
294 013a D3ED007A vldr.32 s15, [r3]
|
||
295 .loc 1 39 23
|
||
296 013e FDEEE77A vcvt.s32.f32 s15, s15
|
||
297 0142 C7ED017A vstr.32 s15, [r7, #4] @ int
|
||
298 .loc 1 39 12
|
||
299 0146 FB69 ldr r3, [r7, #28]
|
||
300 0148 5B00 lsls r3, r3, #1
|
||
301 .loc 1 39 15
|
||
302 014a 0133 adds r3, r3, #1
|
||
303 .loc 1 39 20
|
||
304 014c 3979 ldrb r1, [r7, #4] @ zero_extendqisi2
|
||
305 014e FA68 ldr r2, [r7, #12]
|
||
306 0150 D154 strb r1, [r2, r3]
|
||
37:Core/Src/eeprom.c **** data[(i*2)] = ((int) module.auxVoltages[i]) >> 8;
|
||
307 .loc 1 37 28 discriminator 3
|
||
308 0152 FB69 ldr r3, [r7, #28]
|
||
309 0154 0133 adds r3, r3, #1
|
||
310 0156 FB61 str r3, [r7, #28]
|
||
311 .L5:
|
||
ARM GAS /tmp/ccvqyNaH.s page 7
|
||
|
||
|
||
37:Core/Src/eeprom.c **** data[(i*2)] = ((int) module.auxVoltages[i]) >> 8;
|
||
312 .loc 1 37 21 discriminator 1
|
||
313 0158 FB69 ldr r3, [r7, #28]
|
||
314 015a 0C2B cmp r3, #12
|
||
315 015c D7DD ble .L6
|
||
316 .LBE2:
|
||
317 .LBB3:
|
||
40:Core/Src/eeprom.c **** }
|
||
41:Core/Src/eeprom.c ****
|
||
42:Core/Src/eeprom.c **** // data 36-61
|
||
43:Core/Src/eeprom.c **** for (int i = 0; i < 13; i++) {
|
||
318 .loc 1 43 12
|
||
319 015e 0023 movs r3, #0
|
||
320 0160 BB61 str r3, [r7, #24]
|
||
321 .loc 1 43 3
|
||
322 0162 17E0 b .L7
|
||
323 .L8:
|
||
44:Core/Src/eeprom.c **** data[(i*2)] = (tmp1075_temps[i]) >> 8;
|
||
324 .loc 1 44 33
|
||
325 0164 1B4A ldr r2, .L9+28
|
||
326 0166 BB69 ldr r3, [r7, #24]
|
||
327 0168 32F91330 ldrsh r3, [r2, r3, lsl #1]
|
||
328 .loc 1 44 17
|
||
329 016c 1B12 asrs r3, r3, #8
|
||
330 016e 1AB2 sxth r2, r3
|
||
331 .loc 1 44 12
|
||
332 0170 BB69 ldr r3, [r7, #24]
|
||
333 0172 5B00 lsls r3, r3, #1
|
||
334 .loc 1 44 17
|
||
335 0174 D1B2 uxtb r1, r2
|
||
336 0176 FA68 ldr r2, [r7, #12]
|
||
337 0178 D154 strb r1, [r2, r3]
|
||
45:Core/Src/eeprom.c **** data[(i*2)+1] = (tmp1075_temps[i]);
|
||
338 .loc 1 45 35
|
||
339 017a 164A ldr r2, .L9+28
|
||
340 017c BB69 ldr r3, [r7, #24]
|
||
341 017e 32F91320 ldrsh r2, [r2, r3, lsl #1]
|
||
342 .loc 1 45 12
|
||
343 0182 BB69 ldr r3, [r7, #24]
|
||
344 0184 5B00 lsls r3, r3, #1
|
||
345 .loc 1 45 15
|
||
346 0186 0133 adds r3, r3, #1
|
||
347 .loc 1 45 19
|
||
348 0188 D1B2 uxtb r1, r2
|
||
349 018a FA68 ldr r2, [r7, #12]
|
||
350 018c D154 strb r1, [r2, r3]
|
||
43:Core/Src/eeprom.c **** data[(i*2)] = (tmp1075_temps[i]) >> 8;
|
||
351 .loc 1 43 28 discriminator 3
|
||
352 018e BB69 ldr r3, [r7, #24]
|
||
353 0190 0133 adds r3, r3, #1
|
||
354 0192 BB61 str r3, [r7, #24]
|
||
355 .L7:
|
||
43:Core/Src/eeprom.c **** data[(i*2)] = (tmp1075_temps[i]) >> 8;
|
||
356 .loc 1 43 21 discriminator 1
|
||
357 0194 BB69 ldr r3, [r7, #24]
|
||
358 0196 0C2B cmp r3, #12
|
||
359 0198 E4DD ble .L8
|
||
ARM GAS /tmp/ccvqyNaH.s page 8
|
||
|
||
|
||
360 .LBE3:
|
||
46:Core/Src/eeprom.c **** }
|
||
47:Core/Src/eeprom.c **** eeprom_write(data, 62);
|
||
361 .loc 1 47 3
|
||
362 019a 3E21 movs r1, #62
|
||
363 019c F868 ldr r0, [r7, #12]
|
||
364 019e FFF7FEFF bl eeprom_write
|
||
48:Core/Src/eeprom.c **** write_address++;
|
||
365 .loc 1 48 16
|
||
366 01a2 0D4B ldr r3, .L9+32
|
||
367 01a4 1B68 ldr r3, [r3]
|
||
368 01a6 0133 adds r3, r3, #1
|
||
369 01a8 0B4A ldr r2, .L9+32
|
||
370 01aa 1360 str r3, [r2]
|
||
371 01ac C546 mov sp, r8
|
||
49:Core/Src/eeprom.c **** }
|
||
372 .loc 1 49 1
|
||
373 01ae 00BF nop
|
||
374 01b0 2037 adds r7, r7, #32
|
||
375 .cfi_def_cfa_offset 24
|
||
376 01b2 BD46 mov sp, r7
|
||
377 .cfi_def_cfa_register 13
|
||
378 @ sp needed
|
||
379 01b4 BDE8F081 pop {r4, r5, r6, r7, r8, pc}
|
||
380 .L10:
|
||
381 .align 2
|
||
382 .L9:
|
||
383 01b8 00000000 .word state
|
||
384 01bc 00000000 .word current_powerground_status
|
||
385 01c0 00000000 .word current_soc
|
||
386 01c4 00000000 .word RELAY_BAT_SIDE_VOLTAGE
|
||
387 01c8 00000000 .word RELAY_ESC_SIDE_VOLTAGE
|
||
388 01cc 00000000 .word CURRENT_MEASUREMENT
|
||
389 01d0 00000000 .word module
|
||
390 01d4 00000000 .word tmp1075_temps
|
||
391 01d8 00000000 .word write_address
|
||
392 .cfi_endproc
|
||
393 .LFE131:
|
||
395 .section .text.eeprom_read,"ax",%progbits
|
||
396 .align 1
|
||
397 .global eeprom_read
|
||
398 .syntax unified
|
||
399 .thumb
|
||
400 .thumb_func
|
||
402 eeprom_read:
|
||
403 .LFB132:
|
||
50:Core/Src/eeprom.c ****
|
||
51:Core/Src/eeprom.c **** HAL_StatusTypeDef eeprom_read(uint8_t* data, uint16_t data_length){
|
||
404 .loc 1 51 67
|
||
405 .cfi_startproc
|
||
406 @ args = 0, pretend = 0, frame = 16
|
||
407 @ frame_needed = 1, uses_anonymous_args = 0
|
||
408 0000 80B5 push {r7, lr}
|
||
409 .cfi_def_cfa_offset 8
|
||
410 .cfi_offset 7, -8
|
||
411 .cfi_offset 14, -4
|
||
412 0002 88B0 sub sp, sp, #32
|
||
ARM GAS /tmp/ccvqyNaH.s page 9
|
||
|
||
|
||
413 .cfi_def_cfa_offset 40
|
||
414 0004 04AF add r7, sp, #16
|
||
415 .cfi_def_cfa 7, 24
|
||
416 0006 7860 str r0, [r7, #4]
|
||
417 0008 0B46 mov r3, r1
|
||
418 000a 7B80 strh r3, [r7, #2] @ movhi
|
||
52:Core/Src/eeprom.c **** HAL_StatusTypeDef status = HAL_OK;
|
||
419 .loc 1 52 21
|
||
420 000c 0023 movs r3, #0
|
||
421 000e FB73 strb r3, [r7, #15]
|
||
422 .LBB4:
|
||
53:Core/Src/eeprom.c **** for (size_t i = 0; i < data_length; i++) {
|
||
423 .loc 1 53 15
|
||
424 0010 0023 movs r3, #0
|
||
425 0012 BB60 str r3, [r7, #8]
|
||
426 .loc 1 53 3
|
||
427 0014 46E0 b .L12
|
||
428 .L17:
|
||
54:Core/Src/eeprom.c **** if (read_address > EEPROM_MEMORY_SIZE){
|
||
429 .loc 1 54 22
|
||
430 0016 284B ldr r3, .L18
|
||
431 0018 1B68 ldr r3, [r3]
|
||
432 .loc 1 54 8
|
||
433 001a B3F5003F cmp r3, #131072
|
||
434 001e 04D9 bls .L13
|
||
55:Core/Src/eeprom.c **** read_address = 0;
|
||
435 .loc 1 55 20
|
||
436 0020 254B ldr r3, .L18
|
||
437 0022 0022 movs r2, #0
|
||
438 0024 1A60 str r2, [r3]
|
||
56:Core/Src/eeprom.c **** return HAL_BUSY;
|
||
439 .loc 1 56 14
|
||
440 0026 0223 movs r3, #2
|
||
441 0028 41E0 b .L14
|
||
442 .L13:
|
||
57:Core/Src/eeprom.c **** } else if (read_address <= 65535){
|
||
443 .loc 1 57 29
|
||
444 002a 234B ldr r3, .L18
|
||
445 002c 1B68 ldr r3, [r3]
|
||
446 .loc 1 57 15
|
||
447 002e B3F5803F cmp r3, #65536
|
||
448 0032 14D2 bcs .L15
|
||
58:Core/Src/eeprom.c **** status = HAL_I2C_Mem_Read(
|
||
449 .loc 1 58 16
|
||
450 0034 214B ldr r3, .L18+4
|
||
451 0036 1868 ldr r0, [r3]
|
||
452 0038 1F4B ldr r3, .L18
|
||
453 003a 1B68 ldr r3, [r3]
|
||
454 003c 99B2 uxth r1, r3
|
||
455 003e 7A68 ldr r2, [r7, #4]
|
||
456 0040 BB68 ldr r3, [r7, #8]
|
||
457 0042 1344 add r3, r3, r2
|
||
458 0044 0A22 movs r2, #10
|
||
459 0046 0292 str r2, [sp, #8]
|
||
460 0048 0122 movs r2, #1
|
||
461 004a 0192 str r2, [sp, #4]
|
||
462 004c 0093 str r3, [sp]
|
||
ARM GAS /tmp/ccvqyNaH.s page 10
|
||
|
||
|
||
463 004e 0223 movs r3, #2
|
||
464 0050 0A46 mov r2, r1
|
||
465 0052 A421 movs r1, #164
|
||
466 0054 FFF7FEFF bl HAL_I2C_Mem_Read
|
||
467 0058 0346 mov r3, r0
|
||
468 005a FB73 strb r3, [r7, #15]
|
||
469 005c 1AE0 b .L16
|
||
470 .L15:
|
||
59:Core/Src/eeprom.c **** hi2c, EEPROM_I2C_ADDR,
|
||
60:Core/Src/eeprom.c **** read_address, EERROM_MEMORY_ADDR_SIZE,
|
||
61:Core/Src/eeprom.c **** &data[i], 1, 10);
|
||
62:Core/Src/eeprom.c **** } else if (read_address > 65535) {
|
||
471 .loc 1 62 29
|
||
472 005e 164B ldr r3, .L18
|
||
473 0060 1B68 ldr r3, [r3]
|
||
474 .loc 1 62 15
|
||
475 0062 B3F5803F cmp r3, #65536
|
||
476 0066 15D3 bcc .L16
|
||
63:Core/Src/eeprom.c **** status = HAL_I2C_Mem_Read(
|
||
477 .loc 1 63 18
|
||
478 0068 144B ldr r3, .L18+4
|
||
479 006a 1868 ldr r0, [r3]
|
||
480 006c 124B ldr r3, .L18
|
||
481 006e 1B68 ldr r3, [r3]
|
||
482 0070 9BB2 uxth r3, r3
|
||
483 0072 0133 adds r3, r3, #1
|
||
484 0074 99B2 uxth r1, r3
|
||
485 0076 7A68 ldr r2, [r7, #4]
|
||
486 0078 BB68 ldr r3, [r7, #8]
|
||
487 007a 1344 add r3, r3, r2
|
||
488 007c 0A22 movs r2, #10
|
||
489 007e 0292 str r2, [sp, #8]
|
||
490 0080 0122 movs r2, #1
|
||
491 0082 0192 str r2, [sp, #4]
|
||
492 0084 0093 str r3, [sp]
|
||
493 0086 0223 movs r3, #2
|
||
494 0088 0A46 mov r2, r1
|
||
495 008a A621 movs r1, #166
|
||
496 008c FFF7FEFF bl HAL_I2C_Mem_Read
|
||
497 0090 0346 mov r3, r0
|
||
498 0092 FB73 strb r3, [r7, #15]
|
||
499 .L16:
|
||
64:Core/Src/eeprom.c **** hi2c, EEPROM_I2C_ADDR + 2,
|
||
65:Core/Src/eeprom.c **** read_address - 65535, EERROM_MEMORY_ADDR_SIZE,
|
||
66:Core/Src/eeprom.c **** &data[i], 1, 10);
|
||
67:Core/Src/eeprom.c **** }
|
||
68:Core/Src/eeprom.c **** read_address++;
|
||
500 .loc 1 68 17
|
||
501 0094 084B ldr r3, .L18
|
||
502 0096 1B68 ldr r3, [r3]
|
||
503 0098 0133 adds r3, r3, #1
|
||
504 009a 074A ldr r2, .L18
|
||
505 009c 1360 str r3, [r2]
|
||
53:Core/Src/eeprom.c **** if (read_address > EEPROM_MEMORY_SIZE){
|
||
506 .loc 1 53 40 discriminator 2
|
||
507 009e BB68 ldr r3, [r7, #8]
|
||
508 00a0 0133 adds r3, r3, #1
|
||
ARM GAS /tmp/ccvqyNaH.s page 11
|
||
|
||
|
||
509 00a2 BB60 str r3, [r7, #8]
|
||
510 .L12:
|
||
53:Core/Src/eeprom.c **** if (read_address > EEPROM_MEMORY_SIZE){
|
||
511 .loc 1 53 24 discriminator 1
|
||
512 00a4 7B88 ldrh r3, [r7, #2]
|
||
513 00a6 BA68 ldr r2, [r7, #8]
|
||
514 00a8 9A42 cmp r2, r3
|
||
515 00aa B4D3 bcc .L17
|
||
516 .LBE4:
|
||
69:Core/Src/eeprom.c **** }
|
||
70:Core/Src/eeprom.c **** return status;
|
||
517 .loc 1 70 10
|
||
518 00ac FB7B ldrb r3, [r7, #15] @ zero_extendqisi2
|
||
519 .L14:
|
||
71:Core/Src/eeprom.c **** }
|
||
520 .loc 1 71 1
|
||
521 00ae 1846 mov r0, r3
|
||
522 00b0 1037 adds r7, r7, #16
|
||
523 .cfi_def_cfa_offset 8
|
||
524 00b2 BD46 mov sp, r7
|
||
525 .cfi_def_cfa_register 13
|
||
526 @ sp needed
|
||
527 00b4 80BD pop {r7, pc}
|
||
528 .L19:
|
||
529 00b6 00BF .align 2
|
||
530 .L18:
|
||
531 00b8 00000000 .word read_address
|
||
532 00bc 00000000 .word hi2c
|
||
533 .cfi_endproc
|
||
534 .LFE132:
|
||
536 .section .text.eeprom_write,"ax",%progbits
|
||
537 .align 1
|
||
538 .global eeprom_write
|
||
539 .syntax unified
|
||
540 .thumb
|
||
541 .thumb_func
|
||
543 eeprom_write:
|
||
544 .LFB133:
|
||
72:Core/Src/eeprom.c ****
|
||
73:Core/Src/eeprom.c **** HAL_StatusTypeDef eeprom_write(uint8_t* data, uint16_t data_length){
|
||
545 .loc 1 73 68
|
||
546 .cfi_startproc
|
||
547 @ args = 0, pretend = 0, frame = 16
|
||
548 @ frame_needed = 1, uses_anonymous_args = 0
|
||
549 0000 80B5 push {r7, lr}
|
||
550 .cfi_def_cfa_offset 8
|
||
551 .cfi_offset 7, -8
|
||
552 .cfi_offset 14, -4
|
||
553 0002 88B0 sub sp, sp, #32
|
||
554 .cfi_def_cfa_offset 40
|
||
555 0004 04AF add r7, sp, #16
|
||
556 .cfi_def_cfa 7, 24
|
||
557 0006 7860 str r0, [r7, #4]
|
||
558 0008 0B46 mov r3, r1
|
||
559 000a 7B80 strh r3, [r7, #2] @ movhi
|
||
74:Core/Src/eeprom.c **** HAL_StatusTypeDef status = HAL_OK;
|
||
560 .loc 1 74 21
|
||
ARM GAS /tmp/ccvqyNaH.s page 12
|
||
|
||
|
||
561 000c 0023 movs r3, #0
|
||
562 000e FB73 strb r3, [r7, #15]
|
||
75:Core/Src/eeprom.c **** HAL_GPIO_WritePin(EEPROM___WC__GPIO_Port, EEPROM___WC__Pin, GPIO_PIN_RESET);
|
||
563 .loc 1 75 3
|
||
564 0010 0022 movs r2, #0
|
||
565 0012 4FF48071 mov r1, #256
|
||
566 0016 4FF09040 mov r0, #1207959552
|
||
567 001a FFF7FEFF bl HAL_GPIO_WritePin
|
||
568 .LBB5:
|
||
76:Core/Src/eeprom.c **** for (size_t i = 0; i < data_length; i++) {
|
||
569 .loc 1 76 15
|
||
570 001e 0023 movs r3, #0
|
||
571 0020 BB60 str r3, [r7, #8]
|
||
572 .loc 1 76 3
|
||
573 0022 46E0 b .L21
|
||
574 .L26:
|
||
77:Core/Src/eeprom.c **** if (write_address > EEPROM_MEMORY_SIZE){
|
||
575 .loc 1 77 23
|
||
576 0024 2B4B ldr r3, .L27
|
||
577 0026 1B68 ldr r3, [r3]
|
||
578 .loc 1 77 8
|
||
579 0028 B3F5003F cmp r3, #131072
|
||
580 002c 04D9 bls .L22
|
||
78:Core/Src/eeprom.c **** write_address = 0;
|
||
581 .loc 1 78 21
|
||
582 002e 294B ldr r3, .L27
|
||
583 0030 0022 movs r2, #0
|
||
584 0032 1A60 str r2, [r3]
|
||
79:Core/Src/eeprom.c **** return HAL_BUSY;
|
||
585 .loc 1 79 14
|
||
586 0034 0223 movs r3, #2
|
||
587 0036 48E0 b .L23
|
||
588 .L22:
|
||
80:Core/Src/eeprom.c **** } else if (write_address <= 65535){
|
||
589 .loc 1 80 30
|
||
590 0038 264B ldr r3, .L27
|
||
591 003a 1B68 ldr r3, [r3]
|
||
592 .loc 1 80 15
|
||
593 003c B3F5803F cmp r3, #65536
|
||
594 0040 14D2 bcs .L24
|
||
81:Core/Src/eeprom.c **** status = HAL_I2C_Mem_Write(
|
||
595 .loc 1 81 16
|
||
596 0042 254B ldr r3, .L27+4
|
||
597 0044 1868 ldr r0, [r3]
|
||
598 0046 234B ldr r3, .L27
|
||
599 0048 1B68 ldr r3, [r3]
|
||
600 004a 99B2 uxth r1, r3
|
||
601 004c 7A68 ldr r2, [r7, #4]
|
||
602 004e BB68 ldr r3, [r7, #8]
|
||
603 0050 1344 add r3, r3, r2
|
||
604 0052 0A22 movs r2, #10
|
||
605 0054 0292 str r2, [sp, #8]
|
||
606 0056 0122 movs r2, #1
|
||
607 0058 0192 str r2, [sp, #4]
|
||
608 005a 0093 str r3, [sp]
|
||
609 005c 0223 movs r3, #2
|
||
610 005e 0A46 mov r2, r1
|
||
ARM GAS /tmp/ccvqyNaH.s page 13
|
||
|
||
|
||
611 0060 A421 movs r1, #164
|
||
612 0062 FFF7FEFF bl HAL_I2C_Mem_Write
|
||
613 0066 0346 mov r3, r0
|
||
614 0068 FB73 strb r3, [r7, #15]
|
||
615 006a 1AE0 b .L25
|
||
616 .L24:
|
||
82:Core/Src/eeprom.c **** hi2c, EEPROM_I2C_ADDR,
|
||
83:Core/Src/eeprom.c **** write_address, EERROM_MEMORY_ADDR_SIZE,
|
||
84:Core/Src/eeprom.c **** &data[i], 1, 10);
|
||
85:Core/Src/eeprom.c ****
|
||
86:Core/Src/eeprom.c **** } else if (write_address > 65535) {
|
||
617 .loc 1 86 30
|
||
618 006c 194B ldr r3, .L27
|
||
619 006e 1B68 ldr r3, [r3]
|
||
620 .loc 1 86 15
|
||
621 0070 B3F5803F cmp r3, #65536
|
||
622 0074 15D3 bcc .L25
|
||
87:Core/Src/eeprom.c **** status = HAL_I2C_Mem_Write(
|
||
623 .loc 1 87 18
|
||
624 0076 184B ldr r3, .L27+4
|
||
625 0078 1868 ldr r0, [r3]
|
||
626 007a 164B ldr r3, .L27
|
||
627 007c 1B68 ldr r3, [r3]
|
||
628 007e 9BB2 uxth r3, r3
|
||
629 0080 0133 adds r3, r3, #1
|
||
630 0082 99B2 uxth r1, r3
|
||
631 0084 7A68 ldr r2, [r7, #4]
|
||
632 0086 BB68 ldr r3, [r7, #8]
|
||
633 0088 1344 add r3, r3, r2
|
||
634 008a 0A22 movs r2, #10
|
||
635 008c 0292 str r2, [sp, #8]
|
||
636 008e 0122 movs r2, #1
|
||
637 0090 0192 str r2, [sp, #4]
|
||
638 0092 0093 str r3, [sp]
|
||
639 0094 0223 movs r3, #2
|
||
640 0096 0A46 mov r2, r1
|
||
641 0098 A621 movs r1, #166
|
||
642 009a FFF7FEFF bl HAL_I2C_Mem_Write
|
||
643 009e 0346 mov r3, r0
|
||
644 00a0 FB73 strb r3, [r7, #15]
|
||
645 .L25:
|
||
88:Core/Src/eeprom.c **** hi2c, EEPROM_I2C_ADDR + 2,
|
||
89:Core/Src/eeprom.c **** write_address - 65535, EERROM_MEMORY_ADDR_SIZE,
|
||
90:Core/Src/eeprom.c **** &data[i], 1, 10);
|
||
91:Core/Src/eeprom.c **** }
|
||
92:Core/Src/eeprom.c **** write_address++;
|
||
646 .loc 1 92 18
|
||
647 00a2 0C4B ldr r3, .L27
|
||
648 00a4 1B68 ldr r3, [r3]
|
||
649 00a6 0133 adds r3, r3, #1
|
||
650 00a8 0A4A ldr r2, .L27
|
||
651 00aa 1360 str r3, [r2]
|
||
76:Core/Src/eeprom.c **** if (write_address > EEPROM_MEMORY_SIZE){
|
||
652 .loc 1 76 40 discriminator 2
|
||
653 00ac BB68 ldr r3, [r7, #8]
|
||
654 00ae 0133 adds r3, r3, #1
|
||
655 00b0 BB60 str r3, [r7, #8]
|
||
ARM GAS /tmp/ccvqyNaH.s page 14
|
||
|
||
|
||
656 .L21:
|
||
76:Core/Src/eeprom.c **** if (write_address > EEPROM_MEMORY_SIZE){
|
||
657 .loc 1 76 24 discriminator 1
|
||
658 00b2 7B88 ldrh r3, [r7, #2]
|
||
659 00b4 BA68 ldr r2, [r7, #8]
|
||
660 00b6 9A42 cmp r2, r3
|
||
661 00b8 B4D3 bcc .L26
|
||
662 .LBE5:
|
||
93:Core/Src/eeprom.c **** }
|
||
94:Core/Src/eeprom.c **** HAL_GPIO_WritePin(EEPROM___WC__GPIO_Port, EEPROM___WC__Pin, GPIO_PIN_SET);
|
||
663 .loc 1 94 3
|
||
664 00ba 0122 movs r2, #1
|
||
665 00bc 4FF48071 mov r1, #256
|
||
666 00c0 4FF09040 mov r0, #1207959552
|
||
667 00c4 FFF7FEFF bl HAL_GPIO_WritePin
|
||
95:Core/Src/eeprom.c **** return status;
|
||
668 .loc 1 95 10
|
||
669 00c8 FB7B ldrb r3, [r7, #15] @ zero_extendqisi2
|
||
670 .L23:
|
||
96:Core/Src/eeprom.c **** }
|
||
671 .loc 1 96 1
|
||
672 00ca 1846 mov r0, r3
|
||
673 00cc 1037 adds r7, r7, #16
|
||
674 .cfi_def_cfa_offset 8
|
||
675 00ce BD46 mov sp, r7
|
||
676 .cfi_def_cfa_register 13
|
||
677 @ sp needed
|
||
678 00d0 80BD pop {r7, pc}
|
||
679 .L28:
|
||
680 00d2 00BF .align 2
|
||
681 .L27:
|
||
682 00d4 00000000 .word write_address
|
||
683 00d8 00000000 .word hi2c
|
||
684 .cfi_endproc
|
||
685 .LFE133:
|
||
687 .text
|
||
688 .Letext0:
|
||
689 .file 2 "/nix/store/p8vkamc9b2vlibs9aw76vnasdbifhcbm-gcc-arm-embedded-13.2.rel1/arm-none-eabi/incl
|
||
690 .file 3 "/nix/store/p8vkamc9b2vlibs9aw76vnasdbifhcbm-gcc-arm-embedded-13.2.rel1/arm-none-eabi/incl
|
||
691 .file 4 "Drivers/CMSIS/Device/ST/STM32F3xx/Include/stm32f302xc.h"
|
||
692 .file 5 "/nix/store/p8vkamc9b2vlibs9aw76vnasdbifhcbm-gcc-arm-embedded-13.2.rel1/lib/gcc/arm-none-e
|
||
693 .file 6 "Drivers/STM32F3xx_HAL_Driver/Inc/stm32f3xx_hal_def.h"
|
||
694 .file 7 "Drivers/STM32F3xx_HAL_Driver/Inc/stm32f3xx_hal_gpio.h"
|
||
695 .file 8 "Drivers/STM32F3xx_HAL_Driver/Inc/stm32f3xx_hal_dma.h"
|
||
696 .file 9 "Drivers/STM32F3xx_HAL_Driver/Inc/stm32f3xx_hal_i2c.h"
|
||
697 .file 10 "Core/Inc/ADBMS_LL_Driver.h"
|
||
698 .file 11 "Core/Inc/ADBMS_Abstraction.h"
|
||
699 .file 12 "Core/Inc/AMS_HighLevel.h"
|
||
700 .file 13 "Core/Inc/PWM_control.h"
|
||
701 .file 14 "Core/Inc/TMP1075.h"
|
||
702 .file 15 "Core/Inc/state_machine.h"
|
||
703 .file 16 "Core/Inc/soc_estimation.h"
|
||
704 .file 17 "Core/Inc/eeprom.h"
|
||
ARM GAS /tmp/ccvqyNaH.s page 15
|
||
|
||
|
||
DEFINED SYMBOLS
|
||
*ABS*:00000000 eeprom.c
|
||
/tmp/ccvqyNaH.s:21 .bss.hi2c:00000000 $d
|
||
/tmp/ccvqyNaH.s:24 .bss.hi2c:00000000 hi2c
|
||
/tmp/ccvqyNaH.s:31 .bss.write_address:00000000 write_address
|
||
/tmp/ccvqyNaH.s:28 .bss.write_address:00000000 $d
|
||
/tmp/ccvqyNaH.s:38 .bss.read_address:00000000 read_address
|
||
/tmp/ccvqyNaH.s:35 .bss.read_address:00000000 $d
|
||
/tmp/ccvqyNaH.s:41 .text.eeprom_init:00000000 $t
|
||
/tmp/ccvqyNaH.s:47 .text.eeprom_init:00000000 eeprom_init
|
||
/tmp/ccvqyNaH.s:88 .text.eeprom_init:00000028 $d
|
||
/tmp/ccvqyNaH.s:95 .text.eeprom_write_status:00000000 $t
|
||
/tmp/ccvqyNaH.s:101 .text.eeprom_write_status:00000000 eeprom_write_status
|
||
/tmp/ccvqyNaH.s:543 .text.eeprom_write:00000000 eeprom_write
|
||
/tmp/ccvqyNaH.s:383 .text.eeprom_write_status:000001b8 $d
|
||
/tmp/ccvqyNaH.s:396 .text.eeprom_read:00000000 $t
|
||
/tmp/ccvqyNaH.s:402 .text.eeprom_read:00000000 eeprom_read
|
||
/tmp/ccvqyNaH.s:531 .text.eeprom_read:000000b8 $d
|
||
/tmp/ccvqyNaH.s:537 .text.eeprom_write:00000000 $t
|
||
/tmp/ccvqyNaH.s:682 .text.eeprom_write:000000d4 $d
|
||
|
||
UNDEFINED SYMBOLS
|
||
memset
|
||
state
|
||
current_powerground_status
|
||
current_soc
|
||
RELAY_BAT_SIDE_VOLTAGE
|
||
RELAY_ESC_SIDE_VOLTAGE
|
||
CURRENT_MEASUREMENT
|
||
module
|
||
tmp1075_temps
|
||
HAL_I2C_Mem_Read
|
||
HAL_GPIO_WritePin
|
||
HAL_I2C_Mem_Write
|