mv-bms/Software/build/state_machine.lst

3914 lines
159 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/cctkPVvk.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 "state_machine.c"
16 .text
17 .Ltext0:
18 .cfi_sections .debug_frame
19 .file 1 "Core/Src/state_machine.c"
20 .global programming_mode
21 .section .bss.programming_mode,"aw",%nobits
24 programming_mode:
25 0000 00 .space 1
26 .global debugging_mode
27 .section .bss.debugging_mode,"aw",%nobits
30 debugging_mode:
31 0000 00 .space 1
32 .global state
33 .section .bss.state,"aw",%nobits
34 .align 2
37 state:
38 0000 00000000 .space 6
38 0000
39 .global RELAY_BAT_SIDE_VOLTAGE
40 .section .bss.RELAY_BAT_SIDE_VOLTAGE,"aw",%nobits
41 .align 2
44 RELAY_BAT_SIDE_VOLTAGE:
45 0000 00000000 .space 4
46 .global RELAY_ESC_SIDE_VOLTAGE
47 .section .bss.RELAY_ESC_SIDE_VOLTAGE,"aw",%nobits
48 .align 2
51 RELAY_ESC_SIDE_VOLTAGE:
52 0000 00000000 .space 4
53 .global CURRENT_MEASUREMENT
54 .section .bss.CURRENT_MEASUREMENT,"aw",%nobits
55 .align 2
58 CURRENT_MEASUREMENT:
59 0000 00000000 .space 4
60 .global CURRENT_MEASUREMENT_ON
61 .section .bss.CURRENT_MEASUREMENT_ON,"aw",%nobits
64 CURRENT_MEASUREMENT_ON:
65 0000 00 .space 1
66 .global balancing_state
67 .section .bss.balancing_state,"aw",%nobits
70 balancing_state:
71 0000 00 .space 1
72 .global base_offset
ARM GAS /tmp/cctkPVvk.s page 2
73 .section .bss.base_offset,"aw",%nobits
74 .align 2
77 base_offset:
78 0000 00000000 .space 4
79 .global error_timer
80 .section .bss.error_timer,"aw",%nobits
81 .align 2
84 error_timer:
85 0000 00000000 .space 4
86 .global precharge_timer
87 .section .bss.precharge_timer,"aw",%nobits
88 .align 2
91 precharge_timer:
92 0000 00000000 .space 4
93 .global discharge_timer
94 .section .bss.discharge_timer,"aw",%nobits
95 .align 2
98 discharge_timer:
99 0000 00000000 .space 4
100 .global balancing_timer
101 .section .bss.balancing_timer,"aw",%nobits
102 .align 2
105 balancing_timer:
106 0000 00000000 .space 4
107 .global eeprom_timer
108 .section .bss.eeprom_timer,"aw",%nobits
109 .align 2
112 eeprom_timer:
113 0000 00000000 .space 4
114 .global powerground_softstart_timer
115 .section .bss.powerground_softstart_timer,"aw",%nobits
116 .align 2
119 powerground_softstart_timer:
120 0000 00000000 .space 4
121 .global powerground_calibration_timer
122 .section .bss.powerground_calibration_timer,"aw",%nobits
123 .align 2
126 powerground_calibration_timer:
127 0000 00000000 .space 4
128 .global powerground_calibration_stage
129 .section .bss.powerground_calibration_stage,"aw",%nobits
132 powerground_calibration_stage:
133 0000 00 .space 1
134 .global current_powerground_status
135 .section .bss.current_powerground_status,"aw",%nobits
138 current_powerground_status:
139 0000 00 .space 1
140 .global target_powerground_status
141 .section .bss.target_powerground_status,"aw",%nobits
144 target_powerground_status:
145 0000 00 .space 1
146 .section .bss.timestamp,"aw",%nobits
147 .align 2
150 timestamp:
151 0000 00000000 .space 4
152 .section .text.sm_init,"ax",%progbits
153 .align 1
ARM GAS /tmp/cctkPVvk.s page 3
154 .global sm_init
155 .syntax unified
156 .thumb
157 .thumb_func
159 sm_init:
160 .LFB130:
1:Core/Src/state_machine.c **** /*
2:Core/Src/state_machine.c **** * state_machine.h
3:Core/Src/state_machine.c **** *
4:Core/Src/state_machine.c **** * Created on: 07.07.2024
5:Core/Src/state_machine.c **** * Author: Hamza
6:Core/Src/state_machine.c **** */
7:Core/Src/state_machine.c ****
8:Core/Src/state_machine.c **** #include <state_machine.h>
9:Core/Src/state_machine.c **** #include <stdint.h>
10:Core/Src/state_machine.c **** #include "ADBMS_Abstraction.h"
11:Core/Src/state_machine.c **** #include "AMS_HighLevel.h"
12:Core/Src/state_machine.c **** #include "PWM_control.h"
13:Core/Src/state_machine.c **** #include "can.h"
14:Core/Src/state_machine.c **** #include "eeprom.h"
15:Core/Src/state_machine.c **** #include "stm32f3xx_hal.h"
16:Core/Src/state_machine.c ****
17:Core/Src/state_machine.c **** // Time to wait after reaching 95% of battery voltage before exiting precharge
18:Core/Src/state_machine.c **** // Set this to 1000 in scruti to demonstrate the voltage on the multimeter
19:Core/Src/state_machine.c **** #define PRECHARGE_DURATION 8000 // ms
20:Core/Src/state_machine.c **** // Time to wait for discharge
21:Core/Src/state_machine.c **** #define DISCHARGE_DURATION 8000 // ms
22:Core/Src/state_machine.c **** // Time to wait between closing relays
23:Core/Src/state_machine.c **** #define RELAY_CLOSE_WAIT 10 // ms
24:Core/Src/state_machine.c **** // waiting time between to eeprom writes
25:Core/Src/state_machine.c **** #define EEPROM_WRITE_FREQ 1000
26:Core/Src/state_machine.c **** // how delay between steps of 5 -> 15ms * (100/5) = 300ms
27:Core/Src/state_machine.c **** #define POWERGROUND_SOFTSTART_INCREMENT_DELAY 15
28:Core/Src/state_machine.c **** // after errors are cleared wait for ERROR_LATCH_TIME ms before returning to inactive mode
29:Core/Src/state_machine.c **** #define ERROR_LATCH_TIME 10000 //ms
30:Core/Src/state_machine.c ****
31:Core/Src/state_machine.c **** /*
32:Core/Src/state_machine.c **** 10
33:Core/Src/state_machine.c **** 20
34:Core/Src/state_machine.c **** 30
35:Core/Src/state_machine.c **** 40
36:Core/Src/state_machine.c **** 50
37:Core/Src/state_machine.c **** 60
38:Core/Src/state_machine.c **** 70
39:Core/Src/state_machine.c **** 80
40:Core/Src/state_machine.c **** 90
41:Core/Src/state_machine.c **** 100
42:Core/Src/state_machine.c **** */
43:Core/Src/state_machine.c ****
44:Core/Src/state_machine.c **** bool programming_mode;
45:Core/Src/state_machine.c **** bool debugging_mode;
46:Core/Src/state_machine.c ****
47:Core/Src/state_machine.c **** StateHandle state;
48:Core/Src/state_machine.c **** int32_t RELAY_BAT_SIDE_VOLTAGE;
49:Core/Src/state_machine.c **** int32_t RELAY_ESC_SIDE_VOLTAGE;
50:Core/Src/state_machine.c **** int32_t CURRENT_MEASUREMENT;
51:Core/Src/state_machine.c **** bool CURRENT_MEASUREMENT_ON;
ARM GAS /tmp/cctkPVvk.s page 4
52:Core/Src/state_machine.c **** bool balancing_state;
53:Core/Src/state_machine.c **** float base_offset = 0;
54:Core/Src/state_machine.c ****
55:Core/Src/state_machine.c **** uint32_t error_timer;
56:Core/Src/state_machine.c **** uint32_t precharge_timer;
57:Core/Src/state_machine.c **** uint32_t discharge_timer;
58:Core/Src/state_machine.c **** uint32_t balancing_timer;
59:Core/Src/state_machine.c **** uint32_t eeprom_timer;
60:Core/Src/state_machine.c ****
61:Core/Src/state_machine.c **** uint32_t powerground_softstart_timer;
62:Core/Src/state_machine.c **** uint32_t powerground_calibration_timer;
63:Core/Src/state_machine.c **** uint8_t powerground_calibration_stage;
64:Core/Src/state_machine.c ****
65:Core/Src/state_machine.c **** uint8_t current_powerground_status;
66:Core/Src/state_machine.c **** uint8_t target_powerground_status;
67:Core/Src/state_machine.c ****
68:Core/Src/state_machine.c **** static uint32_t timestamp;
69:Core/Src/state_machine.c ****
70:Core/Src/state_machine.c **** void sm_init(){
161 .loc 1 70 15
162 .cfi_startproc
163 @ args = 0, pretend = 0, frame = 0
164 @ frame_needed = 1, uses_anonymous_args = 0
165 @ link register save eliminated.
166 0000 80B4 push {r7}
167 .cfi_def_cfa_offset 4
168 .cfi_offset 7, -4
169 0002 00AF add r7, sp, #0
170 .cfi_def_cfa_register 7
71:Core/Src/state_machine.c **** state.current_state = STATE_INACTIVE;
171 .loc 1 71 23
172 0004 164B ldr r3, .L2
173 0006 0022 movs r2, #0
174 0008 1A70 strb r2, [r3]
72:Core/Src/state_machine.c **** state.target_state = STATE_INACTIVE;
175 .loc 1 72 22
176 000a 154B ldr r3, .L2
177 000c 0022 movs r2, #0
178 000e 5A70 strb r2, [r3, #1]
73:Core/Src/state_machine.c **** state.error_source = 0;
179 .loc 1 73 22
180 0010 134B ldr r3, .L2
181 0012 0022 movs r2, #0
182 0014 5A80 strh r2, [r3, #2] @ movhi
74:Core/Src/state_machine.c **** precharge_timer = discharge_timer = powerground_calibration_timer = error_timer = eeprom_timer =
183 .loc 1 74 116
184 0016 134B ldr r3, .L2+4
185 0018 0022 movs r2, #0
186 001a 1A60 str r2, [r3]
187 .loc 1 74 98
188 001c 114B ldr r3, .L2+4
189 001e 1B68 ldr r3, [r3]
190 0020 114A ldr r2, .L2+8
191 0022 1360 str r3, [r2]
192 .loc 1 74 83
193 0024 104B ldr r3, .L2+8
194 0026 1B68 ldr r3, [r3]
ARM GAS /tmp/cctkPVvk.s page 5
195 0028 104A ldr r2, .L2+12
196 002a 1360 str r3, [r2]
197 .loc 1 74 69
198 002c 0F4B ldr r3, .L2+12
199 002e 1B68 ldr r3, [r3]
200 0030 0F4A ldr r2, .L2+16
201 0032 1360 str r3, [r2]
202 .loc 1 74 37
203 0034 0E4B ldr r3, .L2+16
204 0036 1B68 ldr r3, [r3]
205 0038 0E4A ldr r2, .L2+20
206 003a 1360 str r3, [r2]
207 .loc 1 74 19
208 003c 0D4B ldr r3, .L2+20
209 003e 1B68 ldr r3, [r3]
210 0040 0D4A ldr r2, .L2+24
211 0042 1360 str r3, [r2]
75:Core/Src/state_machine.c **** programming_mode = 0;
212 .loc 1 75 20
213 0044 0D4B ldr r3, .L2+28
214 0046 0022 movs r2, #0
215 0048 1A70 strb r2, [r3]
76:Core/Src/state_machine.c **** debugging_mode = 0;
216 .loc 1 76 18
217 004a 0D4B ldr r3, .L2+32
218 004c 0022 movs r2, #0
219 004e 1A70 strb r2, [r3]
77:Core/Src/state_machine.c **** balancing_state = 0;
220 .loc 1 77 19
221 0050 0C4B ldr r3, .L2+36
222 0052 0022 movs r2, #0
223 0054 1A70 strb r2, [r3]
78:Core/Src/state_machine.c **** }
224 .loc 1 78 1
225 0056 00BF nop
226 0058 BD46 mov sp, r7
227 .cfi_def_cfa_register 13
228 @ sp needed
229 005a 5DF8047B ldr r7, [sp], #4
230 .cfi_restore 7
231 .cfi_def_cfa_offset 0
232 005e 7047 bx lr
233 .L3:
234 .align 2
235 .L2:
236 0060 00000000 .word state
237 0064 00000000 .word balancing_timer
238 0068 00000000 .word eeprom_timer
239 006c 00000000 .word error_timer
240 0070 00000000 .word powerground_calibration_timer
241 0074 00000000 .word discharge_timer
242 0078 00000000 .word precharge_timer
243 007c 00000000 .word programming_mode
244 0080 00000000 .word debugging_mode
245 0084 00000000 .word balancing_state
246 .cfi_endproc
247 .LFE130:
ARM GAS /tmp/cctkPVvk.s page 6
249 .global __aeabi_f2d
250 .global __aeabi_dsub
251 .global __aeabi_dmul
252 .global __aeabi_d2iz
253 .section .text.sm_update,"ax",%progbits
254 .align 1
255 .global sm_update
256 .syntax unified
257 .thumb
258 .thumb_func
260 sm_update:
261 .LFB131:
79:Core/Src/state_machine.c ****
80:Core/Src/state_machine.c **** void sm_update(){
262 .loc 1 80 17
263 .cfi_startproc
264 @ args = 0, pretend = 0, frame = 0
265 @ frame_needed = 1, uses_anonymous_args = 0
266 0000 80B5 push {r7, lr}
267 .cfi_def_cfa_offset 8
268 .cfi_offset 7, -8
269 .cfi_offset 14, -4
270 0002 00AF add r7, sp, #0
271 .cfi_def_cfa_register 7
81:Core/Src/state_machine.c ****
82:Core/Src/state_machine.c **** CURRENT_MEASUREMENT = (module.auxVoltages[0] > 2495) ? (module.auxVoltages[0] - (2495.0)) * (300.
272 .loc 1 82 44
273 0004 6A4B ldr r3, .L21+24
274 0006 D3ED087A vldr.32 s15, [r3, #32]
275 .loc 1 82 23
276 000a 9FED6A7A vldr.32 s14, .L21+28
277 000e F4EEC77A vcmpe.f32 s15, s14
278 0012 F1EE10FA vmrs APSR_nzcv, FPSCR
279 0016 1ADD ble .L19
280 .loc 1 82 77 discriminator 1
281 0018 654B ldr r3, .L21+24
282 001a 1B6A ldr r3, [r3, #32] @ float
283 001c 1846 mov r0, r3 @ float
284 001e FFF7FEFF bl __aeabi_f2d
285 .loc 1 82 81 discriminator 1
286 0022 5DA3 adr r3, .L21
287 0024 D3E90023 ldrd r2, [r3]
288 0028 FFF7FEFF bl __aeabi_dsub
289 002c 0246 mov r2, r0
290 002e 0B46 mov r3, r1
291 0030 1046 mov r0, r2
292 0032 1946 mov r1, r3
293 .loc 1 82 93 discriminator 1
294 0034 5AA3 adr r3, .L21+8
295 0036 D3E90023 ldrd r2, [r3]
296 003a FFF7FEFF bl __aeabi_dmul
297 003e 0246 mov r2, r0
298 0040 0B46 mov r3, r1
299 .loc 1 82 23 discriminator 1
300 0042 1046 mov r0, r2
301 0044 1946 mov r1, r3
302 0046 FFF7FEFF bl __aeabi_d2iz
ARM GAS /tmp/cctkPVvk.s page 7
303 004a 0346 mov r3, r0
304 004c 00E0 b .L7
305 .L19:
306 .loc 1 82 23 is_stmt 0 discriminator 2
307 004e 0023 movs r3, #0
308 .L7:
309 .loc 1 82 23 discriminator 4
310 0050 594A ldr r2, .L21+32
311 0052 1360 str r3, [r2]
83:Core/Src/state_machine.c **** CURRENT_MEASUREMENT_ON = (module.auxVoltages[1] > 2400);
312 .loc 1 83 47 is_stmt 1
313 0054 564B ldr r3, .L21+24
314 0056 D3ED097A vldr.32 s15, [r3, #36]
315 .loc 1 83 51
316 005a 9FED587A vldr.32 s14, .L21+36
317 005e F4EEC77A vcmpe.f32 s15, s14
318 0062 F1EE10FA vmrs APSR_nzcv, FPSCR
319 0066 CCBF ite gt
320 0068 0123 movgt r3, #1
321 006a 0023 movle r3, #0
322 006c DAB2 uxtb r2, r3
323 .loc 1 83 26
324 006e 544B ldr r3, .L21+40
325 0070 1A70 strb r2, [r3]
84:Core/Src/state_machine.c **** RELAY_ESC_SIDE_VOLTAGE = module.auxVoltages[2] * 15.19;
326 .loc 1 84 46
327 0072 4F4B ldr r3, .L21+24
328 0074 9B6A ldr r3, [r3, #40] @ float
329 0076 1846 mov r0, r3 @ float
330 0078 FFF7FEFF bl __aeabi_f2d
331 .loc 1 84 50
332 007c 4AA3 adr r3, .L21+16
333 007e D3E90023 ldrd r2, [r3]
334 0082 FFF7FEFF bl __aeabi_dmul
335 0086 0246 mov r2, r0
336 0088 0B46 mov r3, r1
337 .loc 1 84 26
338 008a 1046 mov r0, r2
339 008c 1946 mov r1, r3
340 008e FFF7FEFF bl __aeabi_d2iz
341 0092 0346 mov r3, r0
342 0094 4B4A ldr r2, .L21+44
343 0096 1360 str r3, [r2]
85:Core/Src/state_machine.c **** RELAY_BAT_SIDE_VOLTAGE = module.auxVoltages[3] * 15.19; // the calculation says the factor is
344 .loc 1 85 46
345 0098 454B ldr r3, .L21+24
346 009a DB6A ldr r3, [r3, #44] @ float
347 009c 1846 mov r0, r3 @ float
348 009e FFF7FEFF bl __aeabi_f2d
349 .loc 1 85 50
350 00a2 41A3 adr r3, .L21+16
351 00a4 D3E90023 ldrd r2, [r3]
352 00a8 FFF7FEFF bl __aeabi_dmul
353 00ac 0246 mov r2, r0
354 00ae 0B46 mov r3, r1
355 .loc 1 85 26
356 00b0 1046 mov r0, r2
ARM GAS /tmp/cctkPVvk.s page 8
357 00b2 1946 mov r1, r3
358 00b4 FFF7FEFF bl __aeabi_d2iz
359 00b8 0346 mov r3, r0
360 00ba 434A ldr r2, .L21+48
361 00bc 1360 str r3, [r2]
86:Core/Src/state_machine.c ****
87:Core/Src/state_machine.c **** //if (can_timeout_timer < HAL_GetTick())
88:Core/Src/state_machine.c **** // state.current_state = state.target_state = STATE_INACTIVE;
89:Core/Src/state_machine.c **** /*
90:Core/Src/state_machine.c **** if (eeprom_timer < HAL_GetTick()){
91:Core/Src/state_machine.c **** eeprom_write_status();
92:Core/Src/state_machine.c **** eeprom_timer = HAL_GetTick() + EEPROM_WRITE_FREQ;
93:Core/Src/state_machine.c **** }
94:Core/Src/state_machine.c **** */
95:Core/Src/state_machine.c **** can_handle_send_status();
362 .loc 1 95 3
363 00be FFF7FEFF bl can_handle_send_status
96:Core/Src/state_machine.c **** can_handle_send_log();
364 .loc 1 96 3
365 00c2 FFF7FEFF bl can_handle_send_log
97:Core/Src/state_machine.c **** sm_check_errors();
366 .loc 1 97 3
367 00c6 FFF7FEFF bl sm_check_errors
98:Core/Src/state_machine.c **** sm_precharge_discharge_manager();
368 .loc 1 98 3
369 00ca FFF7FEFF bl sm_precharge_discharge_manager
99:Core/Src/state_machine.c **** //sm_calibrate_powerground();
100:Core/Src/state_machine.c **** sm_balancing();
370 .loc 1 100 3
371 00ce FFF7FEFF bl sm_balancing
101:Core/Src/state_machine.c **** sm_powerground_manager();
372 .loc 1 101 3
373 00d2 FFF7FEFF bl sm_powerground_manager
102:Core/Src/state_machine.c **** tmp1075_measure();
374 .loc 1 102 3
375 00d6 FFF7FEFF bl tmp1075_measure
103:Core/Src/state_machine.c **** status_led_update();
376 .loc 1 103 3
377 00da FFF7FEFF bl status_led_update
104:Core/Src/state_machine.c **** soc_update();
378 .loc 1 104 3
379 00de FFF7FEFF bl soc_update
105:Core/Src/state_machine.c ****
106:Core/Src/state_machine.c **** switch (state.current_state) {
380 .loc 1 106 16
381 00e2 3A4B ldr r3, .L21+52
382 00e4 1B78 ldrb r3, [r3] @ zero_extendqisi2
383 .loc 1 106 3
384 00e6 072B cmp r3, #7
385 00e8 4AD8 bhi .L8
386 00ea 01A2 adr r2, .L10
387 00ec 52F823F0 ldr pc, [r2, r3, lsl #2]
388 .p2align 2
389 .L10:
390 00f0 11010000 .word .L17+1
391 00f4 1F010000 .word .L16+1
392 00f8 2D010000 .word .L15+1
ARM GAS /tmp/cctkPVvk.s page 9
393 00fc 3B010000 .word .L14+1
394 0100 49010000 .word .L13+1
395 0104 57010000 .word .L12+1
396 0108 65010000 .word .L11+1
397 010c 73010000 .word .L9+1
398 .p2align 1
399 .L17:
107:Core/Src/state_machine.c **** case STATE_INACTIVE:
108:Core/Src/state_machine.c **** state.current_state = sm_update_inactive(); // monitor only
400 .loc 1 108 29
401 0110 FFF7FEFF bl sm_update_inactive
402 0114 0346 mov r3, r0
403 0116 1A46 mov r2, r3
404 .loc 1 108 27 discriminator 1
405 0118 2C4B ldr r3, .L21+52
406 011a 1A70 strb r2, [r3]
109:Core/Src/state_machine.c **** break;
407 .loc 1 109 7
408 011c 30E0 b .L8
409 .L16:
110:Core/Src/state_machine.c **** case STATE_PRECHARGE:
111:Core/Src/state_machine.c **** state.current_state = sm_update_precharge(); // set PRECHARGE
410 .loc 1 111 29
411 011e FFF7FEFF bl sm_update_precharge
412 0122 0346 mov r3, r0
413 0124 1A46 mov r2, r3
414 .loc 1 111 27 discriminator 1
415 0126 294B ldr r3, .L21+52
416 0128 1A70 strb r2, [r3]
112:Core/Src/state_machine.c **** break;
417 .loc 1 112 7
418 012a 29E0 b .L8
419 .L15:
113:Core/Src/state_machine.c **** case STATE_READY:
114:Core/Src/state_machine.c **** state.current_state = sm_update_ready();
420 .loc 1 114 29
421 012c FFF7FEFF bl sm_update_ready
422 0130 0346 mov r3, r0
423 0132 1A46 mov r2, r3
424 .loc 1 114 27 discriminator 1
425 0134 254B ldr r3, .L21+52
426 0136 1A70 strb r2, [r3]
115:Core/Src/state_machine.c **** break;
427 .loc 1 115 7
428 0138 22E0 b .L8
429 .L14:
116:Core/Src/state_machine.c **** case STATE_ACTIVE:
117:Core/Src/state_machine.c **** state.current_state = sm_update_active();
430 .loc 1 117 29
431 013a FFF7FEFF bl sm_update_active
432 013e 0346 mov r3, r0
433 0140 1A46 mov r2, r3
434 .loc 1 117 27 discriminator 1
435 0142 224B ldr r3, .L21+52
436 0144 1A70 strb r2, [r3]
118:Core/Src/state_machine.c **** break;
437 .loc 1 118 7
ARM GAS /tmp/cctkPVvk.s page 10
438 0146 1BE0 b .L8
439 .L13:
119:Core/Src/state_machine.c **** case STATE_DISCHARGE:
120:Core/Src/state_machine.c **** state.current_state = sm_update_discharge();
440 .loc 1 120 29
441 0148 FFF7FEFF bl sm_update_discharge
442 014c 0346 mov r3, r0
443 014e 1A46 mov r2, r3
444 .loc 1 120 27 discriminator 1
445 0150 1E4B ldr r3, .L21+52
446 0152 1A70 strb r2, [r3]
121:Core/Src/state_machine.c **** break;
447 .loc 1 121 7
448 0154 14E0 b .L8
449 .L12:
122:Core/Src/state_machine.c **** case STATE_CHARGING_PRECHARGE:
123:Core/Src/state_machine.c **** state.current_state = sm_update_charging_precharge();
450 .loc 1 123 29
451 0156 FFF7FEFF bl sm_update_charging_precharge
452 015a 0346 mov r3, r0
453 015c 1A46 mov r2, r3
454 .loc 1 123 27 discriminator 1
455 015e 1B4B ldr r3, .L21+52
456 0160 1A70 strb r2, [r3]
124:Core/Src/state_machine.c **** break;
457 .loc 1 124 7
458 0162 0DE0 b .L8
459 .L11:
125:Core/Src/state_machine.c **** case STATE_CHARGING:
126:Core/Src/state_machine.c **** state.current_state = sm_update_charging();
460 .loc 1 126 29
461 0164 FFF7FEFF bl sm_update_charging
462 0168 0346 mov r3, r0
463 016a 1A46 mov r2, r3
464 .loc 1 126 27 discriminator 1
465 016c 174B ldr r3, .L21+52
466 016e 1A70 strb r2, [r3]
127:Core/Src/state_machine.c **** break;
467 .loc 1 127 7
468 0170 06E0 b .L8
469 .L9:
128:Core/Src/state_machine.c **** case STATE_ERROR:
129:Core/Src/state_machine.c **** state.current_state = sm_update_error(); // enter the correct ERROR state
470 .loc 1 129 29
471 0172 FFF7FEFF bl sm_update_error
472 0176 0346 mov r3, r0
473 0178 1A46 mov r2, r3
474 .loc 1 129 27 discriminator 1
475 017a 144B ldr r3, .L21+52
476 017c 1A70 strb r2, [r3]
130:Core/Src/state_machine.c **** break;
477 .loc 1 130 7
478 017e 00BF nop
479 .L8:
131:Core/Src/state_machine.c **** }
132:Core/Src/state_machine.c ****
133:Core/Src/state_machine.c **** sm_set_relay_positions(state.current_state);
ARM GAS /tmp/cctkPVvk.s page 11
480 .loc 1 133 3
481 0180 124B ldr r3, .L21+52
482 0182 1B78 ldrb r3, [r3] @ zero_extendqisi2
483 0184 1846 mov r0, r3
484 0186 FFF7FEFF bl sm_set_relay_positions
134:Core/Src/state_machine.c **** state.target_state = state.current_state;
485 .loc 1 134 29
486 018a 104B ldr r3, .L21+52
487 018c 1A78 ldrb r2, [r3] @ zero_extendqisi2
488 .loc 1 134 22
489 018e 0F4B ldr r3, .L21+52
490 0190 5A70 strb r2, [r3, #1]
135:Core/Src/state_machine.c **** }
491 .loc 1 135 1
492 0192 00BF nop
493 0194 80BD pop {r7, pc}
494 .L22:
495 0196 00BF .align 3
496 .L21:
497 0198 00000000 .word 0
498 019c 007EA340 .word 1084456448
499 01a0 00000000 .word 0
500 01a4 00C07240 .word 1081262080
501 01a8 E17A14AE .word -1374389535
502 01ac 47612E40 .word 1076781383
503 01b0 00000000 .word module
504 01b4 00F01B45 .word 1159458816
505 01b8 00000000 .word CURRENT_MEASUREMENT
506 01bc 00001645 .word 1159069696
507 01c0 00000000 .word CURRENT_MEASUREMENT_ON
508 01c4 00000000 .word RELAY_ESC_SIDE_VOLTAGE
509 01c8 00000000 .word RELAY_BAT_SIDE_VOLTAGE
510 01cc 00000000 .word state
511 .cfi_endproc
512 .LFE131:
514 .section .text.sm_handle_ams_in,"ax",%progbits
515 .align 1
516 .global sm_handle_ams_in
517 .syntax unified
518 .thumb
519 .thumb_func
521 sm_handle_ams_in:
522 .LFB132:
136:Core/Src/state_machine.c ****
137:Core/Src/state_machine.c **** void sm_handle_ams_in(const uint8_t *data){
523 .loc 1 137 43
524 .cfi_startproc
525 @ args = 0, pretend = 0, frame = 8
526 @ frame_needed = 1, uses_anonymous_args = 0
527 0000 80B5 push {r7, lr}
528 .cfi_def_cfa_offset 8
529 .cfi_offset 7, -8
530 .cfi_offset 14, -4
531 0002 82B0 sub sp, sp, #8
532 .cfi_def_cfa_offset 16
533 0004 00AF add r7, sp, #0
534 .cfi_def_cfa_register 7
ARM GAS /tmp/cctkPVvk.s page 12
535 0006 7860 str r0, [r7, #4]
138:Core/Src/state_machine.c **** if (programming_mode == 1 && (state.current_state == STATE_READY || state.current_state == STATE_
536 .loc 1 138 24
537 0008 3D4B ldr r3, .L46
538 000a 1B78 ldrb r3, [r3] @ zero_extendqisi2
539 .loc 1 138 6
540 000c 002B cmp r3, #0
541 000e 0DD0 beq .L24
542 .loc 1 138 38 discriminator 1
543 0010 3C4B ldr r3, .L46+4
544 0012 1B78 ldrb r3, [r3] @ zero_extendqisi2
545 .loc 1 138 29 discriminator 1
546 0014 022B cmp r3, #2
547 0016 03D0 beq .L25
548 .loc 1 138 76 discriminator 3
549 0018 3A4B ldr r3, .L46+4
550 001a 1B78 ldrb r3, [r3] @ zero_extendqisi2
551 .loc 1 138 68 discriminator 3
552 001c 032B cmp r3, #3
553 001e 05D1 bne .L24
554 .L25:
555 .loc 1 138 138 discriminator 4
556 0020 7B68 ldr r3, [r7, #4]
557 0022 0133 adds r3, r3, #1
558 .loc 1 138 110 discriminator 4
559 0024 1B78 ldrb r3, [r3] @ zero_extendqisi2
560 0026 1846 mov r0, r3
561 0028 FFF7FEFF bl PWM_powerground_control
562 .L24:
139:Core/Src/state_machine.c ****
140:Core/Src/state_machine.c **** switch (data[0]) {
563 .loc 1 140 15
564 002c 7B68 ldr r3, [r7, #4]
565 002e 1B78 ldrb r3, [r3] @ zero_extendqisi2
566 .loc 1 140 3
567 0030 FF2B cmp r3, #255
568 0032 50D0 beq .L26
569 0034 FF2B cmp r3, #255
570 0036 5EDC bgt .L40
571 0038 F12B cmp r3, #241
572 003a 53D0 beq .L41
573 003c F12B cmp r3, #241
574 003e 5ADC bgt .L40
575 0040 F02B cmp r3, #240
576 0042 40D0 beq .L29
577 0044 F02B cmp r3, #240
578 0046 56DC bgt .L40
579 0048 022B cmp r3, #2
580 004a 2BD0 beq .L30
581 004c 022B cmp r3, #2
582 004e 52DC bgt .L40
583 0050 002B cmp r3, #0
584 0052 02D0 beq .L31
585 0054 012B cmp r3, #1
586 0056 0BD0 beq .L32
141:Core/Src/state_machine.c **** case 0x00:
142:Core/Src/state_machine.c **** if (state.current_state != STATE_INACTIVE){
ARM GAS /tmp/cctkPVvk.s page 13
143:Core/Src/state_machine.c **** state.target_state = STATE_DISCHARGE;
144:Core/Src/state_machine.c **** PWM_powerground_control(255);
145:Core/Src/state_machine.c **** }
146:Core/Src/state_machine.c **** break;
147:Core/Src/state_machine.c **** case 0x01:
148:Core/Src/state_machine.c **** if (state.target_state == STATE_INACTIVE || state.target_state == STATE_DISCHARGE){
149:Core/Src/state_machine.c **** state.target_state = STATE_PRECHARGE;
150:Core/Src/state_machine.c **** PWM_powerground_control(0);
151:Core/Src/state_machine.c **** } else if (state.target_state == STATE_ACTIVE){
152:Core/Src/state_machine.c **** state.target_state = STATE_READY;
153:Core/Src/state_machine.c **** PWM_powerground_control(0);
154:Core/Src/state_machine.c **** }
155:Core/Src/state_machine.c **** break;
156:Core/Src/state_machine.c **** case 0x02:
157:Core/Src/state_machine.c **** if (state.current_state == STATE_READY || state.current_state == STATE_ACTIVE){
158:Core/Src/state_machine.c **** target_powerground_status = data[1];
159:Core/Src/state_machine.c **** state.target_state = STATE_ACTIVE; // READY -> ACTIVE
160:Core/Src/state_machine.c **** }
161:Core/Src/state_machine.c **** break;
162:Core/Src/state_machine.c **** case 0xF0:
163:Core/Src/state_machine.c **** if (state.current_state == STATE_INACTIVE){
164:Core/Src/state_machine.c **** state.target_state = STATE_CHARGING_PRECHARGE;
165:Core/Src/state_machine.c **** }
166:Core/Src/state_machine.c **** break;
167:Core/Src/state_machine.c **** case 0xF1: // EEPROM
168:Core/Src/state_machine.c **** break;
169:Core/Src/state_machine.c **** if (state.current_state == STATE_INACTIVE)
170:Core/Src/state_machine.c **** // can_handle_dump();
171:Core/Src/state_machine.c **** break;
172:Core/Src/state_machine.c **** case 0xFF: // EMERGENCY SHUTDOWN
173:Core/Src/state_machine.c **** state.current_state = STATE_DISCHARGE;
174:Core/Src/state_machine.c **** state.target_state = STATE_ERROR;
175:Core/Src/state_machine.c **** break;
176:Core/Src/state_machine.c **** }
177:Core/Src/state_machine.c **** }
587 .loc 1 177 1
588 0058 4DE0 b .L40
589 .L31:
142:Core/Src/state_machine.c **** state.target_state = STATE_DISCHARGE;
590 .loc 1 142 16
591 005a 2A4B ldr r3, .L46+4
592 005c 1B78 ldrb r3, [r3] @ zero_extendqisi2
142:Core/Src/state_machine.c **** state.target_state = STATE_DISCHARGE;
593 .loc 1 142 10
594 005e 002B cmp r3, #0
595 0060 42D0 beq .L42
143:Core/Src/state_machine.c **** PWM_powerground_control(255);
596 .loc 1 143 28
597 0062 284B ldr r3, .L46+4
598 0064 0422 movs r2, #4
599 0066 5A70 strb r2, [r3, #1]
144:Core/Src/state_machine.c **** }
600 .loc 1 144 9
601 0068 FF20 movs r0, #255
602 006a FFF7FEFF bl PWM_powerground_control
146:Core/Src/state_machine.c **** case 0x01:
603 .loc 1 146 7
ARM GAS /tmp/cctkPVvk.s page 14
604 006e 3BE0 b .L42
605 .L32:
148:Core/Src/state_machine.c **** state.target_state = STATE_PRECHARGE;
606 .loc 1 148 16
607 0070 244B ldr r3, .L46+4
608 0072 5B78 ldrb r3, [r3, #1] @ zero_extendqisi2
148:Core/Src/state_machine.c **** state.target_state = STATE_PRECHARGE;
609 .loc 1 148 10
610 0074 002B cmp r3, #0
611 0076 03D0 beq .L34
148:Core/Src/state_machine.c **** state.target_state = STATE_PRECHARGE;
612 .loc 1 148 56 discriminator 1
613 0078 224B ldr r3, .L46+4
614 007a 5B78 ldrb r3, [r3, #1] @ zero_extendqisi2
148:Core/Src/state_machine.c **** state.target_state = STATE_PRECHARGE;
615 .loc 1 148 48 discriminator 1
616 007c 042B cmp r3, #4
617 007e 06D1 bne .L35
618 .L34:
149:Core/Src/state_machine.c **** PWM_powerground_control(0);
619 .loc 1 149 28
620 0080 204B ldr r3, .L46+4
621 0082 0122 movs r2, #1
622 0084 5A70 strb r2, [r3, #1]
150:Core/Src/state_machine.c **** } else if (state.target_state == STATE_ACTIVE){
623 .loc 1 150 9
624 0086 0020 movs r0, #0
625 0088 FFF7FEFF bl PWM_powerground_control
155:Core/Src/state_machine.c **** case 0x02:
626 .loc 1 155 7
627 008c 2EE0 b .L43
628 .L35:
151:Core/Src/state_machine.c **** state.target_state = STATE_READY;
629 .loc 1 151 23
630 008e 1D4B ldr r3, .L46+4
631 0090 5B78 ldrb r3, [r3, #1] @ zero_extendqisi2
151:Core/Src/state_machine.c **** state.target_state = STATE_READY;
632 .loc 1 151 17
633 0092 032B cmp r3, #3
634 0094 2AD1 bne .L43
152:Core/Src/state_machine.c **** PWM_powerground_control(0);
635 .loc 1 152 28
636 0096 1B4B ldr r3, .L46+4
637 0098 0222 movs r2, #2
638 009a 5A70 strb r2, [r3, #1]
153:Core/Src/state_machine.c **** }
639 .loc 1 153 9
640 009c 0020 movs r0, #0
641 009e FFF7FEFF bl PWM_powerground_control
155:Core/Src/state_machine.c **** case 0x02:
642 .loc 1 155 7
643 00a2 23E0 b .L43
644 .L30:
157:Core/Src/state_machine.c **** target_powerground_status = data[1];
645 .loc 1 157 16
646 00a4 174B ldr r3, .L46+4
647 00a6 1B78 ldrb r3, [r3] @ zero_extendqisi2
ARM GAS /tmp/cctkPVvk.s page 15
157:Core/Src/state_machine.c **** target_powerground_status = data[1];
648 .loc 1 157 10
649 00a8 022B cmp r3, #2
650 00aa 03D0 beq .L37
157:Core/Src/state_machine.c **** target_powerground_status = data[1];
651 .loc 1 157 54 discriminator 1
652 00ac 154B ldr r3, .L46+4
653 00ae 1B78 ldrb r3, [r3] @ zero_extendqisi2
157:Core/Src/state_machine.c **** target_powerground_status = data[1];
654 .loc 1 157 46 discriminator 1
655 00b0 032B cmp r3, #3
656 00b2 1DD1 bne .L44
657 .L37:
158:Core/Src/state_machine.c **** state.target_state = STATE_ACTIVE; // READY -> ACTIVE
658 .loc 1 158 41
659 00b4 7B68 ldr r3, [r7, #4]
660 00b6 0133 adds r3, r3, #1
661 00b8 1A78 ldrb r2, [r3] @ zero_extendqisi2
158:Core/Src/state_machine.c **** state.target_state = STATE_ACTIVE; // READY -> ACTIVE
662 .loc 1 158 35
663 00ba 134B ldr r3, .L46+8
664 00bc 1A70 strb r2, [r3]
159:Core/Src/state_machine.c **** }
665 .loc 1 159 28
666 00be 114B ldr r3, .L46+4
667 00c0 0322 movs r2, #3
668 00c2 5A70 strb r2, [r3, #1]
161:Core/Src/state_machine.c **** case 0xF0:
669 .loc 1 161 7
670 00c4 14E0 b .L44
671 .L29:
163:Core/Src/state_machine.c **** state.target_state = STATE_CHARGING_PRECHARGE;
672 .loc 1 163 16
673 00c6 0F4B ldr r3, .L46+4
674 00c8 1B78 ldrb r3, [r3] @ zero_extendqisi2
163:Core/Src/state_machine.c **** state.target_state = STATE_CHARGING_PRECHARGE;
675 .loc 1 163 10
676 00ca 002B cmp r3, #0
677 00cc 12D1 bne .L45
164:Core/Src/state_machine.c **** }
678 .loc 1 164 28
679 00ce 0D4B ldr r3, .L46+4
680 00d0 0522 movs r2, #5
681 00d2 5A70 strb r2, [r3, #1]
166:Core/Src/state_machine.c **** case 0xF1: // EEPROM
682 .loc 1 166 7
683 00d4 0EE0 b .L45
684 .L26:
173:Core/Src/state_machine.c **** state.target_state = STATE_ERROR;
685 .loc 1 173 27
686 00d6 0B4B ldr r3, .L46+4
687 00d8 0422 movs r2, #4
688 00da 1A70 strb r2, [r3]
174:Core/Src/state_machine.c **** break;
689 .loc 1 174 26
690 00dc 094B ldr r3, .L46+4
691 00de 0722 movs r2, #7
ARM GAS /tmp/cctkPVvk.s page 16
692 00e0 5A70 strb r2, [r3, #1]
175:Core/Src/state_machine.c **** }
693 .loc 1 175 7
694 00e2 08E0 b .L27
695 .L41:
168:Core/Src/state_machine.c **** if (state.current_state == STATE_INACTIVE)
696 .loc 1 168 7
697 00e4 00BF nop
698 00e6 06E0 b .L40
699 .L42:
146:Core/Src/state_machine.c **** case 0x01:
700 .loc 1 146 7
701 00e8 00BF nop
702 00ea 04E0 b .L40
703 .L43:
155:Core/Src/state_machine.c **** case 0x02:
704 .loc 1 155 7
705 00ec 00BF nop
706 00ee 02E0 b .L40
707 .L44:
161:Core/Src/state_machine.c **** case 0xF0:
708 .loc 1 161 7
709 00f0 00BF nop
710 00f2 00E0 b .L40
711 .L45:
166:Core/Src/state_machine.c **** case 0xF1: // EEPROM
712 .loc 1 166 7
713 00f4 00BF nop
714 .L27:
715 .L40:
716 .loc 1 177 1
717 00f6 00BF nop
718 00f8 0837 adds r7, r7, #8
719 .cfi_def_cfa_offset 8
720 00fa BD46 mov sp, r7
721 .cfi_def_cfa_register 13
722 @ sp needed
723 00fc 80BD pop {r7, pc}
724 .L47:
725 00fe 00BF .align 2
726 .L46:
727 0100 00000000 .word programming_mode
728 0104 00000000 .word state
729 0108 00000000 .word target_powerground_status
730 .cfi_endproc
731 .LFE132:
733 .section .text.sm_precharge_discharge_manager,"ax",%progbits
734 .align 1
735 .global sm_precharge_discharge_manager
736 .syntax unified
737 .thumb
738 .thumb_func
740 sm_precharge_discharge_manager:
741 .LFB133:
178:Core/Src/state_machine.c ****
179:Core/Src/state_machine.c **** void sm_precharge_discharge_manager(){
742 .loc 1 179 38
ARM GAS /tmp/cctkPVvk.s page 17
743 .cfi_startproc
744 @ args = 0, pretend = 0, frame = 0
745 @ frame_needed = 1, uses_anonymous_args = 0
746 0000 80B5 push {r7, lr}
747 .cfi_def_cfa_offset 8
748 .cfi_offset 7, -8
749 .cfi_offset 14, -4
750 0002 00AF add r7, sp, #0
751 .cfi_def_cfa_register 7
180:Core/Src/state_machine.c ****
181:Core/Src/state_machine.c **** if (state.current_state != STATE_PRECHARGE && state.target_state == STATE_PRECHARGE){
752 .loc 1 181 12
753 0004 324B ldr r3, .L56
754 0006 1B78 ldrb r3, [r3] @ zero_extendqisi2
755 .loc 1 181 6
756 0008 012B cmp r3, #1
757 000a 0BD0 beq .L49
758 .loc 1 181 54 discriminator 1
759 000c 304B ldr r3, .L56
760 000e 5B78 ldrb r3, [r3, #1] @ zero_extendqisi2
761 .loc 1 181 46 discriminator 1
762 0010 012B cmp r3, #1
763 0012 07D1 bne .L49
182:Core/Src/state_machine.c **** precharge_timer = HAL_GetTick() + PRECHARGE_DURATION;
764 .loc 1 182 23
765 0014 FFF7FEFF bl HAL_GetTick
766 0018 0346 mov r3, r0
767 .loc 1 182 37 discriminator 1
768 001a 03F5FA53 add r3, r3, #8000
769 .loc 1 182 21 discriminator 1
770 001e 2D4A ldr r2, .L56+4
771 0020 1360 str r3, [r2]
772 .loc 1 182 21 is_stmt 0
773 0022 10E0 b .L50
774 .L49:
183:Core/Src/state_machine.c **** } else if (state.current_state == STATE_PRECHARGE && precharge_timer < HAL_GetTick()) {
775 .loc 1 183 19 is_stmt 1
776 0024 2A4B ldr r3, .L56
777 0026 1B78 ldrb r3, [r3] @ zero_extendqisi2
778 .loc 1 183 13
779 0028 012B cmp r3, #1
780 002a 0CD1 bne .L50
781 .loc 1 183 74 discriminator 1
782 002c FFF7FEFF bl HAL_GetTick
783 0030 0246 mov r2, r0
784 .loc 1 183 72 discriminator 1
785 0032 284B ldr r3, .L56+4
786 0034 1B68 ldr r3, [r3]
787 .loc 1 183 53 discriminator 1
788 0036 9A42 cmp r2, r3
789 0038 05D9 bls .L50
184:Core/Src/state_machine.c **** state.target_state = STATE_READY;
790 .loc 1 184 24
791 003a 254B ldr r3, .L56
792 003c 0222 movs r2, #2
793 003e 5A70 strb r2, [r3, #1]
185:Core/Src/state_machine.c **** precharge_timer = 0;
ARM GAS /tmp/cctkPVvk.s page 18
794 .loc 1 185 21
795 0040 244B ldr r3, .L56+4
796 0042 0022 movs r2, #0
797 0044 1A60 str r2, [r3]
798 .L50:
186:Core/Src/state_machine.c **** }
187:Core/Src/state_machine.c ****
188:Core/Src/state_machine.c **** if (state.current_state != STATE_CHARGING_PRECHARGE && state.target_state == STATE_CHARGING_PRECH
799 .loc 1 188 12
800 0046 224B ldr r3, .L56
801 0048 1B78 ldrb r3, [r3] @ zero_extendqisi2
802 .loc 1 188 6
803 004a 052B cmp r3, #5
804 004c 0BD0 beq .L51
805 .loc 1 188 63 discriminator 1
806 004e 204B ldr r3, .L56
807 0050 5B78 ldrb r3, [r3, #1] @ zero_extendqisi2
808 .loc 1 188 55 discriminator 1
809 0052 052B cmp r3, #5
810 0054 07D1 bne .L51
189:Core/Src/state_machine.c **** precharge_timer = HAL_GetTick() + PRECHARGE_DURATION;
811 .loc 1 189 23
812 0056 FFF7FEFF bl HAL_GetTick
813 005a 0346 mov r3, r0
814 .loc 1 189 37 discriminator 1
815 005c 03F5FA53 add r3, r3, #8000
816 .loc 1 189 21 discriminator 1
817 0060 1C4A ldr r2, .L56+4
818 0062 1360 str r3, [r2]
819 .loc 1 189 21 is_stmt 0
820 0064 10E0 b .L52
821 .L51:
190:Core/Src/state_machine.c **** } else if (state.current_state == STATE_CHARGING_PRECHARGE && precharge_timer < HAL_GetTick()) {
822 .loc 1 190 19 is_stmt 1
823 0066 1A4B ldr r3, .L56
824 0068 1B78 ldrb r3, [r3] @ zero_extendqisi2
825 .loc 1 190 13
826 006a 052B cmp r3, #5
827 006c 0CD1 bne .L52
828 .loc 1 190 83 discriminator 1
829 006e FFF7FEFF bl HAL_GetTick
830 0072 0246 mov r2, r0
831 .loc 1 190 81 discriminator 1
832 0074 174B ldr r3, .L56+4
833 0076 1B68 ldr r3, [r3]
834 .loc 1 190 62 discriminator 1
835 0078 9A42 cmp r2, r3
836 007a 05D9 bls .L52
191:Core/Src/state_machine.c **** state.target_state = STATE_CHARGING;
837 .loc 1 191 24
838 007c 144B ldr r3, .L56
839 007e 0622 movs r2, #6
840 0080 5A70 strb r2, [r3, #1]
192:Core/Src/state_machine.c **** precharge_timer = 0;
841 .loc 1 192 21
842 0082 144B ldr r3, .L56+4
843 0084 0022 movs r2, #0
ARM GAS /tmp/cctkPVvk.s page 19
844 0086 1A60 str r2, [r3]
845 .L52:
193:Core/Src/state_machine.c **** }
194:Core/Src/state_machine.c ****
195:Core/Src/state_machine.c **** if (state.current_state != STATE_DISCHARGE && state.target_state == STATE_DISCHARGE){
846 .loc 1 195 12
847 0088 114B ldr r3, .L56
848 008a 1B78 ldrb r3, [r3] @ zero_extendqisi2
849 .loc 1 195 6
850 008c 042B cmp r3, #4
851 008e 0BD0 beq .L53
852 .loc 1 195 54 discriminator 1
853 0090 0F4B ldr r3, .L56
854 0092 5B78 ldrb r3, [r3, #1] @ zero_extendqisi2
855 .loc 1 195 46 discriminator 1
856 0094 042B cmp r3, #4
857 0096 07D1 bne .L53
196:Core/Src/state_machine.c **** discharge_timer = HAL_GetTick() + DISCHARGE_DURATION;
858 .loc 1 196 23
859 0098 FFF7FEFF bl HAL_GetTick
860 009c 0346 mov r3, r0
861 .loc 1 196 37 discriminator 1
862 009e 03F5FA53 add r3, r3, #8000
863 .loc 1 196 21 discriminator 1
864 00a2 0D4A ldr r2, .L56+8
865 00a4 1360 str r3, [r2]
197:Core/Src/state_machine.c **** } else if (state.current_state == STATE_DISCHARGE && discharge_timer < HAL_GetTick()) {
198:Core/Src/state_machine.c **** state.target_state = STATE_INACTIVE;
199:Core/Src/state_machine.c **** discharge_timer = 0;
200:Core/Src/state_machine.c **** }
201:Core/Src/state_machine.c ****
202:Core/Src/state_machine.c **** }
866 .loc 1 202 1
867 00a6 10E0 b .L55
868 .L53:
197:Core/Src/state_machine.c **** } else if (state.current_state == STATE_DISCHARGE && discharge_timer < HAL_GetTick()) {
869 .loc 1 197 19
870 00a8 094B ldr r3, .L56
871 00aa 1B78 ldrb r3, [r3] @ zero_extendqisi2
197:Core/Src/state_machine.c **** } else if (state.current_state == STATE_DISCHARGE && discharge_timer < HAL_GetTick()) {
872 .loc 1 197 13
873 00ac 042B cmp r3, #4
874 00ae 0CD1 bne .L55
197:Core/Src/state_machine.c **** } else if (state.current_state == STATE_DISCHARGE && discharge_timer < HAL_GetTick()) {
875 .loc 1 197 74 discriminator 1
876 00b0 FFF7FEFF bl HAL_GetTick
877 00b4 0246 mov r2, r0
197:Core/Src/state_machine.c **** } else if (state.current_state == STATE_DISCHARGE && discharge_timer < HAL_GetTick()) {
878 .loc 1 197 72 discriminator 1
879 00b6 084B ldr r3, .L56+8
880 00b8 1B68 ldr r3, [r3]
197:Core/Src/state_machine.c **** } else if (state.current_state == STATE_DISCHARGE && discharge_timer < HAL_GetTick()) {
881 .loc 1 197 53 discriminator 1
882 00ba 9A42 cmp r2, r3
883 00bc 05D9 bls .L55
198:Core/Src/state_machine.c **** discharge_timer = 0;
884 .loc 1 198 24
ARM GAS /tmp/cctkPVvk.s page 20
885 00be 044B ldr r3, .L56
886 00c0 0022 movs r2, #0
887 00c2 5A70 strb r2, [r3, #1]
199:Core/Src/state_machine.c **** }
888 .loc 1 199 21
889 00c4 044B ldr r3, .L56+8
890 00c6 0022 movs r2, #0
891 00c8 1A60 str r2, [r3]
892 .L55:
893 .loc 1 202 1
894 00ca 00BF nop
895 00cc 80BD pop {r7, pc}
896 .L57:
897 00ce 00BF .align 2
898 .L56:
899 00d0 00000000 .word state
900 00d4 00000000 .word precharge_timer
901 00d8 00000000 .word discharge_timer
902 .cfi_endproc
903 .LFE133:
905 .section .text.sm_powerground_manager,"ax",%progbits
906 .align 1
907 .global sm_powerground_manager
908 .syntax unified
909 .thumb
910 .thumb_func
912 sm_powerground_manager:
913 .LFB134:
203:Core/Src/state_machine.c ****
204:Core/Src/state_machine.c **** void sm_powerground_manager(){
914 .loc 1 204 30
915 .cfi_startproc
916 @ args = 0, pretend = 0, frame = 0
917 @ frame_needed = 1, uses_anonymous_args = 0
918 0000 80B5 push {r7, lr}
919 .cfi_def_cfa_offset 8
920 .cfi_offset 7, -8
921 .cfi_offset 14, -4
922 0002 00AF add r7, sp, #0
923 .cfi_def_cfa_register 7
205:Core/Src/state_machine.c **** if (current_powerground_status == target_powerground_status)
924 .loc 1 205 34
925 0004 254B ldr r3, .L65
926 0006 1A78 ldrb r2, [r3] @ zero_extendqisi2
927 0008 254B ldr r3, .L65+4
928 000a 1B78 ldrb r3, [r3] @ zero_extendqisi2
929 .loc 1 205 6
930 000c 9A42 cmp r2, r3
931 000e 43D0 beq .L64
206:Core/Src/state_machine.c **** return;
207:Core/Src/state_machine.c **** if ( current_powerground_status > 100 || target_powerground_status > 100){ //something went wrong
932 .loc 1 207 35
933 0010 224B ldr r3, .L65
934 0012 1B78 ldrb r3, [r3] @ zero_extendqisi2
935 .loc 1 207 6
936 0014 642B cmp r3, #100
937 0016 03D8 bhi .L61
ARM GAS /tmp/cctkPVvk.s page 21
938 .loc 1 207 70 discriminator 1
939 0018 214B ldr r3, .L65+4
940 001a 1B78 ldrb r3, [r3] @ zero_extendqisi2
941 .loc 1 207 41 discriminator 1
942 001c 642B cmp r3, #100
943 001e 0AD9 bls .L62
944 .L61:
208:Core/Src/state_machine.c **** PWM_powerground_control(255);
945 .loc 1 208 5
946 0020 FF20 movs r0, #255
947 0022 FFF7FEFF bl PWM_powerground_control
209:Core/Src/state_machine.c **** current_powerground_status = target_powerground_status= 0;
948 .loc 1 209 59
949 0026 1E4B ldr r3, .L65+4
950 0028 0022 movs r2, #0
951 002a 1A70 strb r2, [r3]
952 .loc 1 209 32
953 002c 1C4B ldr r3, .L65+4
954 002e 1A78 ldrb r2, [r3] @ zero_extendqisi2
955 0030 1A4B ldr r3, .L65
956 0032 1A70 strb r2, [r3]
210:Core/Src/state_machine.c **** return;
957 .loc 1 210 5
958 0034 31E0 b .L58
959 .L62:
211:Core/Src/state_machine.c **** }
212:Core/Src/state_machine.c ****
213:Core/Src/state_machine.c **** if (powerground_softstart_timer < HAL_GetTick()){
960 .loc 1 213 37
961 0036 FFF7FEFF bl HAL_GetTick
962 003a 0246 mov r2, r0
963 .loc 1 213 35 discriminator 1
964 003c 194B ldr r3, .L65+8
965 003e 1B68 ldr r3, [r3]
966 .loc 1 213 6 discriminator 1
967 0040 9A42 cmp r2, r3
968 0042 2AD9 bls .L58
214:Core/Src/state_machine.c **** if (current_powerground_status < target_powerground_status){
969 .loc 1 214 36
970 0044 154B ldr r3, .L65
971 0046 1A78 ldrb r2, [r3] @ zero_extendqisi2
972 0048 154B ldr r3, .L65+4
973 004a 1B78 ldrb r3, [r3] @ zero_extendqisi2
974 .loc 1 214 8
975 004c 9A42 cmp r2, r3
976 004e 0ED2 bcs .L63
215:Core/Src/state_machine.c **** current_powerground_status += 5;
977 .loc 1 215 34
978 0050 124B ldr r3, .L65
979 0052 1B78 ldrb r3, [r3] @ zero_extendqisi2
980 0054 0533 adds r3, r3, #5
981 0056 DAB2 uxtb r2, r3
982 0058 104B ldr r3, .L65
983 005a 1A70 strb r2, [r3]
216:Core/Src/state_machine.c **** PWM_powerground_softcontrol();
984 .loc 1 216 7
985 005c FFF7FEFF bl PWM_powerground_softcontrol
ARM GAS /tmp/cctkPVvk.s page 22
217:Core/Src/state_machine.c **** powerground_softstart_timer = HAL_GetTick() + POWERGROUND_SOFTSTART_INCREMENT_DELAY;
986 .loc 1 217 37
987 0060 FFF7FEFF bl HAL_GetTick
988 0064 0346 mov r3, r0
989 .loc 1 217 51 discriminator 1
990 0066 0F33 adds r3, r3, #15
991 .loc 1 217 35 discriminator 1
992 0068 0E4A ldr r2, .L65+8
993 006a 1360 str r3, [r2]
994 006c 15E0 b .L58
995 .L63:
218:Core/Src/state_machine.c **** } else if (current_powerground_status > target_powerground_status) {
996 .loc 1 218 43
997 006e 0B4B ldr r3, .L65
998 0070 1A78 ldrb r2, [r3] @ zero_extendqisi2
999 0072 0B4B ldr r3, .L65+4
1000 0074 1B78 ldrb r3, [r3] @ zero_extendqisi2
1001 .loc 1 218 15
1002 0076 9A42 cmp r2, r3
1003 0078 0FD9 bls .L58
219:Core/Src/state_machine.c **** current_powerground_status -= 5;
1004 .loc 1 219 34
1005 007a 084B ldr r3, .L65
1006 007c 1B78 ldrb r3, [r3] @ zero_extendqisi2
1007 007e 053B subs r3, r3, #5
1008 0080 DAB2 uxtb r2, r3
1009 0082 064B ldr r3, .L65
1010 0084 1A70 strb r2, [r3]
220:Core/Src/state_machine.c **** PWM_powerground_softcontrol();
1011 .loc 1 220 7
1012 0086 FFF7FEFF bl PWM_powerground_softcontrol
221:Core/Src/state_machine.c **** powerground_softstart_timer = HAL_GetTick() + POWERGROUND_SOFTSTART_INCREMENT_DELAY;
1013 .loc 1 221 37
1014 008a FFF7FEFF bl HAL_GetTick
1015 008e 0346 mov r3, r0
1016 .loc 1 221 51 discriminator 1
1017 0090 0F33 adds r3, r3, #15
1018 .loc 1 221 35 discriminator 1
1019 0092 044A ldr r2, .L65+8
1020 0094 1360 str r3, [r2]
1021 0096 00E0 b .L58
1022 .L64:
206:Core/Src/state_machine.c **** if ( current_powerground_status > 100 || target_powerground_status > 100){ //something went wrong
1023 .loc 1 206 5
1024 0098 00BF nop
1025 .L58:
222:Core/Src/state_machine.c **** }
223:Core/Src/state_machine.c **** }
224:Core/Src/state_machine.c **** }
1026 .loc 1 224 1
1027 009a 80BD pop {r7, pc}
1028 .L66:
1029 .align 2
1030 .L65:
1031 009c 00000000 .word current_powerground_status
1032 00a0 00000000 .word target_powerground_status
1033 00a4 00000000 .word powerground_softstart_timer
ARM GAS /tmp/cctkPVvk.s page 23
1034 .cfi_endproc
1035 .LFE134:
1037 .section .text.sm_calibrate_powerground,"ax",%progbits
1038 .align 1
1039 .global sm_calibrate_powerground
1040 .syntax unified
1041 .thumb
1042 .thumb_func
1044 sm_calibrate_powerground:
1045 .LFB135:
225:Core/Src/state_machine.c ****
226:Core/Src/state_machine.c **** void sm_calibrate_powerground(){
1046 .loc 1 226 32
1047 .cfi_startproc
1048 @ args = 0, pretend = 0, frame = 0
1049 @ frame_needed = 1, uses_anonymous_args = 0
1050 0000 80B5 push {r7, lr}
1051 .cfi_def_cfa_offset 8
1052 .cfi_offset 7, -8
1053 .cfi_offset 14, -4
1054 0002 00AF add r7, sp, #0
1055 .cfi_def_cfa_register 7
227:Core/Src/state_machine.c **** if (powerground_calibration_stage != 4 && state.current_state == STATE_PRECHARGE){
1056 .loc 1 227 37
1057 0004 2D4B ldr r3, .L81
1058 0006 1B78 ldrb r3, [r3] @ zero_extendqisi2
1059 .loc 1 227 6
1060 0008 042B cmp r3, #4
1061 000a 56D0 beq .L67
1062 .loc 1 227 50 discriminator 1
1063 000c 2C4B ldr r3, .L81+4
1064 000e 1B78 ldrb r3, [r3] @ zero_extendqisi2
1065 .loc 1 227 42 discriminator 1
1066 0010 012B cmp r3, #1
1067 0012 52D1 bne .L67
228:Core/Src/state_machine.c **** switch (powerground_calibration_stage) {
1068 .loc 1 228 5
1069 0014 294B ldr r3, .L81
1070 0016 1B78 ldrb r3, [r3] @ zero_extendqisi2
1071 0018 032B cmp r3, #3
1072 001a 4ED8 bhi .L67
1073 001c 01A2 adr r2, .L70
1074 001e 52F823F0 ldr pc, [r2, r3, lsl #2]
1075 0022 00BF .p2align 2
1076 .L70:
1077 0024 35000000 .word .L73+1
1078 0028 47000000 .word .L72+1
1079 002c 71000000 .word .L71+1
1080 0030 9B000000 .word .L69+1
1081 .p2align 1
1082 .L73:
229:Core/Src/state_machine.c **** case 0:
230:Core/Src/state_machine.c **** powerground_calibration_timer = HAL_GetTick() + 0;
1083 .loc 1 230 41
1084 0034 FFF7FEFF bl HAL_GetTick
1085 0038 0346 mov r3, r0
1086 .loc 1 230 39 discriminator 1
ARM GAS /tmp/cctkPVvk.s page 24
1087 003a 224A ldr r2, .L81+8
1088 003c 1360 str r3, [r2]
231:Core/Src/state_machine.c **** powerground_calibration_stage = 1;
1089 .loc 1 231 39
1090 003e 1F4B ldr r3, .L81
1091 0040 0122 movs r2, #1
1092 0042 1A70 strb r2, [r3]
232:Core/Src/state_machine.c **** return;
1093 .loc 1 232 9
1094 0044 39E0 b .L67
1095 .L72:
233:Core/Src/state_machine.c **** case 1:
234:Core/Src/state_machine.c **** if (powerground_calibration_timer < HAL_GetTick()){
1096 .loc 1 234 45
1097 0046 FFF7FEFF bl HAL_GetTick
1098 004a 0246 mov r2, r0
1099 .loc 1 234 43 discriminator 1
1100 004c 1D4B ldr r3, .L81+8
1101 004e 1B68 ldr r3, [r3]
1102 .loc 1 234 12 discriminator 1
1103 0050 9A42 cmp r2, r3
1104 0052 2DD9 bls .L77
235:Core/Src/state_machine.c **** powerground_calibration_timer = HAL_GetTick() + 2000;
1105 .loc 1 235 43
1106 0054 FFF7FEFF bl HAL_GetTick
1107 0058 0346 mov r3, r0
1108 .loc 1 235 57 discriminator 1
1109 005a 03F5FA63 add r3, r3, #2000
1110 .loc 1 235 41 discriminator 1
1111 005e 194A ldr r2, .L81+8
1112 0060 1360 str r3, [r2]
236:Core/Src/state_machine.c **** powerground_calibration_stage = 2;
1113 .loc 1 236 41
1114 0062 164B ldr r3, .L81
1115 0064 0222 movs r2, #2
1116 0066 1A70 strb r2, [r3]
237:Core/Src/state_machine.c **** PWM_powerground_control(100);
1117 .loc 1 237 11
1118 0068 6420 movs r0, #100
1119 006a FFF7FEFF bl PWM_powerground_control
238:Core/Src/state_machine.c **** }
239:Core/Src/state_machine.c **** return;
1120 .loc 1 239 9
1121 006e 1FE0 b .L77
1122 .L71:
240:Core/Src/state_machine.c **** case 2:
241:Core/Src/state_machine.c **** if (powerground_calibration_timer < HAL_GetTick()){
1123 .loc 1 241 45
1124 0070 FFF7FEFF bl HAL_GetTick
1125 0074 0246 mov r2, r0
1126 .loc 1 241 43 discriminator 1
1127 0076 134B ldr r3, .L81+8
1128 0078 1B68 ldr r3, [r3]
1129 .loc 1 241 12 discriminator 1
1130 007a 9A42 cmp r2, r3
1131 007c 1AD9 bls .L78
242:Core/Src/state_machine.c **** powerground_calibration_timer = HAL_GetTick() + 1000;
ARM GAS /tmp/cctkPVvk.s page 25
1132 .loc 1 242 43
1133 007e FFF7FEFF bl HAL_GetTick
1134 0082 0346 mov r3, r0
1135 .loc 1 242 57 discriminator 1
1136 0084 03F57A73 add r3, r3, #1000
1137 .loc 1 242 41 discriminator 1
1138 0088 0E4A ldr r2, .L81+8
1139 008a 1360 str r3, [r2]
243:Core/Src/state_machine.c **** powerground_calibration_stage = 3;
1140 .loc 1 243 41
1141 008c 0B4B ldr r3, .L81
1142 008e 0322 movs r2, #3
1143 0090 1A70 strb r2, [r3]
244:Core/Src/state_machine.c **** PWM_powerground_control(0);
1144 .loc 1 244 11
1145 0092 0020 movs r0, #0
1146 0094 FFF7FEFF bl PWM_powerground_control
245:Core/Src/state_machine.c **** }
246:Core/Src/state_machine.c **** return;
1147 .loc 1 246 9
1148 0098 0CE0 b .L78
1149 .L69:
247:Core/Src/state_machine.c **** case 3:
248:Core/Src/state_machine.c **** if (powerground_calibration_timer < HAL_GetTick()){
1150 .loc 1 248 45
1151 009a FFF7FEFF bl HAL_GetTick
1152 009e 0246 mov r2, r0
1153 .loc 1 248 43 discriminator 1
1154 00a0 084B ldr r3, .L81+8
1155 00a2 1B68 ldr r3, [r3]
1156 .loc 1 248 12 discriminator 1
1157 00a4 9A42 cmp r2, r3
1158 00a6 07D9 bls .L79
249:Core/Src/state_machine.c **** powerground_calibration_stage = 4;
1159 .loc 1 249 41
1160 00a8 044B ldr r3, .L81
1161 00aa 0422 movs r2, #4
1162 00ac 1A70 strb r2, [r3]
250:Core/Src/state_machine.c **** }
251:Core/Src/state_machine.c **** return;
1163 .loc 1 251 9
1164 00ae 03E0 b .L79
1165 .L77:
239:Core/Src/state_machine.c **** case 2:
1166 .loc 1 239 9
1167 00b0 00BF nop
1168 00b2 02E0 b .L67
1169 .L78:
246:Core/Src/state_machine.c **** case 3:
1170 .loc 1 246 9
1171 00b4 00BF nop
1172 00b6 00E0 b .L67
1173 .L79:
1174 .loc 1 251 9
1175 00b8 00BF nop
1176 .L67:
252:Core/Src/state_machine.c **** }
ARM GAS /tmp/cctkPVvk.s page 26
253:Core/Src/state_machine.c **** }
254:Core/Src/state_machine.c **** }
1177 .loc 1 254 1
1178 00ba 80BD pop {r7, pc}
1179 .L82:
1180 .align 2
1181 .L81:
1182 00bc 00000000 .word powerground_calibration_stage
1183 00c0 00000000 .word state
1184 00c4 00000000 .word powerground_calibration_timer
1185 .cfi_endproc
1186 .LFE135:
1188 .section .text.sm_balancing,"ax",%progbits
1189 .align 1
1190 .global sm_balancing
1191 .syntax unified
1192 .thumb
1193 .thumb_func
1195 sm_balancing:
1196 .LFB136:
255:Core/Src/state_machine.c ****
256:Core/Src/state_machine.c **** void sm_balancing(){
1197 .loc 1 256 20
1198 .cfi_startproc
1199 @ args = 0, pretend = 0, frame = 16
1200 @ frame_needed = 1, uses_anonymous_args = 0
1201 0000 80B5 push {r7, lr}
1202 .cfi_def_cfa_offset 8
1203 .cfi_offset 7, -8
1204 .cfi_offset 14, -4
1205 0002 84B0 sub sp, sp, #16
1206 .cfi_def_cfa_offset 24
1207 0004 00AF add r7, sp, #0
1208 .cfi_def_cfa_register 7
257:Core/Src/state_machine.c **** if (balancing_timer < HAL_GetTick()){
1209 .loc 1 257 25
1210 0006 FFF7FEFF bl HAL_GetTick
1211 000a 0246 mov r2, r0
1212 .loc 1 257 23 discriminator 1
1213 000c 364B ldr r3, .L93
1214 000e 1B68 ldr r3, [r3]
1215 .loc 1 257 6 discriminator 1
1216 0010 9A42 cmp r2, r3
1217 0012 65D9 bls .L83
258:Core/Src/state_machine.c **** if (balancing_state){
1218 .loc 1 258 9
1219 0014 354B ldr r3, .L93+4
1220 0016 1B78 ldrb r3, [r3] @ zero_extendqisi2
1221 .loc 1 258 8
1222 0018 002B cmp r3, #0
1223 001a 55D0 beq .L85
1224 .LBB2:
259:Core/Src/state_machine.c **** balancing_timer = HAL_GetTick() + 30000;
1225 .loc 1 259 25
1226 001c FFF7FEFF bl HAL_GetTick
1227 0020 0346 mov r3, r0
1228 .loc 1 259 39 discriminator 1
ARM GAS /tmp/cctkPVvk.s page 27
1229 0022 03F5EA43 add r3, r3, #29952
1230 0026 3033 adds r3, r3, #48
1231 .loc 1 259 23 discriminator 1
1232 0028 2F4A ldr r2, .L93
1233 002a 1360 str r3, [r2]
260:Core/Src/state_machine.c ****
261:Core/Src/state_machine.c **** uint8_t id_cell_lowest_voltage = 0;
1234 .loc 1 261 15
1235 002c 0023 movs r3, #0
1236 002e FB73 strb r3, [r7, #15]
262:Core/Src/state_machine.c **** uint8_t num_of_cells_to_balance = 0;
1237 .loc 1 262 15
1238 0030 0023 movs r3, #0
1239 0032 BB73 strb r3, [r7, #14]
263:Core/Src/state_machine.c **** uint32_t channels = 0;
1240 .loc 1 263 16
1241 0034 0023 movs r3, #0
1242 0036 BB60 str r3, [r7, #8]
1243 .LBB3:
264:Core/Src/state_machine.c ****
265:Core/Src/state_machine.c **** for (int i = 0; i < 13; i++) {
1244 .loc 1 265 16
1245 0038 0023 movs r3, #0
1246 003a 7B60 str r3, [r7, #4]
1247 .loc 1 265 7
1248 003c 0EE0 b .L86
1249 .L88:
266:Core/Src/state_machine.c **** if (module.cellVoltages[i] < module.cellVoltages[id_cell_lowest_voltage])
1250 .loc 1 266 32
1251 003e 2C4A ldr r2, .L93+8
1252 0040 7B68 ldr r3, [r7, #4]
1253 0042 32F91320 ldrsh r2, [r2, r3, lsl #1]
1254 .loc 1 266 57
1255 0046 FB7B ldrb r3, [r7, #15] @ zero_extendqisi2
1256 0048 2949 ldr r1, .L93+8
1257 004a 31F91330 ldrsh r3, [r1, r3, lsl #1]
1258 .loc 1 266 12
1259 004e 9A42 cmp r2, r3
1260 0050 01DA bge .L87
267:Core/Src/state_machine.c **** id_cell_lowest_voltage = i;
1261 .loc 1 267 34
1262 0052 7B68 ldr r3, [r7, #4]
1263 0054 FB73 strb r3, [r7, #15]
1264 .L87:
265:Core/Src/state_machine.c **** if (module.cellVoltages[i] < module.cellVoltages[id_cell_lowest_voltage])
1265 .loc 1 265 32 discriminator 2
1266 0056 7B68 ldr r3, [r7, #4]
1267 0058 0133 adds r3, r3, #1
1268 005a 7B60 str r3, [r7, #4]
1269 .L86:
265:Core/Src/state_machine.c **** if (module.cellVoltages[i] < module.cellVoltages[id_cell_lowest_voltage])
1270 .loc 1 265 25 discriminator 1
1271 005c 7B68 ldr r3, [r7, #4]
1272 005e 0C2B cmp r3, #12
1273 0060 EDDD ble .L88
1274 .LBE3:
1275 .LBB4:
ARM GAS /tmp/cctkPVvk.s page 28
268:Core/Src/state_machine.c **** }
269:Core/Src/state_machine.c ****
270:Core/Src/state_machine.c **** for (int i = 0; i < 13; i++) {
1276 .loc 1 270 16
1277 0062 0023 movs r3, #0
1278 0064 3B60 str r3, [r7]
1279 .loc 1 270 7
1280 0066 18E0 b .L89
1281 .L91:
271:Core/Src/state_machine.c **** if (module.cellVoltages[i] - 20 > module.cellVoltages[id_cell_lowest_voltage]){
1282 .loc 1 271 32
1283 0068 214A ldr r2, .L93+8
1284 006a 3B68 ldr r3, [r7]
1285 006c 32F91330 ldrsh r3, [r2, r3, lsl #1]
1286 .loc 1 271 36
1287 0070 143B subs r3, r3, #20
1288 .loc 1 271 62
1289 0072 FA7B ldrb r2, [r7, #15] @ zero_extendqisi2
1290 0074 1E49 ldr r1, .L93+8
1291 0076 31F91220 ldrsh r2, [r1, r2, lsl #1]
1292 .loc 1 271 12
1293 007a 9342 cmp r3, r2
1294 007c 0ADD ble .L90
272:Core/Src/state_machine.c **** channels |= 1 << i;
1295 .loc 1 272 25
1296 007e 0122 movs r2, #1
1297 0080 3B68 ldr r3, [r7]
1298 0082 02FA03F3 lsl r3, r2, r3
1299 0086 1A46 mov r2, r3
1300 .loc 1 272 20
1301 0088 BB68 ldr r3, [r7, #8]
1302 008a 1343 orrs r3, r3, r2
1303 008c BB60 str r3, [r7, #8]
273:Core/Src/state_machine.c **** num_of_cells_to_balance++;
1304 .loc 1 273 34
1305 008e BB7B ldrb r3, [r7, #14] @ zero_extendqisi2
1306 0090 0133 adds r3, r3, #1
1307 0092 BB73 strb r3, [r7, #14]
1308 .L90:
270:Core/Src/state_machine.c **** if (module.cellVoltages[i] - 20 > module.cellVoltages[id_cell_lowest_voltage]){
1309 .loc 1 270 32 discriminator 2
1310 0094 3B68 ldr r3, [r7]
1311 0096 0133 adds r3, r3, #1
1312 0098 3B60 str r3, [r7]
1313 .L89:
270:Core/Src/state_machine.c **** if (module.cellVoltages[i] - 20 > module.cellVoltages[id_cell_lowest_voltage]){
1314 .loc 1 270 25 discriminator 1
1315 009a 3B68 ldr r3, [r7]
1316 009c 0C2B cmp r3, #12
1317 009e E3DD ble .L91
1318 .LBE4:
274:Core/Src/state_machine.c **** }
275:Core/Src/state_machine.c **** }
276:Core/Src/state_machine.c ****
277:Core/Src/state_machine.c **** if (num_of_cells_to_balance == 0){
1319 .loc 1 277 10
1320 00a0 BB7B ldrb r3, [r7, #14] @ zero_extendqisi2
ARM GAS /tmp/cctkPVvk.s page 29
1321 00a2 002B cmp r3, #0
1322 00a4 05D1 bne .L92
278:Core/Src/state_machine.c **** amsStopBalancing();
1323 .loc 1 278 9
1324 00a6 FFF7FEFF bl amsStopBalancing
279:Core/Src/state_machine.c **** balancing_state = 0;
1325 .loc 1 279 25
1326 00aa 104B ldr r3, .L93+4
1327 00ac 0022 movs r2, #0
1328 00ae 1A70 strb r2, [r3]
280:Core/Src/state_machine.c **** return;
1329 .loc 1 280 9
1330 00b0 16E0 b .L83
1331 .L92:
281:Core/Src/state_machine.c **** }
282:Core/Src/state_machine.c ****
283:Core/Src/state_machine.c **** amsConfigBalancing(channels, 0xF);
1332 .loc 1 283 7
1333 00b2 0F21 movs r1, #15
1334 00b4 B868 ldr r0, [r7, #8]
1335 00b6 FFF7FEFF bl amsConfigBalancing
284:Core/Src/state_machine.c **** amsStartBalancing(0xF);
1336 .loc 1 284 7
1337 00ba 0F20 movs r0, #15
1338 00bc FFF7FEFF bl amsStartBalancing
285:Core/Src/state_machine.c **** balancing_state = 1;
1339 .loc 1 285 23
1340 00c0 0A4B ldr r3, .L93+4
1341 00c2 0122 movs r2, #1
1342 00c4 1A70 strb r2, [r3]
1343 .LBE2:
1344 00c6 0BE0 b .L83
1345 .L85:
286:Core/Src/state_machine.c **** } else {
287:Core/Src/state_machine.c **** balancing_timer = HAL_GetTick() + 1000;
1346 .loc 1 287 25
1347 00c8 FFF7FEFF bl HAL_GetTick
1348 00cc 0346 mov r3, r0
1349 .loc 1 287 39 discriminator 1
1350 00ce 03F57A73 add r3, r3, #1000
1351 .loc 1 287 23 discriminator 1
1352 00d2 054A ldr r2, .L93
1353 00d4 1360 str r3, [r2]
288:Core/Src/state_machine.c **** balancing_state = 0;
1354 .loc 1 288 23
1355 00d6 054B ldr r3, .L93+4
1356 00d8 0022 movs r2, #0
1357 00da 1A70 strb r2, [r3]
289:Core/Src/state_machine.c **** amsStopBalancing();
1358 .loc 1 289 7
1359 00dc FFF7FEFF bl amsStopBalancing
1360 .L83:
290:Core/Src/state_machine.c **** }
291:Core/Src/state_machine.c **** }
292:Core/Src/state_machine.c **** }
1361 .loc 1 292 1
1362 00e0 1037 adds r7, r7, #16
ARM GAS /tmp/cctkPVvk.s page 30
1363 .cfi_def_cfa_offset 8
1364 00e2 BD46 mov sp, r7
1365 .cfi_def_cfa_register 13
1366 @ sp needed
1367 00e4 80BD pop {r7, pc}
1368 .L94:
1369 00e6 00BF .align 2
1370 .L93:
1371 00e8 00000000 .word balancing_timer
1372 00ec 00000000 .word balancing_state
1373 00f0 00000000 .word module
1374 .cfi_endproc
1375 .LFE136:
1377 .section .text.sm_program_powerground,"ax",%progbits
1378 .align 1
1379 .global sm_program_powerground
1380 .syntax unified
1381 .thumb
1382 .thumb_func
1384 sm_program_powerground:
1385 .LFB137:
293:Core/Src/state_machine.c ****
294:Core/Src/state_machine.c **** void sm_program_powerground(){
1386 .loc 1 294 30
1387 .cfi_startproc
1388 @ args = 0, pretend = 0, frame = 0
1389 @ frame_needed = 1, uses_anonymous_args = 0
1390 0000 80B5 push {r7, lr}
1391 .cfi_def_cfa_offset 8
1392 .cfi_offset 7, -8
1393 .cfi_offset 14, -4
1394 0002 00AF add r7, sp, #0
1395 .cfi_def_cfa_register 7
295:Core/Src/state_machine.c **** if (programming_mode == 0)
1396 .loc 1 295 24
1397 0004 0A4B ldr r3, .L101
1398 0006 1B78 ldrb r3, [r3] @ zero_extendqisi2
1399 0008 83F00103 eor r3, r3, #1
1400 000c DBB2 uxtb r3, r3
1401 .loc 1 295 6
1402 000e 002B cmp r3, #0
1403 0010 0CD1 bne .L100
296:Core/Src/state_machine.c **** return;
297:Core/Src/state_machine.c **** PWM_powerground_control(100);
1404 .loc 1 297 3
1405 0012 6420 movs r0, #100
1406 0014 FFF7FEFF bl PWM_powerground_control
298:Core/Src/state_machine.c **** state.current_state = state.target_state = STATE_ACTIVE;
1407 .loc 1 298 44
1408 0018 064B ldr r3, .L101+4
1409 001a 0322 movs r2, #3
1410 001c 5A70 strb r2, [r3, #1]
1411 .loc 1 298 30
1412 001e 054B ldr r3, .L101+4
1413 0020 5A78 ldrb r2, [r3, #1] @ zero_extendqisi2
1414 .loc 1 298 23
1415 0022 044B ldr r3, .L101+4
ARM GAS /tmp/cctkPVvk.s page 31
1416 0024 1A70 strb r2, [r3]
1417 .L98:
299:Core/Src/state_machine.c **** while (1) {
300:Core/Src/state_machine.c **** can_handle_send_status();
1418 .loc 1 300 5 discriminator 1
1419 0026 FFF7FEFF bl can_handle_send_status
1420 002a FCE7 b .L98
1421 .L100:
296:Core/Src/state_machine.c **** PWM_powerground_control(100);
1422 .loc 1 296 5
1423 002c 00BF nop
301:Core/Src/state_machine.c **** }
302:Core/Src/state_machine.c **** }
1424 .loc 1 302 1
1425 002e 80BD pop {r7, pc}
1426 .L102:
1427 .align 2
1428 .L101:
1429 0030 00000000 .word programming_mode
1430 0034 00000000 .word state
1431 .cfi_endproc
1432 .LFE137:
1434 .section .text.sm_eeprom_write_status,"ax",%progbits
1435 .align 1
1436 .global sm_eeprom_write_status
1437 .syntax unified
1438 .thumb
1439 .thumb_func
1441 sm_eeprom_write_status:
1442 .LFB138:
303:Core/Src/state_machine.c ****
304:Core/Src/state_machine.c **** void sm_eeprom_write_status(){
1443 .loc 1 304 30
1444 .cfi_startproc
1445 @ args = 0, pretend = 0, frame = 0
1446 @ frame_needed = 1, uses_anonymous_args = 0
1447 0000 80B5 push {r7, lr}
1448 .cfi_def_cfa_offset 8
1449 .cfi_offset 7, -8
1450 .cfi_offset 14, -4
1451 0002 00AF add r7, sp, #0
1452 .cfi_def_cfa_register 7
305:Core/Src/state_machine.c **** if (eeprom_timer < HAL_GetTick()){
1453 .loc 1 305 22
1454 0004 FFF7FEFF bl HAL_GetTick
1455 0008 0246 mov r2, r0
1456 .loc 1 305 20 discriminator 1
1457 000a 074B ldr r3, .L106
1458 000c 1B68 ldr r3, [r3]
1459 .loc 1 305 6 discriminator 1
1460 000e 9A42 cmp r2, r3
1461 0010 08D9 bls .L105
306:Core/Src/state_machine.c **** eeprom_write_status();
1462 .loc 1 306 5
1463 0012 FFF7FEFF bl eeprom_write_status
307:Core/Src/state_machine.c **** eeprom_timer = HAL_GetTick() + EEPROM_WRITE_FREQ;
1464 .loc 1 307 20
ARM GAS /tmp/cctkPVvk.s page 32
1465 0016 FFF7FEFF bl HAL_GetTick
1466 001a 0346 mov r3, r0
1467 .loc 1 307 34 discriminator 1
1468 001c 03F57A73 add r3, r3, #1000
1469 .loc 1 307 18 discriminator 1
1470 0020 014A ldr r2, .L106
1471 0022 1360 str r3, [r2]
1472 .L105:
308:Core/Src/state_machine.c **** }
309:Core/Src/state_machine.c **** }
1473 .loc 1 309 1
1474 0024 00BF nop
1475 0026 80BD pop {r7, pc}
1476 .L107:
1477 .align 2
1478 .L106:
1479 0028 00000000 .word eeprom_timer
1480 .cfi_endproc
1481 .LFE138:
1483 .section .text.sm_check_errors,"ax",%progbits
1484 .align 1
1485 .global sm_check_errors
1486 .syntax unified
1487 .thumb
1488 .thumb_func
1490 sm_check_errors:
1491 .LFB139:
310:Core/Src/state_machine.c ****
311:Core/Src/state_machine.c **** void sm_check_errors(){
1492 .loc 1 311 23
1493 .cfi_startproc
1494 @ args = 0, pretend = 0, frame = 0
1495 @ frame_needed = 1, uses_anonymous_args = 0
1496 0000 80B5 push {r7, lr}
1497 .cfi_def_cfa_offset 8
1498 .cfi_offset 7, -8
1499 .cfi_offset 14, -4
1500 0002 00AF add r7, sp, #0
1501 .cfi_def_cfa_register 7
312:Core/Src/state_machine.c **** if (programming_mode == 1 || debugging_mode == 1) {return;} // to disable error checking
1502 .loc 1 312 24
1503 0004 774B ldr r3, .L126
1504 0006 1B78 ldrb r3, [r3] @ zero_extendqisi2
1505 .loc 1 312 6
1506 0008 002B cmp r3, #0
1507 000a 40F0E880 bne .L125
1508 .loc 1 312 47 discriminator 2
1509 000e 764B ldr r3, .L126+4
1510 0010 1B78 ldrb r3, [r3] @ zero_extendqisi2
1511 .loc 1 312 29 discriminator 2
1512 0012 002B cmp r3, #0
1513 0014 40F0E380 bne .L125
313:Core/Src/state_machine.c **** state.error_type.temperature_error = (error_data.error_sources & (1 << 0) || error_data.error_sou
1514 .loc 1 313 51
1515 0018 744B ldr r3, .L126+8
1516 001a 1B88 ldrh r3, [r3]
1517 .loc 1 313 66
ARM GAS /tmp/cctkPVvk.s page 33
1518 001c 03F00103 and r3, r3, #1
1519 .loc 1 313 160
1520 0020 002B cmp r3, #0
1521 0022 0BD1 bne .L112
1522 .loc 1 313 90 discriminator 2
1523 0024 714B ldr r3, .L126+8
1524 0026 1B88 ldrh r3, [r3]
1525 .loc 1 313 105 discriminator 2
1526 0028 03F00203 and r3, r3, #2
1527 .loc 1 313 77 discriminator 2
1528 002c 002B cmp r3, #0
1529 002e 05D1 bne .L112
1530 .loc 1 313 129 discriminator 4
1531 0030 6E4B ldr r3, .L126+8
1532 0032 1B88 ldrh r3, [r3]
1533 .loc 1 313 144 discriminator 4
1534 0034 03F01003 and r3, r3, #16
1535 .loc 1 313 160 discriminator 4
1536 0038 002B cmp r3, #0
1537 003a 01D0 beq .L113
1538 .L112:
1539 .loc 1 313 160 is_stmt 0 discriminator 5
1540 003c 0123 movs r3, #1
1541 .loc 1 313 160
1542 003e 00E0 b .L114
1543 .L113:
1544 .loc 1 313 160 discriminator 6
1545 0040 0023 movs r3, #0
1546 .L114:
1547 .loc 1 313 160 discriminator 8
1548 0042 03F00103 and r3, r3, #1
1549 0046 D9B2 uxtb r1, r3
1550 .loc 1 313 38 is_stmt 1 discriminator 8
1551 0048 694A ldr r2, .L126+12
1552 004a 1379 ldrb r3, [r2, #4]
1553 004c 61F38203 bfi r3, r1, #2, #1
1554 0050 1371 strb r3, [r2, #4]
314:Core/Src/state_machine.c **** state.error_type.voltage_error = (error_data.error_sources & (1 << 2)|| error_data.error_sources
1555 .loc 1 314 47
1556 0052 664B ldr r3, .L126+8
1557 0054 1B88 ldrh r3, [r3]
1558 .loc 1 314 62
1559 0056 03F00403 and r3, r3, #4
1560 .loc 1 314 188
1561 005a 002B cmp r3, #0
1562 005c 11D1 bne .L115
1563 .loc 1 314 85 discriminator 2
1564 005e 634B ldr r3, .L126+8
1565 0060 1B88 ldrh r3, [r3]
1566 .loc 1 314 100 discriminator 2
1567 0062 03F00803 and r3, r3, #8
1568 .loc 1 314 72 discriminator 2
1569 0066 002B cmp r3, #0
1570 0068 0BD1 bne .L115
1571 .loc 1 314 123 discriminator 4
1572 006a 604B ldr r3, .L126+8
1573 006c 1B88 ldrh r3, [r3]
ARM GAS /tmp/cctkPVvk.s page 34
1574 .loc 1 314 138 discriminator 4
1575 006e 03F02003 and r3, r3, #32
1576 .loc 1 314 110 discriminator 4
1577 0072 002B cmp r3, #0
1578 0074 05D1 bne .L115
1579 .loc 1 314 175 discriminator 6
1580 0076 5F4B ldr r3, .L126+16
1581 0078 1B68 ldr r3, [r3]
1582 .loc 1 314 188 discriminator 6
1583 007a 47F22F52 movw r2, #29999
1584 007e 9342 cmp r3, r2
1585 0080 01DC bgt .L116
1586 .L115:
1587 .loc 1 314 188 is_stmt 0 discriminator 7
1588 0082 0123 movs r3, #1
1589 .loc 1 314 188
1590 0084 00E0 b .L117
1591 .L116:
1592 .loc 1 314 188 discriminator 8
1593 0086 0023 movs r3, #0
1594 .L117:
1595 .loc 1 314 188 discriminator 10
1596 0088 03F00103 and r3, r3, #1
1597 008c D9B2 uxtb r1, r3
1598 .loc 1 314 34 is_stmt 1 discriminator 10
1599 008e 584A ldr r2, .L126+12
1600 0090 1379 ldrb r3, [r2, #4]
1601 0092 61F34513 bfi r3, r1, #5, #1
1602 0096 1371 strb r3, [r2, #4]
315:Core/Src/state_machine.c **** state.error_type.bms_timeout = (error_data.error_sources & (1 << 7)) ? 1 : 0;
1603 .loc 1 315 45
1604 0098 544B ldr r3, .L126+8
1605 009a 1B88 ldrh r3, [r3]
1606 .loc 1 315 76
1607 009c DB11 asrs r3, r3, #7
1608 009e 03F00103 and r3, r3, #1
1609 00a2 D9B2 uxtb r1, r3
1610 .loc 1 315 32
1611 00a4 524A ldr r2, .L126+12
1612 00a6 1379 ldrb r3, [r2, #4]
1613 00a8 61F30003 bfi r3, r1, #0, #1
1614 00ac 1371 strb r3, [r2, #4]
316:Core/Src/state_machine.c **** state.error_type.bms_fault = (error_data.error_sources & (1 << 8) || error_data.error_sources & (
1615 .loc 1 316 43
1616 00ae 4F4B ldr r3, .L126+8
1617 00b0 1B88 ldrh r3, [r3]
1618 .loc 1 316 58
1619 00b2 03F48073 and r3, r3, #256
1620 .loc 1 316 153
1621 00b6 002B cmp r3, #0
1622 00b8 0BD1 bne .L118
1623 .loc 1 316 82 discriminator 2
1624 00ba 4C4B ldr r3, .L126+8
1625 00bc 1B88 ldrh r3, [r3]
1626 .loc 1 316 97 discriminator 2
1627 00be 03F48063 and r3, r3, #1024
1628 .loc 1 316 69 discriminator 2
ARM GAS /tmp/cctkPVvk.s page 35
1629 00c2 002B cmp r3, #0
1630 00c4 05D1 bne .L118
1631 .loc 1 316 122 discriminator 4
1632 00c6 494B ldr r3, .L126+8
1633 00c8 1B88 ldrh r3, [r3]
1634 .loc 1 316 137 discriminator 4
1635 00ca 03F40073 and r3, r3, #512
1636 .loc 1 316 153 discriminator 4
1637 00ce 002B cmp r3, #0
1638 00d0 01D0 beq .L119
1639 .L118:
1640 .loc 1 316 153 is_stmt 0 discriminator 5
1641 00d2 0123 movs r3, #1
1642 .loc 1 316 153
1643 00d4 00E0 b .L120
1644 .L119:
1645 .loc 1 316 153 discriminator 6
1646 00d6 0023 movs r3, #0
1647 .L120:
1648 .loc 1 316 153 discriminator 8
1649 00d8 03F00103 and r3, r3, #1
1650 00dc D9B2 uxtb r1, r3
1651 .loc 1 316 30 is_stmt 1 discriminator 8
1652 00de 444A ldr r2, .L126+12
1653 00e0 1379 ldrb r3, [r2, #4]
1654 00e2 61F34103 bfi r3, r1, #1, #1
1655 00e6 1371 strb r3, [r2, #4]
317:Core/Src/state_machine.c **** //SEK_EEPROM_ERR: state.error_type.eeprom_error = 1;
318:Core/Src/state_machine.c **** //state.error_type.current_error = (powerground_status > 10 && CURRENT_MEASUREMENT < 500) ? 1 : 0
319:Core/Src/state_machine.c **** state.error_type.current_sensor_missing = (!CURRENT_MEASUREMENT_ON) ? 1 : 0;
1656 .loc 1 319 75
1657 00e8 434B ldr r3, .L126+20
1658 00ea 1B78 ldrb r3, [r3] @ zero_extendqisi2
1659 00ec 83F00103 eor r3, r3, #1
1660 00f0 D9B2 uxtb r1, r3
1661 .loc 1 319 43
1662 00f2 3F4A ldr r2, .L126+12
1663 00f4 1379 ldrb r3, [r2, #4]
1664 00f6 61F30413 bfi r3, r1, #4, #1
1665 00fa 1371 strb r3, [r2, #4]
320:Core/Src/state_machine.c **** state.error_type.voltage_missing = (RELAY_BAT_SIDE_VOLTAGE < 1000) ? 1 : 0;
1666 .loc 1 320 74
1667 00fc 3D4B ldr r3, .L126+16
1668 00fe 1B68 ldr r3, [r3]
1669 0100 40F2E732 movw r2, #999
1670 0104 9342 cmp r3, r2
1671 0106 D4BF ite le
1672 0108 0123 movle r3, #1
1673 010a 0023 movgt r3, #0
1674 010c D9B2 uxtb r1, r3
1675 .loc 1 320 36
1676 010e 384A ldr r2, .L126+12
1677 0110 1379 ldrb r3, [r2, #4]
1678 0112 61F38613 bfi r3, r1, #6, #1
1679 0116 1371 strb r3, [r2, #4]
321:Core/Src/state_machine.c ****
322:Core/Src/state_machine.c ****
ARM GAS /tmp/cctkPVvk.s page 36
323:Core/Src/state_machine.c **** if (state.error_type.current_error == 1 || state.error_type.current_sensor_missing == 1 || //stat
1680 .loc 1 323 38
1681 0118 354B ldr r3, .L126+12
1682 011a 1B79 ldrb r3, [r3, #4] @ zero_extendqisi2
1683 011c 03F00803 and r3, r3, #8
1684 0120 DBB2 uxtb r3, r3
1685 .loc 1 323 6
1686 0122 002B cmp r3, #0
1687 0124 30D1 bne .L121
1688 .loc 1 323 86 discriminator 1
1689 0126 324B ldr r3, .L126+12
1690 0128 1B79 ldrb r3, [r3, #4] @ zero_extendqisi2
1691 012a 03F01003 and r3, r3, #16
1692 012e DBB2 uxtb r3, r3
1693 .loc 1 323 43 discriminator 1
1694 0130 002B cmp r3, #0
1695 0132 29D1 bne .L121
324:Core/Src/state_machine.c **** state.error_type.state_transition_fail == 1 || state.error_type.temperature_error == 1 || sta
1696 .loc 1 324 46
1697 0134 2E4B ldr r3, .L126+12
1698 0136 1B79 ldrb r3, [r3, #4] @ zero_extendqisi2
1699 0138 23F07F03 bic r3, r3, #127
1700 013c DBB2 uxtb r3, r3
323:Core/Src/state_machine.c **** state.error_type.state_transition_fail == 1 || state.error_type.temperature_error == 1 || sta
1701 .loc 1 323 91 discriminator 2
1702 013e 002B cmp r3, #0
1703 0140 22D1 bne .L121
1704 .loc 1 324 89
1705 0142 2B4B ldr r3, .L126+12
1706 0144 1B79 ldrb r3, [r3, #4] @ zero_extendqisi2
1707 0146 03F00403 and r3, r3, #4
1708 014a DBB2 uxtb r3, r3
1709 .loc 1 324 51
1710 014c 002B cmp r3, #0
1711 014e 1BD1 bne .L121
1712 .loc 1 324 128 discriminator 1
1713 0150 274B ldr r3, .L126+12
1714 0152 1B79 ldrb r3, [r3, #4] @ zero_extendqisi2
1715 0154 03F02003 and r3, r3, #32
1716 0158 DBB2 uxtb r3, r3
1717 .loc 1 324 94 discriminator 1
1718 015a 002B cmp r3, #0
1719 015c 14D1 bne .L121
325:Core/Src/state_machine.c **** state.error_type.voltage_missing == 1 || state.error_type.bms_fault == 1 || state.error_type.
1720 .loc 1 325 40
1721 015e 244B ldr r3, .L126+12
1722 0160 1B79 ldrb r3, [r3, #4] @ zero_extendqisi2
1723 0162 03F04003 and r3, r3, #64
1724 0166 DBB2 uxtb r3, r3
324:Core/Src/state_machine.c **** state.error_type.state_transition_fail == 1 || state.error_type.temperature_error == 1 || sta
1725 .loc 1 324 133 discriminator 2
1726 0168 002B cmp r3, #0
1727 016a 0DD1 bne .L121
1728 .loc 1 325 75
1729 016c 204B ldr r3, .L126+12
1730 016e 1B79 ldrb r3, [r3, #4] @ zero_extendqisi2
1731 0170 03F00203 and r3, r3, #2
ARM GAS /tmp/cctkPVvk.s page 37
1732 0174 DBB2 uxtb r3, r3
1733 .loc 1 325 45
1734 0176 002B cmp r3, #0
1735 0178 06D1 bne .L121
1736 .loc 1 325 112 discriminator 1
1737 017a 1D4B ldr r3, .L126+12
1738 017c 1B79 ldrb r3, [r3, #4] @ zero_extendqisi2
1739 017e 03F00103 and r3, r3, #1
1740 0182 DBB2 uxtb r3, r3
1741 .loc 1 325 80 discriminator 1
1742 0184 002B cmp r3, #0
1743 0186 19D0 beq .L122
1744 .L121:
326:Core/Src/state_machine.c **** {
327:Core/Src/state_machine.c **** if (state.current_state != STATE_INACTIVE && state.current_state != STATE_ERROR)
1745 .loc 1 327 14
1746 0188 194B ldr r3, .L126+12
1747 018a 1B78 ldrb r3, [r3] @ zero_extendqisi2
1748 .loc 1 327 8
1749 018c 002B cmp r3, #0
1750 018e 06D0 beq .L123
1751 .loc 1 327 55 discriminator 1
1752 0190 174B ldr r3, .L126+12
1753 0192 1B78 ldrb r3, [r3] @ zero_extendqisi2
1754 .loc 1 327 47 discriminator 1
1755 0194 072B cmp r3, #7
1756 0196 02D0 beq .L123
328:Core/Src/state_machine.c **** state.current_state = STATE_DISCHARGE;
1757 .loc 1 328 27
1758 0198 154B ldr r3, .L126+12
1759 019a 0422 movs r2, #4
1760 019c 1A70 strb r2, [r3]
1761 .L123:
329:Core/Src/state_machine.c **** state.target_state = STATE_ERROR;
1762 .loc 1 329 24
1763 019e 144B ldr r3, .L126+12
1764 01a0 0722 movs r2, #7
1765 01a2 5A70 strb r2, [r3, #1]
330:Core/Src/state_machine.c **** PWM_powerground_control(255);
1766 .loc 1 330 5
1767 01a4 FF20 movs r0, #255
1768 01a6 FFF7FEFF bl PWM_powerground_control
331:Core/Src/state_machine.c **** error_timer = HAL_GetTick() + ERROR_LATCH_TIME;
1769 .loc 1 331 19
1770 01aa FFF7FEFF bl HAL_GetTick
1771 01ae 0346 mov r3, r0
1772 .loc 1 331 33 discriminator 1
1773 01b0 03F51C53 add r3, r3, #9984
1774 01b4 1033 adds r3, r3, #16
1775 .loc 1 331 17 discriminator 1
1776 01b6 114A ldr r2, .L126+24
1777 01b8 1360 str r3, [r2]
1778 .loc 1 331 17 is_stmt 0
1779 01ba 0DE0 b .L124
1780 .L122:
332:Core/Src/state_machine.c **** } else if (state.current_state == STATE_ERROR && error_timer < HAL_GetTick()){
1781 .loc 1 332 19 is_stmt 1
ARM GAS /tmp/cctkPVvk.s page 38
1782 01bc 0C4B ldr r3, .L126+12
1783 01be 1B78 ldrb r3, [r3] @ zero_extendqisi2
1784 .loc 1 332 13
1785 01c0 072B cmp r3, #7
1786 01c2 09D1 bne .L124
1787 .loc 1 332 66 discriminator 1
1788 01c4 FFF7FEFF bl HAL_GetTick
1789 01c8 0246 mov r2, r0
1790 .loc 1 332 64 discriminator 1
1791 01ca 0C4B ldr r3, .L126+24
1792 01cc 1B68 ldr r3, [r3]
1793 .loc 1 332 49 discriminator 1
1794 01ce 9A42 cmp r2, r3
1795 01d0 02D9 bls .L124
333:Core/Src/state_machine.c **** state.target_state = STATE_INACTIVE;
1796 .loc 1 333 24
1797 01d2 074B ldr r3, .L126+12
1798 01d4 0022 movs r2, #0
1799 01d6 5A70 strb r2, [r3, #1]
1800 .L124:
334:Core/Src/state_machine.c **** }
335:Core/Src/state_machine.c **** sm_set_error_source();
1801 .loc 1 335 3
1802 01d8 FFF7FEFF bl sm_set_error_source
1803 01dc 00E0 b .L108
1804 .L125:
312:Core/Src/state_machine.c **** state.error_type.temperature_error = (error_data.error_sources & (1 << 0) || error_data.error_sou
1805 .loc 1 312 54
1806 01de 00BF nop
1807 .L108:
336:Core/Src/state_machine.c **** }
1808 .loc 1 336 1
1809 01e0 80BD pop {r7, pc}
1810 .L127:
1811 01e2 00BF .align 2
1812 .L126:
1813 01e4 00000000 .word programming_mode
1814 01e8 00000000 .word debugging_mode
1815 01ec 00000000 .word error_data
1816 01f0 00000000 .word state
1817 01f4 00000000 .word RELAY_BAT_SIDE_VOLTAGE
1818 01f8 00000000 .word CURRENT_MEASUREMENT_ON
1819 01fc 00000000 .word error_timer
1820 .cfi_endproc
1821 .LFE139:
1823 .section .text.sm_set_error_source,"ax",%progbits
1824 .align 1
1825 .global sm_set_error_source
1826 .syntax unified
1827 .thumb
1828 .thumb_func
1830 sm_set_error_source:
1831 .LFB140:
337:Core/Src/state_machine.c ****
338:Core/Src/state_machine.c **** void sm_set_error_source(){
1832 .loc 1 338 27
1833 .cfi_startproc
ARM GAS /tmp/cctkPVvk.s page 39
1834 @ args = 0, pretend = 0, frame = 0
1835 @ frame_needed = 1, uses_anonymous_args = 0
1836 @ link register save eliminated.
1837 0000 80B4 push {r7}
1838 .cfi_def_cfa_offset 4
1839 .cfi_offset 7, -4
1840 0002 00AF add r7, sp, #0
1841 .cfi_def_cfa_register 7
339:Core/Src/state_machine.c **** state.error_source = 0;
1842 .loc 1 339 22
1843 0004 414B ldr r3, .L129
1844 0006 0022 movs r2, #0
1845 0008 5A80 strh r2, [r3, #2] @ movhi
340:Core/Src/state_machine.c **** state.error_source |= (state.error_type.bms_timeout << 0);
1846 .loc 1 340 8
1847 000a 404B ldr r3, .L129
1848 000c 5B88 ldrh r3, [r3, #2]
1849 .loc 1 340 42
1850 000e 3F4A ldr r2, .L129
1851 0010 1279 ldrb r2, [r2, #4]
1852 0012 C2F30002 ubfx r2, r2, #0, #1
1853 0016 D2B2 uxtb r2, r2
1854 .loc 1 340 22
1855 0018 1343 orrs r3, r3, r2
1856 001a 9AB2 uxth r2, r3
1857 001c 3B4B ldr r3, .L129
1858 001e 5A80 strh r2, [r3, #2] @ movhi
341:Core/Src/state_machine.c **** state.error_source |= (state.error_type.bms_fault << 1);
1859 .loc 1 341 8
1860 0020 3A4B ldr r3, .L129
1861 0022 5B88 ldrh r3, [r3, #2]
1862 0024 1AB2 sxth r2, r3
1863 .loc 1 341 42
1864 0026 394B ldr r3, .L129
1865 0028 1B79 ldrb r3, [r3, #4]
1866 002a C3F34003 ubfx r3, r3, #1, #1
1867 002e DBB2 uxtb r3, r3
1868 .loc 1 341 22
1869 0030 1BB2 sxth r3, r3
1870 0032 5B00 lsls r3, r3, #1
1871 0034 1BB2 sxth r3, r3
1872 0036 1343 orrs r3, r3, r2
1873 0038 1BB2 sxth r3, r3
1874 003a 9AB2 uxth r2, r3
1875 003c 334B ldr r3, .L129
1876 003e 5A80 strh r2, [r3, #2] @ movhi
342:Core/Src/state_machine.c **** state.error_source |= (state.error_type.temperature_error << 2);
1877 .loc 1 342 8
1878 0040 324B ldr r3, .L129
1879 0042 5B88 ldrh r3, [r3, #2]
1880 0044 1AB2 sxth r2, r3
1881 .loc 1 342 42
1882 0046 314B ldr r3, .L129
1883 0048 1B79 ldrb r3, [r3, #4]
1884 004a C3F38003 ubfx r3, r3, #2, #1
1885 004e DBB2 uxtb r3, r3
1886 .loc 1 342 22
ARM GAS /tmp/cctkPVvk.s page 40
1887 0050 1BB2 sxth r3, r3
1888 0052 9B00 lsls r3, r3, #2
1889 0054 1BB2 sxth r3, r3
1890 0056 1343 orrs r3, r3, r2
1891 0058 1BB2 sxth r3, r3
1892 005a 9AB2 uxth r2, r3
1893 005c 2B4B ldr r3, .L129
1894 005e 5A80 strh r2, [r3, #2] @ movhi
343:Core/Src/state_machine.c **** state.error_source |= (state.error_type.current_error << 3);
1895 .loc 1 343 8
1896 0060 2A4B ldr r3, .L129
1897 0062 5B88 ldrh r3, [r3, #2]
1898 0064 1AB2 sxth r2, r3
1899 .loc 1 343 42
1900 0066 294B ldr r3, .L129
1901 0068 1B79 ldrb r3, [r3, #4]
1902 006a C3F3C003 ubfx r3, r3, #3, #1
1903 006e DBB2 uxtb r3, r3
1904 .loc 1 343 22
1905 0070 1BB2 sxth r3, r3
1906 0072 DB00 lsls r3, r3, #3
1907 0074 1BB2 sxth r3, r3
1908 0076 1343 orrs r3, r3, r2
1909 0078 1BB2 sxth r3, r3
1910 007a 9AB2 uxth r2, r3
1911 007c 234B ldr r3, .L129
1912 007e 5A80 strh r2, [r3, #2] @ movhi
344:Core/Src/state_machine.c ****
345:Core/Src/state_machine.c **** state.error_source |= (state.error_type.current_sensor_missing << 4);
1913 .loc 1 345 8
1914 0080 224B ldr r3, .L129
1915 0082 5B88 ldrh r3, [r3, #2]
1916 0084 1AB2 sxth r2, r3
1917 .loc 1 345 42
1918 0086 214B ldr r3, .L129
1919 0088 1B79 ldrb r3, [r3, #4]
1920 008a C3F30013 ubfx r3, r3, #4, #1
1921 008e DBB2 uxtb r3, r3
1922 .loc 1 345 22
1923 0090 1BB2 sxth r3, r3
1924 0092 1B01 lsls r3, r3, #4
1925 0094 1BB2 sxth r3, r3
1926 0096 1343 orrs r3, r3, r2
1927 0098 1BB2 sxth r3, r3
1928 009a 9AB2 uxth r2, r3
1929 009c 1B4B ldr r3, .L129
1930 009e 5A80 strh r2, [r3, #2] @ movhi
346:Core/Src/state_machine.c **** state.error_source |= (state.error_type.voltage_error << 5);
1931 .loc 1 346 8
1932 00a0 1A4B ldr r3, .L129
1933 00a2 5B88 ldrh r3, [r3, #2]
1934 00a4 1AB2 sxth r2, r3
1935 .loc 1 346 42
1936 00a6 194B ldr r3, .L129
1937 00a8 1B79 ldrb r3, [r3, #4]
1938 00aa C3F34013 ubfx r3, r3, #5, #1
1939 00ae DBB2 uxtb r3, r3
ARM GAS /tmp/cctkPVvk.s page 41
1940 .loc 1 346 22
1941 00b0 1BB2 sxth r3, r3
1942 00b2 5B01 lsls r3, r3, #5
1943 00b4 1BB2 sxth r3, r3
1944 00b6 1343 orrs r3, r3, r2
1945 00b8 1BB2 sxth r3, r3
1946 00ba 9AB2 uxth r2, r3
1947 00bc 134B ldr r3, .L129
1948 00be 5A80 strh r2, [r3, #2] @ movhi
347:Core/Src/state_machine.c **** state.error_source |= (state.error_type.voltage_missing << 6);
1949 .loc 1 347 8
1950 00c0 124B ldr r3, .L129
1951 00c2 5B88 ldrh r3, [r3, #2]
1952 00c4 1AB2 sxth r2, r3
1953 .loc 1 347 42
1954 00c6 114B ldr r3, .L129
1955 00c8 1B79 ldrb r3, [r3, #4]
1956 00ca C3F38013 ubfx r3, r3, #6, #1
1957 00ce DBB2 uxtb r3, r3
1958 .loc 1 347 22
1959 00d0 1BB2 sxth r3, r3
1960 00d2 9B01 lsls r3, r3, #6
1961 00d4 1BB2 sxth r3, r3
1962 00d6 1343 orrs r3, r3, r2
1963 00d8 1BB2 sxth r3, r3
1964 00da 9AB2 uxth r2, r3
1965 00dc 0B4B ldr r3, .L129
1966 00de 5A80 strh r2, [r3, #2] @ movhi
348:Core/Src/state_machine.c **** state.error_source |= (state.error_type.state_transition_fail << 7);
1967 .loc 1 348 8
1968 00e0 0A4B ldr r3, .L129
1969 00e2 5B88 ldrh r3, [r3, #2]
1970 00e4 1AB2 sxth r2, r3
1971 .loc 1 348 42
1972 00e6 094B ldr r3, .L129
1973 00e8 1B79 ldrb r3, [r3, #4]
1974 00ea C3F3C013 ubfx r3, r3, #7, #1
1975 00ee DBB2 uxtb r3, r3
1976 .loc 1 348 22
1977 00f0 1BB2 sxth r3, r3
1978 00f2 DB01 lsls r3, r3, #7
1979 00f4 1BB2 sxth r3, r3
1980 00f6 1343 orrs r3, r3, r2
1981 00f8 1BB2 sxth r3, r3
1982 00fa 9AB2 uxth r2, r3
1983 00fc 034B ldr r3, .L129
1984 00fe 5A80 strh r2, [r3, #2] @ movhi
349:Core/Src/state_machine.c **** }
1985 .loc 1 349 1
1986 0100 00BF nop
1987 0102 BD46 mov sp, r7
1988 .cfi_def_cfa_register 13
1989 @ sp needed
1990 0104 5DF8047B ldr r7, [sp], #4
1991 .cfi_restore 7
1992 .cfi_def_cfa_offset 0
1993 0108 7047 bx lr
ARM GAS /tmp/cctkPVvk.s page 42
1994 .L130:
1995 010a 00BF .align 2
1996 .L129:
1997 010c 00000000 .word state
1998 .cfi_endproc
1999 .LFE140:
2001 .section .text.sm_update_inactive,"ax",%progbits
2002 .align 1
2003 .global sm_update_inactive
2004 .syntax unified
2005 .thumb
2006 .thumb_func
2008 sm_update_inactive:
2009 .LFB141:
350:Core/Src/state_machine.c ****
351:Core/Src/state_machine.c **** State sm_update_inactive(){
2010 .loc 1 351 27
2011 .cfi_startproc
2012 @ args = 0, pretend = 0, frame = 0
2013 @ frame_needed = 1, uses_anonymous_args = 0
2014 @ link register save eliminated.
2015 0000 80B4 push {r7}
2016 .cfi_def_cfa_offset 4
2017 .cfi_offset 7, -4
2018 0002 00AF add r7, sp, #0
2019 .cfi_def_cfa_register 7
352:Core/Src/state_machine.c **** switch (state.target_state) {
2020 .loc 1 352 16
2021 0004 0B4B ldr r3, .L137
2022 0006 5B78 ldrb r3, [r3, #1] @ zero_extendqisi2
2023 .loc 1 352 3
2024 0008 072B cmp r3, #7
2025 000a 0AD0 beq .L132
2026 000c 072B cmp r3, #7
2027 000e 0ADC bgt .L133
2028 0010 012B cmp r3, #1
2029 0012 02D0 beq .L134
2030 0014 052B cmp r3, #5
2031 0016 02D0 beq .L135
2032 0018 05E0 b .L133
2033 .L134:
353:Core/Src/state_machine.c **** case STATE_PRECHARGE:
354:Core/Src/state_machine.c **** return STATE_PRECHARGE;
2034 .loc 1 354 14
2035 001a 0123 movs r3, #1
2036 001c 04E0 b .L136
2037 .L135:
355:Core/Src/state_machine.c **** case STATE_CHARGING_PRECHARGE:
356:Core/Src/state_machine.c **** return STATE_CHARGING_PRECHARGE;
2038 .loc 1 356 14
2039 001e 0523 movs r3, #5
2040 0020 02E0 b .L136
2041 .L132:
357:Core/Src/state_machine.c **** case STATE_ERROR:
358:Core/Src/state_machine.c **** return STATE_ERROR;
2042 .loc 1 358 14
2043 0022 0723 movs r3, #7
ARM GAS /tmp/cctkPVvk.s page 43
2044 0024 00E0 b .L136
2045 .L133:
359:Core/Src/state_machine.c **** default:
360:Core/Src/state_machine.c **** return STATE_INACTIVE;
2046 .loc 1 360 14
2047 0026 0023 movs r3, #0
2048 .L136:
361:Core/Src/state_machine.c **** }
362:Core/Src/state_machine.c **** }
2049 .loc 1 362 1
2050 0028 1846 mov r0, r3
2051 002a BD46 mov sp, r7
2052 .cfi_def_cfa_register 13
2053 @ sp needed
2054 002c 5DF8047B ldr r7, [sp], #4
2055 .cfi_restore 7
2056 .cfi_def_cfa_offset 0
2057 0030 7047 bx lr
2058 .L138:
2059 0032 00BF .align 2
2060 .L137:
2061 0034 00000000 .word state
2062 .cfi_endproc
2063 .LFE141:
2065 .section .text.sm_update_precharge,"ax",%progbits
2066 .align 1
2067 .global sm_update_precharge
2068 .syntax unified
2069 .thumb
2070 .thumb_func
2072 sm_update_precharge:
2073 .LFB142:
363:Core/Src/state_machine.c ****
364:Core/Src/state_machine.c **** State sm_update_precharge(){
2074 .loc 1 364 28
2075 .cfi_startproc
2076 @ args = 0, pretend = 0, frame = 0
2077 @ frame_needed = 1, uses_anonymous_args = 0
2078 @ link register save eliminated.
2079 0000 80B4 push {r7}
2080 .cfi_def_cfa_offset 4
2081 .cfi_offset 7, -4
2082 0002 00AF add r7, sp, #0
2083 .cfi_def_cfa_register 7
365:Core/Src/state_machine.c **** switch (state.target_state) {
2084 .loc 1 365 16
2085 0004 084B ldr r3, .L145
2086 0006 5B78 ldrb r3, [r3, #1] @ zero_extendqisi2
2087 .loc 1 365 3
2088 0008 002B cmp r3, #0
2089 000a 02D0 beq .L140
2090 000c 022B cmp r3, #2
2091 000e 02D0 beq .L141
2092 0010 03E0 b .L144
2093 .L140:
366:Core/Src/state_machine.c **** case STATE_INACTIVE: // if CAN Signal 0000 0000 then immidiete shutdown
367:Core/Src/state_machine.c **** return STATE_DISCHARGE;
ARM GAS /tmp/cctkPVvk.s page 44
2094 .loc 1 367 14
2095 0012 0423 movs r3, #4
2096 0014 02E0 b .L143
2097 .L141:
368:Core/Src/state_machine.c **** case STATE_READY:
369:Core/Src/state_machine.c **** return STATE_READY;
2098 .loc 1 369 14
2099 0016 0223 movs r3, #2
2100 0018 00E0 b .L143
2101 .L144:
370:Core/Src/state_machine.c **** default:
371:Core/Src/state_machine.c **** return STATE_PRECHARGE;
2102 .loc 1 371 14
2103 001a 0123 movs r3, #1
2104 .L143:
372:Core/Src/state_machine.c **** }
373:Core/Src/state_machine.c **** }
2105 .loc 1 373 1
2106 001c 1846 mov r0, r3
2107 001e BD46 mov sp, r7
2108 .cfi_def_cfa_register 13
2109 @ sp needed
2110 0020 5DF8047B ldr r7, [sp], #4
2111 .cfi_restore 7
2112 .cfi_def_cfa_offset 0
2113 0024 7047 bx lr
2114 .L146:
2115 0026 00BF .align 2
2116 .L145:
2117 0028 00000000 .word state
2118 .cfi_endproc
2119 .LFE142:
2121 .section .text.sm_update_ready,"ax",%progbits
2122 .align 1
2123 .global sm_update_ready
2124 .syntax unified
2125 .thumb
2126 .thumb_func
2128 sm_update_ready:
2129 .LFB143:
374:Core/Src/state_machine.c ****
375:Core/Src/state_machine.c **** State sm_update_ready(){
2130 .loc 1 375 24
2131 .cfi_startproc
2132 @ args = 0, pretend = 0, frame = 0
2133 @ frame_needed = 1, uses_anonymous_args = 0
2134 @ link register save eliminated.
2135 0000 80B4 push {r7}
2136 .cfi_def_cfa_offset 4
2137 .cfi_offset 7, -4
2138 0002 00AF add r7, sp, #0
2139 .cfi_def_cfa_register 7
376:Core/Src/state_machine.c **** switch (state.target_state) {
2140 .loc 1 376 16
2141 0004 084B ldr r3, .L153
2142 0006 5B78 ldrb r3, [r3, #1] @ zero_extendqisi2
2143 .loc 1 376 3
ARM GAS /tmp/cctkPVvk.s page 45
2144 0008 032B cmp r3, #3
2145 000a 02D0 beq .L148
2146 000c 042B cmp r3, #4
2147 000e 02D0 beq .L149
2148 0010 03E0 b .L152
2149 .L148:
377:Core/Src/state_machine.c **** case STATE_ACTIVE: // if CAN Signal 1100 0000 then turn on powerground
378:Core/Src/state_machine.c **** return STATE_ACTIVE;
2150 .loc 1 378 14
2151 0012 0323 movs r3, #3
2152 0014 02E0 b .L151
2153 .L149:
379:Core/Src/state_machine.c **** case STATE_DISCHARGE: // if CAN Signal 0000 0000 then shutdown
380:Core/Src/state_machine.c **** return STATE_DISCHARGE;
2154 .loc 1 380 14
2155 0016 0423 movs r3, #4
2156 0018 00E0 b .L151
2157 .L152:
381:Core/Src/state_machine.c **** default:
382:Core/Src/state_machine.c **** return STATE_READY;
2158 .loc 1 382 14
2159 001a 0223 movs r3, #2
2160 .L151:
383:Core/Src/state_machine.c **** }
384:Core/Src/state_machine.c **** }
2161 .loc 1 384 1
2162 001c 1846 mov r0, r3
2163 001e BD46 mov sp, r7
2164 .cfi_def_cfa_register 13
2165 @ sp needed
2166 0020 5DF8047B ldr r7, [sp], #4
2167 .cfi_restore 7
2168 .cfi_def_cfa_offset 0
2169 0024 7047 bx lr
2170 .L154:
2171 0026 00BF .align 2
2172 .L153:
2173 0028 00000000 .word state
2174 .cfi_endproc
2175 .LFE143:
2177 .section .text.sm_update_active,"ax",%progbits
2178 .align 1
2179 .global sm_update_active
2180 .syntax unified
2181 .thumb
2182 .thumb_func
2184 sm_update_active:
2185 .LFB144:
385:Core/Src/state_machine.c ****
386:Core/Src/state_machine.c **** State sm_update_active(){
2186 .loc 1 386 25
2187 .cfi_startproc
2188 @ args = 0, pretend = 0, frame = 0
2189 @ frame_needed = 1, uses_anonymous_args = 0
2190 @ link register save eliminated.
2191 0000 80B4 push {r7}
2192 .cfi_def_cfa_offset 4
ARM GAS /tmp/cctkPVvk.s page 46
2193 .cfi_offset 7, -4
2194 0002 00AF add r7, sp, #0
2195 .cfi_def_cfa_register 7
387:Core/Src/state_machine.c **** switch (state.target_state) {
2196 .loc 1 387 16
2197 0004 084B ldr r3, .L161
2198 0006 5B78 ldrb r3, [r3, #1] @ zero_extendqisi2
2199 .loc 1 387 3
2200 0008 022B cmp r3, #2
2201 000a 02D0 beq .L156
2202 000c 042B cmp r3, #4
2203 000e 02D0 beq .L157
2204 0010 03E0 b .L160
2205 .L156:
388:Core/Src/state_machine.c **** case STATE_READY: // if CAN Signal 1000 0000 then turn oof powerground but stay read
389:Core/Src/state_machine.c **** return STATE_READY;
2206 .loc 1 389 14
2207 0012 0223 movs r3, #2
2208 0014 02E0 b .L159
2209 .L157:
390:Core/Src/state_machine.c **** case STATE_DISCHARGE: // if CAN Signal 0000 0000 then shutdown
391:Core/Src/state_machine.c **** return STATE_DISCHARGE;
2210 .loc 1 391 14
2211 0016 0423 movs r3, #4
2212 0018 00E0 b .L159
2213 .L160:
392:Core/Src/state_machine.c **** default:
393:Core/Src/state_machine.c **** return STATE_ACTIVE;
2214 .loc 1 393 14
2215 001a 0323 movs r3, #3
2216 .L159:
394:Core/Src/state_machine.c **** }
395:Core/Src/state_machine.c **** }
2217 .loc 1 395 1
2218 001c 1846 mov r0, r3
2219 001e BD46 mov sp, r7
2220 .cfi_def_cfa_register 13
2221 @ sp needed
2222 0020 5DF8047B ldr r7, [sp], #4
2223 .cfi_restore 7
2224 .cfi_def_cfa_offset 0
2225 0024 7047 bx lr
2226 .L162:
2227 0026 00BF .align 2
2228 .L161:
2229 0028 00000000 .word state
2230 .cfi_endproc
2231 .LFE144:
2233 .section .text.sm_update_discharge,"ax",%progbits
2234 .align 1
2235 .global sm_update_discharge
2236 .syntax unified
2237 .thumb
2238 .thumb_func
2240 sm_update_discharge:
2241 .LFB145:
396:Core/Src/state_machine.c ****
ARM GAS /tmp/cctkPVvk.s page 47
397:Core/Src/state_machine.c **** State sm_update_discharge(){
2242 .loc 1 397 28
2243 .cfi_startproc
2244 @ args = 0, pretend = 0, frame = 0
2245 @ frame_needed = 1, uses_anonymous_args = 0
2246 @ link register save eliminated.
2247 0000 80B4 push {r7}
2248 .cfi_def_cfa_offset 4
2249 .cfi_offset 7, -4
2250 0002 00AF add r7, sp, #0
2251 .cfi_def_cfa_register 7
398:Core/Src/state_machine.c **** switch (state.target_state) {
2252 .loc 1 398 16
2253 0004 084B ldr r3, .L169
2254 0006 5B78 ldrb r3, [r3, #1] @ zero_extendqisi2
2255 .loc 1 398 3
2256 0008 002B cmp r3, #0
2257 000a 02D0 beq .L164
2258 000c 072B cmp r3, #7
2259 000e 02D0 beq .L165
2260 0010 03E0 b .L168
2261 .L164:
399:Core/Src/state_machine.c **** case STATE_INACTIVE:
400:Core/Src/state_machine.c **** return STATE_INACTIVE;
2262 .loc 1 400 14
2263 0012 0023 movs r3, #0
2264 0014 02E0 b .L167
2265 .L165:
401:Core/Src/state_machine.c **** case STATE_ERROR:
402:Core/Src/state_machine.c **** return STATE_ERROR;
2266 .loc 1 402 14
2267 0016 0723 movs r3, #7
2268 0018 00E0 b .L167
2269 .L168:
403:Core/Src/state_machine.c **** default:
404:Core/Src/state_machine.c **** return STATE_DISCHARGE;
2270 .loc 1 404 14
2271 001a 0423 movs r3, #4
2272 .L167:
405:Core/Src/state_machine.c **** }
406:Core/Src/state_machine.c **** }
2273 .loc 1 406 1
2274 001c 1846 mov r0, r3
2275 001e BD46 mov sp, r7
2276 .cfi_def_cfa_register 13
2277 @ sp needed
2278 0020 5DF8047B ldr r7, [sp], #4
2279 .cfi_restore 7
2280 .cfi_def_cfa_offset 0
2281 0024 7047 bx lr
2282 .L170:
2283 0026 00BF .align 2
2284 .L169:
2285 0028 00000000 .word state
2286 .cfi_endproc
2287 .LFE145:
2289 .section .text.sm_update_charging_precharge,"ax",%progbits
ARM GAS /tmp/cctkPVvk.s page 48
2290 .align 1
2291 .global sm_update_charging_precharge
2292 .syntax unified
2293 .thumb
2294 .thumb_func
2296 sm_update_charging_precharge:
2297 .LFB146:
407:Core/Src/state_machine.c ****
408:Core/Src/state_machine.c **** State sm_update_charging_precharge(){
2298 .loc 1 408 37
2299 .cfi_startproc
2300 @ args = 0, pretend = 0, frame = 0
2301 @ frame_needed = 1, uses_anonymous_args = 0
2302 @ link register save eliminated.
2303 0000 80B4 push {r7}
2304 .cfi_def_cfa_offset 4
2305 .cfi_offset 7, -4
2306 0002 00AF add r7, sp, #0
2307 .cfi_def_cfa_register 7
409:Core/Src/state_machine.c **** switch (state.target_state) {
2308 .loc 1 409 16
2309 0004 074B ldr r3, .L175
2310 0006 5B78 ldrb r3, [r3, #1] @ zero_extendqisi2
2311 .loc 1 409 3
2312 0008 042B cmp r3, #4
2313 000a 03D0 beq .L172
2314 000c 062B cmp r3, #6
2315 000e 03D1 bne .L173
410:Core/Src/state_machine.c **** case STATE_CHARGING:
411:Core/Src/state_machine.c **** return STATE_CHARGING;
2316 .loc 1 411 14
2317 0010 0623 movs r3, #6
2318 0012 02E0 b .L174
2319 .L172:
412:Core/Src/state_machine.c **** case STATE_DISCHARGE:
413:Core/Src/state_machine.c **** return STATE_DISCHARGE;
2320 .loc 1 413 14
2321 0014 0423 movs r3, #4
2322 0016 00E0 b .L174
2323 .L173:
414:Core/Src/state_machine.c **** default:
415:Core/Src/state_machine.c **** return STATE_CHARGING_PRECHARGE;
2324 .loc 1 415 14
2325 0018 0523 movs r3, #5
2326 .L174:
416:Core/Src/state_machine.c **** }
417:Core/Src/state_machine.c **** }
2327 .loc 1 417 1
2328 001a 1846 mov r0, r3
2329 001c BD46 mov sp, r7
2330 .cfi_def_cfa_register 13
2331 @ sp needed
2332 001e 5DF8047B ldr r7, [sp], #4
2333 .cfi_restore 7
2334 .cfi_def_cfa_offset 0
2335 0022 7047 bx lr
2336 .L176:
ARM GAS /tmp/cctkPVvk.s page 49
2337 .align 2
2338 .L175:
2339 0024 00000000 .word state
2340 .cfi_endproc
2341 .LFE146:
2343 .section .text.sm_update_charging,"ax",%progbits
2344 .align 1
2345 .global sm_update_charging
2346 .syntax unified
2347 .thumb
2348 .thumb_func
2350 sm_update_charging:
2351 .LFB147:
418:Core/Src/state_machine.c ****
419:Core/Src/state_machine.c **** State sm_update_charging(){
2352 .loc 1 419 27
2353 .cfi_startproc
2354 @ args = 0, pretend = 0, frame = 0
2355 @ frame_needed = 1, uses_anonymous_args = 0
2356 @ link register save eliminated.
2357 0000 80B4 push {r7}
2358 .cfi_def_cfa_offset 4
2359 .cfi_offset 7, -4
2360 0002 00AF add r7, sp, #0
2361 .cfi_def_cfa_register 7
420:Core/Src/state_machine.c **** switch (state.target_state) {
2362 .loc 1 420 16
2363 0004 084B ldr r3, .L180
2364 0006 5B78 ldrb r3, [r3, #1] @ zero_extendqisi2
2365 .loc 1 420 3
2366 0008 042B cmp r3, #4
2367 000a 04D1 bne .L178
421:Core/Src/state_machine.c **** case STATE_DISCHARGE:
422:Core/Src/state_machine.c **** currentAMSState = AMSIDLE;
2368 .loc 1 422 23
2369 000c 074B ldr r3, .L180+4
2370 000e 0122 movs r2, #1
2371 0010 1A70 strb r2, [r3]
423:Core/Src/state_machine.c **** return STATE_DISCHARGE;
2372 .loc 1 423 14
2373 0012 0423 movs r3, #4
2374 0014 03E0 b .L179
2375 .L178:
424:Core/Src/state_machine.c **** default:
425:Core/Src/state_machine.c **** currentAMSState = AMSCHARGING;
2376 .loc 1 425 23
2377 0016 054B ldr r3, .L180+4
2378 0018 0222 movs r2, #2
2379 001a 1A70 strb r2, [r3]
426:Core/Src/state_machine.c **** return STATE_CHARGING;
2380 .loc 1 426 14
2381 001c 0623 movs r3, #6
2382 .L179:
427:Core/Src/state_machine.c **** }
428:Core/Src/state_machine.c **** }
2383 .loc 1 428 1
2384 001e 1846 mov r0, r3
ARM GAS /tmp/cctkPVvk.s page 50
2385 0020 BD46 mov sp, r7
2386 .cfi_def_cfa_register 13
2387 @ sp needed
2388 0022 5DF8047B ldr r7, [sp], #4
2389 .cfi_restore 7
2390 .cfi_def_cfa_offset 0
2391 0026 7047 bx lr
2392 .L181:
2393 .align 2
2394 .L180:
2395 0028 00000000 .word state
2396 002c 00000000 .word currentAMSState
2397 .cfi_endproc
2398 .LFE147:
2400 .section .text.sm_update_error,"ax",%progbits
2401 .align 1
2402 .global sm_update_error
2403 .syntax unified
2404 .thumb
2405 .thumb_func
2407 sm_update_error:
2408 .LFB148:
429:Core/Src/state_machine.c ****
430:Core/Src/state_machine.c **** State sm_update_error(){
2409 .loc 1 430 24
2410 .cfi_startproc
2411 @ args = 0, pretend = 0, frame = 0
2412 @ frame_needed = 1, uses_anonymous_args = 0
2413 @ link register save eliminated.
2414 0000 80B4 push {r7}
2415 .cfi_def_cfa_offset 4
2416 .cfi_offset 7, -4
2417 0002 00AF add r7, sp, #0
2418 .cfi_def_cfa_register 7
431:Core/Src/state_machine.c **** switch (state.target_state) {
2419 .loc 1 431 16
2420 0004 074B ldr r3, .L186
2421 0006 5B78 ldrb r3, [r3, #1] @ zero_extendqisi2
2422 .loc 1 431 3
2423 0008 002B cmp r3, #0
2424 000a 03D0 beq .L183
2425 000c 042B cmp r3, #4
2426 000e 03D1 bne .L184
432:Core/Src/state_machine.c **** case STATE_DISCHARGE:
433:Core/Src/state_machine.c **** return STATE_DISCHARGE;
2427 .loc 1 433 14
2428 0010 0423 movs r3, #4
2429 0012 02E0 b .L185
2430 .L183:
434:Core/Src/state_machine.c **** case STATE_INACTIVE:
435:Core/Src/state_machine.c **** return STATE_INACTIVE;
2431 .loc 1 435 14
2432 0014 0023 movs r3, #0
2433 0016 00E0 b .L185
2434 .L184:
436:Core/Src/state_machine.c **** default:
437:Core/Src/state_machine.c **** return STATE_ERROR;
ARM GAS /tmp/cctkPVvk.s page 51
2435 .loc 1 437 14
2436 0018 0723 movs r3, #7
2437 .L185:
438:Core/Src/state_machine.c **** }
439:Core/Src/state_machine.c **** }
2438 .loc 1 439 1
2439 001a 1846 mov r0, r3
2440 001c BD46 mov sp, r7
2441 .cfi_def_cfa_register 13
2442 @ sp needed
2443 001e 5DF8047B ldr r7, [sp], #4
2444 .cfi_restore 7
2445 .cfi_def_cfa_offset 0
2446 0022 7047 bx lr
2447 .L187:
2448 .align 2
2449 .L186:
2450 0024 00000000 .word state
2451 .cfi_endproc
2452 .LFE148:
2454 .section .text.sm_set_relay_positions,"ax",%progbits
2455 .align 1
2456 .global sm_set_relay_positions
2457 .syntax unified
2458 .thumb
2459 .thumb_func
2461 sm_set_relay_positions:
2462 .LFB149:
440:Core/Src/state_machine.c ****
441:Core/Src/state_machine.c **** void sm_set_relay_positions(State current_state){
2463 .loc 1 441 49
2464 .cfi_startproc
2465 @ args = 0, pretend = 0, frame = 8
2466 @ frame_needed = 1, uses_anonymous_args = 0
2467 0000 80B5 push {r7, lr}
2468 .cfi_def_cfa_offset 8
2469 .cfi_offset 7, -8
2470 .cfi_offset 14, -4
2471 0002 82B0 sub sp, sp, #8
2472 .cfi_def_cfa_offset 16
2473 0004 00AF add r7, sp, #0
2474 .cfi_def_cfa_register 7
2475 0006 0346 mov r3, r0
2476 0008 FB71 strb r3, [r7, #7]
442:Core/Src/state_machine.c **** switch (state.current_state) {
2477 .loc 1 442 16
2478 000a 314B ldr r3, .L201
2479 000c 1B78 ldrb r3, [r3] @ zero_extendqisi2
2480 .loc 1 442 3
2481 000e 072B cmp r3, #7
2482 0010 5AD8 bhi .L199
2483 0012 01A2 adr r2, .L191
2484 0014 52F823F0 ldr pc, [r2, r3, lsl #2]
2485 .p2align 2
2486 .L191:
2487 0018 39000000 .word .L198+1
2488 001c 4B000000 .word .L197+1
ARM GAS /tmp/cctkPVvk.s page 52
2489 0020 5D000000 .word .L196+1
2490 0024 6F000000 .word .L195+1
2491 0028 81000000 .word .L194+1
2492 002c 93000000 .word .L193+1
2493 0030 A5000000 .word .L192+1
2494 0034 B7000000 .word .L190+1
2495 .p2align 1
2496 .L198:
443:Core/Src/state_machine.c **** case STATE_INACTIVE:
444:Core/Src/state_machine.c **** sm_set_relay(RELAY_MAIN, 0);
2497 .loc 1 444 7
2498 0038 0021 movs r1, #0
2499 003a 0020 movs r0, #0
2500 003c FFF7FEFF bl sm_set_relay
445:Core/Src/state_machine.c **** sm_set_relay(RELAY_PRECHARGE, 0);
2501 .loc 1 445 7
2502 0040 0021 movs r1, #0
2503 0042 0120 movs r0, #1
2504 0044 FFF7FEFF bl sm_set_relay
446:Core/Src/state_machine.c **** break;
2505 .loc 1 446 7
2506 0048 3EE0 b .L189
2507 .L197:
447:Core/Src/state_machine.c **** case STATE_PRECHARGE:
448:Core/Src/state_machine.c **** sm_set_relay(RELAY_MAIN, 0);
2508 .loc 1 448 7
2509 004a 0021 movs r1, #0
2510 004c 0020 movs r0, #0
2511 004e FFF7FEFF bl sm_set_relay
449:Core/Src/state_machine.c **** sm_set_relay(RELAY_PRECHARGE, 1);
2512 .loc 1 449 7
2513 0052 0121 movs r1, #1
2514 0054 0120 movs r0, #1
2515 0056 FFF7FEFF bl sm_set_relay
450:Core/Src/state_machine.c **** break;
2516 .loc 1 450 7
2517 005a 35E0 b .L189
2518 .L196:
451:Core/Src/state_machine.c **** case STATE_READY:
452:Core/Src/state_machine.c **** sm_set_relay(RELAY_MAIN, 1);
2519 .loc 1 452 7
2520 005c 0121 movs r1, #1
2521 005e 0020 movs r0, #0
2522 0060 FFF7FEFF bl sm_set_relay
453:Core/Src/state_machine.c **** sm_set_relay(RELAY_PRECHARGE, 0);
2523 .loc 1 453 7
2524 0064 0021 movs r1, #0
2525 0066 0120 movs r0, #1
2526 0068 FFF7FEFF bl sm_set_relay
454:Core/Src/state_machine.c **** break;
2527 .loc 1 454 7
2528 006c 2CE0 b .L189
2529 .L195:
455:Core/Src/state_machine.c **** case STATE_ACTIVE:
456:Core/Src/state_machine.c **** sm_set_relay(RELAY_MAIN, 1);
2530 .loc 1 456 7
2531 006e 0121 movs r1, #1
ARM GAS /tmp/cctkPVvk.s page 53
2532 0070 0020 movs r0, #0
2533 0072 FFF7FEFF bl sm_set_relay
457:Core/Src/state_machine.c **** sm_set_relay(RELAY_PRECHARGE, 0);
2534 .loc 1 457 7
2535 0076 0021 movs r1, #0
2536 0078 0120 movs r0, #1
2537 007a FFF7FEFF bl sm_set_relay
458:Core/Src/state_machine.c **** break;
2538 .loc 1 458 7
2539 007e 23E0 b .L189
2540 .L194:
459:Core/Src/state_machine.c **** case STATE_DISCHARGE:
460:Core/Src/state_machine.c **** sm_set_relay(RELAY_MAIN, 0);
2541 .loc 1 460 7
2542 0080 0021 movs r1, #0
2543 0082 0020 movs r0, #0
2544 0084 FFF7FEFF bl sm_set_relay
461:Core/Src/state_machine.c **** sm_set_relay(RELAY_PRECHARGE, 1);
2545 .loc 1 461 7
2546 0088 0121 movs r1, #1
2547 008a 0120 movs r0, #1
2548 008c FFF7FEFF bl sm_set_relay
462:Core/Src/state_machine.c **** break;
2549 .loc 1 462 7
2550 0090 1AE0 b .L189
2551 .L193:
463:Core/Src/state_machine.c **** case STATE_CHARGING_PRECHARGE:
464:Core/Src/state_machine.c **** sm_set_relay(RELAY_MAIN, 0);
2552 .loc 1 464 7
2553 0092 0021 movs r1, #0
2554 0094 0020 movs r0, #0
2555 0096 FFF7FEFF bl sm_set_relay
465:Core/Src/state_machine.c **** sm_set_relay(RELAY_PRECHARGE, 1);
2556 .loc 1 465 7
2557 009a 0121 movs r1, #1
2558 009c 0120 movs r0, #1
2559 009e FFF7FEFF bl sm_set_relay
466:Core/Src/state_machine.c **** break;
2560 .loc 1 466 7
2561 00a2 11E0 b .L189
2562 .L192:
467:Core/Src/state_machine.c **** case STATE_CHARGING:
468:Core/Src/state_machine.c **** sm_set_relay(RELAY_MAIN, 1);
2563 .loc 1 468 7
2564 00a4 0121 movs r1, #1
2565 00a6 0020 movs r0, #0
2566 00a8 FFF7FEFF bl sm_set_relay
469:Core/Src/state_machine.c **** sm_set_relay(RELAY_PRECHARGE, 0);
2567 .loc 1 469 7
2568 00ac 0021 movs r1, #0
2569 00ae 0120 movs r0, #1
2570 00b0 FFF7FEFF bl sm_set_relay
470:Core/Src/state_machine.c **** break;
2571 .loc 1 470 7
2572 00b4 08E0 b .L189
2573 .L190:
471:Core/Src/state_machine.c **** case STATE_ERROR:
ARM GAS /tmp/cctkPVvk.s page 54
472:Core/Src/state_machine.c **** sm_set_relay(RELAY_MAIN, 0);
2574 .loc 1 472 7
2575 00b6 0021 movs r1, #0
2576 00b8 0020 movs r0, #0
2577 00ba FFF7FEFF bl sm_set_relay
473:Core/Src/state_machine.c **** sm_set_relay(RELAY_PRECHARGE, 0);
2578 .loc 1 473 7
2579 00be 0021 movs r1, #0
2580 00c0 0120 movs r0, #1
2581 00c2 FFF7FEFF bl sm_set_relay
474:Core/Src/state_machine.c **** break;
2582 .loc 1 474 7
2583 00c6 00BF nop
2584 .L189:
2585 .L199:
475:Core/Src/state_machine.c **** }
476:Core/Src/state_machine.c **** }
2586 .loc 1 476 1
2587 00c8 00BF nop
2588 00ca 0837 adds r7, r7, #8
2589 .cfi_def_cfa_offset 8
2590 00cc BD46 mov sp, r7
2591 .cfi_def_cfa_register 13
2592 @ sp needed
2593 00ce 80BD pop {r7, pc}
2594 .L202:
2595 .align 2
2596 .L201:
2597 00d0 00000000 .word state
2598 .cfi_endproc
2599 .LFE149:
2601 .section .text.sm_set_relay,"ax",%progbits
2602 .align 1
2603 .global sm_set_relay
2604 .syntax unified
2605 .thumb
2606 .thumb_func
2608 sm_set_relay:
2609 .LFB150:
477:Core/Src/state_machine.c ****
478:Core/Src/state_machine.c **** void sm_set_relay(Relay relay, bool closed){
2610 .loc 1 478 44
2611 .cfi_startproc
2612 @ args = 0, pretend = 0, frame = 16
2613 @ frame_needed = 1, uses_anonymous_args = 0
2614 0000 80B5 push {r7, lr}
2615 .cfi_def_cfa_offset 8
2616 .cfi_offset 7, -8
2617 .cfi_offset 14, -4
2618 0002 84B0 sub sp, sp, #16
2619 .cfi_def_cfa_offset 24
2620 0004 00AF add r7, sp, #0
2621 .cfi_def_cfa_register 7
2622 0006 0346 mov r3, r0
2623 0008 0A46 mov r2, r1
2624 000a FB71 strb r3, [r7, #7]
2625 000c 1346 mov r3, r2
ARM GAS /tmp/cctkPVvk.s page 55
2626 000e BB71 strb r3, [r7, #6]
479:Core/Src/state_machine.c **** GPIO_PinState state = closed ? GPIO_PIN_SET : GPIO_PIN_RESET;
2627 .loc 1 479 47
2628 0010 BB79 ldrb r3, [r7, #6] @ zero_extendqisi2
2629 .loc 1 479 17
2630 0012 FB73 strb r3, [r7, #15]
480:Core/Src/state_machine.c **** switch (relay) {
2631 .loc 1 480 3
2632 0014 FB79 ldrb r3, [r7, #7] @ zero_extendqisi2
2633 0016 002B cmp r3, #0
2634 0018 02D0 beq .L204
2635 001a 012B cmp r3, #1
2636 001c 07D0 beq .L205
481:Core/Src/state_machine.c **** case RELAY_MAIN:
482:Core/Src/state_machine.c **** HAL_GPIO_WritePin(RELAY_ENABLE_GPIO_Port, RELAY_ENABLE_Pin, state);
483:Core/Src/state_machine.c **** break;
484:Core/Src/state_machine.c **** case RELAY_PRECHARGE:
485:Core/Src/state_machine.c **** HAL_GPIO_WritePin(PRECHARGE_ENABLE_GPIO_Port, PRECHARGE_ENABLE_Pin, state);
486:Core/Src/state_machine.c **** break;
487:Core/Src/state_machine.c **** }
488:Core/Src/state_machine.c **** }
2637 .loc 1 488 1
2638 001e 0DE0 b .L207
2639 .L204:
482:Core/Src/state_machine.c **** break;
2640 .loc 1 482 7
2641 0020 FB7B ldrb r3, [r7, #15] @ zero_extendqisi2
2642 0022 1A46 mov r2, r3
2643 0024 1021 movs r1, #16
2644 0026 0748 ldr r0, .L208
2645 0028 FFF7FEFF bl HAL_GPIO_WritePin
483:Core/Src/state_machine.c **** case RELAY_PRECHARGE:
2646 .loc 1 483 7
2647 002c 06E0 b .L206
2648 .L205:
485:Core/Src/state_machine.c **** break;
2649 .loc 1 485 7
2650 002e FB7B ldrb r3, [r7, #15] @ zero_extendqisi2
2651 0030 1A46 mov r2, r3
2652 0032 2021 movs r1, #32
2653 0034 0348 ldr r0, .L208
2654 0036 FFF7FEFF bl HAL_GPIO_WritePin
486:Core/Src/state_machine.c **** }
2655 .loc 1 486 7
2656 003a 00BF nop
2657 .L206:
2658 .L207:
2659 .loc 1 488 1
2660 003c 00BF nop
2661 003e 1037 adds r7, r7, #16
2662 .cfi_def_cfa_offset 8
2663 0040 BD46 mov sp, r7
2664 .cfi_def_cfa_register 13
2665 @ sp needed
2666 0042 80BD pop {r7, pc}
2667 .L209:
2668 .align 2
ARM GAS /tmp/cctkPVvk.s page 56
2669 .L208:
2670 0044 00040048 .word 1207960576
2671 .cfi_endproc
2672 .LFE150:
2674 .section .text.sm_check_battery_temperature,"ax",%progbits
2675 .align 1
2676 .global sm_check_battery_temperature
2677 .syntax unified
2678 .thumb
2679 .thumb_func
2681 sm_check_battery_temperature:
2682 .LFB151:
489:Core/Src/state_machine.c ****
490:Core/Src/state_machine.c **** /* returns the ID and temperature of the hottest cell */
491:Core/Src/state_machine.c **** void sm_check_battery_temperature(uint8_t *id, uint16_t *temp){
2683 .loc 1 491 63
2684 .cfi_startproc
2685 @ args = 0, pretend = 0, frame = 16
2686 @ frame_needed = 1, uses_anonymous_args = 0
2687 @ link register save eliminated.
2688 0000 80B4 push {r7}
2689 .cfi_def_cfa_offset 4
2690 .cfi_offset 7, -4
2691 0002 85B0 sub sp, sp, #20
2692 .cfi_def_cfa_offset 24
2693 0004 00AF add r7, sp, #0
2694 .cfi_def_cfa_register 7
2695 0006 7860 str r0, [r7, #4]
2696 0008 3960 str r1, [r7]
2697 .LBB5:
492:Core/Src/state_machine.c **** for (int i = 0; i < N_TEMP_SENSORS; i++) {
2698 .loc 1 492 12
2699 000a 0023 movs r3, #0
2700 000c FB60 str r3, [r7, #12]
2701 .loc 1 492 3
2702 000e 16E0 b .L211
2703 .L213:
493:Core/Src/state_machine.c **** if (tmp1075_temps[i] > *temp){
2704 .loc 1 493 22
2705 0010 104A ldr r2, .L214
2706 0012 FB68 ldr r3, [r7, #12]
2707 0014 32F91330 ldrsh r3, [r2, r3, lsl #1]
2708 0018 1A46 mov r2, r3
2709 .loc 1 493 28
2710 001a 3B68 ldr r3, [r7]
2711 001c 1B88 ldrh r3, [r3]
2712 .loc 1 493 8
2713 001e 9A42 cmp r2, r3
2714 0020 0ADD ble .L212
494:Core/Src/state_machine.c **** *id = i;
2715 .loc 1 494 11
2716 0022 FB68 ldr r3, [r7, #12]
2717 0024 DAB2 uxtb r2, r3
2718 0026 7B68 ldr r3, [r7, #4]
2719 0028 1A70 strb r2, [r3]
495:Core/Src/state_machine.c **** *temp = tmp1075_temps[i];
2720 .loc 1 495 28
ARM GAS /tmp/cctkPVvk.s page 57
2721 002a 0A4A ldr r2, .L214
2722 002c FB68 ldr r3, [r7, #12]
2723 002e 32F91330 ldrsh r3, [r2, r3, lsl #1]
2724 0032 9AB2 uxth r2, r3
2725 .loc 1 495 13
2726 0034 3B68 ldr r3, [r7]
2727 0036 1A80 strh r2, [r3] @ movhi
2728 .L212:
492:Core/Src/state_machine.c **** if (tmp1075_temps[i] > *temp){
2729 .loc 1 492 40 discriminator 2
2730 0038 FB68 ldr r3, [r7, #12]
2731 003a 0133 adds r3, r3, #1
2732 003c FB60 str r3, [r7, #12]
2733 .L211:
492:Core/Src/state_machine.c **** if (tmp1075_temps[i] > *temp){
2734 .loc 1 492 21 discriminator 1
2735 003e FB68 ldr r3, [r7, #12]
2736 0040 0C2B cmp r3, #12
2737 0042 E5DD ble .L213
2738 .LBE5:
496:Core/Src/state_machine.c **** }
497:Core/Src/state_machine.c **** }
498:Core/Src/state_machine.c **** }
2739 .loc 1 498 1
2740 0044 00BF nop
2741 0046 00BF nop
2742 0048 1437 adds r7, r7, #20
2743 .cfi_def_cfa_offset 4
2744 004a BD46 mov sp, r7
2745 .cfi_def_cfa_register 13
2746 @ sp needed
2747 004c 5DF8047B ldr r7, [sp], #4
2748 .cfi_restore 7
2749 .cfi_def_cfa_offset 0
2750 0050 7047 bx lr
2751 .L215:
2752 0052 00BF .align 2
2753 .L214:
2754 0054 00000000 .word tmp1075_temps
2755 .cfi_endproc
2756 .LFE151:
2758 .section .text.sm_return_cell_temperature,"ax",%progbits
2759 .align 1
2760 .global sm_return_cell_temperature
2761 .syntax unified
2762 .thumb
2763 .thumb_func
2765 sm_return_cell_temperature:
2766 .LFB152:
499:Core/Src/state_machine.c ****
500:Core/Src/state_machine.c **** int16_t sm_return_cell_temperature(int id){ return tmp1075_temps[id]; }
2767 .loc 1 500 43
2768 .cfi_startproc
2769 @ args = 0, pretend = 0, frame = 8
2770 @ frame_needed = 1, uses_anonymous_args = 0
2771 @ link register save eliminated.
2772 0000 80B4 push {r7}
ARM GAS /tmp/cctkPVvk.s page 58
2773 .cfi_def_cfa_offset 4
2774 .cfi_offset 7, -4
2775 0002 83B0 sub sp, sp, #12
2776 .cfi_def_cfa_offset 16
2777 0004 00AF add r7, sp, #0
2778 .cfi_def_cfa_register 7
2779 0006 7860 str r0, [r7, #4]
2780 .loc 1 500 65
2781 0008 044A ldr r2, .L218
2782 000a 7B68 ldr r3, [r7, #4]
2783 000c 32F91330 ldrsh r3, [r2, r3, lsl #1]
2784 .loc 1 500 71
2785 0010 1846 mov r0, r3
2786 0012 0C37 adds r7, r7, #12
2787 .cfi_def_cfa_offset 4
2788 0014 BD46 mov sp, r7
2789 .cfi_def_cfa_register 13
2790 @ sp needed
2791 0016 5DF8047B ldr r7, [sp], #4
2792 .cfi_restore 7
2793 .cfi_def_cfa_offset 0
2794 001a 7047 bx lr
2795 .L219:
2796 .align 2
2797 .L218:
2798 001c 00000000 .word tmp1075_temps
2799 .cfi_endproc
2800 .LFE152:
2802 .section .text.sm_return_cell_voltage,"ax",%progbits
2803 .align 1
2804 .global sm_return_cell_voltage
2805 .syntax unified
2806 .thumb
2807 .thumb_func
2809 sm_return_cell_voltage:
2810 .LFB153:
501:Core/Src/state_machine.c ****
502:Core/Src/state_machine.c **** int16_t sm_return_cell_voltage(int id){ return module.cellVoltages[id]; }
2811 .loc 1 502 39
2812 .cfi_startproc
2813 @ args = 0, pretend = 0, frame = 8
2814 @ frame_needed = 1, uses_anonymous_args = 0
2815 @ link register save eliminated.
2816 0000 80B4 push {r7}
2817 .cfi_def_cfa_offset 4
2818 .cfi_offset 7, -4
2819 0002 83B0 sub sp, sp, #12
2820 .cfi_def_cfa_offset 16
2821 0004 00AF add r7, sp, #0
2822 .cfi_def_cfa_register 7
2823 0006 7860 str r0, [r7, #4]
2824 .loc 1 502 67
2825 0008 044A ldr r2, .L222
2826 000a 7B68 ldr r3, [r7, #4]
2827 000c 32F91330 ldrsh r3, [r2, r3, lsl #1]
2828 .loc 1 502 73
2829 0010 1846 mov r0, r3
ARM GAS /tmp/cctkPVvk.s page 59
2830 0012 0C37 adds r7, r7, #12
2831 .cfi_def_cfa_offset 4
2832 0014 BD46 mov sp, r7
2833 .cfi_def_cfa_register 13
2834 @ sp needed
2835 0016 5DF8047B ldr r7, [sp], #4
2836 .cfi_restore 7
2837 .cfi_def_cfa_offset 0
2838 001a 7047 bx lr
2839 .L223:
2840 .align 2
2841 .L222:
2842 001c 00000000 .word module
2843 .cfi_endproc
2844 .LFE153:
2846 .section .text.sm_test_cycle_states,"ax",%progbits
2847 .align 1
2848 .global sm_test_cycle_states
2849 .syntax unified
2850 .thumb
2851 .thumb_func
2853 sm_test_cycle_states:
2854 .LFB154:
503:Core/Src/state_machine.c ****
504:Core/Src/state_machine.c **** void sm_test_cycle_states(){
2855 .loc 1 504 28
2856 .cfi_startproc
2857 @ args = 0, pretend = 0, frame = 0
2858 @ frame_needed = 1, uses_anonymous_args = 0
2859 0000 80B5 push {r7, lr}
2860 .cfi_def_cfa_offset 8
2861 .cfi_offset 7, -8
2862 .cfi_offset 14, -4
2863 0002 00AF add r7, sp, #0
2864 .cfi_def_cfa_register 7
505:Core/Src/state_machine.c **** RELAY_BAT_SIDE_VOLTAGE = module.auxVoltages[0];
2865 .loc 1 505 46
2866 0004 434B ldr r3, .L237
2867 0006 D3ED087A vldr.32 s15, [r3, #32]
2868 .loc 1 505 26
2869 000a FDEEE77A vcvt.s32.f32 s15, s15
2870 000e 17EE902A vmov r2, s15 @ int
2871 0012 414B ldr r3, .L237+4
2872 0014 1A60 str r2, [r3]
506:Core/Src/state_machine.c **** RELAY_ESC_SIDE_VOLTAGE = module.auxVoltages[1];
2873 .loc 1 506 46
2874 0016 3F4B ldr r3, .L237
2875 0018 D3ED097A vldr.32 s15, [r3, #36]
2876 .loc 1 506 26
2877 001c FDEEE77A vcvt.s32.f32 s15, s15
2878 0020 17EE902A vmov r2, s15 @ int
2879 0024 3D4B ldr r3, .L237+8
2880 0026 1A60 str r2, [r3]
507:Core/Src/state_machine.c **** CURRENT_MEASUREMENT = module.auxVoltages[2];
2881 .loc 1 507 43
2882 0028 3A4B ldr r3, .L237
2883 002a D3ED0A7A vldr.32 s15, [r3, #40]
ARM GAS /tmp/cctkPVvk.s page 60
2884 .loc 1 507 23
2885 002e FDEEE77A vcvt.s32.f32 s15, s15
2886 0032 17EE902A vmov r2, s15 @ int
2887 0036 3A4B ldr r3, .L237+12
2888 0038 1A60 str r2, [r3]
508:Core/Src/state_machine.c **** sm_set_relay_positions(state.current_state);
2889 .loc 1 508 3
2890 003a 3A4B ldr r3, .L237+16
2891 003c 1B78 ldrb r3, [r3] @ zero_extendqisi2
2892 003e 1846 mov r0, r3
2893 0040 FFF7FEFF bl sm_set_relay_positions
509:Core/Src/state_machine.c ****
510:Core/Src/state_machine.c **** if (timestamp > HAL_GetTick())
2894 .loc 1 510 19
2895 0044 FFF7FEFF bl HAL_GetTick
2896 0048 0246 mov r2, r0
2897 .loc 1 510 17 discriminator 1
2898 004a 374B ldr r3, .L237+20
2899 004c 1B68 ldr r3, [r3]
2900 .loc 1 510 6 discriminator 1
2901 004e 9A42 cmp r2, r3
2902 0050 5DD3 bcc .L235
511:Core/Src/state_machine.c **** return;
512:Core/Src/state_machine.c **** switch (state.current_state) {
2903 .loc 1 512 16
2904 0052 344B ldr r3, .L237+16
2905 0054 1B78 ldrb r3, [r3] @ zero_extendqisi2
2906 .loc 1 512 3
2907 0056 072B cmp r3, #7
2908 0058 54D8 bhi .L227
2909 005a 01A2 adr r2, .L229
2910 005c 52F823F0 ldr pc, [r2, r3, lsl #2]
2911 .p2align 2
2912 .L229:
2913 0060 81000000 .word .L234+1
2914 0064 9F000000 .word .L233+1
2915 0068 B7000000 .word .L232+1
2916 006c CF000000 .word .L231+1
2917 0070 ED000000 .word .L230+1
2918 0074 05010000 .word .L227+1
2919 0078 05010000 .word .L227+1
2920 007c 05010000 .word .L227+1
2921 .p2align 1
2922 .L234:
513:Core/Src/state_machine.c **** case STATE_INACTIVE:
514:Core/Src/state_machine.c **** state.current_state = STATE_PRECHARGE;
2923 .loc 1 514 27
2924 0080 284B ldr r3, .L237+16
2925 0082 0122 movs r2, #1
2926 0084 1A70 strb r2, [r3]
515:Core/Src/state_machine.c **** timestamp = HAL_GetTick() + 30000;
2927 .loc 1 515 19
2928 0086 FFF7FEFF bl HAL_GetTick
2929 008a 0346 mov r3, r0
2930 .loc 1 515 33 discriminator 1
2931 008c 03F5EA43 add r3, r3, #29952
2932 0090 3033 adds r3, r3, #48
ARM GAS /tmp/cctkPVvk.s page 61
2933 .loc 1 515 17 discriminator 1
2934 0092 254A ldr r2, .L237+20
2935 0094 1360 str r3, [r2]
516:Core/Src/state_machine.c **** PWM_powerground_control(0);
2936 .loc 1 516 7
2937 0096 0020 movs r0, #0
2938 0098 FFF7FEFF bl PWM_powerground_control
517:Core/Src/state_machine.c **** break;
2939 .loc 1 517 7
2940 009c 32E0 b .L227
2941 .L233:
518:Core/Src/state_machine.c **** case STATE_PRECHARGE:
519:Core/Src/state_machine.c **** state.current_state = STATE_READY;
2942 .loc 1 519 27
2943 009e 214B ldr r3, .L237+16
2944 00a0 0222 movs r2, #2
2945 00a2 1A70 strb r2, [r3]
520:Core/Src/state_machine.c **** timestamp = HAL_GetTick() + 10000;
2946 .loc 1 520 19
2947 00a4 FFF7FEFF bl HAL_GetTick
2948 00a8 0346 mov r3, r0
2949 .loc 1 520 33 discriminator 1
2950 00aa 03F51C53 add r3, r3, #9984
2951 00ae 1033 adds r3, r3, #16
2952 .loc 1 520 17 discriminator 1
2953 00b0 1D4A ldr r2, .L237+20
2954 00b2 1360 str r3, [r2]
521:Core/Src/state_machine.c **** break;
2955 .loc 1 521 7
2956 00b4 26E0 b .L227
2957 .L232:
522:Core/Src/state_machine.c **** case STATE_READY:
523:Core/Src/state_machine.c **** state.current_state = STATE_ACTIVE;
2958 .loc 1 523 27
2959 00b6 1B4B ldr r3, .L237+16
2960 00b8 0322 movs r2, #3
2961 00ba 1A70 strb r2, [r3]
524:Core/Src/state_machine.c **** timestamp = HAL_GetTick() + 10000;
2962 .loc 1 524 19
2963 00bc FFF7FEFF bl HAL_GetTick
2964 00c0 0346 mov r3, r0
2965 .loc 1 524 33 discriminator 1
2966 00c2 03F51C53 add r3, r3, #9984
2967 00c6 1033 adds r3, r3, #16
2968 .loc 1 524 17 discriminator 1
2969 00c8 174A ldr r2, .L237+20
2970 00ca 1360 str r3, [r2]
525:Core/Src/state_machine.c **** break;
2971 .loc 1 525 7
2972 00cc 1AE0 b .L227
2973 .L231:
526:Core/Src/state_machine.c **** case STATE_ACTIVE:
527:Core/Src/state_machine.c **** state.current_state = STATE_DISCHARGE;
2974 .loc 1 527 27
2975 00ce 154B ldr r3, .L237+16
2976 00d0 0422 movs r2, #4
2977 00d2 1A70 strb r2, [r3]
ARM GAS /tmp/cctkPVvk.s page 62
528:Core/Src/state_machine.c **** timestamp = HAL_GetTick() + 10000;
2978 .loc 1 528 19
2979 00d4 FFF7FEFF bl HAL_GetTick
2980 00d8 0346 mov r3, r0
2981 .loc 1 528 33 discriminator 1
2982 00da 03F51C53 add r3, r3, #9984
2983 00de 1033 adds r3, r3, #16
2984 .loc 1 528 17 discriminator 1
2985 00e0 114A ldr r2, .L237+20
2986 00e2 1360 str r3, [r2]
529:Core/Src/state_machine.c **** PWM_powerground_control(10);
2987 .loc 1 529 7
2988 00e4 0A20 movs r0, #10
2989 00e6 FFF7FEFF bl PWM_powerground_control
530:Core/Src/state_machine.c **** break;
2990 .loc 1 530 7
2991 00ea 0BE0 b .L227
2992 .L230:
531:Core/Src/state_machine.c **** case STATE_DISCHARGE:
532:Core/Src/state_machine.c **** state.current_state = STATE_INACTIVE;
2993 .loc 1 532 27
2994 00ec 0D4B ldr r3, .L237+16
2995 00ee 0022 movs r2, #0
2996 00f0 1A70 strb r2, [r3]
533:Core/Src/state_machine.c **** timestamp = HAL_GetTick() + 10000;
2997 .loc 1 533 19
2998 00f2 FFF7FEFF bl HAL_GetTick
2999 00f6 0346 mov r3, r0
3000 .loc 1 533 33 discriminator 1
3001 00f8 03F51C53 add r3, r3, #9984
3002 00fc 1033 adds r3, r3, #16
3003 .loc 1 533 17 discriminator 1
3004 00fe 0A4A ldr r2, .L237+20
3005 0100 1360 str r3, [r2]
534:Core/Src/state_machine.c **** break;
3006 .loc 1 534 7
3007 0102 00BF nop
3008 .L227:
535:Core/Src/state_machine.c **** case STATE_CHARGING_PRECHARGE:
536:Core/Src/state_machine.c **** case STATE_CHARGING:
537:Core/Src/state_machine.c **** case STATE_ERROR:
538:Core/Src/state_machine.c **** break;
539:Core/Src/state_machine.c **** }
540:Core/Src/state_machine.c ****
541:Core/Src/state_machine.c **** state.target_state = state.current_state;
3009 .loc 1 541 29
3010 0104 074B ldr r3, .L237+16
3011 0106 1A78 ldrb r2, [r3] @ zero_extendqisi2
3012 .loc 1 541 22
3013 0108 064B ldr r3, .L237+16
3014 010a 5A70 strb r2, [r3, #1]
3015 010c 00E0 b .L224
3016 .L235:
511:Core/Src/state_machine.c **** switch (state.current_state) {
3017 .loc 1 511 5
3018 010e 00BF nop
3019 .L224:
ARM GAS /tmp/cctkPVvk.s page 63
542:Core/Src/state_machine.c **** }...
3020 .loc 1 542 1
3021 0110 80BD pop {r7, pc}
3022 .L238:
3023 0112 00BF .align 2
3024 .L237:
3025 0114 00000000 .word module
3026 0118 00000000 .word RELAY_BAT_SIDE_VOLTAGE
3027 011c 00000000 .word RELAY_ESC_SIDE_VOLTAGE
3028 0120 00000000 .word CURRENT_MEASUREMENT
3029 0124 00000000 .word state
3030 0128 00000000 .word timestamp
3031 .cfi_endproc
3032 .LFE154:
3034 .text
3035 .Letext0:
3036 .file 2 "/nix/store/p8vkamc9b2vlibs9aw76vnasdbifhcbm-gcc-arm-embedded-13.2.rel1/arm-none-eabi/incl
3037 .file 3 "/nix/store/p8vkamc9b2vlibs9aw76vnasdbifhcbm-gcc-arm-embedded-13.2.rel1/arm-none-eabi/incl
3038 .file 4 "Drivers/CMSIS/Device/ST/STM32F3xx/Include/stm32f302xc.h"
3039 .file 5 "Drivers/STM32F3xx_HAL_Driver/Inc/stm32f3xx_hal_def.h"
3040 .file 6 "Drivers/STM32F3xx_HAL_Driver/Inc/stm32f3xx_hal_gpio.h"
3041 .file 7 "Core/Inc/ADBMS_LL_Driver.h"
3042 .file 8 "Core/Inc/ADBMS_Abstraction.h"
3043 .file 9 "Core/Inc/errors.h"
3044 .file 10 "Core/Inc/AMS_HighLevel.h"
3045 .file 11 "Core/Inc/TMP1075.h"
3046 .file 12 "Core/Inc/PWM_control.h"
3047 .file 13 "Core/Inc/state_machine.h"
3048 .file 14 "Core/Inc/eeprom.h"
3049 .file 15 "Drivers/STM32F3xx_HAL_Driver/Inc/stm32f3xx_hal.h"
3050 .file 16 "Core/Inc/soc_estimation.h"
3051 .file 17 "Core/Inc/status_LED.h"
3052 .file 18 "Core/Inc/can.h"
ARM GAS /tmp/cctkPVvk.s page 64
DEFINED SYMBOLS
*ABS*:00000000 state_machine.c
/tmp/cctkPVvk.s:24 .bss.programming_mode:00000000 programming_mode
/tmp/cctkPVvk.s:25 .bss.programming_mode:00000000 $d
/tmp/cctkPVvk.s:30 .bss.debugging_mode:00000000 debugging_mode
/tmp/cctkPVvk.s:31 .bss.debugging_mode:00000000 $d
/tmp/cctkPVvk.s:37 .bss.state:00000000 state
/tmp/cctkPVvk.s:34 .bss.state:00000000 $d
/tmp/cctkPVvk.s:44 .bss.RELAY_BAT_SIDE_VOLTAGE:00000000 RELAY_BAT_SIDE_VOLTAGE
/tmp/cctkPVvk.s:41 .bss.RELAY_BAT_SIDE_VOLTAGE:00000000 $d
/tmp/cctkPVvk.s:51 .bss.RELAY_ESC_SIDE_VOLTAGE:00000000 RELAY_ESC_SIDE_VOLTAGE
/tmp/cctkPVvk.s:48 .bss.RELAY_ESC_SIDE_VOLTAGE:00000000 $d
/tmp/cctkPVvk.s:58 .bss.CURRENT_MEASUREMENT:00000000 CURRENT_MEASUREMENT
/tmp/cctkPVvk.s:55 .bss.CURRENT_MEASUREMENT:00000000 $d
/tmp/cctkPVvk.s:64 .bss.CURRENT_MEASUREMENT_ON:00000000 CURRENT_MEASUREMENT_ON
/tmp/cctkPVvk.s:65 .bss.CURRENT_MEASUREMENT_ON:00000000 $d
/tmp/cctkPVvk.s:70 .bss.balancing_state:00000000 balancing_state
/tmp/cctkPVvk.s:71 .bss.balancing_state:00000000 $d
/tmp/cctkPVvk.s:77 .bss.base_offset:00000000 base_offset
/tmp/cctkPVvk.s:74 .bss.base_offset:00000000 $d
/tmp/cctkPVvk.s:84 .bss.error_timer:00000000 error_timer
/tmp/cctkPVvk.s:81 .bss.error_timer:00000000 $d
/tmp/cctkPVvk.s:91 .bss.precharge_timer:00000000 precharge_timer
/tmp/cctkPVvk.s:88 .bss.precharge_timer:00000000 $d
/tmp/cctkPVvk.s:98 .bss.discharge_timer:00000000 discharge_timer
/tmp/cctkPVvk.s:95 .bss.discharge_timer:00000000 $d
/tmp/cctkPVvk.s:105 .bss.balancing_timer:00000000 balancing_timer
/tmp/cctkPVvk.s:102 .bss.balancing_timer:00000000 $d
/tmp/cctkPVvk.s:112 .bss.eeprom_timer:00000000 eeprom_timer
/tmp/cctkPVvk.s:109 .bss.eeprom_timer:00000000 $d
/tmp/cctkPVvk.s:119 .bss.powerground_softstart_timer:00000000 powerground_softstart_timer
/tmp/cctkPVvk.s:116 .bss.powerground_softstart_timer:00000000 $d
/tmp/cctkPVvk.s:126 .bss.powerground_calibration_timer:00000000 powerground_calibration_timer
/tmp/cctkPVvk.s:123 .bss.powerground_calibration_timer:00000000 $d
/tmp/cctkPVvk.s:132 .bss.powerground_calibration_stage:00000000 powerground_calibration_stage
/tmp/cctkPVvk.s:133 .bss.powerground_calibration_stage:00000000 $d
/tmp/cctkPVvk.s:138 .bss.current_powerground_status:00000000 current_powerground_status
/tmp/cctkPVvk.s:139 .bss.current_powerground_status:00000000 $d
/tmp/cctkPVvk.s:144 .bss.target_powerground_status:00000000 target_powerground_status
/tmp/cctkPVvk.s:145 .bss.target_powerground_status:00000000 $d
/tmp/cctkPVvk.s:147 .bss.timestamp:00000000 $d
/tmp/cctkPVvk.s:150 .bss.timestamp:00000000 timestamp
/tmp/cctkPVvk.s:153 .text.sm_init:00000000 $t
/tmp/cctkPVvk.s:159 .text.sm_init:00000000 sm_init
/tmp/cctkPVvk.s:236 .text.sm_init:00000060 $d
/tmp/cctkPVvk.s:254 .text.sm_update:00000000 $t
/tmp/cctkPVvk.s:260 .text.sm_update:00000000 sm_update
/tmp/cctkPVvk.s:1490 .text.sm_check_errors:00000000 sm_check_errors
/tmp/cctkPVvk.s:740 .text.sm_precharge_discharge_manager:00000000 sm_precharge_discharge_manager
/tmp/cctkPVvk.s:1195 .text.sm_balancing:00000000 sm_balancing
/tmp/cctkPVvk.s:912 .text.sm_powerground_manager:00000000 sm_powerground_manager
/tmp/cctkPVvk.s:390 .text.sm_update:000000f0 $d
/tmp/cctkPVvk.s:398 .text.sm_update:00000110 $t
/tmp/cctkPVvk.s:2008 .text.sm_update_inactive:00000000 sm_update_inactive
/tmp/cctkPVvk.s:2072 .text.sm_update_precharge:00000000 sm_update_precharge
/tmp/cctkPVvk.s:2128 .text.sm_update_ready:00000000 sm_update_ready
/tmp/cctkPVvk.s:2184 .text.sm_update_active:00000000 sm_update_active
ARM GAS /tmp/cctkPVvk.s page 65
/tmp/cctkPVvk.s:2240 .text.sm_update_discharge:00000000 sm_update_discharge
/tmp/cctkPVvk.s:2296 .text.sm_update_charging_precharge:00000000 sm_update_charging_precharge
/tmp/cctkPVvk.s:2350 .text.sm_update_charging:00000000 sm_update_charging
/tmp/cctkPVvk.s:2407 .text.sm_update_error:00000000 sm_update_error
/tmp/cctkPVvk.s:2461 .text.sm_set_relay_positions:00000000 sm_set_relay_positions
/tmp/cctkPVvk.s:497 .text.sm_update:00000198 $d
/tmp/cctkPVvk.s:515 .text.sm_handle_ams_in:00000000 $t
/tmp/cctkPVvk.s:521 .text.sm_handle_ams_in:00000000 sm_handle_ams_in
/tmp/cctkPVvk.s:727 .text.sm_handle_ams_in:00000100 $d
/tmp/cctkPVvk.s:734 .text.sm_precharge_discharge_manager:00000000 $t
/tmp/cctkPVvk.s:899 .text.sm_precharge_discharge_manager:000000d0 $d
/tmp/cctkPVvk.s:906 .text.sm_powerground_manager:00000000 $t
/tmp/cctkPVvk.s:1031 .text.sm_powerground_manager:0000009c $d
/tmp/cctkPVvk.s:1038 .text.sm_calibrate_powerground:00000000 $t
/tmp/cctkPVvk.s:1044 .text.sm_calibrate_powerground:00000000 sm_calibrate_powerground
/tmp/cctkPVvk.s:1077 .text.sm_calibrate_powerground:00000024 $d
/tmp/cctkPVvk.s:1081 .text.sm_calibrate_powerground:00000034 $t
/tmp/cctkPVvk.s:1182 .text.sm_calibrate_powerground:000000bc $d
/tmp/cctkPVvk.s:1189 .text.sm_balancing:00000000 $t
/tmp/cctkPVvk.s:1371 .text.sm_balancing:000000e8 $d
/tmp/cctkPVvk.s:1378 .text.sm_program_powerground:00000000 $t
/tmp/cctkPVvk.s:1384 .text.sm_program_powerground:00000000 sm_program_powerground
/tmp/cctkPVvk.s:1429 .text.sm_program_powerground:00000030 $d
/tmp/cctkPVvk.s:1435 .text.sm_eeprom_write_status:00000000 $t
/tmp/cctkPVvk.s:1441 .text.sm_eeprom_write_status:00000000 sm_eeprom_write_status
/tmp/cctkPVvk.s:1479 .text.sm_eeprom_write_status:00000028 $d
/tmp/cctkPVvk.s:1484 .text.sm_check_errors:00000000 $t
/tmp/cctkPVvk.s:1830 .text.sm_set_error_source:00000000 sm_set_error_source
/tmp/cctkPVvk.s:1813 .text.sm_check_errors:000001e4 $d
/tmp/cctkPVvk.s:1824 .text.sm_set_error_source:00000000 $t
/tmp/cctkPVvk.s:1997 .text.sm_set_error_source:0000010c $d
/tmp/cctkPVvk.s:2002 .text.sm_update_inactive:00000000 $t
/tmp/cctkPVvk.s:2061 .text.sm_update_inactive:00000034 $d
/tmp/cctkPVvk.s:2066 .text.sm_update_precharge:00000000 $t
/tmp/cctkPVvk.s:2117 .text.sm_update_precharge:00000028 $d
/tmp/cctkPVvk.s:2122 .text.sm_update_ready:00000000 $t
/tmp/cctkPVvk.s:2173 .text.sm_update_ready:00000028 $d
/tmp/cctkPVvk.s:2178 .text.sm_update_active:00000000 $t
/tmp/cctkPVvk.s:2229 .text.sm_update_active:00000028 $d
/tmp/cctkPVvk.s:2234 .text.sm_update_discharge:00000000 $t
/tmp/cctkPVvk.s:2285 .text.sm_update_discharge:00000028 $d
/tmp/cctkPVvk.s:2290 .text.sm_update_charging_precharge:00000000 $t
/tmp/cctkPVvk.s:2339 .text.sm_update_charging_precharge:00000024 $d
/tmp/cctkPVvk.s:2344 .text.sm_update_charging:00000000 $t
/tmp/cctkPVvk.s:2395 .text.sm_update_charging:00000028 $d
/tmp/cctkPVvk.s:2401 .text.sm_update_error:00000000 $t
/tmp/cctkPVvk.s:2450 .text.sm_update_error:00000024 $d
/tmp/cctkPVvk.s:2455 .text.sm_set_relay_positions:00000000 $t
/tmp/cctkPVvk.s:2487 .text.sm_set_relay_positions:00000018 $d
/tmp/cctkPVvk.s:2495 .text.sm_set_relay_positions:00000038 $t
/tmp/cctkPVvk.s:2608 .text.sm_set_relay:00000000 sm_set_relay
/tmp/cctkPVvk.s:2597 .text.sm_set_relay_positions:000000d0 $d
/tmp/cctkPVvk.s:2602 .text.sm_set_relay:00000000 $t
/tmp/cctkPVvk.s:2670 .text.sm_set_relay:00000044 $d
/tmp/cctkPVvk.s:2675 .text.sm_check_battery_temperature:00000000 $t
/tmp/cctkPVvk.s:2681 .text.sm_check_battery_temperature:00000000 sm_check_battery_temperature
/tmp/cctkPVvk.s:2754 .text.sm_check_battery_temperature:00000054 $d
ARM GAS /tmp/cctkPVvk.s page 66
/tmp/cctkPVvk.s:2759 .text.sm_return_cell_temperature:00000000 $t
/tmp/cctkPVvk.s:2765 .text.sm_return_cell_temperature:00000000 sm_return_cell_temperature
/tmp/cctkPVvk.s:2798 .text.sm_return_cell_temperature:0000001c $d
/tmp/cctkPVvk.s:2803 .text.sm_return_cell_voltage:00000000 $t
/tmp/cctkPVvk.s:2809 .text.sm_return_cell_voltage:00000000 sm_return_cell_voltage
/tmp/cctkPVvk.s:2842 .text.sm_return_cell_voltage:0000001c $d
/tmp/cctkPVvk.s:2847 .text.sm_test_cycle_states:00000000 $t
/tmp/cctkPVvk.s:2853 .text.sm_test_cycle_states:00000000 sm_test_cycle_states
/tmp/cctkPVvk.s:2913 .text.sm_test_cycle_states:00000060 $d
/tmp/cctkPVvk.s:2921 .text.sm_test_cycle_states:00000080 $t
/tmp/cctkPVvk.s:3025 .text.sm_test_cycle_states:00000114 $d
UNDEFINED SYMBOLS
__aeabi_f2d
__aeabi_dsub
__aeabi_dmul
__aeabi_d2iz
can_handle_send_status
can_handle_send_log
tmp1075_measure
status_led_update
soc_update
module
PWM_powerground_control
HAL_GetTick
PWM_powerground_softcontrol
amsStopBalancing
amsConfigBalancing
amsStartBalancing
eeprom_write_status
error_data
currentAMSState
HAL_GPIO_WritePin
tmp1075_temps