mv-bms/Software/build/ADBMS_Abstraction.lst

3130 lines
122 KiB
Plaintext
Raw Permalink 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/cclV24WD.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 "ADBMS_Abstraction.c"
16 .text
17 .Ltext0:
18 .cfi_sections .debug_frame
19 .file 1 "Core/Src/ADBMS_Abstraction.c"
20 .global numberofcells
21 .section .bss.numberofcells,"aw",%nobits
24 numberofcells:
25 0000 00 .space 1
26 .global numberofauxchannels
27 .section .bss.numberofauxchannels,"aw",%nobits
30 numberofauxchannels:
31 0000 00 .space 1
32 .section .rodata
33 .align 2
34 .LC0:
35 0000 FFFFFFFF .ascii "\377\377\377\377\377\377"
35 FFFF
36 .section .text.amsReset,"ax",%progbits
37 .align 1
38 .global amsReset
39 .syntax unified
40 .thumb
41 .thumb_func
43 amsReset:
44 .LFB130:
1:Core/Src/ADBMS_Abstraction.c **** /*
2:Core/Src/ADBMS_Abstraction.c **** * ADBMS_Abstraction.c
3:Core/Src/ADBMS_Abstraction.c **** *
4:Core/Src/ADBMS_Abstraction.c **** * Created on: 14.07.2022
5:Core/Src/ADBMS_Abstraction.c **** * Author: max
6:Core/Src/ADBMS_Abstraction.c **** */
7:Core/Src/ADBMS_Abstraction.c ****
8:Core/Src/ADBMS_Abstraction.c **** #include "ADBMS_Abstraction.h"
9:Core/Src/ADBMS_Abstraction.c **** #include "ADBMS_CMD_MAKROS.h"
10:Core/Src/ADBMS_Abstraction.c **** #include "ADBMS_LL_Driver.h"
11:Core/Src/ADBMS_Abstraction.c **** #include <stddef.h>
12:Core/Src/ADBMS_Abstraction.c ****
13:Core/Src/ADBMS_Abstraction.c **** uint8 numberofcells;
14:Core/Src/ADBMS_Abstraction.c **** uint8 numberofauxchannels;
15:Core/Src/ADBMS_Abstraction.c ****
16:Core/Src/ADBMS_Abstraction.c **** #define CHECK_RETURN(x) \
17:Core/Src/ADBMS_Abstraction.c **** { \
ARM GAS /tmp/cclV24WD.s page 2
18:Core/Src/ADBMS_Abstraction.c **** uint8 status = x; \
19:Core/Src/ADBMS_Abstraction.c **** if (status != 0) \
20:Core/Src/ADBMS_Abstraction.c **** return status; \
21:Core/Src/ADBMS_Abstraction.c **** }
22:Core/Src/ADBMS_Abstraction.c ****
23:Core/Src/ADBMS_Abstraction.c **** uint8 amsReset() {
45 .loc 1 23 18
46 .cfi_startproc
47 @ args = 0, pretend = 0, frame = 16
48 @ frame_needed = 1, uses_anonymous_args = 0
49 0000 80B5 push {r7, lr}
50 .cfi_def_cfa_offset 8
51 .cfi_offset 7, -8
52 .cfi_offset 14, -4
53 0002 84B0 sub sp, sp, #16
54 .cfi_def_cfa_offset 24
55 0004 00AF add r7, sp, #0
56 .cfi_def_cfa_register 7
24:Core/Src/ADBMS_Abstraction.c **** amsWakeUp();
57 .loc 1 24 3
58 0006 FFF7FEFF bl amsWakeUp
25:Core/Src/ADBMS_Abstraction.c **** readCMD(SRST, NULL, 0);
59 .loc 1 25 3
60 000a 0022 movs r2, #0
61 000c 0021 movs r1, #0
62 000e 2720 movs r0, #39
63 0010 FFF7FEFF bl readCMD
26:Core/Src/ADBMS_Abstraction.c **** mcuDelay(10);
64 .loc 1 26 3
65 0014 0A20 movs r0, #10
66 0016 FFF7FEFF bl mcuDelay
27:Core/Src/ADBMS_Abstraction.c **** amsWakeUp();
67 .loc 1 27 3
68 001a FFF7FEFF bl amsWakeUp
28:Core/Src/ADBMS_Abstraction.c **** amsStopBalancing();
69 .loc 1 28 3
70 001e FFF7FEFF bl amsStopBalancing
29:Core/Src/ADBMS_Abstraction.c **** amsConfigOverUnderVoltage(DEFAULT_OV, DEFAULT_UV);
71 .loc 1 29 3
72 0022 40F2A111 movw r1, #417
73 0026 40F26540 movw r0, #1125
74 002a FFF7FEFF bl amsConfigOverUnderVoltage
30:Core/Src/ADBMS_Abstraction.c ****
31:Core/Src/ADBMS_Abstraction.c **** const uint8 buffer[6] = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF};
75 .loc 1 31 15
76 002e 214A ldr r2, .L8
77 0030 3B1D adds r3, r7, #4
78 0032 92E80300 ldm r2, {r0, r1}
79 0036 1860 str r0, [r3]
80 0038 0433 adds r3, r3, #4
81 003a 1980 strh r1, [r3] @ movhi
82 .LBB2:
32:Core/Src/ADBMS_Abstraction.c ****
33:Core/Src/ADBMS_Abstraction.c **** CHECK_RETURN(writeCMD(CLRFLAG, buffer, 6)); //clear flags,
83 .loc 1 33 3
84 003c 3B1D adds r3, r7, #4
85 003e 0622 movs r2, #6
ARM GAS /tmp/cclV24WD.s page 3
86 0040 1946 mov r1, r3
87 0042 40F21770 movw r0, #1815
88 0046 FFF7FEFF bl writeCMD
89 004a 0346 mov r3, r0
90 004c FB73 strb r3, [r7, #15]
91 .loc 1 33 3 is_stmt 0 discriminator 1
92 004e FB7B ldrb r3, [r7, #15] @ zero_extendqisi2
93 0050 002B cmp r3, #0
94 0052 01D0 beq .L2
95 0054 FB7B ldrb r3, [r7, #15] @ zero_extendqisi2
96 .loc 1 33 3
97 0056 28E0 b .L7
98 .L2:
99 .LBE2:
100 .LBB3:
34:Core/Src/ADBMS_Abstraction.c **** CHECK_RETURN(writeCMD(CLOVUV, buffer, 6)); //OVUV flags
101 .loc 1 34 3 is_stmt 1
102 0058 3B1D adds r3, r7, #4
103 005a 0622 movs r2, #6
104 005c 1946 mov r1, r3
105 005e 40F21570 movw r0, #1813
106 0062 FFF7FEFF bl writeCMD
107 0066 0346 mov r3, r0
108 0068 BB73 strb r3, [r7, #14]
109 .loc 1 34 3 is_stmt 0 discriminator 1
110 006a BB7B ldrb r3, [r7, #14] @ zero_extendqisi2
111 006c 002B cmp r3, #0
112 006e 01D0 beq .L4
113 0070 BB7B ldrb r3, [r7, #14] @ zero_extendqisi2
114 .loc 1 34 3
115 0072 1AE0 b .L7
116 .L4:
117 .LBE3:
118 .LBB4:
35:Core/Src/ADBMS_Abstraction.c **** CHECK_RETURN(writeCMD(ADCV | ADCV_CONT | ADCV_RD, NULL, 0)); //start continuous cell voltage meas
119 .loc 1 35 3 is_stmt 1
120 0074 0022 movs r2, #0
121 0076 0021 movs r1, #0
122 0078 4FF47870 mov r0, #992
123 007c FFF7FEFF bl writeCMD
124 0080 0346 mov r3, r0
125 0082 7B73 strb r3, [r7, #13]
126 .loc 1 35 3 is_stmt 0 discriminator 1
127 0084 7B7B ldrb r3, [r7, #13] @ zero_extendqisi2
128 0086 002B cmp r3, #0
129 0088 01D0 beq .L5
130 008a 7B7B ldrb r3, [r7, #13] @ zero_extendqisi2
131 .loc 1 35 3
132 008c 0DE0 b .L7
133 .L5:
134 .LBE4:
135 .LBB5:
36:Core/Src/ADBMS_Abstraction.c **** CHECK_RETURN(writeCMD(ADAX | ADAX_CONV_ALL, NULL, 0)); //start aux measurement
136 .loc 1 36 3 is_stmt 1
137 008e 0022 movs r2, #0
138 0090 0021 movs r1, #0
139 0092 4FF48260 mov r0, #1040
ARM GAS /tmp/cclV24WD.s page 4
140 0096 FFF7FEFF bl writeCMD
141 009a 0346 mov r3, r0
142 009c 3B73 strb r3, [r7, #12]
143 .loc 1 36 3 is_stmt 0 discriminator 1
144 009e 3B7B ldrb r3, [r7, #12] @ zero_extendqisi2
145 00a0 002B cmp r3, #0
146 00a2 01D0 beq .L6
147 00a4 3B7B ldrb r3, [r7, #12] @ zero_extendqisi2
148 .loc 1 36 3
149 00a6 00E0 b .L7
150 .L6:
151 .LBE5:
37:Core/Src/ADBMS_Abstraction.c ****
38:Core/Src/ADBMS_Abstraction.c **** return 0;
152 .loc 1 38 10 is_stmt 1
153 00a8 0023 movs r3, #0
154 .L7:
39:Core/Src/ADBMS_Abstraction.c **** }
155 .loc 1 39 1
156 00aa 1846 mov r0, r3
157 00ac 1037 adds r7, r7, #16
158 .cfi_def_cfa_offset 8
159 00ae BD46 mov sp, r7
160 .cfi_def_cfa_register 13
161 @ sp needed
162 00b0 80BD pop {r7, pc}
163 .L9:
164 00b2 00BF .align 2
165 .L8:
166 00b4 00000000 .word .LC0
167 .cfi_endproc
168 .LFE130:
170 .section .text.initAMS,"ax",%progbits
171 .align 1
172 .global initAMS
173 .syntax unified
174 .thumb
175 .thumb_func
177 initAMS:
178 .LFB131:
40:Core/Src/ADBMS_Abstraction.c ****
41:Core/Src/ADBMS_Abstraction.c **** uint8 initAMS(SPI_HandleTypeDef* hspi, uint8 numofcells, uint8 numofaux) {
179 .loc 1 41 74
180 .cfi_startproc
181 @ args = 0, pretend = 0, frame = 8
182 @ frame_needed = 1, uses_anonymous_args = 0
183 0000 80B5 push {r7, lr}
184 .cfi_def_cfa_offset 8
185 .cfi_offset 7, -8
186 .cfi_offset 14, -4
187 0002 82B0 sub sp, sp, #8
188 .cfi_def_cfa_offset 16
189 0004 00AF add r7, sp, #0
190 .cfi_def_cfa_register 7
191 0006 7860 str r0, [r7, #4]
192 0008 0B46 mov r3, r1
193 000a FB70 strb r3, [r7, #3]
ARM GAS /tmp/cclV24WD.s page 5
194 000c 1346 mov r3, r2
195 000e BB70 strb r3, [r7, #2]
42:Core/Src/ADBMS_Abstraction.c **** adbmsDriverInit(hspi);
196 .loc 1 42 3
197 0010 7868 ldr r0, [r7, #4]
198 0012 FFF7FEFF bl adbmsDriverInit
43:Core/Src/ADBMS_Abstraction.c **** numberofcells = numofcells;
199 .loc 1 43 17
200 0016 064A ldr r2, .L12
201 0018 FB78 ldrb r3, [r7, #3]
202 001a 1370 strb r3, [r2]
44:Core/Src/ADBMS_Abstraction.c **** numberofauxchannels = numofaux;
203 .loc 1 44 23
204 001c 054A ldr r2, .L12+4
205 001e BB78 ldrb r3, [r7, #2]
206 0020 1370 strb r3, [r2]
45:Core/Src/ADBMS_Abstraction.c ****
46:Core/Src/ADBMS_Abstraction.c **** return amsReset();
207 .loc 1 46 10
208 0022 FFF7FEFF bl amsReset
209 0026 0346 mov r3, r0
47:Core/Src/ADBMS_Abstraction.c **** }
210 .loc 1 47 1
211 0028 1846 mov r0, r3
212 002a 0837 adds r7, r7, #8
213 .cfi_def_cfa_offset 8
214 002c BD46 mov sp, r7
215 .cfi_def_cfa_register 13
216 @ sp needed
217 002e 80BD pop {r7, pc}
218 .L13:
219 .align 2
220 .L12:
221 0030 00000000 .word numberofcells
222 0034 00000000 .word numberofauxchannels
223 .cfi_endproc
224 .LFE131:
226 .section .text.amsWakeUp,"ax",%progbits
227 .align 1
228 .global amsWakeUp
229 .syntax unified
230 .thumb
231 .thumb_func
233 amsWakeUp:
234 .LFB132:
48:Core/Src/ADBMS_Abstraction.c ****
49:Core/Src/ADBMS_Abstraction.c **** uint8 amsWakeUp() {
235 .loc 1 49 19
236 .cfi_startproc
237 @ args = 0, pretend = 0, frame = 8
238 @ frame_needed = 1, uses_anonymous_args = 0
239 0000 80B5 push {r7, lr}
240 .cfi_def_cfa_offset 8
241 .cfi_offset 7, -8
242 .cfi_offset 14, -4
243 0002 82B0 sub sp, sp, #8
244 .cfi_def_cfa_offset 16
ARM GAS /tmp/cclV24WD.s page 6
245 0004 00AF add r7, sp, #0
246 .cfi_def_cfa_register 7
50:Core/Src/ADBMS_Abstraction.c **** uint8 buf[6];
51:Core/Src/ADBMS_Abstraction.c **** return readCMD(RDCFGA, buf, 6);
247 .loc 1 51 10
248 0006 3B46 mov r3, r7
249 0008 0622 movs r2, #6
250 000a 1946 mov r1, r3
251 000c 0220 movs r0, #2
252 000e FFF7FEFF bl readCMD
253 0012 0346 mov r3, r0
52:Core/Src/ADBMS_Abstraction.c **** }
254 .loc 1 52 1
255 0014 1846 mov r0, r3
256 0016 0837 adds r7, r7, #8
257 .cfi_def_cfa_offset 8
258 0018 BD46 mov sp, r7
259 .cfi_def_cfa_register 13
260 @ sp needed
261 001a 80BD pop {r7, pc}
262 .cfi_endproc
263 .LFE132:
265 .section .text.amsCellMeasurement,"ax",%progbits
266 .align 1
267 .global amsCellMeasurement
268 .syntax unified
269 .thumb
270 .thumb_func
272 amsCellMeasurement:
273 .LFB133:
53:Core/Src/ADBMS_Abstraction.c ****
54:Core/Src/ADBMS_Abstraction.c **** uint8 amsCellMeasurement(Cell_Module* module) {
274 .loc 1 54 47
275 .cfi_startproc
276 @ args = 0, pretend = 0, frame = 8
277 @ frame_needed = 1, uses_anonymous_args = 0
278 0000 80B5 push {r7, lr}
279 .cfi_def_cfa_offset 8
280 .cfi_offset 7, -8
281 .cfi_offset 14, -4
282 0002 82B0 sub sp, sp, #8
283 .cfi_def_cfa_offset 16
284 0004 00AF add r7, sp, #0
285 .cfi_def_cfa_register 7
286 0006 7860 str r0, [r7, #4]
55:Core/Src/ADBMS_Abstraction.c **** #warning check conversion counter to ensure that continous conversion has not been stopped
56:Core/Src/ADBMS_Abstraction.c **** #warning check for OW conditions: ADSV | ADSV_OW_0 / ADSV_OW_1
57:Core/Src/ADBMS_Abstraction.c **** return amsReadCellVoltages(module);
287 .loc 1 57 10
288 0008 7868 ldr r0, [r7, #4]
289 000a FFF7FEFF bl amsReadCellVoltages
290 000e 0346 mov r3, r0
58:Core/Src/ADBMS_Abstraction.c **** }
291 .loc 1 58 1
292 0010 1846 mov r0, r3
293 0012 0837 adds r7, r7, #8
294 .cfi_def_cfa_offset 8
ARM GAS /tmp/cclV24WD.s page 7
295 0014 BD46 mov sp, r7
296 .cfi_def_cfa_register 13
297 @ sp needed
298 0016 80BD pop {r7, pc}
299 .cfi_endproc
300 .LFE133:
302 .section .text.amsConfigCellMeasurement,"ax",%progbits
303 .align 1
304 .global amsConfigCellMeasurement
305 .syntax unified
306 .thumb
307 .thumb_func
309 amsConfigCellMeasurement:
310 .LFB134:
59:Core/Src/ADBMS_Abstraction.c ****
60:Core/Src/ADBMS_Abstraction.c **** uint8 amsConfigCellMeasurement(uint8 numberofChannels) {
311 .loc 1 60 56
312 .cfi_startproc
313 @ args = 0, pretend = 0, frame = 8
314 @ frame_needed = 1, uses_anonymous_args = 0
315 @ link register save eliminated.
316 0000 80B4 push {r7}
317 .cfi_def_cfa_offset 4
318 .cfi_offset 7, -4
319 0002 83B0 sub sp, sp, #12
320 .cfi_def_cfa_offset 16
321 0004 00AF add r7, sp, #0
322 .cfi_def_cfa_register 7
323 0006 0346 mov r3, r0
324 0008 FB71 strb r3, [r7, #7]
61:Core/Src/ADBMS_Abstraction.c **** numberofcells = numberofChannels;
325 .loc 1 61 17
326 000a 054A ldr r2, .L20
327 000c FB79 ldrb r3, [r7, #7]
328 000e 1370 strb r3, [r2]
62:Core/Src/ADBMS_Abstraction.c **** return 0;
329 .loc 1 62 10
330 0010 0023 movs r3, #0
63:Core/Src/ADBMS_Abstraction.c **** }
331 .loc 1 63 1
332 0012 1846 mov r0, r3
333 0014 0C37 adds r7, r7, #12
334 .cfi_def_cfa_offset 4
335 0016 BD46 mov sp, r7
336 .cfi_def_cfa_register 13
337 @ sp needed
338 0018 5DF8047B ldr r7, [sp], #4
339 .cfi_restore 7
340 .cfi_def_cfa_offset 0
341 001c 7047 bx lr
342 .L21:
343 001e 00BF .align 2
344 .L20:
345 0020 00000000 .word numberofcells
346 .cfi_endproc
347 .LFE134:
349 .global __aeabi_i2d
ARM GAS /tmp/cclV24WD.s page 8
350 .global __aeabi_dmul
351 .global __aeabi_dadd
352 .global __aeabi_d2f
353 .global __aeabi_d2uiz
354 .section .text.amsAuxAndStatusMeasurement,"ax",%progbits
355 .align 1
356 .global amsAuxAndStatusMeasurement
357 .syntax unified
358 .thumb
359 .thumb_func
361 amsAuxAndStatusMeasurement:
362 .LFB135:
64:Core/Src/ADBMS_Abstraction.c ****
65:Core/Src/ADBMS_Abstraction.c **** uint8 amsAuxAndStatusMeasurement(Cell_Module* module) {
363 .loc 1 65 55
364 .cfi_startproc
365 @ args = 0, pretend = 0, frame = 32
366 @ frame_needed = 1, uses_anonymous_args = 0
367 0000 80B5 push {r7, lr}
368 .cfi_def_cfa_offset 8
369 .cfi_offset 7, -8
370 .cfi_offset 14, -4
371 0002 88B0 sub sp, sp, #32
372 .cfi_def_cfa_offset 40
373 0004 00AF add r7, sp, #0
374 .cfi_def_cfa_register 7
375 0006 7860 str r0, [r7, #4]
66:Core/Src/ADBMS_Abstraction.c **** uint8 rxbuf[AUX_GROUP_A_SIZE] = {};
376 .loc 1 66 9
377 0008 07F11003 add r3, r7, #16
378 000c 0022 movs r2, #0
379 000e 1A60 str r2, [r3]
380 0010 9A80 strh r2, [r3, #4] @ movhi
381 .LBB6:
67:Core/Src/ADBMS_Abstraction.c ****
68:Core/Src/ADBMS_Abstraction.c **** CHECK_RETURN(readCMD(RDSTATC, rxbuf, STATUS_GROUP_C_SIZE));
382 .loc 1 68 3
383 0012 07F11003 add r3, r7, #16
384 0016 0622 movs r2, #6
385 0018 1946 mov r1, r3
386 001a 3220 movs r0, #50
387 001c FFF7FEFF bl readCMD
388 0020 0346 mov r3, r0
389 0022 FB77 strb r3, [r7, #31]
390 .loc 1 68 3 is_stmt 0 discriminator 1
391 0024 FB7F ldrb r3, [r7, #31] @ zero_extendqisi2
392 0026 002B cmp r3, #0
393 0028 01D0 beq .L23
394 002a FB7F ldrb r3, [r7, #31] @ zero_extendqisi2
395 .loc 1 68 3
396 002c 22E3 b .L33
397 .L23:
398 .LBE6:
69:Core/Src/ADBMS_Abstraction.c ****
70:Core/Src/ADBMS_Abstraction.c **** module->status.CS_FLT = rxbuf[0] | (rxbuf[1] << 8);
399 .loc 1 70 32 is_stmt 1
400 002e 3B7C ldrb r3, [r7, #16] @ zero_extendqisi2
ARM GAS /tmp/cclV24WD.s page 9
401 0030 1AB2 sxth r2, r3
402 .loc 1 70 44
403 0032 7B7C ldrb r3, [r7, #17] @ zero_extendqisi2
404 .loc 1 70 36
405 0034 1BB2 sxth r3, r3
406 0036 1B02 lsls r3, r3, #8
407 0038 1BB2 sxth r3, r3
408 003a 1343 orrs r3, r3, r2
409 003c 1BB2 sxth r3, r3
410 003e 9AB2 uxth r2, r3
411 .loc 1 70 25
412 0040 7B68 ldr r3, [r7, #4]
413 0042 A3F84820 strh r2, [r3, #72] @ movhi
71:Core/Src/ADBMS_Abstraction.c **** module->status.CCTS = rxbuf[2] | (rxbuf[3] << 8);
414 .loc 1 71 32
415 0046 BB7C ldrb r3, [r7, #18] @ zero_extendqisi2
416 0048 1AB2 sxth r2, r3
417 .loc 1 71 44
418 004a FB7C ldrb r3, [r7, #19] @ zero_extendqisi2
419 .loc 1 71 36
420 004c 1BB2 sxth r3, r3
421 004e 1B02 lsls r3, r3, #8
422 0050 1BB2 sxth r3, r3
423 0052 1343 orrs r3, r3, r2
424 0054 1BB2 sxth r3, r3
425 0056 C3F30C03 ubfx r3, r3, #0, #13
426 005a 99B2 uxth r1, r3
427 .loc 1 71 25
428 005c 7A68 ldr r2, [r7, #4]
429 005e B2F84A30 ldrh r3, [r2, #74] @ movhi
430 0062 61F3CF03 bfi r3, r1, #3, #13
431 0066 A2F84A30 strh r3, [r2, #74] @ movhi
72:Core/Src/ADBMS_Abstraction.c **** module->status.VA_OV = (rxbuf[4] >> 7) & 0x01;
432 .loc 1 72 33
433 006a 3B7D ldrb r3, [r7, #20] @ zero_extendqisi2
434 .loc 1 72 43
435 006c DB09 lsrs r3, r3, #7
436 006e DBB2 uxtb r3, r3
437 0070 03F00103 and r3, r3, #1
438 0074 D9B2 uxtb r1, r3
439 .loc 1 72 25
440 0076 7A68 ldr r2, [r7, #4]
441 0078 92F84C30 ldrb r3, [r2, #76]
442 007c 61F30003 bfi r3, r1, #0, #1
443 0080 82F84C30 strb r3, [r2, #76]
73:Core/Src/ADBMS_Abstraction.c **** module->status.VA_UV = (rxbuf[4] >> 6) & 0x01;
444 .loc 1 73 33
445 0084 3B7D ldrb r3, [r7, #20] @ zero_extendqisi2
446 .loc 1 73 43
447 0086 9B09 lsrs r3, r3, #6
448 0088 DBB2 uxtb r3, r3
449 008a 03F00103 and r3, r3, #1
450 008e D9B2 uxtb r1, r3
451 .loc 1 73 25
452 0090 7A68 ldr r2, [r7, #4]
453 0092 92F84C30 ldrb r3, [r2, #76]
454 0096 61F34103 bfi r3, r1, #1, #1
ARM GAS /tmp/cclV24WD.s page 10
455 009a 82F84C30 strb r3, [r2, #76]
74:Core/Src/ADBMS_Abstraction.c **** module->status.VD_OV = (rxbuf[4] >> 5) & 0x01;
456 .loc 1 74 33
457 009e 3B7D ldrb r3, [r7, #20] @ zero_extendqisi2
458 .loc 1 74 43
459 00a0 5B09 lsrs r3, r3, #5
460 00a2 DBB2 uxtb r3, r3
461 00a4 03F00103 and r3, r3, #1
462 00a8 D9B2 uxtb r1, r3
463 .loc 1 74 25
464 00aa 7A68 ldr r2, [r7, #4]
465 00ac 92F84C30 ldrb r3, [r2, #76]
466 00b0 61F38203 bfi r3, r1, #2, #1
467 00b4 82F84C30 strb r3, [r2, #76]
75:Core/Src/ADBMS_Abstraction.c **** module->status.VD_UV = (rxbuf[4] >> 4) & 0x01;
468 .loc 1 75 33
469 00b8 3B7D ldrb r3, [r7, #20] @ zero_extendqisi2
470 .loc 1 75 43
471 00ba 1B09 lsrs r3, r3, #4
472 00bc DBB2 uxtb r3, r3
473 00be 03F00103 and r3, r3, #1
474 00c2 D9B2 uxtb r1, r3
475 .loc 1 75 25
476 00c4 7A68 ldr r2, [r7, #4]
477 00c6 92F84C30 ldrb r3, [r2, #76]
478 00ca 61F3C303 bfi r3, r1, #3, #1
479 00ce 82F84C30 strb r3, [r2, #76]
76:Core/Src/ADBMS_Abstraction.c **** module->status.CED = (rxbuf[4] >> 3) & 0x01;
480 .loc 1 76 33
481 00d2 3B7D ldrb r3, [r7, #20] @ zero_extendqisi2
482 .loc 1 76 43
483 00d4 DB08 lsrs r3, r3, #3
484 00d6 DBB2 uxtb r3, r3
485 00d8 03F00103 and r3, r3, #1
486 00dc D9B2 uxtb r1, r3
487 .loc 1 76 25
488 00de 7A68 ldr r2, [r7, #4]
489 00e0 92F84C30 ldrb r3, [r2, #76]
490 00e4 61F30413 bfi r3, r1, #4, #1
491 00e8 82F84C30 strb r3, [r2, #76]
77:Core/Src/ADBMS_Abstraction.c **** module->status.CMED = (rxbuf[4] >> 2) & 0x01;
492 .loc 1 77 33
493 00ec 3B7D ldrb r3, [r7, #20] @ zero_extendqisi2
494 .loc 1 77 43
495 00ee 9B08 lsrs r3, r3, #2
496 00f0 DBB2 uxtb r3, r3
497 00f2 03F00103 and r3, r3, #1
498 00f6 D9B2 uxtb r1, r3
499 .loc 1 77 25
500 00f8 7A68 ldr r2, [r7, #4]
501 00fa 92F84C30 ldrb r3, [r2, #76]
502 00fe 61F34513 bfi r3, r1, #5, #1
503 0102 82F84C30 strb r3, [r2, #76]
78:Core/Src/ADBMS_Abstraction.c **** module->status.SED = (rxbuf[4] >> 1) & 0x01;
504 .loc 1 78 33
505 0106 3B7D ldrb r3, [r7, #20] @ zero_extendqisi2
506 .loc 1 78 43
ARM GAS /tmp/cclV24WD.s page 11
507 0108 5B08 lsrs r3, r3, #1
508 010a DBB2 uxtb r3, r3
509 010c 03F00103 and r3, r3, #1
510 0110 D9B2 uxtb r1, r3
511 .loc 1 78 25
512 0112 7A68 ldr r2, [r7, #4]
513 0114 92F84C30 ldrb r3, [r2, #76]
514 0118 61F38613 bfi r3, r1, #6, #1
515 011c 82F84C30 strb r3, [r2, #76]
79:Core/Src/ADBMS_Abstraction.c **** module->status.SMED = (rxbuf[4] >> 0) & 0x01;
516 .loc 1 79 33
517 0120 3B7D ldrb r3, [r7, #20] @ zero_extendqisi2
518 .loc 1 79 43
519 0122 03F00103 and r3, r3, #1
520 0126 D9B2 uxtb r1, r3
521 .loc 1 79 25
522 0128 7A68 ldr r2, [r7, #4]
523 012a 92F84C30 ldrb r3, [r2, #76]
524 012e 61F3C713 bfi r3, r1, #7, #1
525 0132 82F84C30 strb r3, [r2, #76]
80:Core/Src/ADBMS_Abstraction.c **** module->status.VDEL = (rxbuf[5] >> 7) & 0x01;
526 .loc 1 80 33
527 0136 7B7D ldrb r3, [r7, #21] @ zero_extendqisi2
528 .loc 1 80 43
529 0138 DB09 lsrs r3, r3, #7
530 013a DBB2 uxtb r3, r3
531 013c 03F00103 and r3, r3, #1
532 0140 D9B2 uxtb r1, r3
533 .loc 1 80 25
534 0142 7A68 ldr r2, [r7, #4]
535 0144 92F84D30 ldrb r3, [r2, #77]
536 0148 61F30003 bfi r3, r1, #0, #1
537 014c 82F84D30 strb r3, [r2, #77]
81:Core/Src/ADBMS_Abstraction.c **** module->status.VDE = (rxbuf[5] >> 6) & 0x01;
538 .loc 1 81 33
539 0150 7B7D ldrb r3, [r7, #21] @ zero_extendqisi2
540 .loc 1 81 43
541 0152 9B09 lsrs r3, r3, #6
542 0154 DBB2 uxtb r3, r3
543 0156 03F00103 and r3, r3, #1
544 015a D9B2 uxtb r1, r3
545 .loc 1 81 25
546 015c 7A68 ldr r2, [r7, #4]
547 015e 92F84D30 ldrb r3, [r2, #77]
548 0162 61F34103 bfi r3, r1, #1, #1
549 0166 82F84D30 strb r3, [r2, #77]
82:Core/Src/ADBMS_Abstraction.c **** module->status.COMPARE= (rxbuf[5] >> 5) & 0x01;
550 .loc 1 82 33
551 016a 7B7D ldrb r3, [r7, #21] @ zero_extendqisi2
552 .loc 1 82 43
553 016c 5B09 lsrs r3, r3, #5
554 016e DBB2 uxtb r3, r3
555 0170 03F00103 and r3, r3, #1
556 0174 D9B2 uxtb r1, r3
557 .loc 1 82 25
558 0176 7A68 ldr r2, [r7, #4]
559 0178 92F84D30 ldrb r3, [r2, #77]
ARM GAS /tmp/cclV24WD.s page 12
560 017c 61F38203 bfi r3, r1, #2, #1
561 0180 82F84D30 strb r3, [r2, #77]
83:Core/Src/ADBMS_Abstraction.c **** module->status.SPIFLT = (rxbuf[5] >> 4) & 0x01;
562 .loc 1 83 33
563 0184 7B7D ldrb r3, [r7, #21] @ zero_extendqisi2
564 .loc 1 83 43
565 0186 1B09 lsrs r3, r3, #4
566 0188 DBB2 uxtb r3, r3
567 018a 03F00103 and r3, r3, #1
568 018e D9B2 uxtb r1, r3
569 .loc 1 83 25
570 0190 7A68 ldr r2, [r7, #4]
571 0192 92F84D30 ldrb r3, [r2, #77]
572 0196 61F3C303 bfi r3, r1, #3, #1
573 019a 82F84D30 strb r3, [r2, #77]
84:Core/Src/ADBMS_Abstraction.c **** module->status.SLEEP = (rxbuf[5] >> 3) & 0x01;
574 .loc 1 84 33
575 019e 7B7D ldrb r3, [r7, #21] @ zero_extendqisi2
576 .loc 1 84 43
577 01a0 DB08 lsrs r3, r3, #3
578 01a2 DBB2 uxtb r3, r3
579 01a4 03F00103 and r3, r3, #1
580 01a8 D9B2 uxtb r1, r3
581 .loc 1 84 25
582 01aa 7A68 ldr r2, [r7, #4]
583 01ac 92F84D30 ldrb r3, [r2, #77]
584 01b0 61F30413 bfi r3, r1, #4, #1
585 01b4 82F84D30 strb r3, [r2, #77]
85:Core/Src/ADBMS_Abstraction.c **** module->status.THSD = (rxbuf[5] >> 2) & 0x01;
586 .loc 1 85 33
587 01b8 7B7D ldrb r3, [r7, #21] @ zero_extendqisi2
588 .loc 1 85 43
589 01ba 9B08 lsrs r3, r3, #2
590 01bc DBB2 uxtb r3, r3
591 01be 03F00103 and r3, r3, #1
592 01c2 D9B2 uxtb r1, r3
593 .loc 1 85 25
594 01c4 7A68 ldr r2, [r7, #4]
595 01c6 92F84D30 ldrb r3, [r2, #77]
596 01ca 61F34513 bfi r3, r1, #5, #1
597 01ce 82F84D30 strb r3, [r2, #77]
86:Core/Src/ADBMS_Abstraction.c **** module->status.TMODCHK= (rxbuf[5] >> 1) & 0x01;
598 .loc 1 86 33
599 01d2 7B7D ldrb r3, [r7, #21] @ zero_extendqisi2
600 .loc 1 86 43
601 01d4 5B08 lsrs r3, r3, #1
602 01d6 DBB2 uxtb r3, r3
603 01d8 03F00103 and r3, r3, #1
604 01dc D9B2 uxtb r1, r3
605 .loc 1 86 25
606 01de 7A68 ldr r2, [r7, #4]
607 01e0 92F84D30 ldrb r3, [r2, #77]
608 01e4 61F38613 bfi r3, r1, #6, #1
609 01e8 82F84D30 strb r3, [r2, #77]
87:Core/Src/ADBMS_Abstraction.c **** module->status.OSCCHK = (rxbuf[5] >> 0) & 0x01;
610 .loc 1 87 33
611 01ec 7B7D ldrb r3, [r7, #21] @ zero_extendqisi2
ARM GAS /tmp/cclV24WD.s page 13
612 .loc 1 87 43
613 01ee 03F00103 and r3, r3, #1
614 01f2 D9B2 uxtb r1, r3
615 .loc 1 87 25
616 01f4 7A68 ldr r2, [r7, #4]
617 01f6 92F84D30 ldrb r3, [r2, #77]
618 01fa 61F3C713 bfi r3, r1, #7, #1
619 01fe 82F84D30 strb r3, [r2, #77]
88:Core/Src/ADBMS_Abstraction.c ****
89:Core/Src/ADBMS_Abstraction.c **** if (pollCMD(PLAUX) == 0x0) { //TODO: check for SPI fault
620 .loc 1 89 7
621 0202 40F21E70 movw r0, #1822
622 0206 FFF7FEFF bl pollCMD
623 020a 0346 mov r3, r0
624 .loc 1 89 6 discriminator 1
625 020c 002B cmp r3, #0
626 020e 01D1 bne .L25
90:Core/Src/ADBMS_Abstraction.c **** return 0; // aux ADC data not ready
627 .loc 1 90 12
628 0210 0023 movs r3, #0
629 0212 2FE2 b .L33
630 .L25:
631 .LBB7:
91:Core/Src/ADBMS_Abstraction.c **** }
92:Core/Src/ADBMS_Abstraction.c ****
93:Core/Src/ADBMS_Abstraction.c **** CHECK_RETURN(readCMD(RDAUXA, rxbuf, AUX_GROUP_A_SIZE));
632 .loc 1 93 3
633 0214 07F11003 add r3, r7, #16
634 0218 0622 movs r2, #6
635 021a 1946 mov r1, r3
636 021c 1920 movs r0, #25
637 021e FFF7FEFF bl readCMD
638 0222 0346 mov r3, r0
639 0224 BB77 strb r3, [r7, #30]
640 .loc 1 93 3 is_stmt 0 discriminator 1
641 0226 BB7F ldrb r3, [r7, #30] @ zero_extendqisi2
642 0228 002B cmp r3, #0
643 022a 01D0 beq .L26
644 022c BB7F ldrb r3, [r7, #30] @ zero_extendqisi2
645 .loc 1 93 3
646 022e 21E2 b .L33
647 .L26:
648 .LBE7:
94:Core/Src/ADBMS_Abstraction.c ****
95:Core/Src/ADBMS_Abstraction.c **** module->auxVoltages[0] = mV_from_ADBMS6830(rxbuf[0] | (rxbuf[1] << 8));
649 .loc 1 95 28 is_stmt 1
650 0230 3B7C ldrb r3, [r7, #16] @ zero_extendqisi2
651 0232 1AB2 sxth r2, r3
652 0234 7B7C ldrb r3, [r7, #17] @ zero_extendqisi2
653 0236 1BB2 sxth r3, r3
654 0238 1B02 lsls r3, r3, #8
655 023a 1BB2 sxth r3, r3
656 023c 1343 orrs r3, r3, r2
657 023e 1BB2 sxth r3, r3
658 0240 1846 mov r0, r3
659 0242 FFF7FEFF bl __aeabi_i2d
660 0246 0FF23843 adr r3, .L34
ARM GAS /tmp/cclV24WD.s page 14
661 024a D3E90023 ldrd r2, [r3]
662 024e FFF7FEFF bl __aeabi_dmul
663 0252 0246 mov r2, r0
664 0254 0B46 mov r3, r1
665 0256 1046 mov r0, r2
666 0258 1946 mov r1, r3
667 025a 0FF22C43 adr r3, .L34+8
668 025e D3E90023 ldrd r2, [r3]
669 0262 FFF7FEFF bl __aeabi_dadd
670 0266 0246 mov r2, r0
671 0268 0B46 mov r3, r1
672 026a 1046 mov r0, r2
673 026c 1946 mov r1, r3
674 026e FFF7FEFF bl __aeabi_d2f
675 0272 0246 mov r2, r0 @ float
676 .loc 1 95 26
677 0274 7B68 ldr r3, [r7, #4]
678 0276 1A62 str r2, [r3, #32] @ float
96:Core/Src/ADBMS_Abstraction.c **** module->auxVoltages[1] = mV_from_ADBMS6830(rxbuf[2] | (rxbuf[3] << 8));
679 .loc 1 96 28
680 0278 BB7C ldrb r3, [r7, #18] @ zero_extendqisi2
681 027a 1AB2 sxth r2, r3
682 027c FB7C ldrb r3, [r7, #19] @ zero_extendqisi2
683 027e 1BB2 sxth r3, r3
684 0280 1B02 lsls r3, r3, #8
685 0282 1BB2 sxth r3, r3
686 0284 1343 orrs r3, r3, r2
687 0286 1BB2 sxth r3, r3
688 0288 1846 mov r0, r3
689 028a FFF7FEFF bl __aeabi_i2d
690 028e FCA3 adr r3, .L34
691 0290 D3E90023 ldrd r2, [r3]
692 0294 FFF7FEFF bl __aeabi_dmul
693 0298 0246 mov r2, r0
694 029a 0B46 mov r3, r1
695 029c 1046 mov r0, r2
696 029e 1946 mov r1, r3
697 02a0 F9A3 adr r3, .L34+8
698 02a2 D3E90023 ldrd r2, [r3]
699 02a6 FFF7FEFF bl __aeabi_dadd
700 02aa 0246 mov r2, r0
701 02ac 0B46 mov r3, r1
702 02ae 1046 mov r0, r2
703 02b0 1946 mov r1, r3
704 02b2 FFF7FEFF bl __aeabi_d2f
705 02b6 0246 mov r2, r0 @ float
706 .loc 1 96 26
707 02b8 7B68 ldr r3, [r7, #4]
708 02ba 5A62 str r2, [r3, #36] @ float
97:Core/Src/ADBMS_Abstraction.c **** module->auxVoltages[2] = mV_from_ADBMS6830(rxbuf[4] | (rxbuf[5] << 8));
709 .loc 1 97 28
710 02bc 3B7D ldrb r3, [r7, #20] @ zero_extendqisi2
711 02be 1AB2 sxth r2, r3
712 02c0 7B7D ldrb r3, [r7, #21] @ zero_extendqisi2
713 02c2 1BB2 sxth r3, r3
714 02c4 1B02 lsls r3, r3, #8
715 02c6 1BB2 sxth r3, r3
ARM GAS /tmp/cclV24WD.s page 15
716 02c8 1343 orrs r3, r3, r2
717 02ca 1BB2 sxth r3, r3
718 02cc 1846 mov r0, r3
719 02ce FFF7FEFF bl __aeabi_i2d
720 02d2 EBA3 adr r3, .L34
721 02d4 D3E90023 ldrd r2, [r3]
722 02d8 FFF7FEFF bl __aeabi_dmul
723 02dc 0246 mov r2, r0
724 02de 0B46 mov r3, r1
725 02e0 1046 mov r0, r2
726 02e2 1946 mov r1, r3
727 02e4 E8A3 adr r3, .L34+8
728 02e6 D3E90023 ldrd r2, [r3]
729 02ea FFF7FEFF bl __aeabi_dadd
730 02ee 0246 mov r2, r0
731 02f0 0B46 mov r3, r1
732 02f2 1046 mov r0, r2
733 02f4 1946 mov r1, r3
734 02f6 FFF7FEFF bl __aeabi_d2f
735 02fa 0246 mov r2, r0 @ float
736 .loc 1 97 26
737 02fc 7B68 ldr r3, [r7, #4]
738 02fe 9A62 str r2, [r3, #40] @ float
739 .LBB8:
98:Core/Src/ADBMS_Abstraction.c ****
99:Core/Src/ADBMS_Abstraction.c **** CHECK_RETURN(readCMD(RDAUXB, rxbuf, AUX_GROUP_A_SIZE));
740 .loc 1 99 3
741 0300 07F11003 add r3, r7, #16
742 0304 0622 movs r2, #6
743 0306 1946 mov r1, r3
744 0308 1A20 movs r0, #26
745 030a FFF7FEFF bl readCMD
746 030e 0346 mov r3, r0
747 0310 7B77 strb r3, [r7, #29]
748 .loc 1 99 3 is_stmt 0 discriminator 1
749 0312 7B7F ldrb r3, [r7, #29] @ zero_extendqisi2
750 0314 002B cmp r3, #0
751 0316 01D0 beq .L27
752 0318 7B7F ldrb r3, [r7, #29] @ zero_extendqisi2
753 .loc 1 99 3
754 031a ABE1 b .L33
755 .L27:
756 .LBE8:
100:Core/Src/ADBMS_Abstraction.c ****
101:Core/Src/ADBMS_Abstraction.c **** module->auxVoltages[3] = mV_from_ADBMS6830(rxbuf[0] | (rxbuf[1] << 8));
757 .loc 1 101 28 is_stmt 1
758 031c 3B7C ldrb r3, [r7, #16] @ zero_extendqisi2
759 031e 1AB2 sxth r2, r3
760 0320 7B7C ldrb r3, [r7, #17] @ zero_extendqisi2
761 0322 1BB2 sxth r3, r3
762 0324 1B02 lsls r3, r3, #8
763 0326 1BB2 sxth r3, r3
764 0328 1343 orrs r3, r3, r2
765 032a 1BB2 sxth r3, r3
766 032c 1846 mov r0, r3
767 032e FFF7FEFF bl __aeabi_i2d
768 0332 D3A3 adr r3, .L34
ARM GAS /tmp/cclV24WD.s page 16
769 0334 D3E90023 ldrd r2, [r3]
770 0338 FFF7FEFF bl __aeabi_dmul
771 033c 0246 mov r2, r0
772 033e 0B46 mov r3, r1
773 0340 1046 mov r0, r2
774 0342 1946 mov r1, r3
775 0344 D0A3 adr r3, .L34+8
776 0346 D3E90023 ldrd r2, [r3]
777 034a FFF7FEFF bl __aeabi_dadd
778 034e 0246 mov r2, r0
779 0350 0B46 mov r3, r1
780 0352 1046 mov r0, r2
781 0354 1946 mov r1, r3
782 0356 FFF7FEFF bl __aeabi_d2f
783 035a 0246 mov r2, r0 @ float
784 .loc 1 101 26
785 035c 7B68 ldr r3, [r7, #4]
786 035e DA62 str r2, [r3, #44] @ float
102:Core/Src/ADBMS_Abstraction.c **** module->auxVoltages[4] = mV_from_ADBMS6830(rxbuf[2] | (rxbuf[3] << 8));
787 .loc 1 102 28
788 0360 BB7C ldrb r3, [r7, #18] @ zero_extendqisi2
789 0362 1AB2 sxth r2, r3
790 0364 FB7C ldrb r3, [r7, #19] @ zero_extendqisi2
791 0366 1BB2 sxth r3, r3
792 0368 1B02 lsls r3, r3, #8
793 036a 1BB2 sxth r3, r3
794 036c 1343 orrs r3, r3, r2
795 036e 1BB2 sxth r3, r3
796 0370 1846 mov r0, r3
797 0372 FFF7FEFF bl __aeabi_i2d
798 0376 C2A3 adr r3, .L34
799 0378 D3E90023 ldrd r2, [r3]
800 037c FFF7FEFF bl __aeabi_dmul
801 0380 0246 mov r2, r0
802 0382 0B46 mov r3, r1
803 0384 1046 mov r0, r2
804 0386 1946 mov r1, r3
805 0388 BFA3 adr r3, .L34+8
806 038a D3E90023 ldrd r2, [r3]
807 038e FFF7FEFF bl __aeabi_dadd
808 0392 0246 mov r2, r0
809 0394 0B46 mov r3, r1
810 0396 1046 mov r0, r2
811 0398 1946 mov r1, r3
812 039a FFF7FEFF bl __aeabi_d2f
813 039e 0246 mov r2, r0 @ float
814 .loc 1 102 26
815 03a0 7B68 ldr r3, [r7, #4]
816 03a2 1A63 str r2, [r3, #48] @ float
103:Core/Src/ADBMS_Abstraction.c **** module->auxVoltages[5] = mV_from_ADBMS6830(rxbuf[4] | (rxbuf[5] << 8));
817 .loc 1 103 28
818 03a4 3B7D ldrb r3, [r7, #20] @ zero_extendqisi2
819 03a6 1AB2 sxth r2, r3
820 03a8 7B7D ldrb r3, [r7, #21] @ zero_extendqisi2
821 03aa 1BB2 sxth r3, r3
822 03ac 1B02 lsls r3, r3, #8
823 03ae 1BB2 sxth r3, r3
ARM GAS /tmp/cclV24WD.s page 17
824 03b0 1343 orrs r3, r3, r2
825 03b2 1BB2 sxth r3, r3
826 03b4 1846 mov r0, r3
827 03b6 FFF7FEFF bl __aeabi_i2d
828 03ba B1A3 adr r3, .L34
829 03bc D3E90023 ldrd r2, [r3]
830 03c0 FFF7FEFF bl __aeabi_dmul
831 03c4 0246 mov r2, r0
832 03c6 0B46 mov r3, r1
833 03c8 1046 mov r0, r2
834 03ca 1946 mov r1, r3
835 03cc AEA3 adr r3, .L34+8
836 03ce D3E90023 ldrd r2, [r3]
837 03d2 FFF7FEFF bl __aeabi_dadd
838 03d6 0246 mov r2, r0
839 03d8 0B46 mov r3, r1
840 03da 1046 mov r0, r2
841 03dc 1946 mov r1, r3
842 03de FFF7FEFF bl __aeabi_d2f
843 03e2 0246 mov r2, r0 @ float
844 .loc 1 103 26
845 03e4 7B68 ldr r3, [r7, #4]
846 03e6 5A63 str r2, [r3, #52] @ float
847 .LBB9:
104:Core/Src/ADBMS_Abstraction.c ****
105:Core/Src/ADBMS_Abstraction.c **** CHECK_RETURN(readCMD(RDAUXC, rxbuf, AUX_GROUP_A_SIZE));
848 .loc 1 105 3
849 03e8 07F11003 add r3, r7, #16
850 03ec 0622 movs r2, #6
851 03ee 1946 mov r1, r3
852 03f0 1B20 movs r0, #27
853 03f2 FFF7FEFF bl readCMD
854 03f6 0346 mov r3, r0
855 03f8 3B77 strb r3, [r7, #28]
856 .loc 1 105 3 is_stmt 0 discriminator 1
857 03fa 3B7F ldrb r3, [r7, #28] @ zero_extendqisi2
858 03fc 002B cmp r3, #0
859 03fe 01D0 beq .L28
860 0400 3B7F ldrb r3, [r7, #28] @ zero_extendqisi2
861 .loc 1 105 3
862 0402 37E1 b .L33
863 .L28:
864 .LBE9:
106:Core/Src/ADBMS_Abstraction.c ****
107:Core/Src/ADBMS_Abstraction.c **** module->auxVoltages[6] = mV_from_ADBMS6830(rxbuf[0] | (rxbuf[1] << 8));
865 .loc 1 107 28 is_stmt 1
866 0404 3B7C ldrb r3, [r7, #16] @ zero_extendqisi2
867 0406 1AB2 sxth r2, r3
868 0408 7B7C ldrb r3, [r7, #17] @ zero_extendqisi2
869 040a 1BB2 sxth r3, r3
870 040c 1B02 lsls r3, r3, #8
871 040e 1BB2 sxth r3, r3
872 0410 1343 orrs r3, r3, r2
873 0412 1BB2 sxth r3, r3
874 0414 1846 mov r0, r3
875 0416 FFF7FEFF bl __aeabi_i2d
876 041a 99A3 adr r3, .L34
ARM GAS /tmp/cclV24WD.s page 18
877 041c D3E90023 ldrd r2, [r3]
878 0420 FFF7FEFF bl __aeabi_dmul
879 0424 0246 mov r2, r0
880 0426 0B46 mov r3, r1
881 0428 1046 mov r0, r2
882 042a 1946 mov r1, r3
883 042c 96A3 adr r3, .L34+8
884 042e D3E90023 ldrd r2, [r3]
885 0432 FFF7FEFF bl __aeabi_dadd
886 0436 0246 mov r2, r0
887 0438 0B46 mov r3, r1
888 043a 1046 mov r0, r2
889 043c 1946 mov r1, r3
890 043e FFF7FEFF bl __aeabi_d2f
891 0442 0246 mov r2, r0 @ float
892 .loc 1 107 26
893 0444 7B68 ldr r3, [r7, #4]
894 0446 9A63 str r2, [r3, #56] @ float
108:Core/Src/ADBMS_Abstraction.c **** module->auxVoltages[7] = mV_from_ADBMS6830(rxbuf[2] | (rxbuf[3] << 8));
895 .loc 1 108 28
896 0448 BB7C ldrb r3, [r7, #18] @ zero_extendqisi2
897 044a 1AB2 sxth r2, r3
898 044c FB7C ldrb r3, [r7, #19] @ zero_extendqisi2
899 044e 1BB2 sxth r3, r3
900 0450 1B02 lsls r3, r3, #8
901 0452 1BB2 sxth r3, r3
902 0454 1343 orrs r3, r3, r2
903 0456 1BB2 sxth r3, r3
904 0458 1846 mov r0, r3
905 045a FFF7FEFF bl __aeabi_i2d
906 045e 88A3 adr r3, .L34
907 0460 D3E90023 ldrd r2, [r3]
908 0464 FFF7FEFF bl __aeabi_dmul
909 0468 0246 mov r2, r0
910 046a 0B46 mov r3, r1
911 046c 1046 mov r0, r2
912 046e 1946 mov r1, r3
913 0470 85A3 adr r3, .L34+8
914 0472 D3E90023 ldrd r2, [r3]
915 0476 FFF7FEFF bl __aeabi_dadd
916 047a 0246 mov r2, r0
917 047c 0B46 mov r3, r1
918 047e 1046 mov r0, r2
919 0480 1946 mov r1, r3
920 0482 FFF7FEFF bl __aeabi_d2f
921 0486 0246 mov r2, r0 @ float
922 .loc 1 108 26
923 0488 7B68 ldr r3, [r7, #4]
924 048a DA63 str r2, [r3, #60] @ float
109:Core/Src/ADBMS_Abstraction.c **** module->auxVoltages[8] = mV_from_ADBMS6830(rxbuf[4] | (rxbuf[5] << 8));
925 .loc 1 109 28
926 048c 3B7D ldrb r3, [r7, #20] @ zero_extendqisi2
927 048e 1AB2 sxth r2, r3
928 0490 7B7D ldrb r3, [r7, #21] @ zero_extendqisi2
929 0492 1BB2 sxth r3, r3
930 0494 1B02 lsls r3, r3, #8
931 0496 1BB2 sxth r3, r3
ARM GAS /tmp/cclV24WD.s page 19
932 0498 1343 orrs r3, r3, r2
933 049a 1BB2 sxth r3, r3
934 049c 1846 mov r0, r3
935 049e FFF7FEFF bl __aeabi_i2d
936 04a2 77A3 adr r3, .L34
937 04a4 D3E90023 ldrd r2, [r3]
938 04a8 FFF7FEFF bl __aeabi_dmul
939 04ac 0246 mov r2, r0
940 04ae 0B46 mov r3, r1
941 04b0 1046 mov r0, r2
942 04b2 1946 mov r1, r3
943 04b4 74A3 adr r3, .L34+8
944 04b6 D3E90023 ldrd r2, [r3]
945 04ba FFF7FEFF bl __aeabi_dadd
946 04be 0246 mov r2, r0
947 04c0 0B46 mov r3, r1
948 04c2 1046 mov r0, r2
949 04c4 1946 mov r1, r3
950 04c6 FFF7FEFF bl __aeabi_d2f
951 04ca 0246 mov r2, r0 @ float
952 .loc 1 109 26
953 04cc 7B68 ldr r3, [r7, #4]
954 04ce 1A64 str r2, [r3, #64] @ float
955 .LBB10:
110:Core/Src/ADBMS_Abstraction.c ****
111:Core/Src/ADBMS_Abstraction.c **** CHECK_RETURN(readCMD(RDAUXD, rxbuf, AUX_GROUP_A_SIZE));
956 .loc 1 111 3
957 04d0 07F11003 add r3, r7, #16
958 04d4 0622 movs r2, #6
959 04d6 1946 mov r1, r3
960 04d8 1F20 movs r0, #31
961 04da FFF7FEFF bl readCMD
962 04de 0346 mov r3, r0
963 04e0 FB76 strb r3, [r7, #27]
964 .loc 1 111 3 is_stmt 0 discriminator 1
965 04e2 FB7E ldrb r3, [r7, #27] @ zero_extendqisi2
966 04e4 002B cmp r3, #0
967 04e6 01D0 beq .L29
968 04e8 FB7E ldrb r3, [r7, #27] @ zero_extendqisi2
969 .loc 1 111 3
970 04ea C3E0 b .L33
971 .L29:
972 .LBE10:
112:Core/Src/ADBMS_Abstraction.c ****
113:Core/Src/ADBMS_Abstraction.c **** module->auxVoltages[9] = mV_from_ADBMS6830(rxbuf[0] | (rxbuf[1] << 8));
973 .loc 1 113 28 is_stmt 1
974 04ec 3B7C ldrb r3, [r7, #16] @ zero_extendqisi2
975 04ee 1AB2 sxth r2, r3
976 04f0 7B7C ldrb r3, [r7, #17] @ zero_extendqisi2
977 04f2 1BB2 sxth r3, r3
978 04f4 1B02 lsls r3, r3, #8
979 04f6 1BB2 sxth r3, r3
980 04f8 1343 orrs r3, r3, r2
981 04fa 1BB2 sxth r3, r3
982 04fc 1846 mov r0, r3
983 04fe FFF7FEFF bl __aeabi_i2d
984 0502 5FA3 adr r3, .L34
ARM GAS /tmp/cclV24WD.s page 20
985 0504 D3E90023 ldrd r2, [r3]
986 0508 FFF7FEFF bl __aeabi_dmul
987 050c 0246 mov r2, r0
988 050e 0B46 mov r3, r1
989 0510 1046 mov r0, r2
990 0512 1946 mov r1, r3
991 0514 5CA3 adr r3, .L34+8
992 0516 D3E90023 ldrd r2, [r3]
993 051a FFF7FEFF bl __aeabi_dadd
994 051e 0246 mov r2, r0
995 0520 0B46 mov r3, r1
996 0522 1046 mov r0, r2
997 0524 1946 mov r1, r3
998 0526 FFF7FEFF bl __aeabi_d2f
999 052a 0246 mov r2, r0 @ float
1000 .loc 1 113 26
1001 052c 7B68 ldr r3, [r7, #4]
1002 052e 5A64 str r2, [r3, #68] @ float
1003 .LBB11:
114:Core/Src/ADBMS_Abstraction.c ****
115:Core/Src/ADBMS_Abstraction.c **** uint8 rxbuffer[STATUS_GROUP_A_SIZE];
116:Core/Src/ADBMS_Abstraction.c ****
117:Core/Src/ADBMS_Abstraction.c **** CHECK_RETURN(readCMD(RDSTATA, rxbuffer, STATUS_GROUP_A_SIZE));
1004 .loc 1 117 3
1005 0530 07F10803 add r3, r7, #8
1006 0534 0622 movs r2, #6
1007 0536 1946 mov r1, r3
1008 0538 3020 movs r0, #48
1009 053a FFF7FEFF bl readCMD
1010 053e 0346 mov r3, r0
1011 0540 BB76 strb r3, [r7, #26]
1012 .loc 1 117 3 is_stmt 0 discriminator 1
1013 0542 BB7E ldrb r3, [r7, #26] @ zero_extendqisi2
1014 0544 002B cmp r3, #0
1015 0546 01D0 beq .L30
1016 0548 BB7E ldrb r3, [r7, #26] @ zero_extendqisi2
1017 .loc 1 117 3
1018 054a 93E0 b .L33
1019 .L30:
1020 .LBE11:
118:Core/Src/ADBMS_Abstraction.c ****
119:Core/Src/ADBMS_Abstraction.c **** module->internalDieTemp = rxbuffer[2] | (rxbuffer[3] << 8);
1021 .loc 1 119 37 is_stmt 1
1022 054c BB7A ldrb r3, [r7, #10] @ zero_extendqisi2
1023 054e 1AB2 sxth r2, r3
1024 .loc 1 119 52
1025 0550 FB7A ldrb r3, [r7, #11] @ zero_extendqisi2
1026 .loc 1 119 41
1027 0552 1BB2 sxth r3, r3
1028 0554 1B02 lsls r3, r3, #8
1029 0556 1BB2 sxth r3, r3
1030 0558 1343 orrs r3, r3, r2
1031 055a 1BB2 sxth r3, r3
1032 055c 9AB2 uxth r2, r3
1033 .loc 1 119 27
1034 055e 7B68 ldr r3, [r7, #4]
1035 0560 A3F84E20 strh r2, [r3, #78] @ movhi
ARM GAS /tmp/cclV24WD.s page 21
1036 .LBB12:
120:Core/Src/ADBMS_Abstraction.c ****
121:Core/Src/ADBMS_Abstraction.c **** CHECK_RETURN(readCMD(RDSTATB, rxbuffer, STATUS_GROUP_B_SIZE));
1037 .loc 1 121 3
1038 0564 07F10803 add r3, r7, #8
1039 0568 0622 movs r2, #6
1040 056a 1946 mov r1, r3
1041 056c 3120 movs r0, #49
1042 056e FFF7FEFF bl readCMD
1043 0572 0346 mov r3, r0
1044 0574 7B76 strb r3, [r7, #25]
1045 .loc 1 121 3 is_stmt 0 discriminator 1
1046 0576 7B7E ldrb r3, [r7, #25] @ zero_extendqisi2
1047 0578 002B cmp r3, #0
1048 057a 01D0 beq .L31
1049 057c 7B7E ldrb r3, [r7, #25] @ zero_extendqisi2
1050 .loc 1 121 3
1051 057e 79E0 b .L33
1052 .L31:
1053 .LBE12:
122:Core/Src/ADBMS_Abstraction.c **** module->digitalSupplyVoltage = mV_from_ADBMS6830(rxbuffer[0] | (rxbuffer[1] << 8));
1054 .loc 1 122 34 is_stmt 1
1055 0580 3B7A ldrb r3, [r7, #8] @ zero_extendqisi2
1056 0582 1AB2 sxth r2, r3
1057 0584 7B7A ldrb r3, [r7, #9] @ zero_extendqisi2
1058 0586 1BB2 sxth r3, r3
1059 0588 1B02 lsls r3, r3, #8
1060 058a 1BB2 sxth r3, r3
1061 058c 1343 orrs r3, r3, r2
1062 058e 1BB2 sxth r3, r3
1063 0590 1846 mov r0, r3
1064 0592 FFF7FEFF bl __aeabi_i2d
1065 0596 3AA3 adr r3, .L34
1066 0598 D3E90023 ldrd r2, [r3]
1067 059c FFF7FEFF bl __aeabi_dmul
1068 05a0 0246 mov r2, r0
1069 05a2 0B46 mov r3, r1
1070 05a4 1046 mov r0, r2
1071 05a6 1946 mov r1, r3
1072 05a8 37A3 adr r3, .L34+8
1073 05aa D3E90023 ldrd r2, [r3]
1074 05ae FFF7FEFF bl __aeabi_dadd
1075 05b2 0246 mov r2, r0
1076 05b4 0B46 mov r3, r1
1077 .loc 1 122 32
1078 05b6 1046 mov r0, r2
1079 05b8 1946 mov r1, r3
1080 05ba FFF7FEFF bl __aeabi_d2uiz
1081 05be 0346 mov r3, r0
1082 05c0 9AB2 uxth r2, r3
1083 05c2 7B68 ldr r3, [r7, #4]
1084 05c4 A3F85220 strh r2, [r3, #82] @ movhi
123:Core/Src/ADBMS_Abstraction.c **** module->analogSupplyVoltage = mV_from_ADBMS6830(rxbuffer[2] | (rxbuffer[3] << 8));
1085 .loc 1 123 34
1086 05c8 BB7A ldrb r3, [r7, #10] @ zero_extendqisi2
1087 05ca 1AB2 sxth r2, r3
1088 05cc FB7A ldrb r3, [r7, #11] @ zero_extendqisi2
ARM GAS /tmp/cclV24WD.s page 22
1089 05ce 1BB2 sxth r3, r3
1090 05d0 1B02 lsls r3, r3, #8
1091 05d2 1BB2 sxth r3, r3
1092 05d4 1343 orrs r3, r3, r2
1093 05d6 1BB2 sxth r3, r3
1094 05d8 1846 mov r0, r3
1095 05da FFF7FEFF bl __aeabi_i2d
1096 05de 28A3 adr r3, .L34
1097 05e0 D3E90023 ldrd r2, [r3]
1098 05e4 FFF7FEFF bl __aeabi_dmul
1099 05e8 0246 mov r2, r0
1100 05ea 0B46 mov r3, r1
1101 05ec 1046 mov r0, r2
1102 05ee 1946 mov r1, r3
1103 05f0 25A3 adr r3, .L34+8
1104 05f2 D3E90023 ldrd r2, [r3]
1105 05f6 FFF7FEFF bl __aeabi_dadd
1106 05fa 0246 mov r2, r0
1107 05fc 0B46 mov r3, r1
1108 .loc 1 123 32
1109 05fe 1046 mov r0, r2
1110 0600 1946 mov r1, r3
1111 0602 FFF7FEFF bl __aeabi_d2uiz
1112 0606 0346 mov r3, r0
1113 0608 9AB2 uxth r2, r3
1114 060a 7B68 ldr r3, [r7, #4]
1115 060c A3F85020 strh r2, [r3, #80] @ movhi
124:Core/Src/ADBMS_Abstraction.c **** module->refVoltage = mV_from_ADBMS6830(rxbuffer[4] | (rxbuffer[5] << 8));
1116 .loc 1 124 34
1117 0610 3B7B ldrb r3, [r7, #12] @ zero_extendqisi2
1118 0612 1AB2 sxth r2, r3
1119 0614 7B7B ldrb r3, [r7, #13] @ zero_extendqisi2
1120 0616 1BB2 sxth r3, r3
1121 0618 1B02 lsls r3, r3, #8
1122 061a 1BB2 sxth r3, r3
1123 061c 1343 orrs r3, r3, r2
1124 061e 1BB2 sxth r3, r3
1125 0620 1846 mov r0, r3
1126 0622 FFF7FEFF bl __aeabi_i2d
1127 0626 16A3 adr r3, .L34
1128 0628 D3E90023 ldrd r2, [r3]
1129 062c FFF7FEFF bl __aeabi_dmul
1130 0630 0246 mov r2, r0
1131 0632 0B46 mov r3, r1
1132 0634 1046 mov r0, r2
1133 0636 1946 mov r1, r3
1134 0638 13A3 adr r3, .L34+8
1135 063a D3E90023 ldrd r2, [r3]
1136 063e FFF7FEFF bl __aeabi_dadd
1137 0642 0246 mov r2, r0
1138 0644 0B46 mov r3, r1
1139 .loc 1 124 32
1140 0646 1046 mov r0, r2
1141 0648 1946 mov r1, r3
1142 064a FFF7FEFF bl __aeabi_d2uiz
1143 064e 0346 mov r3, r0
1144 0650 9AB2 uxth r2, r3
ARM GAS /tmp/cclV24WD.s page 23
1145 0652 7B68 ldr r3, [r7, #4]
1146 0654 A3F85620 strh r2, [r3, #86] @ movhi
1147 .LBB13:
125:Core/Src/ADBMS_Abstraction.c ****
126:Core/Src/ADBMS_Abstraction.c **** CHECK_RETURN(writeCMD(ADAX | ADAX_CONV_ALL, NULL, 0)); //start aux measurement for next cycle
1148 .loc 1 126 3
1149 0658 0022 movs r2, #0
1150 065a 0021 movs r1, #0
1151 065c 4FF48260 mov r0, #1040
1152 0660 FFF7FEFF bl writeCMD
1153 0664 0346 mov r3, r0
1154 0666 3B76 strb r3, [r7, #24]
1155 .loc 1 126 3 is_stmt 0 discriminator 1
1156 0668 3B7E ldrb r3, [r7, #24] @ zero_extendqisi2
1157 066a 002B cmp r3, #0
1158 066c 01D0 beq .L32
1159 066e 3B7E ldrb r3, [r7, #24] @ zero_extendqisi2
1160 .loc 1 126 3
1161 0670 00E0 b .L33
1162 .L32:
1163 .LBE13:
127:Core/Src/ADBMS_Abstraction.c ****
128:Core/Src/ADBMS_Abstraction.c **** return 0;
1164 .loc 1 128 10 is_stmt 1
1165 0672 0023 movs r3, #0
1166 .L33:
129:Core/Src/ADBMS_Abstraction.c **** }
1167 .loc 1 129 1
1168 0674 1846 mov r0, r3
1169 0676 2037 adds r7, r7, #32
1170 .cfi_def_cfa_offset 8
1171 0678 BD46 mov sp, r7
1172 .cfi_def_cfa_register 13
1173 @ sp needed
1174 067a 80BD pop {r7, pc}
1175 .L35:
1176 067c AFF30080 .align 3
1177 .L34:
1178 0680 33333333 .word 858993459
1179 0684 3333C33F .word 1069757235
1180 0688 00000000 .word 0
1181 068c 00709740 .word 1083666432
1182 .cfi_endproc
1183 .LFE135:
1185 .section .text.amsConfigBalancing,"ax",%progbits
1186 .align 1
1187 .global amsConfigBalancing
1188 .syntax unified
1189 .thumb
1190 .thumb_func
1192 amsConfigBalancing:
1193 .LFB136:
130:Core/Src/ADBMS_Abstraction.c ****
131:Core/Src/ADBMS_Abstraction.c **** uint8 amsConfigBalancing(uint32 channels, uint8 dutyCycle) {
1194 .loc 1 131 60
1195 .cfi_startproc
1196 @ args = 0, pretend = 0, frame = 24
ARM GAS /tmp/cclV24WD.s page 24
1197 @ frame_needed = 1, uses_anonymous_args = 0
1198 0000 80B5 push {r7, lr}
1199 .cfi_def_cfa_offset 8
1200 .cfi_offset 7, -8
1201 .cfi_offset 14, -4
1202 0002 86B0 sub sp, sp, #24
1203 .cfi_def_cfa_offset 32
1204 0004 00AF add r7, sp, #0
1205 .cfi_def_cfa_register 7
1206 0006 7860 str r0, [r7, #4]
1207 0008 0B46 mov r3, r1
1208 000a FB70 strb r3, [r7, #3]
132:Core/Src/ADBMS_Abstraction.c **** uint8 buffer_a[PWM_GROUP_A_SIZE] = {};
1209 .loc 1 132 9
1210 000c 07F10C03 add r3, r7, #12
1211 0010 0022 movs r2, #0
1212 0012 1A60 str r2, [r3]
1213 0014 9A80 strh r2, [r3, #4] @ movhi
133:Core/Src/ADBMS_Abstraction.c **** uint8 buffer_b[PWM_GROUP_B_SIZE] = {};
1214 .loc 1 133 9
1215 0016 0023 movs r3, #0
1216 0018 3B81 strh r3, [r7, #8] @ movhi
1217 .LBB14:
134:Core/Src/ADBMS_Abstraction.c **** CHECK_RETURN(writeCMD(ADCV | ADCV_CONT, NULL, 0)); //start continuous cell voltage measurement wi
1218 .loc 1 134 3
1219 001a 0022 movs r2, #0
1220 001c 0021 movs r1, #0
1221 001e 4FF43870 mov r0, #736
1222 0022 FFF7FEFF bl writeCMD
1223 0026 0346 mov r3, r0
1224 0028 FB75 strb r3, [r7, #23]
1225 .loc 1 134 3 is_stmt 0 discriminator 1
1226 002a FB7D ldrb r3, [r7, #23] @ zero_extendqisi2
1227 002c 002B cmp r3, #0
1228 002e 01D0 beq .L37
1229 0030 FB7D ldrb r3, [r7, #23] @ zero_extendqisi2
1230 .loc 1 134 3
1231 0032 FDE0 b .L76
1232 .L37:
1233 .LBE14:
1234 .LBB15:
135:Core/Src/ADBMS_Abstraction.c **** CHECK_RETURN(readCMD(RDPWMA, buffer_a, PWM_GROUP_A_SIZE));
1235 .loc 1 135 3 is_stmt 1
1236 0034 07F10C03 add r3, r7, #12
1237 0038 0622 movs r2, #6
1238 003a 1946 mov r1, r3
1239 003c 2220 movs r0, #34
1240 003e FFF7FEFF bl readCMD
1241 0042 0346 mov r3, r0
1242 0044 BB75 strb r3, [r7, #22]
1243 .loc 1 135 3 is_stmt 0 discriminator 1
1244 0046 BB7D ldrb r3, [r7, #22] @ zero_extendqisi2
1245 0048 002B cmp r3, #0
1246 004a 01D0 beq .L39
1247 004c BB7D ldrb r3, [r7, #22] @ zero_extendqisi2
1248 .loc 1 135 3
1249 004e EFE0 b .L76
ARM GAS /tmp/cclV24WD.s page 25
1250 .L39:
1251 .LBE15:
1252 .LBB16:
136:Core/Src/ADBMS_Abstraction.c **** CHECK_RETURN(readCMD(RDPWMB, buffer_b, PWM_GROUP_B_SIZE));
1253 .loc 1 136 3 is_stmt 1
1254 0050 07F10803 add r3, r7, #8
1255 0054 0222 movs r2, #2
1256 0056 1946 mov r1, r3
1257 0058 2320 movs r0, #35
1258 005a FFF7FEFF bl readCMD
1259 005e 0346 mov r3, r0
1260 0060 7B75 strb r3, [r7, #21]
1261 .loc 1 136 3 is_stmt 0 discriminator 1
1262 0062 7B7D ldrb r3, [r7, #21] @ zero_extendqisi2
1263 0064 002B cmp r3, #0
1264 0066 01D0 beq .L40
1265 0068 7B7D ldrb r3, [r7, #21] @ zero_extendqisi2
1266 .loc 1 136 3
1267 006a E1E0 b .L76
1268 .L40:
1269 .LBE16:
137:Core/Src/ADBMS_Abstraction.c ****
138:Core/Src/ADBMS_Abstraction.c **** if (dutyCycle > 0x0F) { // there are only 4 bits for duty cycle
1270 .loc 1 138 6 is_stmt 1
1271 006c FB78 ldrb r3, [r7, #3] @ zero_extendqisi2
1272 006e 0F2B cmp r3, #15
1273 0070 01D9 bls .L41
139:Core/Src/ADBMS_Abstraction.c **** return 1;
1274 .loc 1 139 12
1275 0072 0123 movs r3, #1
1276 0074 DCE0 b .L76
1277 .L41:
140:Core/Src/ADBMS_Abstraction.c **** }
141:Core/Src/ADBMS_Abstraction.c ****
142:Core/Src/ADBMS_Abstraction.c **** buffer_a[0] = ((channels & (1 << 0)) ? dutyCycle : 0) | ((channels & (1 << 1)) ? (dutyCycle << 4)
1278 .loc 1 142 28
1279 0076 7B68 ldr r3, [r7, #4]
1280 0078 03F00103 and r3, r3, #1
1281 .loc 1 142 57
1282 007c 002B cmp r3, #0
1283 007e 02D0 beq .L42
1284 .loc 1 142 57 is_stmt 0 discriminator 1
1285 0080 97F90320 ldrsb r2, [r7, #3]
1286 0084 00E0 b .L43
1287 .L42:
1288 .loc 1 142 57 discriminator 2
1289 0086 0022 movs r2, #0
1290 .L43:
1291 .loc 1 142 70 is_stmt 1 discriminator 4
1292 0088 7B68 ldr r3, [r7, #4]
1293 008a 03F00203 and r3, r3, #2
1294 .loc 1 142 57 discriminator 4
1295 008e 002B cmp r3, #0
1296 0090 04D0 beq .L44
1297 .loc 1 142 57 is_stmt 0 discriminator 5
1298 0092 97F90330 ldrsb r3, [r7, #3]
1299 0096 1B01 lsls r3, r3, #4
ARM GAS /tmp/cclV24WD.s page 26
1300 0098 5BB2 sxtb r3, r3
1301 009a 00E0 b .L45
1302 .L44:
1303 .loc 1 142 57 discriminator 6
1304 009c 0023 movs r3, #0
1305 .L45:
1306 .loc 1 142 57 discriminator 8
1307 009e 1343 orrs r3, r3, r2
1308 00a0 5BB2 sxtb r3, r3
1309 00a2 DBB2 uxtb r3, r3
1310 .loc 1 142 15 is_stmt 1 discriminator 8
1311 00a4 3B73 strb r3, [r7, #12]
143:Core/Src/ADBMS_Abstraction.c **** buffer_a[1] = ((channels & (1 << 2)) ? dutyCycle : 0) | ((channels & (1 << 3)) ? (dutyCycle << 4)
1312 .loc 1 143 28
1313 00a6 7B68 ldr r3, [r7, #4]
1314 00a8 03F00403 and r3, r3, #4
1315 .loc 1 143 57
1316 00ac 002B cmp r3, #0
1317 00ae 02D0 beq .L46
1318 .loc 1 143 57 is_stmt 0 discriminator 1
1319 00b0 97F90320 ldrsb r2, [r7, #3]
1320 00b4 00E0 b .L47
1321 .L46:
1322 .loc 1 143 57 discriminator 2
1323 00b6 0022 movs r2, #0
1324 .L47:
1325 .loc 1 143 70 is_stmt 1 discriminator 4
1326 00b8 7B68 ldr r3, [r7, #4]
1327 00ba 03F00803 and r3, r3, #8
1328 .loc 1 143 57 discriminator 4
1329 00be 002B cmp r3, #0
1330 00c0 04D0 beq .L48
1331 .loc 1 143 57 is_stmt 0 discriminator 5
1332 00c2 97F90330 ldrsb r3, [r7, #3]
1333 00c6 1B01 lsls r3, r3, #4
1334 00c8 5BB2 sxtb r3, r3
1335 00ca 00E0 b .L49
1336 .L48:
1337 .loc 1 143 57 discriminator 6
1338 00cc 0023 movs r3, #0
1339 .L49:
1340 .loc 1 143 57 discriminator 8
1341 00ce 1343 orrs r3, r3, r2
1342 00d0 5BB2 sxtb r3, r3
1343 00d2 DBB2 uxtb r3, r3
1344 .loc 1 143 15 is_stmt 1 discriminator 8
1345 00d4 7B73 strb r3, [r7, #13]
144:Core/Src/ADBMS_Abstraction.c **** buffer_a[2] = ((channels & (1 << 4)) ? dutyCycle : 0) | ((channels & (1 << 5)) ? (dutyCycle << 4)
1346 .loc 1 144 28
1347 00d6 7B68 ldr r3, [r7, #4]
1348 00d8 03F01003 and r3, r3, #16
1349 .loc 1 144 57
1350 00dc 002B cmp r3, #0
1351 00de 02D0 beq .L50
1352 .loc 1 144 57 is_stmt 0 discriminator 1
1353 00e0 97F90320 ldrsb r2, [r7, #3]
1354 00e4 00E0 b .L51
ARM GAS /tmp/cclV24WD.s page 27
1355 .L50:
1356 .loc 1 144 57 discriminator 2
1357 00e6 0022 movs r2, #0
1358 .L51:
1359 .loc 1 144 70 is_stmt 1 discriminator 4
1360 00e8 7B68 ldr r3, [r7, #4]
1361 00ea 03F02003 and r3, r3, #32
1362 .loc 1 144 57 discriminator 4
1363 00ee 002B cmp r3, #0
1364 00f0 04D0 beq .L52
1365 .loc 1 144 57 is_stmt 0 discriminator 5
1366 00f2 97F90330 ldrsb r3, [r7, #3]
1367 00f6 1B01 lsls r3, r3, #4
1368 00f8 5BB2 sxtb r3, r3
1369 00fa 00E0 b .L53
1370 .L52:
1371 .loc 1 144 57 discriminator 6
1372 00fc 0023 movs r3, #0
1373 .L53:
1374 .loc 1 144 57 discriminator 8
1375 00fe 1343 orrs r3, r3, r2
1376 0100 5BB2 sxtb r3, r3
1377 0102 DBB2 uxtb r3, r3
1378 .loc 1 144 15 is_stmt 1 discriminator 8
1379 0104 BB73 strb r3, [r7, #14]
145:Core/Src/ADBMS_Abstraction.c **** buffer_a[3] = ((channels & (1 << 6)) ? dutyCycle : 0) | ((channels & (1 << 7)) ? (dutyCycle << 4)
1380 .loc 1 145 28
1381 0106 7B68 ldr r3, [r7, #4]
1382 0108 03F04003 and r3, r3, #64
1383 .loc 1 145 57
1384 010c 002B cmp r3, #0
1385 010e 02D0 beq .L54
1386 .loc 1 145 57 is_stmt 0 discriminator 1
1387 0110 97F90320 ldrsb r2, [r7, #3]
1388 0114 00E0 b .L55
1389 .L54:
1390 .loc 1 145 57 discriminator 2
1391 0116 0022 movs r2, #0
1392 .L55:
1393 .loc 1 145 70 is_stmt 1 discriminator 4
1394 0118 7B68 ldr r3, [r7, #4]
1395 011a 03F08003 and r3, r3, #128
1396 .loc 1 145 57 discriminator 4
1397 011e 002B cmp r3, #0
1398 0120 04D0 beq .L56
1399 .loc 1 145 57 is_stmt 0 discriminator 5
1400 0122 97F90330 ldrsb r3, [r7, #3]
1401 0126 1B01 lsls r3, r3, #4
1402 0128 5BB2 sxtb r3, r3
1403 012a 00E0 b .L57
1404 .L56:
1405 .loc 1 145 57 discriminator 6
1406 012c 0023 movs r3, #0
1407 .L57:
1408 .loc 1 145 57 discriminator 8
1409 012e 1343 orrs r3, r3, r2
1410 0130 5BB2 sxtb r3, r3
ARM GAS /tmp/cclV24WD.s page 28
1411 0132 DBB2 uxtb r3, r3
1412 .loc 1 145 15 is_stmt 1 discriminator 8
1413 0134 FB73 strb r3, [r7, #15]
146:Core/Src/ADBMS_Abstraction.c **** buffer_a[4] = ((channels & (1 << 8)) ? dutyCycle : 0) | ((channels & (1 << 9)) ? (dutyCycle << 4)
1414 .loc 1 146 28
1415 0136 7B68 ldr r3, [r7, #4]
1416 0138 03F48073 and r3, r3, #256
1417 .loc 1 146 57
1418 013c 002B cmp r3, #0
1419 013e 02D0 beq .L58
1420 .loc 1 146 57 is_stmt 0 discriminator 1
1421 0140 97F90320 ldrsb r2, [r7, #3]
1422 0144 00E0 b .L59
1423 .L58:
1424 .loc 1 146 57 discriminator 2
1425 0146 0022 movs r2, #0
1426 .L59:
1427 .loc 1 146 70 is_stmt 1 discriminator 4
1428 0148 7B68 ldr r3, [r7, #4]
1429 014a 03F40073 and r3, r3, #512
1430 .loc 1 146 57 discriminator 4
1431 014e 002B cmp r3, #0
1432 0150 04D0 beq .L60
1433 .loc 1 146 57 is_stmt 0 discriminator 5
1434 0152 97F90330 ldrsb r3, [r7, #3]
1435 0156 1B01 lsls r3, r3, #4
1436 0158 5BB2 sxtb r3, r3
1437 015a 00E0 b .L61
1438 .L60:
1439 .loc 1 146 57 discriminator 6
1440 015c 0023 movs r3, #0
1441 .L61:
1442 .loc 1 146 57 discriminator 8
1443 015e 1343 orrs r3, r3, r2
1444 0160 5BB2 sxtb r3, r3
1445 0162 DBB2 uxtb r3, r3
1446 .loc 1 146 15 is_stmt 1 discriminator 8
1447 0164 3B74 strb r3, [r7, #16]
147:Core/Src/ADBMS_Abstraction.c **** buffer_a[5] = ((channels & (1 << 10)) ? dutyCycle : 0) | ((channels & (1 << 11)) ? (dutyCycle <<
1448 .loc 1 147 28
1449 0166 7B68 ldr r3, [r7, #4]
1450 0168 03F48063 and r3, r3, #1024
1451 .loc 1 147 58
1452 016c 002B cmp r3, #0
1453 016e 02D0 beq .L62
1454 .loc 1 147 58 is_stmt 0 discriminator 1
1455 0170 97F90320 ldrsb r2, [r7, #3]
1456 0174 00E0 b .L63
1457 .L62:
1458 .loc 1 147 58 discriminator 2
1459 0176 0022 movs r2, #0
1460 .L63:
1461 .loc 1 147 71 is_stmt 1 discriminator 4
1462 0178 7B68 ldr r3, [r7, #4]
1463 017a 03F40063 and r3, r3, #2048
1464 .loc 1 147 58 discriminator 4
1465 017e 002B cmp r3, #0
ARM GAS /tmp/cclV24WD.s page 29
1466 0180 04D0 beq .L64
1467 .loc 1 147 58 is_stmt 0 discriminator 5
1468 0182 97F90330 ldrsb r3, [r7, #3]
1469 0186 1B01 lsls r3, r3, #4
1470 0188 5BB2 sxtb r3, r3
1471 018a 00E0 b .L65
1472 .L64:
1473 .loc 1 147 58 discriminator 6
1474 018c 0023 movs r3, #0
1475 .L65:
1476 .loc 1 147 58 discriminator 8
1477 018e 1343 orrs r3, r3, r2
1478 0190 5BB2 sxtb r3, r3
1479 0192 DBB2 uxtb r3, r3
1480 .loc 1 147 15 is_stmt 1 discriminator 8
1481 0194 7B74 strb r3, [r7, #17]
148:Core/Src/ADBMS_Abstraction.c ****
149:Core/Src/ADBMS_Abstraction.c **** buffer_b[0] = ((channels & (1 << 12)) ? dutyCycle : 0) | ((channels & (1 << 13)) ? (dutyCycle <<
1482 .loc 1 149 28
1483 0196 7B68 ldr r3, [r7, #4]
1484 0198 03F48053 and r3, r3, #4096
1485 .loc 1 149 58
1486 019c 002B cmp r3, #0
1487 019e 02D0 beq .L66
1488 .loc 1 149 58 is_stmt 0 discriminator 1
1489 01a0 97F90320 ldrsb r2, [r7, #3]
1490 01a4 00E0 b .L67
1491 .L66:
1492 .loc 1 149 58 discriminator 2
1493 01a6 0022 movs r2, #0
1494 .L67:
1495 .loc 1 149 71 is_stmt 1 discriminator 4
1496 01a8 7B68 ldr r3, [r7, #4]
1497 01aa 03F40053 and r3, r3, #8192
1498 .loc 1 149 58 discriminator 4
1499 01ae 002B cmp r3, #0
1500 01b0 04D0 beq .L68
1501 .loc 1 149 58 is_stmt 0 discriminator 5
1502 01b2 97F90330 ldrsb r3, [r7, #3]
1503 01b6 1B01 lsls r3, r3, #4
1504 01b8 5BB2 sxtb r3, r3
1505 01ba 00E0 b .L69
1506 .L68:
1507 .loc 1 149 58 discriminator 6
1508 01bc 0023 movs r3, #0
1509 .L69:
1510 .loc 1 149 58 discriminator 8
1511 01be 1343 orrs r3, r3, r2
1512 01c0 5BB2 sxtb r3, r3
1513 01c2 DBB2 uxtb r3, r3
1514 .loc 1 149 15 is_stmt 1 discriminator 8
1515 01c4 3B72 strb r3, [r7, #8]
150:Core/Src/ADBMS_Abstraction.c **** buffer_b[1] = ((channels & (1 << 14)) ? dutyCycle : 0) | ((channels & (1 << 15)) ? (dutyCycle <<
1516 .loc 1 150 28
1517 01c6 7B68 ldr r3, [r7, #4]
1518 01c8 03F48043 and r3, r3, #16384
1519 .loc 1 150 58
ARM GAS /tmp/cclV24WD.s page 30
1520 01cc 002B cmp r3, #0
1521 01ce 02D0 beq .L70
1522 .loc 1 150 58 is_stmt 0 discriminator 1
1523 01d0 97F90320 ldrsb r2, [r7, #3]
1524 01d4 00E0 b .L71
1525 .L70:
1526 .loc 1 150 58 discriminator 2
1527 01d6 0022 movs r2, #0
1528 .L71:
1529 .loc 1 150 71 is_stmt 1 discriminator 4
1530 01d8 7B68 ldr r3, [r7, #4]
1531 01da 03F40043 and r3, r3, #32768
1532 .loc 1 150 58 discriminator 4
1533 01de 002B cmp r3, #0
1534 01e0 04D0 beq .L72
1535 .loc 1 150 58 is_stmt 0 discriminator 5
1536 01e2 97F90330 ldrsb r3, [r7, #3]
1537 01e6 1B01 lsls r3, r3, #4
1538 01e8 5BB2 sxtb r3, r3
1539 01ea 00E0 b .L73
1540 .L72:
1541 .loc 1 150 58 discriminator 6
1542 01ec 0023 movs r3, #0
1543 .L73:
1544 .loc 1 150 58 discriminator 8
1545 01ee 1343 orrs r3, r3, r2
1546 01f0 5BB2 sxtb r3, r3
1547 01f2 DBB2 uxtb r3, r3
1548 .loc 1 150 15 is_stmt 1 discriminator 8
1549 01f4 7B72 strb r3, [r7, #9]
1550 .LBB17:
151:Core/Src/ADBMS_Abstraction.c ****
152:Core/Src/ADBMS_Abstraction.c **** CHECK_RETURN(writeCMD(WRPWMA, buffer_a, PWM_GROUP_A_SIZE));
1551 .loc 1 152 3
1552 01f6 07F10C03 add r3, r7, #12
1553 01fa 0622 movs r2, #6
1554 01fc 1946 mov r1, r3
1555 01fe 2020 movs r0, #32
1556 0200 FFF7FEFF bl writeCMD
1557 0204 0346 mov r3, r0
1558 0206 3B75 strb r3, [r7, #20]
1559 .loc 1 152 3 is_stmt 0 discriminator 1
1560 0208 3B7D ldrb r3, [r7, #20] @ zero_extendqisi2
1561 020a 002B cmp r3, #0
1562 020c 01D0 beq .L74
1563 020e 3B7D ldrb r3, [r7, #20] @ zero_extendqisi2
1564 .loc 1 152 3
1565 0210 0EE0 b .L76
1566 .L74:
1567 .LBE17:
1568 .LBB18:
153:Core/Src/ADBMS_Abstraction.c **** CHECK_RETURN(writeCMD(WRPWMB, buffer_b, PWM_GROUP_B_SIZE));
1569 .loc 1 153 3 is_stmt 1
1570 0212 07F10803 add r3, r7, #8
1571 0216 0222 movs r2, #2
1572 0218 1946 mov r1, r3
1573 021a 2120 movs r0, #33
ARM GAS /tmp/cclV24WD.s page 31
1574 021c FFF7FEFF bl writeCMD
1575 0220 0346 mov r3, r0
1576 0222 FB74 strb r3, [r7, #19]
1577 .loc 1 153 3 is_stmt 0 discriminator 1
1578 0224 FB7C ldrb r3, [r7, #19] @ zero_extendqisi2
1579 0226 002B cmp r3, #0
1580 0228 01D0 beq .L75
1581 022a FB7C ldrb r3, [r7, #19] @ zero_extendqisi2
1582 .loc 1 153 3
1583 022c 00E0 b .L76
1584 .L75:
1585 .LBE18:
154:Core/Src/ADBMS_Abstraction.c ****
155:Core/Src/ADBMS_Abstraction.c **** return 0;
1586 .loc 1 155 10 is_stmt 1
1587 022e 0023 movs r3, #0
1588 .L76:
156:Core/Src/ADBMS_Abstraction.c **** }
1589 .loc 1 156 1
1590 0230 1846 mov r0, r3
1591 0232 1837 adds r7, r7, #24
1592 .cfi_def_cfa_offset 8
1593 0234 BD46 mov sp, r7
1594 .cfi_def_cfa_register 13
1595 @ sp needed
1596 0236 80BD pop {r7, pc}
1597 .cfi_endproc
1598 .LFE136:
1600 .section .text.amsStartBalancing,"ax",%progbits
1601 .align 1
1602 .global amsStartBalancing
1603 .syntax unified
1604 .thumb
1605 .thumb_func
1607 amsStartBalancing:
1608 .LFB137:
157:Core/Src/ADBMS_Abstraction.c ****
158:Core/Src/ADBMS_Abstraction.c **** uint8 amsStartBalancing(uint8 dutyCycle) { return writeCMD(UNMUTE, NULL, 0); }
1609 .loc 1 158 42
1610 .cfi_startproc
1611 @ args = 0, pretend = 0, frame = 8
1612 @ frame_needed = 1, uses_anonymous_args = 0
1613 0000 80B5 push {r7, lr}
1614 .cfi_def_cfa_offset 8
1615 .cfi_offset 7, -8
1616 .cfi_offset 14, -4
1617 0002 82B0 sub sp, sp, #8
1618 .cfi_def_cfa_offset 16
1619 0004 00AF add r7, sp, #0
1620 .cfi_def_cfa_register 7
1621 0006 0346 mov r3, r0
1622 0008 FB71 strb r3, [r7, #7]
1623 .loc 1 158 51
1624 000a 0022 movs r2, #0
1625 000c 0021 movs r1, #0
1626 000e 2920 movs r0, #41
1627 0010 FFF7FEFF bl writeCMD
ARM GAS /tmp/cclV24WD.s page 32
1628 0014 0346 mov r3, r0
1629 .loc 1 158 78
1630 0016 1846 mov r0, r3
1631 0018 0837 adds r7, r7, #8
1632 .cfi_def_cfa_offset 8
1633 001a BD46 mov sp, r7
1634 .cfi_def_cfa_register 13
1635 @ sp needed
1636 001c 80BD pop {r7, pc}
1637 .cfi_endproc
1638 .LFE137:
1640 .section .text.amsStopBalancing,"ax",%progbits
1641 .align 1
1642 .global amsStopBalancing
1643 .syntax unified
1644 .thumb
1645 .thumb_func
1647 amsStopBalancing:
1648 .LFB138:
159:Core/Src/ADBMS_Abstraction.c ****
160:Core/Src/ADBMS_Abstraction.c **** uint8 amsStopBalancing() { return writeCMD(MUTE, NULL, 0); }
1649 .loc 1 160 26
1650 .cfi_startproc
1651 @ args = 0, pretend = 0, frame = 0
1652 @ frame_needed = 1, uses_anonymous_args = 0
1653 0000 80B5 push {r7, lr}
1654 .cfi_def_cfa_offset 8
1655 .cfi_offset 7, -8
1656 .cfi_offset 14, -4
1657 0002 00AF add r7, sp, #0
1658 .cfi_def_cfa_register 7
1659 .loc 1 160 35
1660 0004 0022 movs r2, #0
1661 0006 0021 movs r1, #0
1662 0008 2820 movs r0, #40
1663 000a FFF7FEFF bl writeCMD
1664 000e 0346 mov r3, r0
1665 .loc 1 160 60
1666 0010 1846 mov r0, r3
1667 0012 80BD pop {r7, pc}
1668 .cfi_endproc
1669 .LFE138:
1671 .section .text.amsSelfTest,"ax",%progbits
1672 .align 1
1673 .global amsSelfTest
1674 .syntax unified
1675 .thumb
1676 .thumb_func
1678 amsSelfTest:
1679 .LFB139:
161:Core/Src/ADBMS_Abstraction.c ****
162:Core/Src/ADBMS_Abstraction.c **** uint8 amsSelfTest() { return 0; }
1680 .loc 1 162 21
1681 .cfi_startproc
1682 @ args = 0, pretend = 0, frame = 0
1683 @ frame_needed = 1, uses_anonymous_args = 0
1684 @ link register save eliminated.
ARM GAS /tmp/cclV24WD.s page 33
1685 0000 80B4 push {r7}
1686 .cfi_def_cfa_offset 4
1687 .cfi_offset 7, -4
1688 0002 00AF add r7, sp, #0
1689 .cfi_def_cfa_register 7
1690 .loc 1 162 30
1691 0004 0023 movs r3, #0
1692 .loc 1 162 33
1693 0006 1846 mov r0, r3
1694 0008 BD46 mov sp, r7
1695 .cfi_def_cfa_register 13
1696 @ sp needed
1697 000a 5DF8047B ldr r7, [sp], #4
1698 .cfi_restore 7
1699 .cfi_def_cfa_offset 0
1700 000e 7047 bx lr
1701 .cfi_endproc
1702 .LFE139:
1704 .section .text.amsConfigOverUnderVoltage,"ax",%progbits
1705 .align 1
1706 .global amsConfigOverUnderVoltage
1707 .syntax unified
1708 .thumb
1709 .thumb_func
1711 amsConfigOverUnderVoltage:
1712 .LFB140:
163:Core/Src/ADBMS_Abstraction.c ****
164:Core/Src/ADBMS_Abstraction.c **** uint8 amsConfigOverUnderVoltage(uint16 overVoltage, uint16 underVoltage) {
1713 .loc 1 164 74
1714 .cfi_startproc
1715 @ args = 0, pretend = 0, frame = 16
1716 @ frame_needed = 1, uses_anonymous_args = 0
1717 0000 80B5 push {r7, lr}
1718 .cfi_def_cfa_offset 8
1719 .cfi_offset 7, -8
1720 .cfi_offset 14, -4
1721 0002 84B0 sub sp, sp, #16
1722 .cfi_def_cfa_offset 24
1723 0004 00AF add r7, sp, #0
1724 .cfi_def_cfa_register 7
1725 0006 0346 mov r3, r0
1726 0008 0A46 mov r2, r1
1727 000a FB80 strh r3, [r7, #6] @ movhi
1728 000c 1346 mov r3, r2 @ movhi
1729 000e BB80 strh r3, [r7, #4] @ movhi
165:Core/Src/ADBMS_Abstraction.c **** uint8 buffer[CFG_GROUP_A_SIZE];
166:Core/Src/ADBMS_Abstraction.c ****
167:Core/Src/ADBMS_Abstraction.c **** if (underVoltage & 0xF000 || overVoltage & 0xF000) { // only 12 bits allowed
1730 .loc 1 167 20
1731 0010 BB88 ldrh r3, [r7, #4]
1732 0012 03F47043 and r3, r3, #61440
1733 .loc 1 167 6
1734 0016 002B cmp r3, #0
1735 0018 04D1 bne .L84
1736 .loc 1 167 44 discriminator 1
1737 001a FB88 ldrh r3, [r7, #6]
1738 001c 03F47043 and r3, r3, #61440
ARM GAS /tmp/cclV24WD.s page 34
1739 .loc 1 167 29 discriminator 1
1740 0020 002B cmp r3, #0
1741 0022 01D0 beq .L85
1742 .L84:
168:Core/Src/ADBMS_Abstraction.c **** return 1;
1743 .loc 1 168 12
1744 0024 0123 movs r3, #1
1745 0026 3CE0 b .L88
1746 .L85:
1747 .LBB19:
169:Core/Src/ADBMS_Abstraction.c **** }
170:Core/Src/ADBMS_Abstraction.c ****
171:Core/Src/ADBMS_Abstraction.c **** CHECK_RETURN(readCMD(RDCFGB, buffer, CFG_GROUP_A_SIZE));
1748 .loc 1 171 3
1749 0028 07F10803 add r3, r7, #8
1750 002c 0622 movs r2, #6
1751 002e 1946 mov r1, r3
1752 0030 2620 movs r0, #38
1753 0032 FFF7FEFF bl readCMD
1754 0036 0346 mov r3, r0
1755 0038 FB73 strb r3, [r7, #15]
1756 .loc 1 171 3 is_stmt 0 discriminator 1
1757 003a FB7B ldrb r3, [r7, #15] @ zero_extendqisi2
1758 003c 002B cmp r3, #0
1759 003e 01D0 beq .L87
1760 0040 FB7B ldrb r3, [r7, #15] @ zero_extendqisi2
1761 .loc 1 171 3
1762 0042 2EE0 b .L88
1763 .L87:
1764 .LBE19:
172:Core/Src/ADBMS_Abstraction.c ****
173:Core/Src/ADBMS_Abstraction.c **** //UV
174:Core/Src/ADBMS_Abstraction.c **** buffer[0] = (uint8) (underVoltage & 0xFF);
1765 .loc 1 174 15 is_stmt 1
1766 0044 BB88 ldrh r3, [r7, #4] @ movhi
1767 0046 DBB2 uxtb r3, r3
1768 .loc 1 174 13
1769 0048 3B72 strb r3, [r7, #8]
175:Core/Src/ADBMS_Abstraction.c **** buffer[1] &= 0xF0;
1770 .loc 1 175 9
1771 004a 7B7A ldrb r3, [r7, #9] @ zero_extendqisi2
1772 .loc 1 175 13
1773 004c 23F00F03 bic r3, r3, #15
1774 0050 DBB2 uxtb r3, r3
1775 0052 7B72 strb r3, [r7, #9]
176:Core/Src/ADBMS_Abstraction.c **** buffer[1] |= (uint8) ((underVoltage >> 8) & 0x0F);
1776 .loc 1 176 9
1777 0054 7B7A ldrb r3, [r7, #9] @ zero_extendqisi2
1778 0056 5AB2 sxtb r2, r3
1779 .loc 1 176 45
1780 0058 BB88 ldrh r3, [r7, #4]
1781 005a 1B0A lsrs r3, r3, #8
1782 005c 9BB2 uxth r3, r3
1783 005e 5BB2 sxtb r3, r3
1784 .loc 1 176 16
1785 0060 03F00F03 and r3, r3, #15
1786 0064 5BB2 sxtb r3, r3
ARM GAS /tmp/cclV24WD.s page 35
1787 .loc 1 176 13
1788 0066 1343 orrs r3, r3, r2
1789 0068 5BB2 sxtb r3, r3
1790 006a DBB2 uxtb r3, r3
1791 006c 7B72 strb r3, [r7, #9]
177:Core/Src/ADBMS_Abstraction.c ****
178:Core/Src/ADBMS_Abstraction.c **** //OV
179:Core/Src/ADBMS_Abstraction.c **** buffer[1] &= 0x0F;
1792 .loc 1 179 9
1793 006e 7B7A ldrb r3, [r7, #9] @ zero_extendqisi2
1794 .loc 1 179 13
1795 0070 03F00F03 and r3, r3, #15
1796 0074 DBB2 uxtb r3, r3
1797 0076 7B72 strb r3, [r7, #9]
180:Core/Src/ADBMS_Abstraction.c **** buffer[1] |= (uint8) (overVoltage << 4);
1798 .loc 1 180 9
1799 0078 7A7A ldrb r2, [r7, #9] @ zero_extendqisi2
1800 .loc 1 180 16
1801 007a FB88 ldrh r3, [r7, #6] @ movhi
1802 007c DBB2 uxtb r3, r3
1803 007e 1B01 lsls r3, r3, #4
1804 0080 DBB2 uxtb r3, r3
1805 .loc 1 180 13
1806 0082 1343 orrs r3, r3, r2
1807 0084 DBB2 uxtb r3, r3
1808 0086 7B72 strb r3, [r7, #9]
181:Core/Src/ADBMS_Abstraction.c **** buffer[2] = (uint8) (overVoltage >> 4);
1809 .loc 1 181 15
1810 0088 FB88 ldrh r3, [r7, #6]
1811 008a 1B09 lsrs r3, r3, #4
1812 008c 9BB2 uxth r3, r3
1813 008e DBB2 uxtb r3, r3
1814 .loc 1 181 13
1815 0090 BB72 strb r3, [r7, #10]
182:Core/Src/ADBMS_Abstraction.c ****
183:Core/Src/ADBMS_Abstraction.c **** return writeCMD(WRCFGB, buffer, CFG_GROUP_A_SIZE);
1816 .loc 1 183 10
1817 0092 07F10803 add r3, r7, #8
1818 0096 0622 movs r2, #6
1819 0098 1946 mov r1, r3
1820 009a 2420 movs r0, #36
1821 009c FFF7FEFF bl writeCMD
1822 00a0 0346 mov r3, r0
1823 .L88:
184:Core/Src/ADBMS_Abstraction.c **** }
1824 .loc 1 184 1
1825 00a2 1846 mov r0, r3
1826 00a4 1037 adds r7, r7, #16
1827 .cfi_def_cfa_offset 8
1828 00a6 BD46 mov sp, r7
1829 .cfi_def_cfa_register 13
1830 @ sp needed
1831 00a8 80BD pop {r7, pc}
1832 .cfi_endproc
1833 .LFE140:
1835 .section .text.amsCheckUnderOverVoltage,"ax",%progbits
1836 .align 1
ARM GAS /tmp/cclV24WD.s page 36
1837 .global amsCheckUnderOverVoltage
1838 .syntax unified
1839 .thumb
1840 .thumb_func
1842 amsCheckUnderOverVoltage:
1843 .LFB141:
185:Core/Src/ADBMS_Abstraction.c ****
186:Core/Src/ADBMS_Abstraction.c **** uint8 amsCheckUnderOverVoltage(Cell_Module* module) {
1844 .loc 1 186 53
1845 .cfi_startproc
1846 @ args = 0, pretend = 0, frame = 24
1847 @ frame_needed = 1, uses_anonymous_args = 0
1848 0000 80B5 push {r7, lr}
1849 .cfi_def_cfa_offset 8
1850 .cfi_offset 7, -8
1851 .cfi_offset 14, -4
1852 0002 86B0 sub sp, sp, #24
1853 .cfi_def_cfa_offset 32
1854 0004 00AF add r7, sp, #0
1855 .cfi_def_cfa_register 7
1856 0006 7860 str r0, [r7, #4]
187:Core/Src/ADBMS_Abstraction.c **** uint8 regbuffer[STATUS_GROUP_D_SIZE];
188:Core/Src/ADBMS_Abstraction.c **** uint32 ov_uv_data = 0;
1857 .loc 1 188 10
1858 0008 0023 movs r3, #0
1859 000a 3B61 str r3, [r7, #16]
1860 .LBB20:
189:Core/Src/ADBMS_Abstraction.c **** CHECK_RETURN(readCMD(RDSTATD, regbuffer, STATUS_GROUP_D_SIZE));
1861 .loc 1 189 3
1862 000c 07F10803 add r3, r7, #8
1863 0010 0622 movs r2, #6
1864 0012 1946 mov r1, r3
1865 0014 3320 movs r0, #51
1866 0016 FFF7FEFF bl readCMD
1867 001a 0346 mov r3, r0
1868 001c FB73 strb r3, [r7, #15]
1869 .loc 1 189 3 is_stmt 0 discriminator 1
1870 001e FB7B ldrb r3, [r7, #15] @ zero_extendqisi2
1871 0020 002B cmp r3, #0
1872 0022 01D0 beq .L90
1873 0024 FB7B ldrb r3, [r7, #15] @ zero_extendqisi2
1874 .loc 1 189 3
1875 0026 37E0 b .L94
1876 .L90:
1877 .LBE20:
190:Core/Src/ADBMS_Abstraction.c **** ov_uv_data = (regbuffer[0] << 0) | (regbuffer[1] << 8) |
1878 .loc 1 190 26 is_stmt 1
1879 0028 3B7A ldrb r3, [r7, #8] @ zero_extendqisi2
1880 .loc 1 190 30
1881 002a 1A46 mov r2, r3
1882 .loc 1 190 49
1883 002c 7B7A ldrb r3, [r7, #9] @ zero_extendqisi2
1884 .loc 1 190 53
1885 002e 1B02 lsls r3, r3, #8
1886 .loc 1 190 37
1887 0030 1A43 orrs r2, r2, r3
191:Core/Src/ADBMS_Abstraction.c **** (regbuffer[2] << 16) | (regbuffer[3] << 24);
ARM GAS /tmp/cclV24WD.s page 37
1888 .loc 1 191 26
1889 0032 BB7A ldrb r3, [r7, #10] @ zero_extendqisi2
1890 .loc 1 191 30
1891 0034 1B04 lsls r3, r3, #16
190:Core/Src/ADBMS_Abstraction.c **** ov_uv_data = (regbuffer[0] << 0) | (regbuffer[1] << 8) |
1892 .loc 1 190 60
1893 0036 1A43 orrs r2, r2, r3
1894 .loc 1 191 49
1895 0038 FB7A ldrb r3, [r7, #11] @ zero_extendqisi2
1896 .loc 1 191 53
1897 003a 1B06 lsls r3, r3, #24
1898 .loc 1 191 37
1899 003c 1343 orrs r3, r3, r2
190:Core/Src/ADBMS_Abstraction.c **** ov_uv_data = (regbuffer[0] << 0) | (regbuffer[1] << 8) |
1900 .loc 1 190 14
1901 003e 3B61 str r3, [r7, #16]
192:Core/Src/ADBMS_Abstraction.c ****
193:Core/Src/ADBMS_Abstraction.c **** module->overVoltage = 0;
1902 .loc 1 193 23
1903 0040 7B68 ldr r3, [r7, #4]
1904 0042 0022 movs r2, #0
1905 0044 DA66 str r2, [r3, #108]
194:Core/Src/ADBMS_Abstraction.c **** module->underVoltage = 0;
1906 .loc 1 194 24
1907 0046 7B68 ldr r3, [r7, #4]
1908 0048 0022 movs r2, #0
1909 004a 1A67 str r2, [r3, #112]
1910 .LBB21:
195:Core/Src/ADBMS_Abstraction.c ****
196:Core/Src/ADBMS_Abstraction.c **** for (size_t i = 0; i < numberofcells; i++) { // ov/uv flags are 1-bit flags for each cell C0UV, C
1911 .loc 1 196 15
1912 004c 0023 movs r3, #0
1913 004e 7B61 str r3, [r7, #20]
1914 .loc 1 196 3
1915 0050 1BE0 b .L92
1916 .L93:
197:Core/Src/ADBMS_Abstraction.c **** module->underVoltage |= (ov_uv_data >> (i * 2)) & 0x01;
1917 .loc 1 197 11
1918 0052 7B68 ldr r3, [r7, #4]
1919 0054 1A6F ldr r2, [r3, #112]
1920 .loc 1 197 47
1921 0056 7B69 ldr r3, [r7, #20]
1922 0058 5B00 lsls r3, r3, #1
1923 .loc 1 197 41
1924 005a 3969 ldr r1, [r7, #16]
1925 005c 21FA03F3 lsr r3, r1, r3
1926 .loc 1 197 53
1927 0060 03F00103 and r3, r3, #1
1928 .loc 1 197 26
1929 0064 1A43 orrs r2, r2, r3
1930 0066 7B68 ldr r3, [r7, #4]
1931 0068 1A67 str r2, [r3, #112]
198:Core/Src/ADBMS_Abstraction.c **** module->overVoltage |= (ov_uv_data >> (i * 2 + 1)) & 0x01;
1932 .loc 1 198 11
1933 006a 7B68 ldr r3, [r7, #4]
1934 006c DA6E ldr r2, [r3, #108]
1935 .loc 1 198 47
ARM GAS /tmp/cclV24WD.s page 38
1936 006e 7B69 ldr r3, [r7, #20]
1937 0070 5B00 lsls r3, r3, #1
1938 .loc 1 198 51
1939 0072 0133 adds r3, r3, #1
1940 .loc 1 198 41
1941 0074 3969 ldr r1, [r7, #16]
1942 0076 21FA03F3 lsr r3, r1, r3
1943 .loc 1 198 57
1944 007a 03F00103 and r3, r3, #1
1945 .loc 1 198 26
1946 007e 1A43 orrs r2, r2, r3
1947 0080 7B68 ldr r3, [r7, #4]
1948 0082 DA66 str r2, [r3, #108]
196:Core/Src/ADBMS_Abstraction.c **** module->underVoltage |= (ov_uv_data >> (i * 2)) & 0x01;
1949 .loc 1 196 42 discriminator 3
1950 0084 7B69 ldr r3, [r7, #20]
1951 0086 0133 adds r3, r3, #1
1952 0088 7B61 str r3, [r7, #20]
1953 .L92:
196:Core/Src/ADBMS_Abstraction.c **** module->underVoltage |= (ov_uv_data >> (i * 2)) & 0x01;
1954 .loc 1 196 24 discriminator 1
1955 008a 054B ldr r3, .L95
1956 008c 1B78 ldrb r3, [r3] @ zero_extendqisi2
1957 008e 1A46 mov r2, r3
1958 0090 7B69 ldr r3, [r7, #20]
1959 0092 9342 cmp r3, r2
1960 0094 DDD3 bcc .L93
1961 .LBE21:
199:Core/Src/ADBMS_Abstraction.c **** }
200:Core/Src/ADBMS_Abstraction.c ****
201:Core/Src/ADBMS_Abstraction.c **** return 0;
1962 .loc 1 201 10
1963 0096 0023 movs r3, #0
1964 .L94:
202:Core/Src/ADBMS_Abstraction.c **** }
1965 .loc 1 202 1
1966 0098 1846 mov r0, r3
1967 009a 1837 adds r7, r7, #24
1968 .cfi_def_cfa_offset 8
1969 009c BD46 mov sp, r7
1970 .cfi_def_cfa_register 13
1971 @ sp needed
1972 009e 80BD pop {r7, pc}
1973 .L96:
1974 .align 2
1975 .L95:
1976 00a0 00000000 .word numberofcells
1977 .cfi_endproc
1978 .LFE141:
1980 .section .text.amsClearAux,"ax",%progbits
1981 .align 1
1982 .global amsClearAux
1983 .syntax unified
1984 .thumb
1985 .thumb_func
1987 amsClearAux:
1988 .LFB142:
ARM GAS /tmp/cclV24WD.s page 39
203:Core/Src/ADBMS_Abstraction.c ****
204:Core/Src/ADBMS_Abstraction.c **** uint8 amsClearAux() {
1989 .loc 1 204 21
1990 .cfi_startproc
1991 @ args = 0, pretend = 0, frame = 0
1992 @ frame_needed = 1, uses_anonymous_args = 0
1993 0000 80B5 push {r7, lr}
1994 .cfi_def_cfa_offset 8
1995 .cfi_offset 7, -8
1996 .cfi_offset 14, -4
1997 0002 00AF add r7, sp, #0
1998 .cfi_def_cfa_register 7
205:Core/Src/ADBMS_Abstraction.c **** return writeCMD(CLRAUX, NULL, 0);
1999 .loc 1 205 10
2000 0004 0022 movs r2, #0
2001 0006 0021 movs r1, #0
2002 0008 40F21270 movw r0, #1810
2003 000c FFF7FEFF bl writeCMD
2004 0010 0346 mov r3, r0
206:Core/Src/ADBMS_Abstraction.c **** }
2005 .loc 1 206 1
2006 0012 1846 mov r0, r3
2007 0014 80BD pop {r7, pc}
2008 .cfi_endproc
2009 .LFE142:
2011 .section .text.amsClearCells,"ax",%progbits
2012 .align 1
2013 .global amsClearCells
2014 .syntax unified
2015 .thumb
2016 .thumb_func
2018 amsClearCells:
2019 .LFB143:
207:Core/Src/ADBMS_Abstraction.c ****
208:Core/Src/ADBMS_Abstraction.c **** uint8 amsClearCells() {
2020 .loc 1 208 23
2021 .cfi_startproc
2022 @ args = 0, pretend = 0, frame = 0
2023 @ frame_needed = 1, uses_anonymous_args = 0
2024 0000 80B5 push {r7, lr}
2025 .cfi_def_cfa_offset 8
2026 .cfi_offset 7, -8
2027 .cfi_offset 14, -4
2028 0002 00AF add r7, sp, #0
2029 .cfi_def_cfa_register 7
209:Core/Src/ADBMS_Abstraction.c **** return writeCMD(CLRCELL, NULL, 0);
2030 .loc 1 209 10
2031 0004 0022 movs r2, #0
2032 0006 0021 movs r1, #0
2033 0008 40F21170 movw r0, #1809
2034 000c FFF7FEFF bl writeCMD
2035 0010 0346 mov r3, r0
210:Core/Src/ADBMS_Abstraction.c **** }
2036 .loc 1 210 1
2037 0012 1846 mov r0, r3
2038 0014 80BD pop {r7, pc}
2039 .cfi_endproc
ARM GAS /tmp/cclV24WD.s page 40
2040 .LFE143:
2042 .global __aeabi_d2iz
2043 .section .text.amsReadCellVoltages,"ax",%progbits
2044 .align 1
2045 .global amsReadCellVoltages
2046 .syntax unified
2047 .thumb
2048 .thumb_func
2050 amsReadCellVoltages:
2051 .LFB144:
211:Core/Src/ADBMS_Abstraction.c ****
212:Core/Src/ADBMS_Abstraction.c **** uint8 amsReadCellVoltages(Cell_Module* module) {
2052 .loc 1 212 48
2053 .cfi_startproc
2054 @ args = 0, pretend = 0, frame = 24
2055 @ frame_needed = 1, uses_anonymous_args = 0
2056 0000 80B5 push {r7, lr}
2057 .cfi_def_cfa_offset 8
2058 .cfi_offset 7, -8
2059 .cfi_offset 14, -4
2060 0002 86B0 sub sp, sp, #24
2061 .cfi_def_cfa_offset 32
2062 0004 00AF add r7, sp, #0
2063 .cfi_def_cfa_register 7
2064 0006 7860 str r0, [r7, #4]
2065 .LBB22:
213:Core/Src/ADBMS_Abstraction.c **** uint8 rxbuffer[CV_GROUP_A_SIZE];
214:Core/Src/ADBMS_Abstraction.c **** CHECK_RETURN(readCMD(RDCVA, rxbuffer, CV_GROUP_A_SIZE));
2066 .loc 1 214 3
2067 0008 07F10C03 add r3, r7, #12
2068 000c 0622 movs r2, #6
2069 000e 1946 mov r1, r3
2070 0010 0420 movs r0, #4
2071 0012 FFF7FEFF bl readCMD
2072 0016 0346 mov r3, r0
2073 0018 FB75 strb r3, [r7, #23]
2074 .loc 1 214 3 is_stmt 0 discriminator 1
2075 001a FB7D ldrb r3, [r7, #23] @ zero_extendqisi2
2076 001c 002B cmp r3, #0
2077 001e 01D0 beq .L102
2078 0020 FB7D ldrb r3, [r7, #23] @ zero_extendqisi2
2079 .loc 1 214 3
2080 0022 7CE2 b .L109
2081 .L102:
2082 .LBE22:
215:Core/Src/ADBMS_Abstraction.c **** module->cellVoltages[0] = mV_from_ADBMS6830(rxbuffer[0] | (rxbuffer[1] << 8));
2083 .loc 1 215 29 is_stmt 1
2084 0024 3B7B ldrb r3, [r7, #12] @ zero_extendqisi2
2085 0026 1AB2 sxth r2, r3
2086 0028 7B7B ldrb r3, [r7, #13] @ zero_extendqisi2
2087 002a 1BB2 sxth r3, r3
2088 002c 1B02 lsls r3, r3, #8
2089 002e 1BB2 sxth r3, r3
2090 0030 1343 orrs r3, r3, r2
2091 0032 1BB2 sxth r3, r3
2092 0034 1846 mov r0, r3
2093 0036 FFF7FEFF bl __aeabi_i2d
ARM GAS /tmp/cclV24WD.s page 41
2094 003a 0FF2EC43 adr r3, .L110
2095 003e D3E90023 ldrd r2, [r3]
2096 0042 FFF7FEFF bl __aeabi_dmul
2097 0046 0246 mov r2, r0
2098 0048 0B46 mov r3, r1
2099 004a 1046 mov r0, r2
2100 004c 1946 mov r1, r3
2101 004e 0FF2E043 adr r3, .L110+8
2102 0052 D3E90023 ldrd r2, [r3]
2103 0056 FFF7FEFF bl __aeabi_dadd
2104 005a 0246 mov r2, r0
2105 005c 0B46 mov r3, r1
2106 .loc 1 215 27
2107 005e 1046 mov r0, r2
2108 0060 1946 mov r1, r3
2109 0062 FFF7FEFF bl __aeabi_d2iz
2110 0066 0346 mov r3, r0
2111 0068 1AB2 sxth r2, r3
2112 006a 7B68 ldr r3, [r7, #4]
2113 006c 1A80 strh r2, [r3] @ movhi
216:Core/Src/ADBMS_Abstraction.c **** module->cellVoltages[1] = mV_from_ADBMS6830(rxbuffer[2] | (rxbuffer[3] << 8));
2114 .loc 1 216 29
2115 006e BB7B ldrb r3, [r7, #14] @ zero_extendqisi2
2116 0070 1AB2 sxth r2, r3
2117 0072 FB7B ldrb r3, [r7, #15] @ zero_extendqisi2
2118 0074 1BB2 sxth r3, r3
2119 0076 1B02 lsls r3, r3, #8
2120 0078 1BB2 sxth r3, r3
2121 007a 1343 orrs r3, r3, r2
2122 007c 1BB2 sxth r3, r3
2123 007e 1846 mov r0, r3
2124 0080 FFF7FEFF bl __aeabi_i2d
2125 0084 0FF2A043 adr r3, .L110
2126 0088 D3E90023 ldrd r2, [r3]
2127 008c FFF7FEFF bl __aeabi_dmul
2128 0090 0246 mov r2, r0
2129 0092 0B46 mov r3, r1
2130 0094 1046 mov r0, r2
2131 0096 1946 mov r1, r3
2132 0098 0FF29443 adr r3, .L110+8
2133 009c D3E90023 ldrd r2, [r3]
2134 00a0 FFF7FEFF bl __aeabi_dadd
2135 00a4 0246 mov r2, r0
2136 00a6 0B46 mov r3, r1
2137 .loc 1 216 27
2138 00a8 1046 mov r0, r2
2139 00aa 1946 mov r1, r3
2140 00ac FFF7FEFF bl __aeabi_d2iz
2141 00b0 0346 mov r3, r0
2142 00b2 1AB2 sxth r2, r3
2143 00b4 7B68 ldr r3, [r7, #4]
2144 00b6 5A80 strh r2, [r3, #2] @ movhi
217:Core/Src/ADBMS_Abstraction.c **** module->cellVoltages[2] = mV_from_ADBMS6830(rxbuffer[4] | (rxbuffer[5] << 8));
2145 .loc 1 217 29
2146 00b8 3B7C ldrb r3, [r7, #16] @ zero_extendqisi2
2147 00ba 1AB2 sxth r2, r3
2148 00bc 7B7C ldrb r3, [r7, #17] @ zero_extendqisi2
ARM GAS /tmp/cclV24WD.s page 42
2149 00be 1BB2 sxth r3, r3
2150 00c0 1B02 lsls r3, r3, #8
2151 00c2 1BB2 sxth r3, r3
2152 00c4 1343 orrs r3, r3, r2
2153 00c6 1BB2 sxth r3, r3
2154 00c8 1846 mov r0, r3
2155 00ca FFF7FEFF bl __aeabi_i2d
2156 00ce 0FF25843 adr r3, .L110
2157 00d2 D3E90023 ldrd r2, [r3]
2158 00d6 FFF7FEFF bl __aeabi_dmul
2159 00da 0246 mov r2, r0
2160 00dc 0B46 mov r3, r1
2161 00de 1046 mov r0, r2
2162 00e0 1946 mov r1, r3
2163 00e2 0FF24C43 adr r3, .L110+8
2164 00e6 D3E90023 ldrd r2, [r3]
2165 00ea FFF7FEFF bl __aeabi_dadd
2166 00ee 0246 mov r2, r0
2167 00f0 0B46 mov r3, r1
2168 .loc 1 217 27
2169 00f2 1046 mov r0, r2
2170 00f4 1946 mov r1, r3
2171 00f6 FFF7FEFF bl __aeabi_d2iz
2172 00fa 0346 mov r3, r0
2173 00fc 1AB2 sxth r2, r3
2174 00fe 7B68 ldr r3, [r7, #4]
2175 0100 9A80 strh r2, [r3, #4] @ movhi
2176 .LBB23:
218:Core/Src/ADBMS_Abstraction.c ****
219:Core/Src/ADBMS_Abstraction.c **** CHECK_RETURN(readCMD(RDCVB, rxbuffer, CV_GROUP_A_SIZE));
2177 .loc 1 219 3
2178 0102 07F10C03 add r3, r7, #12
2179 0106 0622 movs r2, #6
2180 0108 1946 mov r1, r3
2181 010a 0620 movs r0, #6
2182 010c FFF7FEFF bl readCMD
2183 0110 0346 mov r3, r0
2184 0112 BB75 strb r3, [r7, #22]
2185 .loc 1 219 3 is_stmt 0 discriminator 1
2186 0114 BB7D ldrb r3, [r7, #22] @ zero_extendqisi2
2187 0116 002B cmp r3, #0
2188 0118 01D0 beq .L104
2189 011a BB7D ldrb r3, [r7, #22] @ zero_extendqisi2
2190 .loc 1 219 3
2191 011c FFE1 b .L109
2192 .L104:
2193 .LBE23:
220:Core/Src/ADBMS_Abstraction.c **** module->cellVoltages[3] = mV_from_ADBMS6830(rxbuffer[0] | (rxbuffer[1] << 8));
2194 .loc 1 220 29 is_stmt 1
2195 011e 3B7B ldrb r3, [r7, #12] @ zero_extendqisi2
2196 0120 1AB2 sxth r2, r3
2197 0122 7B7B ldrb r3, [r7, #13] @ zero_extendqisi2
2198 0124 1BB2 sxth r3, r3
2199 0126 1B02 lsls r3, r3, #8
2200 0128 1BB2 sxth r3, r3
2201 012a 1343 orrs r3, r3, r2
2202 012c 1BB2 sxth r3, r3
ARM GAS /tmp/cclV24WD.s page 43
2203 012e 1846 mov r0, r3
2204 0130 FFF7FEFF bl __aeabi_i2d
2205 0134 FCA3 adr r3, .L110
2206 0136 D3E90023 ldrd r2, [r3]
2207 013a FFF7FEFF bl __aeabi_dmul
2208 013e 0246 mov r2, r0
2209 0140 0B46 mov r3, r1
2210 0142 1046 mov r0, r2
2211 0144 1946 mov r1, r3
2212 0146 FAA3 adr r3, .L110+8
2213 0148 D3E90023 ldrd r2, [r3]
2214 014c FFF7FEFF bl __aeabi_dadd
2215 0150 0246 mov r2, r0
2216 0152 0B46 mov r3, r1
2217 .loc 1 220 27
2218 0154 1046 mov r0, r2
2219 0156 1946 mov r1, r3
2220 0158 FFF7FEFF bl __aeabi_d2iz
2221 015c 0346 mov r3, r0
2222 015e 1AB2 sxth r2, r3
2223 0160 7B68 ldr r3, [r7, #4]
2224 0162 DA80 strh r2, [r3, #6] @ movhi
221:Core/Src/ADBMS_Abstraction.c **** module->cellVoltages[4] = mV_from_ADBMS6830(rxbuffer[2] | (rxbuffer[3] << 8));
2225 .loc 1 221 29
2226 0164 BB7B ldrb r3, [r7, #14] @ zero_extendqisi2
2227 0166 1AB2 sxth r2, r3
2228 0168 FB7B ldrb r3, [r7, #15] @ zero_extendqisi2
2229 016a 1BB2 sxth r3, r3
2230 016c 1B02 lsls r3, r3, #8
2231 016e 1BB2 sxth r3, r3
2232 0170 1343 orrs r3, r3, r2
2233 0172 1BB2 sxth r3, r3
2234 0174 1846 mov r0, r3
2235 0176 FFF7FEFF bl __aeabi_i2d
2236 017a EBA3 adr r3, .L110
2237 017c D3E90023 ldrd r2, [r3]
2238 0180 FFF7FEFF bl __aeabi_dmul
2239 0184 0246 mov r2, r0
2240 0186 0B46 mov r3, r1
2241 0188 1046 mov r0, r2
2242 018a 1946 mov r1, r3
2243 018c E8A3 adr r3, .L110+8
2244 018e D3E90023 ldrd r2, [r3]
2245 0192 FFF7FEFF bl __aeabi_dadd
2246 0196 0246 mov r2, r0
2247 0198 0B46 mov r3, r1
2248 .loc 1 221 27
2249 019a 1046 mov r0, r2
2250 019c 1946 mov r1, r3
2251 019e FFF7FEFF bl __aeabi_d2iz
2252 01a2 0346 mov r3, r0
2253 01a4 1AB2 sxth r2, r3
2254 01a6 7B68 ldr r3, [r7, #4]
2255 01a8 1A81 strh r2, [r3, #8] @ movhi
222:Core/Src/ADBMS_Abstraction.c **** module->cellVoltages[5] = mV_from_ADBMS6830(rxbuffer[4] | (rxbuffer[5] << 8));
2256 .loc 1 222 29
2257 01aa 3B7C ldrb r3, [r7, #16] @ zero_extendqisi2
ARM GAS /tmp/cclV24WD.s page 44
2258 01ac 1AB2 sxth r2, r3
2259 01ae 7B7C ldrb r3, [r7, #17] @ zero_extendqisi2
2260 01b0 1BB2 sxth r3, r3
2261 01b2 1B02 lsls r3, r3, #8
2262 01b4 1BB2 sxth r3, r3
2263 01b6 1343 orrs r3, r3, r2
2264 01b8 1BB2 sxth r3, r3
2265 01ba 1846 mov r0, r3
2266 01bc FFF7FEFF bl __aeabi_i2d
2267 01c0 D9A3 adr r3, .L110
2268 01c2 D3E90023 ldrd r2, [r3]
2269 01c6 FFF7FEFF bl __aeabi_dmul
2270 01ca 0246 mov r2, r0
2271 01cc 0B46 mov r3, r1
2272 01ce 1046 mov r0, r2
2273 01d0 1946 mov r1, r3
2274 01d2 D7A3 adr r3, .L110+8
2275 01d4 D3E90023 ldrd r2, [r3]
2276 01d8 FFF7FEFF bl __aeabi_dadd
2277 01dc 0246 mov r2, r0
2278 01de 0B46 mov r3, r1
2279 .loc 1 222 27
2280 01e0 1046 mov r0, r2
2281 01e2 1946 mov r1, r3
2282 01e4 FFF7FEFF bl __aeabi_d2iz
2283 01e8 0346 mov r3, r0
2284 01ea 1AB2 sxth r2, r3
2285 01ec 7B68 ldr r3, [r7, #4]
2286 01ee 5A81 strh r2, [r3, #10] @ movhi
2287 .LBB24:
223:Core/Src/ADBMS_Abstraction.c ****
224:Core/Src/ADBMS_Abstraction.c **** CHECK_RETURN(readCMD(RDCVC, rxbuffer, CV_GROUP_A_SIZE));
2288 .loc 1 224 3
2289 01f0 07F10C03 add r3, r7, #12
2290 01f4 0622 movs r2, #6
2291 01f6 1946 mov r1, r3
2292 01f8 0820 movs r0, #8
2293 01fa FFF7FEFF bl readCMD
2294 01fe 0346 mov r3, r0
2295 0200 7B75 strb r3, [r7, #21]
2296 .loc 1 224 3 is_stmt 0 discriminator 1
2297 0202 7B7D ldrb r3, [r7, #21] @ zero_extendqisi2
2298 0204 002B cmp r3, #0
2299 0206 01D0 beq .L105
2300 0208 7B7D ldrb r3, [r7, #21] @ zero_extendqisi2
2301 .loc 1 224 3
2302 020a 88E1 b .L109
2303 .L105:
2304 .LBE24:
225:Core/Src/ADBMS_Abstraction.c **** module->cellVoltages[6] = mV_from_ADBMS6830(rxbuffer[0] | (rxbuffer[1] << 8));
2305 .loc 1 225 29 is_stmt 1
2306 020c 3B7B ldrb r3, [r7, #12] @ zero_extendqisi2
2307 020e 1AB2 sxth r2, r3
2308 0210 7B7B ldrb r3, [r7, #13] @ zero_extendqisi2
2309 0212 1BB2 sxth r3, r3
2310 0214 1B02 lsls r3, r3, #8
2311 0216 1BB2 sxth r3, r3
ARM GAS /tmp/cclV24WD.s page 45
2312 0218 1343 orrs r3, r3, r2
2313 021a 1BB2 sxth r3, r3
2314 021c 1846 mov r0, r3
2315 021e FFF7FEFF bl __aeabi_i2d
2316 0222 C1A3 adr r3, .L110
2317 0224 D3E90023 ldrd r2, [r3]
2318 0228 FFF7FEFF bl __aeabi_dmul
2319 022c 0246 mov r2, r0
2320 022e 0B46 mov r3, r1
2321 0230 1046 mov r0, r2
2322 0232 1946 mov r1, r3
2323 0234 BEA3 adr r3, .L110+8
2324 0236 D3E90023 ldrd r2, [r3]
2325 023a FFF7FEFF bl __aeabi_dadd
2326 023e 0246 mov r2, r0
2327 0240 0B46 mov r3, r1
2328 .loc 1 225 27
2329 0242 1046 mov r0, r2
2330 0244 1946 mov r1, r3
2331 0246 FFF7FEFF bl __aeabi_d2iz
2332 024a 0346 mov r3, r0
2333 024c 1AB2 sxth r2, r3
2334 024e 7B68 ldr r3, [r7, #4]
2335 0250 9A81 strh r2, [r3, #12] @ movhi
226:Core/Src/ADBMS_Abstraction.c **** module->cellVoltages[7] = mV_from_ADBMS6830(rxbuffer[2] | (rxbuffer[3] << 8));
2336 .loc 1 226 29
2337 0252 BB7B ldrb r3, [r7, #14] @ zero_extendqisi2
2338 0254 1AB2 sxth r2, r3
2339 0256 FB7B ldrb r3, [r7, #15] @ zero_extendqisi2
2340 0258 1BB2 sxth r3, r3
2341 025a 1B02 lsls r3, r3, #8
2342 025c 1BB2 sxth r3, r3
2343 025e 1343 orrs r3, r3, r2
2344 0260 1BB2 sxth r3, r3
2345 0262 1846 mov r0, r3
2346 0264 FFF7FEFF bl __aeabi_i2d
2347 0268 AFA3 adr r3, .L110
2348 026a D3E90023 ldrd r2, [r3]
2349 026e FFF7FEFF bl __aeabi_dmul
2350 0272 0246 mov r2, r0
2351 0274 0B46 mov r3, r1
2352 0276 1046 mov r0, r2
2353 0278 1946 mov r1, r3
2354 027a ADA3 adr r3, .L110+8
2355 027c D3E90023 ldrd r2, [r3]
2356 0280 FFF7FEFF bl __aeabi_dadd
2357 0284 0246 mov r2, r0
2358 0286 0B46 mov r3, r1
2359 .loc 1 226 27
2360 0288 1046 mov r0, r2
2361 028a 1946 mov r1, r3
2362 028c FFF7FEFF bl __aeabi_d2iz
2363 0290 0346 mov r3, r0
2364 0292 1AB2 sxth r2, r3
2365 0294 7B68 ldr r3, [r7, #4]
2366 0296 DA81 strh r2, [r3, #14] @ movhi
227:Core/Src/ADBMS_Abstraction.c **** module->cellVoltages[8] = mV_from_ADBMS6830(rxbuffer[4] | (rxbuffer[5] << 8));
ARM GAS /tmp/cclV24WD.s page 46
2367 .loc 1 227 29
2368 0298 3B7C ldrb r3, [r7, #16] @ zero_extendqisi2
2369 029a 1AB2 sxth r2, r3
2370 029c 7B7C ldrb r3, [r7, #17] @ zero_extendqisi2
2371 029e 1BB2 sxth r3, r3
2372 02a0 1B02 lsls r3, r3, #8
2373 02a2 1BB2 sxth r3, r3
2374 02a4 1343 orrs r3, r3, r2
2375 02a6 1BB2 sxth r3, r3
2376 02a8 1846 mov r0, r3
2377 02aa FFF7FEFF bl __aeabi_i2d
2378 02ae 9EA3 adr r3, .L110
2379 02b0 D3E90023 ldrd r2, [r3]
2380 02b4 FFF7FEFF bl __aeabi_dmul
2381 02b8 0246 mov r2, r0
2382 02ba 0B46 mov r3, r1
2383 02bc 1046 mov r0, r2
2384 02be 1946 mov r1, r3
2385 02c0 9BA3 adr r3, .L110+8
2386 02c2 D3E90023 ldrd r2, [r3]
2387 02c6 FFF7FEFF bl __aeabi_dadd
2388 02ca 0246 mov r2, r0
2389 02cc 0B46 mov r3, r1
2390 .loc 1 227 27
2391 02ce 1046 mov r0, r2
2392 02d0 1946 mov r1, r3
2393 02d2 FFF7FEFF bl __aeabi_d2iz
2394 02d6 0346 mov r3, r0
2395 02d8 1AB2 sxth r2, r3
2396 02da 7B68 ldr r3, [r7, #4]
2397 02dc 1A82 strh r2, [r3, #16] @ movhi
2398 .LBB25:
228:Core/Src/ADBMS_Abstraction.c ****
229:Core/Src/ADBMS_Abstraction.c **** CHECK_RETURN(readCMD(RDCVD, rxbuffer, CV_GROUP_A_SIZE));
2399 .loc 1 229 3
2400 02de 07F10C03 add r3, r7, #12
2401 02e2 0622 movs r2, #6
2402 02e4 1946 mov r1, r3
2403 02e6 0A20 movs r0, #10
2404 02e8 FFF7FEFF bl readCMD
2405 02ec 0346 mov r3, r0
2406 02ee 3B75 strb r3, [r7, #20]
2407 .loc 1 229 3 is_stmt 0 discriminator 1
2408 02f0 3B7D ldrb r3, [r7, #20] @ zero_extendqisi2
2409 02f2 002B cmp r3, #0
2410 02f4 01D0 beq .L106
2411 02f6 3B7D ldrb r3, [r7, #20] @ zero_extendqisi2
2412 .loc 1 229 3
2413 02f8 11E1 b .L109
2414 .L106:
2415 .LBE25:
230:Core/Src/ADBMS_Abstraction.c **** module->cellVoltages[9] = mV_from_ADBMS6830(rxbuffer[0] | (rxbuffer[1] << 8));
2416 .loc 1 230 30 is_stmt 1
2417 02fa 3B7B ldrb r3, [r7, #12] @ zero_extendqisi2
2418 02fc 1AB2 sxth r2, r3
2419 02fe 7B7B ldrb r3, [r7, #13] @ zero_extendqisi2
2420 0300 1BB2 sxth r3, r3
ARM GAS /tmp/cclV24WD.s page 47
2421 0302 1B02 lsls r3, r3, #8
2422 0304 1BB2 sxth r3, r3
2423 0306 1343 orrs r3, r3, r2
2424 0308 1BB2 sxth r3, r3
2425 030a 1846 mov r0, r3
2426 030c FFF7FEFF bl __aeabi_i2d
2427 0310 85A3 adr r3, .L110
2428 0312 D3E90023 ldrd r2, [r3]
2429 0316 FFF7FEFF bl __aeabi_dmul
2430 031a 0246 mov r2, r0
2431 031c 0B46 mov r3, r1
2432 031e 1046 mov r0, r2
2433 0320 1946 mov r1, r3
2434 0322 83A3 adr r3, .L110+8
2435 0324 D3E90023 ldrd r2, [r3]
2436 0328 FFF7FEFF bl __aeabi_dadd
2437 032c 0246 mov r2, r0
2438 032e 0B46 mov r3, r1
2439 .loc 1 230 28
2440 0330 1046 mov r0, r2
2441 0332 1946 mov r1, r3
2442 0334 FFF7FEFF bl __aeabi_d2iz
2443 0338 0346 mov r3, r0
2444 033a 1AB2 sxth r2, r3
2445 033c 7B68 ldr r3, [r7, #4]
2446 033e 5A82 strh r2, [r3, #18] @ movhi
231:Core/Src/ADBMS_Abstraction.c **** module->cellVoltages[10] = mV_from_ADBMS6830(rxbuffer[2] | (rxbuffer[3] << 8));
2447 .loc 1 231 30
2448 0340 BB7B ldrb r3, [r7, #14] @ zero_extendqisi2
2449 0342 1AB2 sxth r2, r3
2450 0344 FB7B ldrb r3, [r7, #15] @ zero_extendqisi2
2451 0346 1BB2 sxth r3, r3
2452 0348 1B02 lsls r3, r3, #8
2453 034a 1BB2 sxth r3, r3
2454 034c 1343 orrs r3, r3, r2
2455 034e 1BB2 sxth r3, r3
2456 0350 1846 mov r0, r3
2457 0352 FFF7FEFF bl __aeabi_i2d
2458 0356 74A3 adr r3, .L110
2459 0358 D3E90023 ldrd r2, [r3]
2460 035c FFF7FEFF bl __aeabi_dmul
2461 0360 0246 mov r2, r0
2462 0362 0B46 mov r3, r1
2463 0364 1046 mov r0, r2
2464 0366 1946 mov r1, r3
2465 0368 71A3 adr r3, .L110+8
2466 036a D3E90023 ldrd r2, [r3]
2467 036e FFF7FEFF bl __aeabi_dadd
2468 0372 0246 mov r2, r0
2469 0374 0B46 mov r3, r1
2470 .loc 1 231 28
2471 0376 1046 mov r0, r2
2472 0378 1946 mov r1, r3
2473 037a FFF7FEFF bl __aeabi_d2iz
2474 037e 0346 mov r3, r0
2475 0380 1AB2 sxth r2, r3
2476 0382 7B68 ldr r3, [r7, #4]
ARM GAS /tmp/cclV24WD.s page 48
2477 0384 9A82 strh r2, [r3, #20] @ movhi
232:Core/Src/ADBMS_Abstraction.c **** module->cellVoltages[11] = mV_from_ADBMS6830(rxbuffer[4] | (rxbuffer[5] << 8));
2478 .loc 1 232 30
2479 0386 3B7C ldrb r3, [r7, #16] @ zero_extendqisi2
2480 0388 1AB2 sxth r2, r3
2481 038a 7B7C ldrb r3, [r7, #17] @ zero_extendqisi2
2482 038c 1BB2 sxth r3, r3
2483 038e 1B02 lsls r3, r3, #8
2484 0390 1BB2 sxth r3, r3
2485 0392 1343 orrs r3, r3, r2
2486 0394 1BB2 sxth r3, r3
2487 0396 1846 mov r0, r3
2488 0398 FFF7FEFF bl __aeabi_i2d
2489 039c 62A3 adr r3, .L110
2490 039e D3E90023 ldrd r2, [r3]
2491 03a2 FFF7FEFF bl __aeabi_dmul
2492 03a6 0246 mov r2, r0
2493 03a8 0B46 mov r3, r1
2494 03aa 1046 mov r0, r2
2495 03ac 1946 mov r1, r3
2496 03ae 60A3 adr r3, .L110+8
2497 03b0 D3E90023 ldrd r2, [r3]
2498 03b4 FFF7FEFF bl __aeabi_dadd
2499 03b8 0246 mov r2, r0
2500 03ba 0B46 mov r3, r1
2501 .loc 1 232 28
2502 03bc 1046 mov r0, r2
2503 03be 1946 mov r1, r3
2504 03c0 FFF7FEFF bl __aeabi_d2iz
2505 03c4 0346 mov r3, r0
2506 03c6 1AB2 sxth r2, r3
2507 03c8 7B68 ldr r3, [r7, #4]
2508 03ca DA82 strh r2, [r3, #22] @ movhi
2509 .LBB26:
233:Core/Src/ADBMS_Abstraction.c ****
234:Core/Src/ADBMS_Abstraction.c **** CHECK_RETURN(readCMD(RDCVE, rxbuffer, CV_GROUP_A_SIZE));
2510 .loc 1 234 3
2511 03cc 07F10C03 add r3, r7, #12
2512 03d0 0622 movs r2, #6
2513 03d2 1946 mov r1, r3
2514 03d4 0920 movs r0, #9
2515 03d6 FFF7FEFF bl readCMD
2516 03da 0346 mov r3, r0
2517 03dc FB74 strb r3, [r7, #19]
2518 .loc 1 234 3 is_stmt 0 discriminator 1
2519 03de FB7C ldrb r3, [r7, #19] @ zero_extendqisi2
2520 03e0 002B cmp r3, #0
2521 03e2 01D0 beq .L107
2522 03e4 FB7C ldrb r3, [r7, #19] @ zero_extendqisi2
2523 .loc 1 234 3
2524 03e6 9AE0 b .L109
2525 .L107:
2526 .LBE26:
235:Core/Src/ADBMS_Abstraction.c **** module->cellVoltages[12] = mV_from_ADBMS6830(rxbuffer[0] | (rxbuffer[1] << 8));
2527 .loc 1 235 30 is_stmt 1
2528 03e8 3B7B ldrb r3, [r7, #12] @ zero_extendqisi2
2529 03ea 1AB2 sxth r2, r3
ARM GAS /tmp/cclV24WD.s page 49
2530 03ec 7B7B ldrb r3, [r7, #13] @ zero_extendqisi2
2531 03ee 1BB2 sxth r3, r3
2532 03f0 1B02 lsls r3, r3, #8
2533 03f2 1BB2 sxth r3, r3
2534 03f4 1343 orrs r3, r3, r2
2535 03f6 1BB2 sxth r3, r3
2536 03f8 1846 mov r0, r3
2537 03fa FFF7FEFF bl __aeabi_i2d
2538 03fe 4AA3 adr r3, .L110
2539 0400 D3E90023 ldrd r2, [r3]
2540 0404 FFF7FEFF bl __aeabi_dmul
2541 0408 0246 mov r2, r0
2542 040a 0B46 mov r3, r1
2543 040c 1046 mov r0, r2
2544 040e 1946 mov r1, r3
2545 0410 47A3 adr r3, .L110+8
2546 0412 D3E90023 ldrd r2, [r3]
2547 0416 FFF7FEFF bl __aeabi_dadd
2548 041a 0246 mov r2, r0
2549 041c 0B46 mov r3, r1
2550 .loc 1 235 28
2551 041e 1046 mov r0, r2
2552 0420 1946 mov r1, r3
2553 0422 FFF7FEFF bl __aeabi_d2iz
2554 0426 0346 mov r3, r0
2555 0428 1AB2 sxth r2, r3
2556 042a 7B68 ldr r3, [r7, #4]
2557 042c 1A83 strh r2, [r3, #24] @ movhi
236:Core/Src/ADBMS_Abstraction.c **** module->cellVoltages[13] = mV_from_ADBMS6830(rxbuffer[2] | (rxbuffer[3] << 8));
2558 .loc 1 236 30
2559 042e BB7B ldrb r3, [r7, #14] @ zero_extendqisi2
2560 0430 1AB2 sxth r2, r3
2561 0432 FB7B ldrb r3, [r7, #15] @ zero_extendqisi2
2562 0434 1BB2 sxth r3, r3
2563 0436 1B02 lsls r3, r3, #8
2564 0438 1BB2 sxth r3, r3
2565 043a 1343 orrs r3, r3, r2
2566 043c 1BB2 sxth r3, r3
2567 043e 1846 mov r0, r3
2568 0440 FFF7FEFF bl __aeabi_i2d
2569 0444 38A3 adr r3, .L110
2570 0446 D3E90023 ldrd r2, [r3]
2571 044a FFF7FEFF bl __aeabi_dmul
2572 044e 0246 mov r2, r0
2573 0450 0B46 mov r3, r1
2574 0452 1046 mov r0, r2
2575 0454 1946 mov r1, r3
2576 0456 36A3 adr r3, .L110+8
2577 0458 D3E90023 ldrd r2, [r3]
2578 045c FFF7FEFF bl __aeabi_dadd
2579 0460 0246 mov r2, r0
2580 0462 0B46 mov r3, r1
2581 .loc 1 236 28
2582 0464 1046 mov r0, r2
2583 0466 1946 mov r1, r3
2584 0468 FFF7FEFF bl __aeabi_d2iz
2585 046c 0346 mov r3, r0
ARM GAS /tmp/cclV24WD.s page 50
2586 046e 1AB2 sxth r2, r3
2587 0470 7B68 ldr r3, [r7, #4]
2588 0472 5A83 strh r2, [r3, #26] @ movhi
237:Core/Src/ADBMS_Abstraction.c **** module->cellVoltages[14] = mV_from_ADBMS6830(rxbuffer[4] | (rxbuffer[5] << 8));
2589 .loc 1 237 30
2590 0474 3B7C ldrb r3, [r7, #16] @ zero_extendqisi2
2591 0476 1AB2 sxth r2, r3
2592 0478 7B7C ldrb r3, [r7, #17] @ zero_extendqisi2
2593 047a 1BB2 sxth r3, r3
2594 047c 1B02 lsls r3, r3, #8
2595 047e 1BB2 sxth r3, r3
2596 0480 1343 orrs r3, r3, r2
2597 0482 1BB2 sxth r3, r3
2598 0484 1846 mov r0, r3
2599 0486 FFF7FEFF bl __aeabi_i2d
2600 048a 27A3 adr r3, .L110
2601 048c D3E90023 ldrd r2, [r3]
2602 0490 FFF7FEFF bl __aeabi_dmul
2603 0494 0246 mov r2, r0
2604 0496 0B46 mov r3, r1
2605 0498 1046 mov r0, r2
2606 049a 1946 mov r1, r3
2607 049c 24A3 adr r3, .L110+8
2608 049e D3E90023 ldrd r2, [r3]
2609 04a2 FFF7FEFF bl __aeabi_dadd
2610 04a6 0246 mov r2, r0
2611 04a8 0B46 mov r3, r1
2612 .loc 1 237 28
2613 04aa 1046 mov r0, r2
2614 04ac 1946 mov r1, r3
2615 04ae FFF7FEFF bl __aeabi_d2iz
2616 04b2 0346 mov r3, r0
2617 04b4 1AB2 sxth r2, r3
2618 04b6 7B68 ldr r3, [r7, #4]
2619 04b8 9A83 strh r2, [r3, #28] @ movhi
2620 .LBB27:
238:Core/Src/ADBMS_Abstraction.c ****
239:Core/Src/ADBMS_Abstraction.c **** CHECK_RETURN(readCMD(RDCVF, rxbuffer, CV_GROUP_A_SIZE));
2621 .loc 1 239 3
2622 04ba 07F10C03 add r3, r7, #12
2623 04be 0622 movs r2, #6
2624 04c0 1946 mov r1, r3
2625 04c2 0B20 movs r0, #11
2626 04c4 FFF7FEFF bl readCMD
2627 04c8 0346 mov r3, r0
2628 04ca BB74 strb r3, [r7, #18]
2629 .loc 1 239 3 is_stmt 0 discriminator 1
2630 04cc BB7C ldrb r3, [r7, #18] @ zero_extendqisi2
2631 04ce 002B cmp r3, #0
2632 04d0 01D0 beq .L108
2633 04d2 BB7C ldrb r3, [r7, #18] @ zero_extendqisi2
2634 .loc 1 239 3
2635 04d4 23E0 b .L109
2636 .L108:
2637 .LBE27:
240:Core/Src/ADBMS_Abstraction.c **** module->cellVoltages[15] = mV_from_ADBMS6830(rxbuffer[0] | (rxbuffer[1] << 8));
2638 .loc 1 240 30 is_stmt 1
ARM GAS /tmp/cclV24WD.s page 51
2639 04d6 3B7B ldrb r3, [r7, #12] @ zero_extendqisi2
2640 04d8 1AB2 sxth r2, r3
2641 04da 7B7B ldrb r3, [r7, #13] @ zero_extendqisi2
2642 04dc 1BB2 sxth r3, r3
2643 04de 1B02 lsls r3, r3, #8
2644 04e0 1BB2 sxth r3, r3
2645 04e2 1343 orrs r3, r3, r2
2646 04e4 1BB2 sxth r3, r3
2647 04e6 1846 mov r0, r3
2648 04e8 FFF7FEFF bl __aeabi_i2d
2649 04ec 0EA3 adr r3, .L110
2650 04ee D3E90023 ldrd r2, [r3]
2651 04f2 FFF7FEFF bl __aeabi_dmul
2652 04f6 0246 mov r2, r0
2653 04f8 0B46 mov r3, r1
2654 04fa 1046 mov r0, r2
2655 04fc 1946 mov r1, r3
2656 04fe 0CA3 adr r3, .L110+8
2657 0500 D3E90023 ldrd r2, [r3]
2658 0504 FFF7FEFF bl __aeabi_dadd
2659 0508 0246 mov r2, r0
2660 050a 0B46 mov r3, r1
2661 .loc 1 240 28
2662 050c 1046 mov r0, r2
2663 050e 1946 mov r1, r3
2664 0510 FFF7FEFF bl __aeabi_d2iz
2665 0514 0346 mov r3, r0
2666 0516 1AB2 sxth r2, r3
2667 0518 7B68 ldr r3, [r7, #4]
2668 051a DA83 strh r2, [r3, #30] @ movhi
241:Core/Src/ADBMS_Abstraction.c ****
242:Core/Src/ADBMS_Abstraction.c **** return 0;
2669 .loc 1 242 10
2670 051c 0023 movs r3, #0
2671 .L109:
243:Core/Src/ADBMS_Abstraction.c **** }
2672 .loc 1 243 1
2673 051e 1846 mov r0, r3
2674 0520 1837 adds r7, r7, #24
2675 .cfi_def_cfa_offset 8
2676 0522 BD46 mov sp, r7
2677 .cfi_def_cfa_register 13
2678 @ sp needed
2679 0524 80BD pop {r7, pc}
2680 .L111:
2681 0526 00BF .align 3
2682 .L110:
2683 0528 33333333 .word 858993459
2684 052c 3333C33F .word 1069757235
2685 0530 00000000 .word 0
2686 0534 00709740 .word 1083666432
2687 .cfi_endproc
2688 .LFE144:
2690 .text
2691 .Letext0:
2692 .file 2 "/nix/store/p8vkamc9b2vlibs9aw76vnasdbifhcbm-gcc-arm-embedded-13.2.rel1/arm-none-eabi/incl
2693 .file 3 "/nix/store/p8vkamc9b2vlibs9aw76vnasdbifhcbm-gcc-arm-embedded-13.2.rel1/arm-none-eabi/incl
ARM GAS /tmp/cclV24WD.s page 52
2694 .file 4 "Drivers/CMSIS/Device/ST/STM32F3xx/Include/stm32f302xc.h"
2695 .file 5 "/nix/store/p8vkamc9b2vlibs9aw76vnasdbifhcbm-gcc-arm-embedded-13.2.rel1/lib/gcc/arm-none-e
2696 .file 6 "Drivers/STM32F3xx_HAL_Driver/Inc/stm32f3xx_hal_def.h"
2697 .file 7 "Drivers/STM32F3xx_HAL_Driver/Inc/stm32f3xx_hal_dma.h"
2698 .file 8 "Drivers/STM32F3xx_HAL_Driver/Inc/stm32f3xx_hal_spi.h"
2699 .file 9 "Core/Inc/ADBMS_LL_Driver.h"
2700 .file 10 "Core/Inc/ADBMS_Abstraction.h"
ARM GAS /tmp/cclV24WD.s page 53
DEFINED SYMBOLS
*ABS*:00000000 ADBMS_Abstraction.c
/tmp/cclV24WD.s:24 .bss.numberofcells:00000000 numberofcells
/tmp/cclV24WD.s:25 .bss.numberofcells:00000000 $d
/tmp/cclV24WD.s:30 .bss.numberofauxchannels:00000000 numberofauxchannels
/tmp/cclV24WD.s:31 .bss.numberofauxchannels:00000000 $d
/tmp/cclV24WD.s:33 .rodata:00000000 $d
/tmp/cclV24WD.s:37 .text.amsReset:00000000 $t
/tmp/cclV24WD.s:43 .text.amsReset:00000000 amsReset
/tmp/cclV24WD.s:233 .text.amsWakeUp:00000000 amsWakeUp
/tmp/cclV24WD.s:1647 .text.amsStopBalancing:00000000 amsStopBalancing
/tmp/cclV24WD.s:1711 .text.amsConfigOverUnderVoltage:00000000 amsConfigOverUnderVoltage
/tmp/cclV24WD.s:166 .text.amsReset:000000b4 $d
/tmp/cclV24WD.s:171 .text.initAMS:00000000 $t
/tmp/cclV24WD.s:177 .text.initAMS:00000000 initAMS
/tmp/cclV24WD.s:221 .text.initAMS:00000030 $d
/tmp/cclV24WD.s:227 .text.amsWakeUp:00000000 $t
/tmp/cclV24WD.s:266 .text.amsCellMeasurement:00000000 $t
/tmp/cclV24WD.s:272 .text.amsCellMeasurement:00000000 amsCellMeasurement
/tmp/cclV24WD.s:2050 .text.amsReadCellVoltages:00000000 amsReadCellVoltages
/tmp/cclV24WD.s:303 .text.amsConfigCellMeasurement:00000000 $t
/tmp/cclV24WD.s:309 .text.amsConfigCellMeasurement:00000000 amsConfigCellMeasurement
/tmp/cclV24WD.s:345 .text.amsConfigCellMeasurement:00000020 $d
/tmp/cclV24WD.s:355 .text.amsAuxAndStatusMeasurement:00000000 $t
/tmp/cclV24WD.s:361 .text.amsAuxAndStatusMeasurement:00000000 amsAuxAndStatusMeasurement
/tmp/cclV24WD.s:1178 .text.amsAuxAndStatusMeasurement:00000680 $d
/tmp/cclV24WD.s:1186 .text.amsConfigBalancing:00000000 $t
/tmp/cclV24WD.s:1192 .text.amsConfigBalancing:00000000 amsConfigBalancing
/tmp/cclV24WD.s:1601 .text.amsStartBalancing:00000000 $t
/tmp/cclV24WD.s:1607 .text.amsStartBalancing:00000000 amsStartBalancing
/tmp/cclV24WD.s:1641 .text.amsStopBalancing:00000000 $t
/tmp/cclV24WD.s:1672 .text.amsSelfTest:00000000 $t
/tmp/cclV24WD.s:1678 .text.amsSelfTest:00000000 amsSelfTest
/tmp/cclV24WD.s:1705 .text.amsConfigOverUnderVoltage:00000000 $t
/tmp/cclV24WD.s:1836 .text.amsCheckUnderOverVoltage:00000000 $t
/tmp/cclV24WD.s:1842 .text.amsCheckUnderOverVoltage:00000000 amsCheckUnderOverVoltage
/tmp/cclV24WD.s:1976 .text.amsCheckUnderOverVoltage:000000a0 $d
/tmp/cclV24WD.s:1981 .text.amsClearAux:00000000 $t
/tmp/cclV24WD.s:1987 .text.amsClearAux:00000000 amsClearAux
/tmp/cclV24WD.s:2012 .text.amsClearCells:00000000 $t
/tmp/cclV24WD.s:2018 .text.amsClearCells:00000000 amsClearCells
/tmp/cclV24WD.s:2044 .text.amsReadCellVoltages:00000000 $t
/tmp/cclV24WD.s:2683 .text.amsReadCellVoltages:00000528 $d
UNDEFINED SYMBOLS
readCMD
mcuDelay
writeCMD
adbmsDriverInit
__aeabi_i2d
__aeabi_dmul
__aeabi_dadd
__aeabi_d2f
__aeabi_d2uiz
pollCMD
__aeabi_d2iz