mv-bms/Software/build/eeprom.lst

874 lines
33 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/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