mv-bms/Software/build/ADBMS_LL_Driver.lst

2630 lines
106 KiB
Plaintext
Raw Blame History

This file contains invisible Unicode characters

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

ARM GAS /tmp/cczsHaNw.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_LL_Driver.c"
16 .text
17 .Ltext0:
18 .cfi_sections .debug_frame
19 .file 1 "Core/Src/ADBMS_LL_Driver.c"
20 .global adbmsspi
21 .section .bss.adbmsspi,"aw",%nobits
22 .align 2
25 adbmsspi:
26 0000 00000000 .space 4
27 .section .text.adbmsDriverInit,"ax",%progbits
28 .align 1
29 .global adbmsDriverInit
30 .syntax unified
31 .thumb
32 .thumb_func
34 adbmsDriverInit:
35 .LFB130:
1:Core/Src/ADBMS_LL_Driver.c **** /*
2:Core/Src/ADBMS_LL_Driver.c **** * ADBMS_LL_Driver.c
3:Core/Src/ADBMS_LL_Driver.c **** *
4:Core/Src/ADBMS_LL_Driver.c **** * Created on: 05.06.2022
5:Core/Src/ADBMS_LL_Driver.c **** * Author: max
6:Core/Src/ADBMS_LL_Driver.c **** */
7:Core/Src/ADBMS_LL_Driver.c ****
8:Core/Src/ADBMS_LL_Driver.c **** #include "ADBMS_LL_Driver.h"
9:Core/Src/ADBMS_LL_Driver.c ****
10:Core/Src/ADBMS_LL_Driver.c **** #define INITIAL_COMMAND_PEC 0x0010
11:Core/Src/ADBMS_LL_Driver.c **** #define INITIAL_DATA_PEC 0x0010
12:Core/Src/ADBMS_LL_Driver.c **** #define ADBMS_SPI_TIMEOUT 100 // Timeout in ms
13:Core/Src/ADBMS_LL_Driver.c **** #warning ask about the timeout value
14:Core/Src/ADBMS_LL_Driver.c ****
15:Core/Src/ADBMS_LL_Driver.c **** SPI_HandleTypeDef* adbmsspi;
16:Core/Src/ADBMS_LL_Driver.c ****
17:Core/Src/ADBMS_LL_Driver.c **** uint8 adbmsDriverInit(SPI_HandleTypeDef* hspi) {
36 .loc 1 17 48
37 .cfi_startproc
38 @ args = 0, pretend = 0, frame = 8
39 @ frame_needed = 1, uses_anonymous_args = 0
40 0000 80B5 push {r7, lr}
41 .cfi_def_cfa_offset 8
42 .cfi_offset 7, -8
43 .cfi_offset 14, -4
ARM GAS /tmp/cczsHaNw.s page 2
44 0002 82B0 sub sp, sp, #8
45 .cfi_def_cfa_offset 16
46 0004 00AF add r7, sp, #0
47 .cfi_def_cfa_register 7
48 0006 7860 str r0, [r7, #4]
18:Core/Src/ADBMS_LL_Driver.c **** mcuAdbmsCSLow();
49 .loc 1 18 3
50 0008 FFF7FEFF bl mcuAdbmsCSLow
19:Core/Src/ADBMS_LL_Driver.c **** HAL_Delay(1);
51 .loc 1 19 3
52 000c 0120 movs r0, #1
53 000e FFF7FEFF bl HAL_Delay
20:Core/Src/ADBMS_LL_Driver.c **** mcuAdbmsCSHigh();
54 .loc 1 20 3
55 0012 FFF7FEFF bl mcuAdbmsCSHigh
21:Core/Src/ADBMS_LL_Driver.c **** adbmsspi = hspi;
56 .loc 1 21 12
57 0016 044A ldr r2, .L3
58 0018 7B68 ldr r3, [r7, #4]
59 001a 1360 str r3, [r2]
22:Core/Src/ADBMS_LL_Driver.c **** return 0;
60 .loc 1 22 10
61 001c 0023 movs r3, #0
23:Core/Src/ADBMS_LL_Driver.c **** }
62 .loc 1 23 1
63 001e 1846 mov r0, r3
64 0020 0837 adds r7, r7, #8
65 .cfi_def_cfa_offset 8
66 0022 BD46 mov sp, r7
67 .cfi_def_cfa_register 13
68 @ sp needed
69 0024 80BD pop {r7, pc}
70 .L4:
71 0026 00BF .align 2
72 .L3:
73 0028 00000000 .word adbmsspi
74 .cfi_endproc
75 .LFE130:
77 .section .text.calculateCommandPEC,"ax",%progbits
78 .align 1
79 .global calculateCommandPEC
80 .syntax unified
81 .thumb
82 .thumb_func
84 calculateCommandPEC:
85 .LFB131:
24:Core/Src/ADBMS_LL_Driver.c ****
25:Core/Src/ADBMS_LL_Driver.c **** //command PEC calculation
26:Core/Src/ADBMS_LL_Driver.c **** //CRC-15
27:Core/Src/ADBMS_LL_Driver.c **** //x^15 + x^14 + x^10 + x^8 + x^7 + x^4 + x^3 + 1
28:Core/Src/ADBMS_LL_Driver.c ****
29:Core/Src/ADBMS_LL_Driver.c **** uint8 calculateCommandPEC(uint8_t* data, uint8_t datalen) {
86 .loc 1 29 59
87 .cfi_startproc
88 @ args = 0, pretend = 0, frame = 24
89 @ frame_needed = 1, uses_anonymous_args = 0
90 0000 80B5 push {r7, lr}
ARM GAS /tmp/cczsHaNw.s page 3
91 .cfi_def_cfa_offset 8
92 .cfi_offset 7, -8
93 .cfi_offset 14, -4
94 0002 86B0 sub sp, sp, #24
95 .cfi_def_cfa_offset 32
96 0004 00AF add r7, sp, #0
97 .cfi_def_cfa_register 7
98 0006 7860 str r0, [r7, #4]
99 0008 0B46 mov r3, r1
100 000a FB70 strb r3, [r7, #3]
30:Core/Src/ADBMS_LL_Driver.c **** uint16 currentpec = INITIAL_COMMAND_PEC;
101 .loc 1 30 10
102 000c 1023 movs r3, #16
103 000e FB82 strh r3, [r7, #22] @ movhi
31:Core/Src/ADBMS_LL_Driver.c **** if (datalen >= 3) {
104 .loc 1 31 6
105 0010 FB78 ldrb r3, [r7, #3] @ zero_extendqisi2
106 0012 022B cmp r3, #2
107 0014 38D9 bls .L6
108 .LBB2:
32:Core/Src/ADBMS_LL_Driver.c **** for (int i = 0; i < (datalen - 2); i++) {
109 .loc 1 32 14
110 0016 0023 movs r3, #0
111 0018 3B61 str r3, [r7, #16]
112 .loc 1 32 5
113 001a 1CE0 b .L7
114 .L10:
115 .LBB3:
33:Core/Src/ADBMS_LL_Driver.c **** for (int n = 0; n < 8; n++) {
116 .loc 1 33 16
117 001c 0023 movs r3, #0
118 001e FB60 str r3, [r7, #12]
119 .loc 1 33 7
120 0020 13E0 b .L8
121 .L9:
122 .LBB4:
34:Core/Src/ADBMS_LL_Driver.c **** const uint8 din = data[i] << (n);
123 .loc 1 34 33
124 0022 3B69 ldr r3, [r7, #16]
125 0024 7A68 ldr r2, [r7, #4]
126 0026 1344 add r3, r3, r2
127 0028 1B78 ldrb r3, [r3] @ zero_extendqisi2
128 002a 1A46 mov r2, r3
129 .loc 1 34 37
130 002c FB68 ldr r3, [r7, #12]
131 002e 02FA03F3 lsl r3, r2, r3
132 .loc 1 34 23
133 0032 FB72 strb r3, [r7, #11]
35:Core/Src/ADBMS_LL_Driver.c **** currentpec = updateCommandPEC(currentpec, din);
134 .loc 1 35 22
135 0034 FA7A ldrb r2, [r7, #11] @ zero_extendqisi2
136 0036 FB8A ldrh r3, [r7, #22]
137 0038 1146 mov r1, r2
138 003a 1846 mov r0, r3
139 003c FFF7FEFF bl updateCommandPEC
140 0040 0346 mov r3, r0
141 0042 FB82 strh r3, [r7, #22] @ movhi
ARM GAS /tmp/cczsHaNw.s page 4
142 .LBE4:
33:Core/Src/ADBMS_LL_Driver.c **** for (int n = 0; n < 8; n++) {
143 .loc 1 33 31 discriminator 3
144 0044 FB68 ldr r3, [r7, #12]
145 0046 0133 adds r3, r3, #1
146 0048 FB60 str r3, [r7, #12]
147 .L8:
33:Core/Src/ADBMS_LL_Driver.c **** for (int n = 0; n < 8; n++) {
148 .loc 1 33 25 discriminator 1
149 004a FB68 ldr r3, [r7, #12]
150 004c 072B cmp r3, #7
151 004e E8DD ble .L9
152 .LBE3:
32:Core/Src/ADBMS_LL_Driver.c **** for (int n = 0; n < 8; n++) {
153 .loc 1 32 41 discriminator 2
154 0050 3B69 ldr r3, [r7, #16]
155 0052 0133 adds r3, r3, #1
156 0054 3B61 str r3, [r7, #16]
157 .L7:
32:Core/Src/ADBMS_LL_Driver.c **** for (int n = 0; n < 8; n++) {
158 .loc 1 32 34 discriminator 1
159 0056 FB78 ldrb r3, [r7, #3] @ zero_extendqisi2
160 0058 023B subs r3, r3, #2
32:Core/Src/ADBMS_LL_Driver.c **** for (int n = 0; n < 8; n++) {
161 .loc 1 32 23 discriminator 1
162 005a 3A69 ldr r2, [r7, #16]
163 005c 9A42 cmp r2, r3
164 005e DDDB blt .L10
165 .LBE2:
36:Core/Src/ADBMS_LL_Driver.c **** }
37:Core/Src/ADBMS_LL_Driver.c **** }
38:Core/Src/ADBMS_LL_Driver.c ****
39:Core/Src/ADBMS_LL_Driver.c **** data[datalen - 2] = (currentpec >> 7) & 0xFF;
166 .loc 1 39 23
167 0060 FB8A ldrh r3, [r7, #22]
168 0062 DB09 lsrs r3, r3, #7
169 0064 99B2 uxth r1, r3
170 .loc 1 39 9
171 0066 FB78 ldrb r3, [r7, #3] @ zero_extendqisi2
172 0068 023B subs r3, r3, #2
173 006a 7A68 ldr r2, [r7, #4]
174 006c 1344 add r3, r3, r2
175 .loc 1 39 23
176 006e CAB2 uxtb r2, r1
177 0070 1A70 strb r2, [r3]
40:Core/Src/ADBMS_LL_Driver.c **** data[datalen - 1] = (currentpec << 1) & 0xFF;
178 .loc 1 40 23
179 0072 FB8A ldrh r3, [r7, #22] @ movhi
180 0074 DAB2 uxtb r2, r3
181 .loc 1 40 9
182 0076 FB78 ldrb r3, [r7, #3] @ zero_extendqisi2
183 0078 013B subs r3, r3, #1
184 007a 7968 ldr r1, [r7, #4]
185 007c 0B44 add r3, r3, r1
186 .loc 1 40 23
187 007e 5200 lsls r2, r2, #1
188 0080 D2B2 uxtb r2, r2
ARM GAS /tmp/cczsHaNw.s page 5
189 0082 1A70 strb r2, [r3]
41:Core/Src/ADBMS_LL_Driver.c **** return 0;
190 .loc 1 41 12
191 0084 0023 movs r3, #0
192 0086 00E0 b .L11
193 .L6:
42:Core/Src/ADBMS_LL_Driver.c **** } else {
43:Core/Src/ADBMS_LL_Driver.c **** return 1;
194 .loc 1 43 12
195 0088 0123 movs r3, #1
196 .L11:
44:Core/Src/ADBMS_LL_Driver.c **** }
45:Core/Src/ADBMS_LL_Driver.c **** }
197 .loc 1 45 1
198 008a 1846 mov r0, r3
199 008c 1837 adds r7, r7, #24
200 .cfi_def_cfa_offset 8
201 008e BD46 mov sp, r7
202 .cfi_def_cfa_register 13
203 @ sp needed
204 0090 80BD pop {r7, pc}
205 .cfi_endproc
206 .LFE131:
208 .section .text.checkCommandPEC,"ax",%progbits
209 .align 1
210 .global checkCommandPEC
211 .syntax unified
212 .thumb
213 .thumb_func
215 checkCommandPEC:
216 .LFB132:
46:Core/Src/ADBMS_LL_Driver.c ****
47:Core/Src/ADBMS_LL_Driver.c **** uint8 checkCommandPEC(uint8* data, uint8 datalen) {
217 .loc 1 47 51
218 .cfi_startproc
219 @ args = 0, pretend = 0, frame = 24
220 @ frame_needed = 1, uses_anonymous_args = 0
221 0000 80B5 push {r7, lr}
222 .cfi_def_cfa_offset 8
223 .cfi_offset 7, -8
224 .cfi_offset 14, -4
225 0002 86B0 sub sp, sp, #24
226 .cfi_def_cfa_offset 32
227 0004 00AF add r7, sp, #0
228 .cfi_def_cfa_register 7
229 0006 7860 str r0, [r7, #4]
230 0008 0B46 mov r3, r1
231 000a FB70 strb r3, [r7, #3]
48:Core/Src/ADBMS_LL_Driver.c **** if (datalen <= 3) {
232 .loc 1 48 6
233 000c FB78 ldrb r3, [r7, #3] @ zero_extendqisi2
234 000e 032B cmp r3, #3
235 0010 01D8 bhi .L13
49:Core/Src/ADBMS_LL_Driver.c **** return 255;
236 .loc 1 49 12
237 0012 FF23 movs r3, #255
238 0014 41E0 b .L14
ARM GAS /tmp/cczsHaNw.s page 6
239 .L13:
50:Core/Src/ADBMS_LL_Driver.c **** }
51:Core/Src/ADBMS_LL_Driver.c ****
52:Core/Src/ADBMS_LL_Driver.c **** uint16 currentpec = INITIAL_COMMAND_PEC;
240 .loc 1 52 10
241 0016 1023 movs r3, #16
242 0018 FB82 strh r3, [r7, #22] @ movhi
243 .LBB5:
53:Core/Src/ADBMS_LL_Driver.c ****
54:Core/Src/ADBMS_LL_Driver.c **** for (int i = 0; i < (datalen - 2); i++) {
244 .loc 1 54 12
245 001a 0023 movs r3, #0
246 001c 3B61 str r3, [r7, #16]
247 .loc 1 54 3
248 001e 1CE0 b .L15
249 .L18:
250 .LBB6:
55:Core/Src/ADBMS_LL_Driver.c **** for (int n = 0; n < 8; n++) {
251 .loc 1 55 14
252 0020 0023 movs r3, #0
253 0022 FB60 str r3, [r7, #12]
254 .loc 1 55 5
255 0024 13E0 b .L16
256 .L17:
257 .LBB7:
56:Core/Src/ADBMS_LL_Driver.c **** const uint8 din = data[i] << (n);
258 .loc 1 56 31
259 0026 3B69 ldr r3, [r7, #16]
260 0028 7A68 ldr r2, [r7, #4]
261 002a 1344 add r3, r3, r2
262 002c 1B78 ldrb r3, [r3] @ zero_extendqisi2
263 002e 1A46 mov r2, r3
264 .loc 1 56 35
265 0030 FB68 ldr r3, [r7, #12]
266 0032 02FA03F3 lsl r3, r2, r3
267 .loc 1 56 21
268 0036 7B72 strb r3, [r7, #9]
57:Core/Src/ADBMS_LL_Driver.c **** currentpec = updateCommandPEC(currentpec, din);
269 .loc 1 57 20
270 0038 7A7A ldrb r2, [r7, #9] @ zero_extendqisi2
271 003a FB8A ldrh r3, [r7, #22]
272 003c 1146 mov r1, r2
273 003e 1846 mov r0, r3
274 0040 FFF7FEFF bl updateCommandPEC
275 0044 0346 mov r3, r0
276 0046 FB82 strh r3, [r7, #22] @ movhi
277 .LBE7:
55:Core/Src/ADBMS_LL_Driver.c **** for (int n = 0; n < 8; n++) {
278 .loc 1 55 29 discriminator 3
279 0048 FB68 ldr r3, [r7, #12]
280 004a 0133 adds r3, r3, #1
281 004c FB60 str r3, [r7, #12]
282 .L16:
55:Core/Src/ADBMS_LL_Driver.c **** for (int n = 0; n < 8; n++) {
283 .loc 1 55 23 discriminator 1
284 004e FB68 ldr r3, [r7, #12]
285 0050 072B cmp r3, #7
ARM GAS /tmp/cczsHaNw.s page 7
286 0052 E8DD ble .L17
287 .LBE6:
54:Core/Src/ADBMS_LL_Driver.c **** for (int n = 0; n < 8; n++) {
288 .loc 1 54 39 discriminator 2
289 0054 3B69 ldr r3, [r7, #16]
290 0056 0133 adds r3, r3, #1
291 0058 3B61 str r3, [r7, #16]
292 .L15:
54:Core/Src/ADBMS_LL_Driver.c **** for (int n = 0; n < 8; n++) {
293 .loc 1 54 32 discriminator 1
294 005a FB78 ldrb r3, [r7, #3] @ zero_extendqisi2
295 005c 023B subs r3, r3, #2
54:Core/Src/ADBMS_LL_Driver.c **** for (int n = 0; n < 8; n++) {
296 .loc 1 54 21 discriminator 1
297 005e 3A69 ldr r2, [r7, #16]
298 0060 9A42 cmp r2, r3
299 0062 DDDB blt .L18
300 .LBE5:
58:Core/Src/ADBMS_LL_Driver.c **** }
59:Core/Src/ADBMS_LL_Driver.c **** }
60:Core/Src/ADBMS_LL_Driver.c ****
61:Core/Src/ADBMS_LL_Driver.c **** const uint8 pechigh = (currentpec >> 7) & 0xFF;
301 .loc 1 61 15
302 0064 FB8A ldrh r3, [r7, #22]
303 0066 DB09 lsrs r3, r3, #7
304 0068 9BB2 uxth r3, r3
305 006a FB72 strb r3, [r7, #11]
62:Core/Src/ADBMS_LL_Driver.c **** const uint8 peclow = (currentpec << 1) & 0xFF;
306 .loc 1 62 15
307 006c FB8A ldrh r3, [r7, #22] @ movhi
308 006e DBB2 uxtb r3, r3
309 0070 5B00 lsls r3, r3, #1
310 0072 BB72 strb r3, [r7, #10]
63:Core/Src/ADBMS_LL_Driver.c ****
64:Core/Src/ADBMS_LL_Driver.c **** if ((pechigh == data[datalen - 2]) && (peclow == data[datalen - 1])) {
311 .loc 1 64 23
312 0074 FB78 ldrb r3, [r7, #3] @ zero_extendqisi2
313 0076 023B subs r3, r3, #2
314 0078 7A68 ldr r2, [r7, #4]
315 007a 1344 add r3, r3, r2
316 007c 1B78 ldrb r3, [r3] @ zero_extendqisi2
317 .loc 1 64 6
318 007e FA7A ldrb r2, [r7, #11] @ zero_extendqisi2
319 0080 9A42 cmp r2, r3
320 0082 09D1 bne .L19
321 .loc 1 64 56 discriminator 1
322 0084 FB78 ldrb r3, [r7, #3] @ zero_extendqisi2
323 0086 013B subs r3, r3, #1
324 0088 7A68 ldr r2, [r7, #4]
325 008a 1344 add r3, r3, r2
326 008c 1B78 ldrb r3, [r3] @ zero_extendqisi2
327 .loc 1 64 38 discriminator 1
328 008e BA7A ldrb r2, [r7, #10] @ zero_extendqisi2
329 0090 9A42 cmp r2, r3
330 0092 01D1 bne .L19
65:Core/Src/ADBMS_LL_Driver.c **** return 0;
331 .loc 1 65 12
ARM GAS /tmp/cczsHaNw.s page 8
332 0094 0023 movs r3, #0
333 0096 00E0 b .L14
334 .L19:
66:Core/Src/ADBMS_LL_Driver.c **** }
67:Core/Src/ADBMS_LL_Driver.c ****
68:Core/Src/ADBMS_LL_Driver.c **** return 1;
335 .loc 1 68 10
336 0098 0123 movs r3, #1
337 .L14:
69:Core/Src/ADBMS_LL_Driver.c **** }
338 .loc 1 69 1
339 009a 1846 mov r0, r3
340 009c 1837 adds r7, r7, #24
341 .cfi_def_cfa_offset 8
342 009e BD46 mov sp, r7
343 .cfi_def_cfa_register 13
344 @ sp needed
345 00a0 80BD pop {r7, pc}
346 .cfi_endproc
347 .LFE132:
349 .section .text.updateCommandPEC,"ax",%progbits
350 .align 1
351 .global updateCommandPEC
352 .syntax unified
353 .thumb
354 .thumb_func
356 updateCommandPEC:
357 .LFB133:
70:Core/Src/ADBMS_LL_Driver.c ****
71:Core/Src/ADBMS_LL_Driver.c **** uint16 updateCommandPEC(uint16 currentPEC, uint8 din) {
358 .loc 1 71 55
359 .cfi_startproc
360 @ args = 0, pretend = 0, frame = 24
361 @ frame_needed = 1, uses_anonymous_args = 0
362 @ link register save eliminated.
363 0000 80B4 push {r7}
364 .cfi_def_cfa_offset 4
365 .cfi_offset 7, -4
366 0002 87B0 sub sp, sp, #28
367 .cfi_def_cfa_offset 32
368 0004 00AF add r7, sp, #0
369 .cfi_def_cfa_register 7
370 0006 0346 mov r3, r0
371 0008 0A46 mov r2, r1
372 000a FB80 strh r3, [r7, #6] @ movhi
373 000c 1346 mov r3, r2
374 000e 7B71 strb r3, [r7, #5]
72:Core/Src/ADBMS_LL_Driver.c **** din = (din >> 7) & 0x01;
375 .loc 1 72 7
376 0010 7B79 ldrb r3, [r7, #5] @ zero_extendqisi2
377 0012 DB09 lsrs r3, r3, #7
378 0014 7B71 strb r3, [r7, #5]
73:Core/Src/ADBMS_LL_Driver.c **** const uint8 in0 = din ^ ((currentPEC >> 14) & 0x01);
379 .loc 1 73 47
380 0016 FB88 ldrh r3, [r7, #6]
381 0018 9B0B lsrs r3, r3, #14
382 001a 9BB2 uxth r3, r3
ARM GAS /tmp/cczsHaNw.s page 9
383 001c 5BB2 sxtb r3, r3
384 001e 03F00103 and r3, r3, #1
385 0022 5AB2 sxtb r2, r3
386 .loc 1 73 25
387 0024 97F90530 ldrsb r3, [r7, #5]
388 0028 5340 eors r3, r3, r2
389 002a 5BB2 sxtb r3, r3
390 .loc 1 73 15
391 002c FB75 strb r3, [r7, #23]
74:Core/Src/ADBMS_LL_Driver.c **** const uint8 in3 = in0 ^ ((currentPEC >> 2) & 0x01);
392 .loc 1 74 46
393 002e FB88 ldrh r3, [r7, #6]
394 0030 9B08 lsrs r3, r3, #2
395 0032 9BB2 uxth r3, r3
396 0034 5BB2 sxtb r3, r3
397 0036 03F00103 and r3, r3, #1
398 003a 5AB2 sxtb r2, r3
399 .loc 1 74 25
400 003c 97F91730 ldrsb r3, [r7, #23]
401 0040 5340 eors r3, r3, r2
402 0042 5BB2 sxtb r3, r3
403 .loc 1 74 15
404 0044 BB75 strb r3, [r7, #22]
75:Core/Src/ADBMS_LL_Driver.c **** const uint8 in4 = in0 ^ ((currentPEC >> 3) & 0x01);
405 .loc 1 75 46
406 0046 FB88 ldrh r3, [r7, #6]
407 0048 DB08 lsrs r3, r3, #3
408 004a 9BB2 uxth r3, r3
409 004c 5BB2 sxtb r3, r3
410 004e 03F00103 and r3, r3, #1
411 0052 5AB2 sxtb r2, r3
412 .loc 1 75 25
413 0054 97F91730 ldrsb r3, [r7, #23]
414 0058 5340 eors r3, r3, r2
415 005a 5BB2 sxtb r3, r3
416 .loc 1 75 15
417 005c 7B75 strb r3, [r7, #21]
76:Core/Src/ADBMS_LL_Driver.c **** const uint8 in7 = in0 ^ ((currentPEC >> 6) & 0x01);
418 .loc 1 76 46
419 005e FB88 ldrh r3, [r7, #6]
420 0060 9B09 lsrs r3, r3, #6
421 0062 9BB2 uxth r3, r3
422 0064 5BB2 sxtb r3, r3
423 0066 03F00103 and r3, r3, #1
424 006a 5AB2 sxtb r2, r3
425 .loc 1 76 25
426 006c 97F91730 ldrsb r3, [r7, #23]
427 0070 5340 eors r3, r3, r2
428 0072 5BB2 sxtb r3, r3
429 .loc 1 76 15
430 0074 3B75 strb r3, [r7, #20]
77:Core/Src/ADBMS_LL_Driver.c **** const uint8 in8 = in0 ^ ((currentPEC >> 7) & 0x01);
431 .loc 1 77 46
432 0076 FB88 ldrh r3, [r7, #6]
433 0078 DB09 lsrs r3, r3, #7
434 007a 9BB2 uxth r3, r3
435 007c 5BB2 sxtb r3, r3
ARM GAS /tmp/cczsHaNw.s page 10
436 007e 03F00103 and r3, r3, #1
437 0082 5AB2 sxtb r2, r3
438 .loc 1 77 25
439 0084 97F91730 ldrsb r3, [r7, #23]
440 0088 5340 eors r3, r3, r2
441 008a 5BB2 sxtb r3, r3
442 .loc 1 77 15
443 008c FB74 strb r3, [r7, #19]
78:Core/Src/ADBMS_LL_Driver.c **** const uint8 in10 = in0 ^ ((currentPEC >> 9) & 0x01);
444 .loc 1 78 47
445 008e FB88 ldrh r3, [r7, #6]
446 0090 5B0A lsrs r3, r3, #9
447 0092 9BB2 uxth r3, r3
448 0094 5BB2 sxtb r3, r3
449 0096 03F00103 and r3, r3, #1
450 009a 5AB2 sxtb r2, r3
451 .loc 1 78 26
452 009c 97F91730 ldrsb r3, [r7, #23]
453 00a0 5340 eors r3, r3, r2
454 00a2 5BB2 sxtb r3, r3
455 .loc 1 78 15
456 00a4 BB74 strb r3, [r7, #18]
79:Core/Src/ADBMS_LL_Driver.c **** const uint8 in14 = in0 ^ ((currentPEC >> 13) & 0x01);
457 .loc 1 79 48
458 00a6 FB88 ldrh r3, [r7, #6]
459 00a8 5B0B lsrs r3, r3, #13
460 00aa 9BB2 uxth r3, r3
461 00ac 5BB2 sxtb r3, r3
462 00ae 03F00103 and r3, r3, #1
463 00b2 5AB2 sxtb r2, r3
464 .loc 1 79 26
465 00b4 97F91730 ldrsb r3, [r7, #23]
466 00b8 5340 eors r3, r3, r2
467 00ba 5BB2 sxtb r3, r3
468 .loc 1 79 15
469 00bc 7B74 strb r3, [r7, #17]
80:Core/Src/ADBMS_LL_Driver.c ****
81:Core/Src/ADBMS_LL_Driver.c **** uint16 newPEC = 0;
470 .loc 1 81 10
471 00be 0023 movs r3, #0
472 00c0 FB81 strh r3, [r7, #14] @ movhi
82:Core/Src/ADBMS_LL_Driver.c ****
83:Core/Src/ADBMS_LL_Driver.c **** newPEC |= in14 << 14;
473 .loc 1 83 10
474 00c2 7B7C ldrb r3, [r7, #17] @ zero_extendqisi2
475 00c4 1BB2 sxth r3, r3
476 00c6 9B03 lsls r3, r3, #14
477 00c8 1AB2 sxth r2, r3
478 00ca B7F90E30 ldrsh r3, [r7, #14]
479 00ce 1343 orrs r3, r3, r2
480 00d0 1BB2 sxth r3, r3
481 00d2 FB81 strh r3, [r7, #14] @ movhi
84:Core/Src/ADBMS_LL_Driver.c **** newPEC |= (currentPEC & (0x01 << 12)) << 1;
482 .loc 1 84 41
483 00d4 B7F90630 ldrsh r3, [r7, #6]
484 00d8 5B00 lsls r3, r3, #1
485 00da 1BB2 sxth r3, r3
ARM GAS /tmp/cczsHaNw.s page 11
486 00dc 03F40053 and r3, r3, #8192
487 00e0 1AB2 sxth r2, r3
488 .loc 1 84 10
489 00e2 B7F90E30 ldrsh r3, [r7, #14]
490 00e6 1343 orrs r3, r3, r2
491 00e8 1BB2 sxth r3, r3
492 00ea FB81 strh r3, [r7, #14] @ movhi
85:Core/Src/ADBMS_LL_Driver.c **** newPEC |= (currentPEC & (0x01 << 11)) << 1;
493 .loc 1 85 41
494 00ec B7F90630 ldrsh r3, [r7, #6]
495 00f0 5B00 lsls r3, r3, #1
496 00f2 1BB2 sxth r3, r3
497 00f4 03F48053 and r3, r3, #4096
498 00f8 1AB2 sxth r2, r3
499 .loc 1 85 10
500 00fa B7F90E30 ldrsh r3, [r7, #14]
501 00fe 1343 orrs r3, r3, r2
502 0100 1BB2 sxth r3, r3
503 0102 FB81 strh r3, [r7, #14] @ movhi
86:Core/Src/ADBMS_LL_Driver.c **** newPEC |= (currentPEC & (0x01 << 10)) << 1;
504 .loc 1 86 41
505 0104 B7F90630 ldrsh r3, [r7, #6]
506 0108 5B00 lsls r3, r3, #1
507 010a 1BB2 sxth r3, r3
508 010c 03F40063 and r3, r3, #2048
509 0110 1AB2 sxth r2, r3
510 .loc 1 86 10
511 0112 B7F90E30 ldrsh r3, [r7, #14]
512 0116 1343 orrs r3, r3, r2
513 0118 1BB2 sxth r3, r3
514 011a FB81 strh r3, [r7, #14] @ movhi
87:Core/Src/ADBMS_LL_Driver.c **** newPEC |= in10 << 10;
515 .loc 1 87 10
516 011c BB7C ldrb r3, [r7, #18] @ zero_extendqisi2
517 011e 1BB2 sxth r3, r3
518 0120 9B02 lsls r3, r3, #10
519 0122 1AB2 sxth r2, r3
520 0124 B7F90E30 ldrsh r3, [r7, #14]
521 0128 1343 orrs r3, r3, r2
522 012a 1BB2 sxth r3, r3
523 012c FB81 strh r3, [r7, #14] @ movhi
88:Core/Src/ADBMS_LL_Driver.c **** newPEC |= (currentPEC & (0x01 << 8)) << 1;
524 .loc 1 88 40
525 012e B7F90630 ldrsh r3, [r7, #6]
526 0132 5B00 lsls r3, r3, #1
527 0134 1BB2 sxth r3, r3
528 0136 03F40073 and r3, r3, #512
529 013a 1AB2 sxth r2, r3
530 .loc 1 88 10
531 013c B7F90E30 ldrsh r3, [r7, #14]
532 0140 1343 orrs r3, r3, r2
533 0142 1BB2 sxth r3, r3
534 0144 FB81 strh r3, [r7, #14] @ movhi
89:Core/Src/ADBMS_LL_Driver.c **** newPEC |= in8 << 8;
535 .loc 1 89 10
536 0146 FB7C ldrb r3, [r7, #19] @ zero_extendqisi2
537 0148 1BB2 sxth r3, r3
ARM GAS /tmp/cczsHaNw.s page 12
538 014a 1B02 lsls r3, r3, #8
539 014c 1AB2 sxth r2, r3
540 014e B7F90E30 ldrsh r3, [r7, #14]
541 0152 1343 orrs r3, r3, r2
542 0154 1BB2 sxth r3, r3
543 0156 FB81 strh r3, [r7, #14] @ movhi
90:Core/Src/ADBMS_LL_Driver.c **** newPEC |= in7 << 7;
544 .loc 1 90 10
545 0158 3B7D ldrb r3, [r7, #20] @ zero_extendqisi2
546 015a 1BB2 sxth r3, r3
547 015c DB01 lsls r3, r3, #7
548 015e 1AB2 sxth r2, r3
549 0160 B7F90E30 ldrsh r3, [r7, #14]
550 0164 1343 orrs r3, r3, r2
551 0166 1BB2 sxth r3, r3
552 0168 FB81 strh r3, [r7, #14] @ movhi
91:Core/Src/ADBMS_LL_Driver.c **** newPEC |= (currentPEC & (0x01 << 5)) << 1;
553 .loc 1 91 40
554 016a B7F90630 ldrsh r3, [r7, #6]
555 016e 5B00 lsls r3, r3, #1
556 0170 1BB2 sxth r3, r3
557 0172 03F04003 and r3, r3, #64
558 0176 1AB2 sxth r2, r3
559 .loc 1 91 10
560 0178 B7F90E30 ldrsh r3, [r7, #14]
561 017c 1343 orrs r3, r3, r2
562 017e 1BB2 sxth r3, r3
563 0180 FB81 strh r3, [r7, #14] @ movhi
92:Core/Src/ADBMS_LL_Driver.c **** newPEC |= (currentPEC & (0x01 << 4)) << 1;
564 .loc 1 92 40
565 0182 B7F90630 ldrsh r3, [r7, #6]
566 0186 5B00 lsls r3, r3, #1
567 0188 1BB2 sxth r3, r3
568 018a 03F02003 and r3, r3, #32
569 018e 1AB2 sxth r2, r3
570 .loc 1 92 10
571 0190 B7F90E30 ldrsh r3, [r7, #14]
572 0194 1343 orrs r3, r3, r2
573 0196 1BB2 sxth r3, r3
574 0198 FB81 strh r3, [r7, #14] @ movhi
93:Core/Src/ADBMS_LL_Driver.c **** newPEC |= in4 << 4;
575 .loc 1 93 10
576 019a 7B7D ldrb r3, [r7, #21] @ zero_extendqisi2
577 019c 1BB2 sxth r3, r3
578 019e 1B01 lsls r3, r3, #4
579 01a0 1AB2 sxth r2, r3
580 01a2 B7F90E30 ldrsh r3, [r7, #14]
581 01a6 1343 orrs r3, r3, r2
582 01a8 1BB2 sxth r3, r3
583 01aa FB81 strh r3, [r7, #14] @ movhi
94:Core/Src/ADBMS_LL_Driver.c **** newPEC |= in3 << 3;
584 .loc 1 94 10
585 01ac BB7D ldrb r3, [r7, #22] @ zero_extendqisi2
586 01ae 1BB2 sxth r3, r3
587 01b0 DB00 lsls r3, r3, #3
588 01b2 1AB2 sxth r2, r3
589 01b4 B7F90E30 ldrsh r3, [r7, #14]
ARM GAS /tmp/cczsHaNw.s page 13
590 01b8 1343 orrs r3, r3, r2
591 01ba 1BB2 sxth r3, r3
592 01bc FB81 strh r3, [r7, #14] @ movhi
95:Core/Src/ADBMS_LL_Driver.c **** newPEC |= (currentPEC & (0x01 << 1)) << 1;
593 .loc 1 95 40
594 01be B7F90630 ldrsh r3, [r7, #6]
595 01c2 5B00 lsls r3, r3, #1
596 01c4 1BB2 sxth r3, r3
597 01c6 03F00403 and r3, r3, #4
598 01ca 1AB2 sxth r2, r3
599 .loc 1 95 10
600 01cc B7F90E30 ldrsh r3, [r7, #14]
601 01d0 1343 orrs r3, r3, r2
602 01d2 1BB2 sxth r3, r3
603 01d4 FB81 strh r3, [r7, #14] @ movhi
96:Core/Src/ADBMS_LL_Driver.c **** newPEC |= (currentPEC & (0x01)) << 1;
604 .loc 1 96 35
605 01d6 B7F90630 ldrsh r3, [r7, #6]
606 01da 5B00 lsls r3, r3, #1
607 01dc 1BB2 sxth r3, r3
608 01de 03F00203 and r3, r3, #2
609 01e2 1AB2 sxth r2, r3
610 .loc 1 96 10
611 01e4 B7F90E30 ldrsh r3, [r7, #14]
612 01e8 1343 orrs r3, r3, r2
613 01ea 1BB2 sxth r3, r3
614 01ec FB81 strh r3, [r7, #14] @ movhi
97:Core/Src/ADBMS_LL_Driver.c **** newPEC |= in0;
615 .loc 1 97 10
616 01ee FB7D ldrb r3, [r7, #23] @ zero_extendqisi2
617 01f0 9AB2 uxth r2, r3
618 01f2 FB89 ldrh r3, [r7, #14] @ movhi
619 01f4 1343 orrs r3, r3, r2
620 01f6 FB81 strh r3, [r7, #14] @ movhi
98:Core/Src/ADBMS_LL_Driver.c ****
99:Core/Src/ADBMS_LL_Driver.c **** return newPEC;
621 .loc 1 99 10
622 01f8 FB89 ldrh r3, [r7, #14]
100:Core/Src/ADBMS_LL_Driver.c **** }
623 .loc 1 100 1
624 01fa 1846 mov r0, r3
625 01fc 1C37 adds r7, r7, #28
626 .cfi_def_cfa_offset 4
627 01fe BD46 mov sp, r7
628 .cfi_def_cfa_register 13
629 @ sp needed
630 0200 5DF8047B ldr r7, [sp], #4
631 .cfi_restore 7
632 .cfi_def_cfa_offset 0
633 0204 7047 bx lr
634 .cfi_endproc
635 .LFE133:
637 .section .text.pec10_calc,"ax",%progbits
638 .align 1
639 .global pec10_calc
640 .syntax unified
641 .thumb
ARM GAS /tmp/cczsHaNw.s page 14
642 .thumb_func
644 pec10_calc:
645 .LFB134:
101:Core/Src/ADBMS_LL_Driver.c ****
102:Core/Src/ADBMS_LL_Driver.c **** //data PEC calculation
103:Core/Src/ADBMS_LL_Driver.c **** //CRC-10
104:Core/Src/ADBMS_LL_Driver.c **** //x^10 + x^7 + x^3 + x^2 + x + 1
105:Core/Src/ADBMS_LL_Driver.c ****
106:Core/Src/ADBMS_LL_Driver.c **** uint16_t pec10_calc(bool rx_cmd, int len, const uint8_t* data) {
646 .loc 1 106 64
647 .cfi_startproc
648 @ args = 0, pretend = 0, frame = 24
649 @ frame_needed = 1, uses_anonymous_args = 0
650 @ link register save eliminated.
651 0000 80B4 push {r7}
652 .cfi_def_cfa_offset 4
653 .cfi_offset 7, -4
654 0002 87B0 sub sp, sp, #28
655 .cfi_def_cfa_offset 32
656 0004 00AF add r7, sp, #0
657 .cfi_def_cfa_register 7
658 0006 0346 mov r3, r0
659 0008 B960 str r1, [r7, #8]
660 000a 7A60 str r2, [r7, #4]
661 000c FB73 strb r3, [r7, #15]
107:Core/Src/ADBMS_LL_Driver.c **** uint16_t remainder = 16; /* PEC_SEED; 0000010000 */
662 .loc 1 107 12
663 000e 1023 movs r3, #16
664 0010 FB82 strh r3, [r7, #22] @ movhi
108:Core/Src/ADBMS_LL_Driver.c **** const uint16_t polynom = 0x8F; /* x10 + x7 + x3 + x2 + x + 1 <- the CRC15 polynomial
665 .loc 1 108 18
666 0012 8F23 movs r3, #143
667 0014 3B82 strh r3, [r7, #16] @ movhi
668 .LBB8:
109:Core/Src/ADBMS_LL_Driver.c **** 100 1000 1111 48F */
110:Core/Src/ADBMS_LL_Driver.c ****
111:Core/Src/ADBMS_LL_Driver.c **** /* Perform modulo-2 division, a byte at a time. */
112:Core/Src/ADBMS_LL_Driver.c **** for (uint8_t pbyte = 0; pbyte < len; ++pbyte) {
669 .loc 1 112 16
670 0016 0023 movs r3, #0
671 0018 7B75 strb r3, [r7, #21]
672 .loc 1 112 3
673 001a 24E0 b .L23
674 .L28:
113:Core/Src/ADBMS_LL_Driver.c **** /* Bring the next byte into the remainder. */
114:Core/Src/ADBMS_LL_Driver.c **** remainder ^= (uint16_t)(data[pbyte] << 2);
675 .loc 1 114 33
676 001c 7B7D ldrb r3, [r7, #21] @ zero_extendqisi2
677 001e 7A68 ldr r2, [r7, #4]
678 0020 1344 add r3, r3, r2
679 0022 1B78 ldrb r3, [r3] @ zero_extendqisi2
680 .loc 1 114 18
681 0024 9B00 lsls r3, r3, #2
682 0026 9AB2 uxth r2, r3
683 .loc 1 114 15
684 0028 FB8A ldrh r3, [r7, #22] @ movhi
685 002a 5340 eors r3, r3, r2
ARM GAS /tmp/cczsHaNw.s page 15
686 002c FB82 strh r3, [r7, #22] @ movhi
687 .LBB9:
115:Core/Src/ADBMS_LL_Driver.c **** /* Perform modulo-2 division, a bit at a time.*/
116:Core/Src/ADBMS_LL_Driver.c **** for (uint8_t bit_ = 8; bit_ > 0; --bit_) {
688 .loc 1 116 18
689 002e 0823 movs r3, #8
690 0030 3B75 strb r3, [r7, #20]
691 .loc 1 116 5
692 0032 12E0 b .L24
693 .L27:
117:Core/Src/ADBMS_LL_Driver.c **** /* Try to divide the current data bit. */
118:Core/Src/ADBMS_LL_Driver.c **** if ((remainder & 0x200) >
694 .loc 1 118 22
695 0034 FB8A ldrh r3, [r7, #22]
696 0036 03F40073 and r3, r3, #512
697 .loc 1 118 10
698 003a 002B cmp r3, #0
699 003c 07DD ble .L25
119:Core/Src/ADBMS_LL_Driver.c **** 0) // equivalent to remainder & 2^14 simply check for MSB
120:Core/Src/ADBMS_LL_Driver.c **** {
121:Core/Src/ADBMS_LL_Driver.c **** remainder = (uint16_t)((remainder << 1));
700 .loc 1 121 19
701 003e FB8A ldrh r3, [r7, #22] @ movhi
702 0040 5B00 lsls r3, r3, #1
703 0042 FB82 strh r3, [r7, #22] @ movhi
122:Core/Src/ADBMS_LL_Driver.c **** remainder = (uint16_t)(remainder ^ polynom);
704 .loc 1 122 19
705 0044 FA8A ldrh r2, [r7, #22] @ movhi
706 0046 3B8A ldrh r3, [r7, #16] @ movhi
707 0048 5340 eors r3, r3, r2
708 004a FB82 strh r3, [r7, #22] @ movhi
709 004c 02E0 b .L26
710 .L25:
123:Core/Src/ADBMS_LL_Driver.c **** } else {
124:Core/Src/ADBMS_LL_Driver.c **** remainder = (uint16_t)(remainder << 1);
711 .loc 1 124 19
712 004e FB8A ldrh r3, [r7, #22] @ movhi
713 0050 5B00 lsls r3, r3, #1
714 0052 FB82 strh r3, [r7, #22] @ movhi
715 .L26:
116:Core/Src/ADBMS_LL_Driver.c **** /* Try to divide the current data bit. */
716 .loc 1 116 38 discriminator 2
717 0054 3B7D ldrb r3, [r7, #20]
718 0056 013B subs r3, r3, #1
719 0058 3B75 strb r3, [r7, #20]
720 .L24:
116:Core/Src/ADBMS_LL_Driver.c **** /* Try to divide the current data bit. */
721 .loc 1 116 33 discriminator 1
722 005a 3B7D ldrb r3, [r7, #20] @ zero_extendqisi2
723 005c 002B cmp r3, #0
724 005e E9D1 bne .L27
725 .LBE9:
112:Core/Src/ADBMS_LL_Driver.c **** /* Bring the next byte into the remainder. */
726 .loc 1 112 40 discriminator 2
727 0060 7B7D ldrb r3, [r7, #21]
728 0062 0133 adds r3, r3, #1
729 0064 7B75 strb r3, [r7, #21]
ARM GAS /tmp/cczsHaNw.s page 16
730 .L23:
112:Core/Src/ADBMS_LL_Driver.c **** /* Bring the next byte into the remainder. */
731 .loc 1 112 33 discriminator 1
732 0066 7B7D ldrb r3, [r7, #21] @ zero_extendqisi2
733 0068 BA68 ldr r2, [r7, #8]
734 006a 9A42 cmp r2, r3
735 006c D6DC bgt .L28
736 .LBE8:
125:Core/Src/ADBMS_LL_Driver.c **** }
126:Core/Src/ADBMS_LL_Driver.c **** }
127:Core/Src/ADBMS_LL_Driver.c **** }
128:Core/Src/ADBMS_LL_Driver.c **** if (rx_cmd == true) {
737 .loc 1 128 6
738 006e FB7B ldrb r3, [r7, #15] @ zero_extendqisi2
739 0070 002B cmp r3, #0
740 0072 27D0 beq .L29
129:Core/Src/ADBMS_LL_Driver.c **** remainder ^= (uint16_t)((data[len] & 0xFC) << 2);
741 .loc 1 129 34
742 0074 BB68 ldr r3, [r7, #8]
743 0076 7A68 ldr r2, [r7, #4]
744 0078 1344 add r3, r3, r2
745 007a 1B78 ldrb r3, [r3] @ zero_extendqisi2
746 .loc 1 129 48
747 007c 1BB2 sxth r3, r3
748 007e 9B00 lsls r3, r3, #2
749 0080 1BB2 sxth r3, r3
750 .loc 1 129 18
751 0082 03F47C73 and r3, r3, #1008
752 0086 1AB2 sxth r2, r3
753 .loc 1 129 15
754 0088 B7F91630 ldrsh r3, [r7, #22]
755 008c 5340 eors r3, r3, r2
756 008e 1BB2 sxth r3, r3
757 0090 FB82 strh r3, [r7, #22] @ movhi
758 .LBB10:
130:Core/Src/ADBMS_LL_Driver.c **** /* Perform modulo-2 division, a bit at a time */
131:Core/Src/ADBMS_LL_Driver.c **** for (uint8_t bit_ = 6; bit_ > 0; --bit_) {
759 .loc 1 131 18
760 0092 0623 movs r3, #6
761 0094 FB74 strb r3, [r7, #19]
762 .loc 1 131 5
763 0096 12E0 b .L30
764 .L33:
132:Core/Src/ADBMS_LL_Driver.c **** /* Try to divide the current data bit */
133:Core/Src/ADBMS_LL_Driver.c **** if ((remainder & 0x200) >
765 .loc 1 133 22
766 0098 FB8A ldrh r3, [r7, #22]
767 009a 03F40073 and r3, r3, #512
768 .loc 1 133 10
769 009e 002B cmp r3, #0
770 00a0 07DD ble .L31
134:Core/Src/ADBMS_LL_Driver.c **** 0) // equivalent to remainder & 2^14 simply check for MSB
135:Core/Src/ADBMS_LL_Driver.c **** {
136:Core/Src/ADBMS_LL_Driver.c **** remainder = (uint16_t)((remainder << 1));
771 .loc 1 136 19
772 00a2 FB8A ldrh r3, [r7, #22] @ movhi
773 00a4 5B00 lsls r3, r3, #1
ARM GAS /tmp/cczsHaNw.s page 17
774 00a6 FB82 strh r3, [r7, #22] @ movhi
137:Core/Src/ADBMS_LL_Driver.c **** remainder = (uint16_t)(remainder ^ polynom);
775 .loc 1 137 19
776 00a8 FA8A ldrh r2, [r7, #22] @ movhi
777 00aa 3B8A ldrh r3, [r7, #16] @ movhi
778 00ac 5340 eors r3, r3, r2
779 00ae FB82 strh r3, [r7, #22] @ movhi
780 00b0 02E0 b .L32
781 .L31:
138:Core/Src/ADBMS_LL_Driver.c **** } else {
139:Core/Src/ADBMS_LL_Driver.c **** remainder = (uint16_t)((remainder << 1));
782 .loc 1 139 19
783 00b2 FB8A ldrh r3, [r7, #22] @ movhi
784 00b4 5B00 lsls r3, r3, #1
785 00b6 FB82 strh r3, [r7, #22] @ movhi
786 .L32:
131:Core/Src/ADBMS_LL_Driver.c **** /* Try to divide the current data bit */
787 .loc 1 131 38 discriminator 2
788 00b8 FB7C ldrb r3, [r7, #19]
789 00ba 013B subs r3, r3, #1
790 00bc FB74 strb r3, [r7, #19]
791 .L30:
131:Core/Src/ADBMS_LL_Driver.c **** /* Try to divide the current data bit */
792 .loc 1 131 33 discriminator 1
793 00be FB7C ldrb r3, [r7, #19] @ zero_extendqisi2
794 00c0 002B cmp r3, #0
795 00c2 E9D1 bne .L33
796 .L29:
797 .LBE10:
140:Core/Src/ADBMS_LL_Driver.c **** }
141:Core/Src/ADBMS_LL_Driver.c **** }
142:Core/Src/ADBMS_LL_Driver.c **** }
143:Core/Src/ADBMS_LL_Driver.c **** return ((uint16_t)(remainder & 0x3FF));
798 .loc 1 143 11
799 00c4 FB8A ldrh r3, [r7, #22] @ movhi
800 00c6 C3F30903 ubfx r3, r3, #0, #10
801 00ca 9BB2 uxth r3, r3
144:Core/Src/ADBMS_LL_Driver.c **** }
802 .loc 1 144 1
803 00cc 1846 mov r0, r3
804 00ce 1C37 adds r7, r7, #28
805 .cfi_def_cfa_offset 4
806 00d0 BD46 mov sp, r7
807 .cfi_def_cfa_register 13
808 @ sp needed
809 00d2 5DF8047B ldr r7, [sp], #4
810 .cfi_restore 7
811 .cfi_def_cfa_offset 0
812 00d6 7047 bx lr
813 .cfi_endproc
814 .LFE134:
816 .section .text.calculateDataPEC,"ax",%progbits
817 .align 1
818 .global calculateDataPEC
819 .syntax unified
820 .thumb
821 .thumb_func
ARM GAS /tmp/cczsHaNw.s page 18
823 calculateDataPEC:
824 .LFB135:
145:Core/Src/ADBMS_LL_Driver.c ****
146:Core/Src/ADBMS_LL_Driver.c **** typedef uint16_t crc;
147:Core/Src/ADBMS_LL_Driver.c **** crc F_CRC_CalculaCheckSum(uint8_t const AF_Datos[], uint16_t VF_nBytes);
148:Core/Src/ADBMS_LL_Driver.c ****
149:Core/Src/ADBMS_LL_Driver.c **** uint8 calculateDataPEC(uint8_t* data, uint8_t datalen) {
825 .loc 1 149 56
826 .cfi_startproc
827 @ args = 0, pretend = 0, frame = 16
828 @ frame_needed = 1, uses_anonymous_args = 0
829 0000 80B5 push {r7, lr}
830 .cfi_def_cfa_offset 8
831 .cfi_offset 7, -8
832 .cfi_offset 14, -4
833 0002 84B0 sub sp, sp, #16
834 .cfi_def_cfa_offset 24
835 0004 00AF add r7, sp, #0
836 .cfi_def_cfa_register 7
837 0006 7860 str r0, [r7, #4]
838 0008 0B46 mov r3, r1
839 000a FB70 strb r3, [r7, #3]
150:Core/Src/ADBMS_LL_Driver.c ****
151:Core/Src/ADBMS_LL_Driver.c **** if (datalen >= 3) {
840 .loc 1 151 6
841 000c FB78 ldrb r3, [r7, #3] @ zero_extendqisi2
842 000e 022B cmp r3, #2
843 0010 1CD9 bls .L36
844 .LBB11:
152:Core/Src/ADBMS_LL_Driver.c ****
153:Core/Src/ADBMS_LL_Driver.c **** const crc currentpec = pec10_calc(true, datalen - 2, data) & 0x3FF; // mask to 10 bits
845 .loc 1 153 30
846 0012 FB78 ldrb r3, [r7, #3] @ zero_extendqisi2
847 0014 023B subs r3, r3, #2
848 0016 7A68 ldr r2, [r7, #4]
849 0018 1946 mov r1, r3
850 001a 0120 movs r0, #1
851 001c FFF7FEFF bl pec10_calc
852 0020 0346 mov r3, r0
853 .loc 1 153 17 discriminator 1
854 0022 C3F30903 ubfx r3, r3, #0, #10
855 0026 FB81 strh r3, [r7, #14] @ movhi
154:Core/Src/ADBMS_LL_Driver.c ****
155:Core/Src/ADBMS_LL_Driver.c **** // memory layout is [[zeroes], PEC[9:8]], [PEC[7:0]]
156:Core/Src/ADBMS_LL_Driver.c **** data[datalen - 2] = (currentpec >> 8) & 0xFF;
856 .loc 1 156 23
857 0028 FB89 ldrh r3, [r7, #14]
858 002a 1B0A lsrs r3, r3, #8
859 002c 99B2 uxth r1, r3
860 .loc 1 156 9
861 002e FB78 ldrb r3, [r7, #3] @ zero_extendqisi2
862 0030 023B subs r3, r3, #2
863 0032 7A68 ldr r2, [r7, #4]
864 0034 1344 add r3, r3, r2
865 .loc 1 156 23
866 0036 CAB2 uxtb r2, r1
867 0038 1A70 strb r2, [r3]
ARM GAS /tmp/cczsHaNw.s page 19
157:Core/Src/ADBMS_LL_Driver.c **** data[datalen - 1] = currentpec & 0xFF;
868 .loc 1 157 9
869 003a FB78 ldrb r3, [r7, #3] @ zero_extendqisi2
870 003c 013B subs r3, r3, #1
871 003e 7A68 ldr r2, [r7, #4]
872 0040 1344 add r3, r3, r2
873 .loc 1 157 23
874 0042 FA89 ldrh r2, [r7, #14] @ movhi
875 0044 D2B2 uxtb r2, r2
876 0046 1A70 strb r2, [r3]
158:Core/Src/ADBMS_LL_Driver.c ****
159:Core/Src/ADBMS_LL_Driver.c **** return 0;
877 .loc 1 159 12
878 0048 0023 movs r3, #0
879 004a 00E0 b .L37
880 .L36:
881 .LBE11:
160:Core/Src/ADBMS_LL_Driver.c **** } else {
161:Core/Src/ADBMS_LL_Driver.c **** return 1;
882 .loc 1 161 12
883 004c 0123 movs r3, #1
884 .L37:
162:Core/Src/ADBMS_LL_Driver.c **** }
163:Core/Src/ADBMS_LL_Driver.c **** }
885 .loc 1 163 1
886 004e 1846 mov r0, r3
887 0050 1037 adds r7, r7, #16
888 .cfi_def_cfa_offset 8
889 0052 BD46 mov sp, r7
890 .cfi_def_cfa_register 13
891 @ sp needed
892 0054 80BD pop {r7, pc}
893 .cfi_endproc
894 .LFE135:
896 .section .text.checkDataPEC,"ax",%progbits
897 .align 1
898 .global checkDataPEC
899 .syntax unified
900 .thumb
901 .thumb_func
903 checkDataPEC:
904 .LFB136:
164:Core/Src/ADBMS_LL_Driver.c ****
165:Core/Src/ADBMS_LL_Driver.c **** uint8 checkDataPEC(uint8* data, uint8 len) {
905 .loc 1 165 44
906 .cfi_startproc
907 @ args = 0, pretend = 0, frame = 16
908 @ frame_needed = 1, uses_anonymous_args = 0
909 0000 80B5 push {r7, lr}
910 .cfi_def_cfa_offset 8
911 .cfi_offset 7, -8
912 .cfi_offset 14, -4
913 0002 84B0 sub sp, sp, #16
914 .cfi_def_cfa_offset 24
915 0004 00AF add r7, sp, #0
916 .cfi_def_cfa_register 7
917 0006 7860 str r0, [r7, #4]
ARM GAS /tmp/cczsHaNw.s page 20
918 0008 0B46 mov r3, r1
919 000a FB70 strb r3, [r7, #3]
166:Core/Src/ADBMS_LL_Driver.c **** if (len <= 2) {
920 .loc 1 166 6
921 000c FB78 ldrb r3, [r7, #3] @ zero_extendqisi2
922 000e 022B cmp r3, #2
923 0010 01D8 bhi .L39
167:Core/Src/ADBMS_LL_Driver.c **** return 255;
924 .loc 1 167 12
925 0012 FF23 movs r3, #255
926 0014 0DE0 b .L40
927 .L39:
168:Core/Src/ADBMS_LL_Driver.c **** }
169:Core/Src/ADBMS_LL_Driver.c ****
170:Core/Src/ADBMS_LL_Driver.c **** const crc currentpec = F_CRC_CalculaCheckSum(data, len);
928 .loc 1 170 26
929 0016 FB78 ldrb r3, [r7, #3] @ zero_extendqisi2
930 0018 9BB2 uxth r3, r3
931 001a 1946 mov r1, r3
932 001c 7868 ldr r0, [r7, #4]
933 001e FFF7FEFF bl F_CRC_CalculaCheckSum
934 0022 0346 mov r3, r0
935 0024 FB81 strh r3, [r7, #14] @ movhi
171:Core/Src/ADBMS_LL_Driver.c ****
172:Core/Src/ADBMS_LL_Driver.c **** return (currentpec == 0) ? 0 : 1;
936 .loc 1 172 32
937 0026 FB89 ldrh r3, [r7, #14]
938 0028 002B cmp r3, #0
939 002a 14BF ite ne
940 002c 0123 movne r3, #1
941 002e 0023 moveq r3, #0
942 0030 DBB2 uxtb r3, r3
943 .L40:
173:Core/Src/ADBMS_LL_Driver.c **** }
944 .loc 1 173 1
945 0032 1846 mov r0, r3
946 0034 1037 adds r7, r7, #16
947 .cfi_def_cfa_offset 8
948 0036 BD46 mov sp, r7
949 .cfi_def_cfa_register 13
950 @ sp needed
951 0038 80BD pop {r7, pc}
952 .cfi_endproc
953 .LFE136:
955 .section .text.F_CRC_ObtenValorDeTabla,"ax",%progbits
956 .align 1
957 .syntax unified
958 .thumb
959 .thumb_func
961 F_CRC_ObtenValorDeTabla:
962 .LFB137:
174:Core/Src/ADBMS_LL_Driver.c ****
175:Core/Src/ADBMS_LL_Driver.c ****
176:Core/Src/ADBMS_LL_Driver.c **** static crc F_CRC_ObtenValorDeTabla(uint8_t VP_Pos_Tabla) {
963 .loc 1 176 58
964 .cfi_startproc
965 @ args = 0, pretend = 0, frame = 16
ARM GAS /tmp/cczsHaNw.s page 21
966 @ frame_needed = 1, uses_anonymous_args = 0
967 @ link register save eliminated.
968 0000 80B4 push {r7}
969 .cfi_def_cfa_offset 4
970 .cfi_offset 7, -4
971 0002 85B0 sub sp, sp, #20
972 .cfi_def_cfa_offset 24
973 0004 00AF add r7, sp, #0
974 .cfi_def_cfa_register 7
975 0006 0346 mov r3, r0
976 0008 FB71 strb r3, [r7, #7]
177:Core/Src/ADBMS_LL_Driver.c **** crc VP_CRCTableValue = 0;
977 .loc 1 177 7
978 000a 0023 movs r3, #0
979 000c FB81 strh r3, [r7, #14] @ movhi
178:Core/Src/ADBMS_LL_Driver.c **** uint8_t VP_Pos_bit = 0;
980 .loc 1 178 11
981 000e 0023 movs r3, #0
982 0010 7B73 strb r3, [r7, #13]
179:Core/Src/ADBMS_LL_Driver.c ****
180:Core/Src/ADBMS_LL_Driver.c **** VP_CRCTableValue = ((crc)(VP_Pos_Tabla)) << (10 - 8);
983 .loc 1 180 44
984 0012 FB79 ldrb r3, [r7, #7] @ zero_extendqisi2
985 0014 9BB2 uxth r3, r3
986 .loc 1 180 20
987 0016 9B00 lsls r3, r3, #2
988 0018 FB81 strh r3, [r7, #14] @ movhi
181:Core/Src/ADBMS_LL_Driver.c ****
182:Core/Src/ADBMS_LL_Driver.c **** for (VP_Pos_bit = 0; VP_Pos_bit < 8; VP_Pos_bit++) {
989 .loc 1 182 19
990 001a 0023 movs r3, #0
991 001c 7B73 strb r3, [r7, #13]
992 .loc 1 182 3
993 001e 13E0 b .L42
994 .L45:
183:Core/Src/ADBMS_LL_Driver.c **** if (VP_CRCTableValue & (((crc)1) << (10 - 1))) {
995 .loc 1 183 26
996 0020 FB89 ldrh r3, [r7, #14]
997 0022 03F40073 and r3, r3, #512
998 .loc 1 183 8
999 0026 002B cmp r3, #0
1000 0028 08D0 beq .L43
184:Core/Src/ADBMS_LL_Driver.c **** VP_CRCTableValue = (VP_CRCTableValue << 1) ^ 0x8F;
1001 .loc 1 184 50
1002 002a B7F90E30 ldrsh r3, [r7, #14]
1003 002e 5B00 lsls r3, r3, #1
1004 0030 1BB2 sxth r3, r3
1005 0032 83F08F03 eor r3, r3, #143
1006 0036 1BB2 sxth r3, r3
1007 .loc 1 184 24
1008 0038 FB81 strh r3, [r7, #14] @ movhi
1009 003a 02E0 b .L44
1010 .L43:
185:Core/Src/ADBMS_LL_Driver.c **** } else {
186:Core/Src/ADBMS_LL_Driver.c **** VP_CRCTableValue = (VP_CRCTableValue << 1);
1011 .loc 1 186 24
1012 003c FB89 ldrh r3, [r7, #14] @ movhi
ARM GAS /tmp/cczsHaNw.s page 22
1013 003e 5B00 lsls r3, r3, #1
1014 0040 FB81 strh r3, [r7, #14] @ movhi
1015 .L44:
182:Core/Src/ADBMS_LL_Driver.c **** if (VP_CRCTableValue & (((crc)1) << (10 - 1))) {
1016 .loc 1 182 50 discriminator 2
1017 0042 7B7B ldrb r3, [r7, #13] @ zero_extendqisi2
1018 0044 0133 adds r3, r3, #1
1019 0046 7B73 strb r3, [r7, #13]
1020 .L42:
182:Core/Src/ADBMS_LL_Driver.c **** if (VP_CRCTableValue & (((crc)1) << (10 - 1))) {
1021 .loc 1 182 35 discriminator 1
1022 0048 7B7B ldrb r3, [r7, #13] @ zero_extendqisi2
1023 004a 072B cmp r3, #7
1024 004c E8D9 bls .L45
187:Core/Src/ADBMS_LL_Driver.c **** }
188:Core/Src/ADBMS_LL_Driver.c **** }
189:Core/Src/ADBMS_LL_Driver.c **** return ((VP_CRCTableValue));
1025 .loc 1 189 10
1026 004e FB89 ldrh r3, [r7, #14]
190:Core/Src/ADBMS_LL_Driver.c **** }
1027 .loc 1 190 1
1028 0050 1846 mov r0, r3
1029 0052 1437 adds r7, r7, #20
1030 .cfi_def_cfa_offset 4
1031 0054 BD46 mov sp, r7
1032 .cfi_def_cfa_register 13
1033 @ sp needed
1034 0056 5DF8047B ldr r7, [sp], #4
1035 .cfi_restore 7
1036 .cfi_def_cfa_offset 0
1037 005a 7047 bx lr
1038 .cfi_endproc
1039 .LFE137:
1041 .section .text.F_CRC_CalculaCheckSum,"ax",%progbits
1042 .align 1
1043 .global F_CRC_CalculaCheckSum
1044 .syntax unified
1045 .thumb
1046 .thumb_func
1048 F_CRC_CalculaCheckSum:
1049 .LFB138:
191:Core/Src/ADBMS_LL_Driver.c **** crc F_CRC_CalculaCheckSum(uint8_t const AF_Datos[], uint16_t VF_nBytes) {
1050 .loc 1 191 73
1051 .cfi_startproc
1052 @ args = 0, pretend = 0, frame = 16
1053 @ frame_needed = 1, uses_anonymous_args = 0
1054 0000 90B5 push {r4, r7, lr}
1055 .cfi_def_cfa_offset 12
1056 .cfi_offset 4, -12
1057 .cfi_offset 7, -8
1058 .cfi_offset 14, -4
1059 0002 85B0 sub sp, sp, #20
1060 .cfi_def_cfa_offset 32
1061 0004 00AF add r7, sp, #0
1062 .cfi_def_cfa_register 7
1063 0006 7860 str r0, [r7, #4]
1064 0008 0B46 mov r3, r1
ARM GAS /tmp/cczsHaNw.s page 23
1065 000a 7B80 strh r3, [r7, #2] @ movhi
192:Core/Src/ADBMS_LL_Driver.c **** crc VP_CRCTableValue = 16;
1066 .loc 1 192 7
1067 000c 1023 movs r3, #16
1068 000e FB81 strh r3, [r7, #14] @ movhi
193:Core/Src/ADBMS_LL_Driver.c **** int16_t VP_bytes = 0;
1069 .loc 1 193 11
1070 0010 0023 movs r3, #0
1071 0012 BB81 strh r3, [r7, #12] @ movhi
194:Core/Src/ADBMS_LL_Driver.c ****
195:Core/Src/ADBMS_LL_Driver.c **** for (VP_bytes = 0; VP_bytes < VF_nBytes; VP_bytes++) {
1072 .loc 1 195 17
1073 0014 0023 movs r3, #0
1074 0016 BB81 strh r3, [r7, #12] @ movhi
1075 .loc 1 195 3
1076 0018 1CE0 b .L48
1077 .L49:
196:Core/Src/ADBMS_LL_Driver.c ****
197:Core/Src/ADBMS_LL_Driver.c **** VP_CRCTableValue = (VP_CRCTableValue << 8) ^
1078 .loc 1 197 48
1079 001a B7F90E30 ldrsh r3, [r7, #14]
1080 001e 1B02 lsls r3, r3, #8
1081 0020 1CB2 sxth r4, r3
198:Core/Src/ADBMS_LL_Driver.c **** F_CRC_ObtenValorDeTabla(
199:Core/Src/ADBMS_LL_Driver.c **** ((uint8_t)((VP_CRCTableValue >> (10 - 8)) & 0xFF)) ^
1082 .loc 1 199 29
1083 0022 FB89 ldrh r3, [r7, #14]
1084 0024 9B08 lsrs r3, r3, #2
1085 0026 9BB2 uxth r3, r3
1086 0028 DAB2 uxtb r2, r3
200:Core/Src/ADBMS_LL_Driver.c **** AF_Datos[VP_bytes]);
1087 .loc 1 200 36
1088 002a B7F90C30 ldrsh r3, [r7, #12]
1089 002e 7968 ldr r1, [r7, #4]
1090 0030 0B44 add r3, r3, r1
1091 0032 1B78 ldrb r3, [r3] @ zero_extendqisi2
198:Core/Src/ADBMS_LL_Driver.c **** F_CRC_ObtenValorDeTabla(
1092 .loc 1 198 24
1093 0034 5340 eors r3, r3, r2
1094 0036 DBB2 uxtb r3, r3
1095 0038 1846 mov r0, r3
1096 003a FFF7FEFF bl F_CRC_ObtenValorDeTabla
1097 003e 0346 mov r3, r0
198:Core/Src/ADBMS_LL_Driver.c **** F_CRC_ObtenValorDeTabla(
1098 .loc 1 198 24 is_stmt 0 discriminator 1
1099 0040 1BB2 sxth r3, r3
197:Core/Src/ADBMS_LL_Driver.c **** F_CRC_ObtenValorDeTabla(
1100 .loc 1 197 48 is_stmt 1
1101 0042 6340 eors r3, r3, r4
1102 0044 1BB2 sxth r3, r3
197:Core/Src/ADBMS_LL_Driver.c **** F_CRC_ObtenValorDeTabla(
1103 .loc 1 197 22
1104 0046 FB81 strh r3, [r7, #14] @ movhi
195:Core/Src/ADBMS_LL_Driver.c ****
1105 .loc 1 195 52 discriminator 3
1106 0048 B7F90C30 ldrsh r3, [r7, #12]
1107 004c 9BB2 uxth r3, r3
ARM GAS /tmp/cczsHaNw.s page 24
1108 004e 0133 adds r3, r3, #1
1109 0050 9BB2 uxth r3, r3
1110 0052 BB81 strh r3, [r7, #12] @ movhi
1111 .L48:
195:Core/Src/ADBMS_LL_Driver.c ****
1112 .loc 1 195 31 discriminator 1
1113 0054 B7F90C20 ldrsh r2, [r7, #12]
1114 0058 7B88 ldrh r3, [r7, #2]
1115 005a 9A42 cmp r2, r3
1116 005c DDDB blt .L49
201:Core/Src/ADBMS_LL_Driver.c **** }
202:Core/Src/ADBMS_LL_Driver.c ****
203:Core/Src/ADBMS_LL_Driver.c **** if ((8 * sizeof(crc)) > 10) {
204:Core/Src/ADBMS_LL_Driver.c **** VP_CRCTableValue = VP_CRCTableValue & ((((crc)(1)) << 10) - 1);
1117 .loc 1 204 22
1118 005e FB89 ldrh r3, [r7, #14] @ movhi
1119 0060 C3F30903 ubfx r3, r3, #0, #10
1120 0064 FB81 strh r3, [r7, #14] @ movhi
205:Core/Src/ADBMS_LL_Driver.c **** }
206:Core/Src/ADBMS_LL_Driver.c ****
207:Core/Src/ADBMS_LL_Driver.c **** return (VP_CRCTableValue ^ 0x0000);
1121 .loc 1 207 28
1122 0066 FB89 ldrh r3, [r7, #14]
208:Core/Src/ADBMS_LL_Driver.c **** }
1123 .loc 1 208 1
1124 0068 1846 mov r0, r3
1125 006a 1437 adds r7, r7, #20
1126 .cfi_def_cfa_offset 12
1127 006c BD46 mov sp, r7
1128 .cfi_def_cfa_register 13
1129 @ sp needed
1130 006e 90BD pop {r4, r7, pc}
1131 .cfi_endproc
1132 .LFE138:
1134 .section .text.updateDataPEC,"ax",%progbits
1135 .align 1
1136 .global updateDataPEC
1137 .syntax unified
1138 .thumb
1139 .thumb_func
1141 updateDataPEC:
1142 .LFB139:
209:Core/Src/ADBMS_LL_Driver.c ****
210:Core/Src/ADBMS_LL_Driver.c **** uint16 updateDataPEC(uint16 currentPEC, uint8 din) {
1143 .loc 1 210 52
1144 .cfi_startproc
1145 @ args = 0, pretend = 0, frame = 16
1146 @ frame_needed = 1, uses_anonymous_args = 0
1147 @ link register save eliminated.
1148 0000 80B4 push {r7}
1149 .cfi_def_cfa_offset 4
1150 .cfi_offset 7, -4
1151 0002 85B0 sub sp, sp, #20
1152 .cfi_def_cfa_offset 24
1153 0004 00AF add r7, sp, #0
1154 .cfi_def_cfa_register 7
1155 0006 0346 mov r3, r0
ARM GAS /tmp/cczsHaNw.s page 25
1156 0008 0A46 mov r2, r1
1157 000a FB80 strh r3, [r7, #6] @ movhi
1158 000c 1346 mov r3, r2
1159 000e 7B71 strb r3, [r7, #5]
211:Core/Src/ADBMS_LL_Driver.c **** din = (din >> 7) & 0x01;
1160 .loc 1 211 7
1161 0010 7B79 ldrb r3, [r7, #5] @ zero_extendqisi2
1162 0012 DB09 lsrs r3, r3, #7
1163 0014 7B71 strb r3, [r7, #5]
212:Core/Src/ADBMS_LL_Driver.c **** const uint8 in0 = din ^ ((currentPEC >> 9) & 0x01);
1164 .loc 1 212 46
1165 0016 FB88 ldrh r3, [r7, #6]
1166 0018 5B0A lsrs r3, r3, #9
1167 001a 9BB2 uxth r3, r3
1168 001c 5BB2 sxtb r3, r3
1169 001e 03F00103 and r3, r3, #1
1170 0022 5AB2 sxtb r2, r3
1171 .loc 1 212 25
1172 0024 97F90530 ldrsb r3, [r7, #5]
1173 0028 5340 eors r3, r3, r2
1174 002a 5BB2 sxtb r3, r3
1175 .loc 1 212 15
1176 002c FB73 strb r3, [r7, #15]
213:Core/Src/ADBMS_LL_Driver.c **** const uint8 in2 = in0 ^ ((currentPEC >> 1) & 0x01);
1177 .loc 1 213 46
1178 002e FB88 ldrh r3, [r7, #6]
1179 0030 5B08 lsrs r3, r3, #1
1180 0032 9BB2 uxth r3, r3
1181 0034 5BB2 sxtb r3, r3
1182 0036 03F00103 and r3, r3, #1
1183 003a 5AB2 sxtb r2, r3
1184 .loc 1 213 25
1185 003c 97F90F30 ldrsb r3, [r7, #15]
1186 0040 5340 eors r3, r3, r2
1187 0042 5BB2 sxtb r3, r3
1188 .loc 1 213 15
1189 0044 BB73 strb r3, [r7, #14]
214:Core/Src/ADBMS_LL_Driver.c **** const uint8 in3 = in0 ^ ((currentPEC >> 2) & 0x01);
1190 .loc 1 214 46
1191 0046 FB88 ldrh r3, [r7, #6]
1192 0048 9B08 lsrs r3, r3, #2
1193 004a 9BB2 uxth r3, r3
1194 004c 5BB2 sxtb r3, r3
1195 004e 03F00103 and r3, r3, #1
1196 0052 5AB2 sxtb r2, r3
1197 .loc 1 214 25
1198 0054 97F90F30 ldrsb r3, [r7, #15]
1199 0058 5340 eors r3, r3, r2
1200 005a 5BB2 sxtb r3, r3
1201 .loc 1 214 15
1202 005c 7B73 strb r3, [r7, #13]
215:Core/Src/ADBMS_LL_Driver.c **** const uint8 in7 = in0 ^ ((currentPEC >> 6) & 0x01);
1203 .loc 1 215 46
1204 005e FB88 ldrh r3, [r7, #6]
1205 0060 9B09 lsrs r3, r3, #6
1206 0062 9BB2 uxth r3, r3
1207 0064 5BB2 sxtb r3, r3
ARM GAS /tmp/cczsHaNw.s page 26
1208 0066 03F00103 and r3, r3, #1
1209 006a 5AB2 sxtb r2, r3
1210 .loc 1 215 25
1211 006c 97F90F30 ldrsb r3, [r7, #15]
1212 0070 5340 eors r3, r3, r2
1213 0072 5BB2 sxtb r3, r3
1214 .loc 1 215 15
1215 0074 3B73 strb r3, [r7, #12]
216:Core/Src/ADBMS_LL_Driver.c ****
217:Core/Src/ADBMS_LL_Driver.c **** uint16 newPEC = 0;
1216 .loc 1 217 10
1217 0076 0023 movs r3, #0
1218 0078 7B81 strh r3, [r7, #10] @ movhi
218:Core/Src/ADBMS_LL_Driver.c ****
219:Core/Src/ADBMS_LL_Driver.c **** newPEC |= (currentPEC & (0x01 << 8)) << 1;
1219 .loc 1 219 40
1220 007a B7F90630 ldrsh r3, [r7, #6]
1221 007e 5B00 lsls r3, r3, #1
1222 0080 1BB2 sxth r3, r3
1223 0082 03F40073 and r3, r3, #512
1224 0086 1AB2 sxth r2, r3
1225 .loc 1 219 10
1226 0088 B7F90A30 ldrsh r3, [r7, #10]
1227 008c 1343 orrs r3, r3, r2
1228 008e 1BB2 sxth r3, r3
1229 0090 7B81 strh r3, [r7, #10] @ movhi
220:Core/Src/ADBMS_LL_Driver.c **** newPEC |= (currentPEC & (0x01 << 7)) << 1;
1230 .loc 1 220 40
1231 0092 B7F90630 ldrsh r3, [r7, #6]
1232 0096 5B00 lsls r3, r3, #1
1233 0098 1BB2 sxth r3, r3
1234 009a 03F48073 and r3, r3, #256
1235 009e 1AB2 sxth r2, r3
1236 .loc 1 220 10
1237 00a0 B7F90A30 ldrsh r3, [r7, #10]
1238 00a4 1343 orrs r3, r3, r2
1239 00a6 1BB2 sxth r3, r3
1240 00a8 7B81 strh r3, [r7, #10] @ movhi
221:Core/Src/ADBMS_LL_Driver.c **** newPEC |= in7 << 7;
1241 .loc 1 221 10
1242 00aa 3B7B ldrb r3, [r7, #12] @ zero_extendqisi2
1243 00ac 1BB2 sxth r3, r3
1244 00ae DB01 lsls r3, r3, #7
1245 00b0 1AB2 sxth r2, r3
1246 00b2 B7F90A30 ldrsh r3, [r7, #10]
1247 00b6 1343 orrs r3, r3, r2
1248 00b8 1BB2 sxth r3, r3
1249 00ba 7B81 strh r3, [r7, #10] @ movhi
222:Core/Src/ADBMS_LL_Driver.c **** newPEC |= (currentPEC & (0x01 << 5)) << 1;
1250 .loc 1 222 40
1251 00bc B7F90630 ldrsh r3, [r7, #6]
1252 00c0 5B00 lsls r3, r3, #1
1253 00c2 1BB2 sxth r3, r3
1254 00c4 03F04003 and r3, r3, #64
1255 00c8 1AB2 sxth r2, r3
1256 .loc 1 222 10
1257 00ca B7F90A30 ldrsh r3, [r7, #10]
ARM GAS /tmp/cczsHaNw.s page 27
1258 00ce 1343 orrs r3, r3, r2
1259 00d0 1BB2 sxth r3, r3
1260 00d2 7B81 strh r3, [r7, #10] @ movhi
223:Core/Src/ADBMS_LL_Driver.c **** newPEC |= (currentPEC & (0x01 << 4)) << 1;
1261 .loc 1 223 40
1262 00d4 B7F90630 ldrsh r3, [r7, #6]
1263 00d8 5B00 lsls r3, r3, #1
1264 00da 1BB2 sxth r3, r3
1265 00dc 03F02003 and r3, r3, #32
1266 00e0 1AB2 sxth r2, r3
1267 .loc 1 223 10
1268 00e2 B7F90A30 ldrsh r3, [r7, #10]
1269 00e6 1343 orrs r3, r3, r2
1270 00e8 1BB2 sxth r3, r3
1271 00ea 7B81 strh r3, [r7, #10] @ movhi
224:Core/Src/ADBMS_LL_Driver.c **** newPEC |= in3 << 3;
1272 .loc 1 224 10
1273 00ec 7B7B ldrb r3, [r7, #13] @ zero_extendqisi2
1274 00ee 1BB2 sxth r3, r3
1275 00f0 DB00 lsls r3, r3, #3
1276 00f2 1AB2 sxth r2, r3
1277 00f4 B7F90A30 ldrsh r3, [r7, #10]
1278 00f8 1343 orrs r3, r3, r2
1279 00fa 1BB2 sxth r3, r3
1280 00fc 7B81 strh r3, [r7, #10] @ movhi
225:Core/Src/ADBMS_LL_Driver.c **** newPEC |= in2 << 2;
1281 .loc 1 225 10
1282 00fe BB7B ldrb r3, [r7, #14] @ zero_extendqisi2
1283 0100 1BB2 sxth r3, r3
1284 0102 9B00 lsls r3, r3, #2
1285 0104 1AB2 sxth r2, r3
1286 0106 B7F90A30 ldrsh r3, [r7, #10]
1287 010a 1343 orrs r3, r3, r2
1288 010c 1BB2 sxth r3, r3
1289 010e 7B81 strh r3, [r7, #10] @ movhi
226:Core/Src/ADBMS_LL_Driver.c **** newPEC |= (currentPEC & (0x01)) << 1;
1290 .loc 1 226 35
1291 0110 B7F90630 ldrsh r3, [r7, #6]
1292 0114 5B00 lsls r3, r3, #1
1293 0116 1BB2 sxth r3, r3
1294 0118 03F00203 and r3, r3, #2
1295 011c 1AB2 sxth r2, r3
1296 .loc 1 226 10
1297 011e B7F90A30 ldrsh r3, [r7, #10]
1298 0122 1343 orrs r3, r3, r2
1299 0124 1BB2 sxth r3, r3
1300 0126 7B81 strh r3, [r7, #10] @ movhi
227:Core/Src/ADBMS_LL_Driver.c **** newPEC |= in0;
1301 .loc 1 227 10
1302 0128 FB7B ldrb r3, [r7, #15] @ zero_extendqisi2
1303 012a 9AB2 uxth r2, r3
1304 012c 7B89 ldrh r3, [r7, #10] @ movhi
1305 012e 1343 orrs r3, r3, r2
1306 0130 7B81 strh r3, [r7, #10] @ movhi
228:Core/Src/ADBMS_LL_Driver.c ****
229:Core/Src/ADBMS_LL_Driver.c **** return newPEC;
1307 .loc 1 229 10
ARM GAS /tmp/cczsHaNw.s page 28
1308 0132 7B89 ldrh r3, [r7, #10]
230:Core/Src/ADBMS_LL_Driver.c **** }
1309 .loc 1 230 1
1310 0134 1846 mov r0, r3
1311 0136 1437 adds r7, r7, #20
1312 .cfi_def_cfa_offset 4
1313 0138 BD46 mov sp, r7
1314 .cfi_def_cfa_register 13
1315 @ sp needed
1316 013a 5DF8047B ldr r7, [sp], #4
1317 .cfi_restore 7
1318 .cfi_def_cfa_offset 0
1319 013e 7047 bx lr
1320 .cfi_endproc
1321 .LFE139:
1323 .section .text.writeCMD,"ax",%progbits
1324 .align 1
1325 .global writeCMD
1326 .syntax unified
1327 .thumb
1328 .thumb_func
1330 writeCMD:
1331 .LFB140:
231:Core/Src/ADBMS_LL_Driver.c ****
232:Core/Src/ADBMS_LL_Driver.c **** uint8 writeCMD(uint16 command, const uint8 * args, uint8 arglen) {
1332 .loc 1 232 66
1333 .cfi_startproc
1334 @ args = 0, pretend = 0, frame = 24
1335 @ frame_needed = 1, uses_anonymous_args = 0
1336 0000 2DE9F043 push {r4, r5, r6, r7, r8, r9, lr}
1337 .cfi_def_cfa_offset 28
1338 .cfi_offset 4, -28
1339 .cfi_offset 5, -24
1340 .cfi_offset 6, -20
1341 .cfi_offset 7, -16
1342 .cfi_offset 8, -12
1343 .cfi_offset 9, -8
1344 .cfi_offset 14, -4
1345 0004 87B0 sub sp, sp, #28
1346 .cfi_def_cfa_offset 56
1347 0006 00AF add r7, sp, #0
1348 .cfi_def_cfa_register 7
1349 0008 0346 mov r3, r0
1350 000a 3960 str r1, [r7]
1351 000c FB80 strh r3, [r7, #6] @ movhi
1352 000e 1346 mov r3, r2
1353 0010 7B71 strb r3, [r7, #5]
233:Core/Src/ADBMS_LL_Driver.c **** uint8 ret;
234:Core/Src/ADBMS_LL_Driver.c **** if (arglen > 0) {
1354 .loc 1 234 6
1355 0012 7B79 ldrb r3, [r7, #5] @ zero_extendqisi2
1356 0014 002B cmp r3, #0
1357 0016 60D0 beq .L54
1358 .LBB12:
1359 .loc 1 234 19 discriminator 1
1360 0018 6B46 mov r3, sp
1361 001a 1E46 mov r6, r3
ARM GAS /tmp/cczsHaNw.s page 29
235:Core/Src/ADBMS_LL_Driver.c **** uint8 buffer[6 + arglen]; //command + PEC (2 bytes) + data + DPEC (2 bytes)
1362 .loc 1 235 20
1363 001c 7B79 ldrb r3, [r7, #5] @ zero_extendqisi2
1364 001e 991D adds r1, r3, #6
1365 .loc 1 235 11
1366 0020 4B1E subs r3, r1, #1
1367 0022 3B61 str r3, [r7, #16]
1368 0024 0A46 mov r2, r1
1369 0026 0023 movs r3, #0
1370 0028 9046 mov r8, r2
1371 002a 9946 mov r9, r3
1372 002c 4FF00002 mov r2, #0
1373 0030 4FF00003 mov r3, #0
1374 0034 4FEAC903 lsl r3, r9, #3
1375 0038 43EA5873 orr r3, r3, r8, lsr #29
1376 003c 4FEAC802 lsl r2, r8, #3
1377 0040 0A46 mov r2, r1
1378 0042 0023 movs r3, #0
1379 0044 1446 mov r4, r2
1380 0046 1D46 mov r5, r3
1381 0048 4FF00002 mov r2, #0
1382 004c 4FF00003 mov r3, #0
1383 0050 EB00 lsls r3, r5, #3
1384 0052 43EA5473 orr r3, r3, r4, lsr #29
1385 0056 E200 lsls r2, r4, #3
1386 0058 0B46 mov r3, r1
1387 005a 0733 adds r3, r3, #7
1388 005c DB08 lsrs r3, r3, #3
1389 005e DB00 lsls r3, r3, #3
1390 0060 ADEB030D sub sp, sp, r3
1391 0064 6B46 mov r3, sp
1392 0066 0033 adds r3, r3, #0
1393 0068 FB60 str r3, [r7, #12]
236:Core/Src/ADBMS_LL_Driver.c **** buffer[0] = (command >> 8) & 0xFF;
1394 .loc 1 236 15
1395 006a FB88 ldrh r3, [r7, #6]
1396 006c 1B0A lsrs r3, r3, #8
1397 006e 9BB2 uxth r3, r3
1398 0070 DAB2 uxtb r2, r3
1399 0072 FB68 ldr r3, [r7, #12]
1400 0074 1A70 strb r2, [r3]
237:Core/Src/ADBMS_LL_Driver.c **** buffer[1] = (command) & 0xFF;
1401 .loc 1 237 15
1402 0076 FB88 ldrh r3, [r7, #6] @ movhi
1403 0078 DAB2 uxtb r2, r3
1404 007a FB68 ldr r3, [r7, #12]
1405 007c 5A70 strb r2, [r3, #1]
238:Core/Src/ADBMS_LL_Driver.c ****
239:Core/Src/ADBMS_LL_Driver.c **** calculateCommandPEC(buffer, 4);
1406 .loc 1 239 5
1407 007e 0421 movs r1, #4
1408 0080 F868 ldr r0, [r7, #12]
1409 0082 FFF7FEFF bl calculateCommandPEC
1410 .LBB13:
240:Core/Src/ADBMS_LL_Driver.c ****
241:Core/Src/ADBMS_LL_Driver.c **** for (uint8 i = 0; i < arglen; i++) {
1411 .loc 1 241 16
ARM GAS /tmp/cczsHaNw.s page 30
1412 0086 0023 movs r3, #0
1413 0088 BB75 strb r3, [r7, #22]
1414 .loc 1 241 5
1415 008a 0AE0 b .L55
1416 .L56:
242:Core/Src/ADBMS_LL_Driver.c **** buffer[4 + i] = args[i];
1417 .loc 1 242 27
1418 008c BB7D ldrb r3, [r7, #22] @ zero_extendqisi2
1419 008e 3A68 ldr r2, [r7]
1420 0090 1A44 add r2, r2, r3
1421 .loc 1 242 16
1422 0092 BB7D ldrb r3, [r7, #22] @ zero_extendqisi2
1423 0094 0433 adds r3, r3, #4
1424 .loc 1 242 27
1425 0096 1178 ldrb r1, [r2] @ zero_extendqisi2
1426 .loc 1 242 21
1427 0098 FA68 ldr r2, [r7, #12]
1428 009a D154 strb r1, [r2, r3]
241:Core/Src/ADBMS_LL_Driver.c **** buffer[4 + i] = args[i];
1429 .loc 1 241 36 discriminator 3
1430 009c BB7D ldrb r3, [r7, #22] @ zero_extendqisi2
1431 009e 0133 adds r3, r3, #1
1432 00a0 BB75 strb r3, [r7, #22]
1433 .L55:
241:Core/Src/ADBMS_LL_Driver.c **** buffer[4 + i] = args[i];
1434 .loc 1 241 25 discriminator 1
1435 00a2 BA7D ldrb r2, [r7, #22] @ zero_extendqisi2
1436 00a4 7B79 ldrb r3, [r7, #5] @ zero_extendqisi2
1437 00a6 9A42 cmp r2, r3
1438 00a8 F0D3 bcc .L56
1439 .LBE13:
243:Core/Src/ADBMS_LL_Driver.c **** }
244:Core/Src/ADBMS_LL_Driver.c ****
245:Core/Src/ADBMS_LL_Driver.c **** calculateDataPEC(&buffer[4], arglen + 2); //DPEC is calculated over the data, not the command,
1440 .loc 1 245 5
1441 00aa FB68 ldr r3, [r7, #12]
1442 00ac 1A1D adds r2, r3, #4
1443 00ae 7B79 ldrb r3, [r7, #5]
1444 00b0 0233 adds r3, r3, #2
1445 00b2 DBB2 uxtb r3, r3
1446 00b4 1946 mov r1, r3
1447 00b6 1046 mov r0, r2
1448 00b8 FFF7FEFF bl calculateDataPEC
246:Core/Src/ADBMS_LL_Driver.c ****
247:Core/Src/ADBMS_LL_Driver.c **** mcuAdbmsCSLow();
1449 .loc 1 247 5
1450 00bc FFF7FEFF bl mcuAdbmsCSLow
248:Core/Src/ADBMS_LL_Driver.c **** ret = mcuSPITransmit(buffer, 6 + arglen);
1451 .loc 1 248 11
1452 00c0 7B79 ldrb r3, [r7, #5]
1453 00c2 0633 adds r3, r3, #6
1454 00c4 DBB2 uxtb r3, r3
1455 00c6 1946 mov r1, r3
1456 00c8 F868 ldr r0, [r7, #12]
1457 00ca FFF7FEFF bl mcuSPITransmit
1458 00ce 0346 mov r3, r0
1459 00d0 FB75 strb r3, [r7, #23]
ARM GAS /tmp/cczsHaNw.s page 31
249:Core/Src/ADBMS_LL_Driver.c **** mcuAdbmsCSHigh();
1460 .loc 1 249 5
1461 00d2 FFF7FEFF bl mcuAdbmsCSHigh
1462 00d6 B546 mov sp, r6
1463 .LBE12:
1464 00d8 19E0 b .L57
1465 .L54:
1466 .LBB14:
250:Core/Src/ADBMS_LL_Driver.c **** } else {
251:Core/Src/ADBMS_LL_Driver.c **** uint8 buffer[4];
252:Core/Src/ADBMS_LL_Driver.c **** buffer[0] = (command >> 8) & 0xFF;
1467 .loc 1 252 15
1468 00da FB88 ldrh r3, [r7, #6]
1469 00dc 1B0A lsrs r3, r3, #8
1470 00de 9BB2 uxth r3, r3
1471 00e0 DBB2 uxtb r3, r3
1472 00e2 3B72 strb r3, [r7, #8]
253:Core/Src/ADBMS_LL_Driver.c **** buffer[1] = (command) & 0xFF;
1473 .loc 1 253 15
1474 00e4 FB88 ldrh r3, [r7, #6] @ movhi
1475 00e6 DBB2 uxtb r3, r3
1476 00e8 7B72 strb r3, [r7, #9]
254:Core/Src/ADBMS_LL_Driver.c **** calculateCommandPEC(buffer, 4);
1477 .loc 1 254 5
1478 00ea 07F10803 add r3, r7, #8
1479 00ee 0421 movs r1, #4
1480 00f0 1846 mov r0, r3
1481 00f2 FFF7FEFF bl calculateCommandPEC
255:Core/Src/ADBMS_LL_Driver.c ****
256:Core/Src/ADBMS_LL_Driver.c **** mcuAdbmsCSLow();
1482 .loc 1 256 5
1483 00f6 FFF7FEFF bl mcuAdbmsCSLow
257:Core/Src/ADBMS_LL_Driver.c ****
258:Core/Src/ADBMS_LL_Driver.c **** ret = mcuSPITransmit(buffer, 4);
1484 .loc 1 258 11
1485 00fa 07F10803 add r3, r7, #8
1486 00fe 0421 movs r1, #4
1487 0100 1846 mov r0, r3
1488 0102 FFF7FEFF bl mcuSPITransmit
1489 0106 0346 mov r3, r0
1490 0108 FB75 strb r3, [r7, #23]
259:Core/Src/ADBMS_LL_Driver.c ****
260:Core/Src/ADBMS_LL_Driver.c **** mcuAdbmsCSHigh();
1491 .loc 1 260 5
1492 010a FFF7FEFF bl mcuAdbmsCSHigh
1493 .L57:
1494 .LBE14:
261:Core/Src/ADBMS_LL_Driver.c **** }
262:Core/Src/ADBMS_LL_Driver.c ****
263:Core/Src/ADBMS_LL_Driver.c **** return ret;
1495 .loc 1 263 10
1496 010e FB7D ldrb r3, [r7, #23] @ zero_extendqisi2
264:Core/Src/ADBMS_LL_Driver.c **** }
1497 .loc 1 264 1
1498 0110 1846 mov r0, r3
1499 0112 1C37 adds r7, r7, #28
1500 .cfi_def_cfa_offset 28
ARM GAS /tmp/cczsHaNw.s page 32
1501 0114 BD46 mov sp, r7
1502 .cfi_def_cfa_register 13
1503 @ sp needed
1504 0116 BDE8F083 pop {r4, r5, r6, r7, r8, r9, pc}
1505 .cfi_endproc
1506 .LFE140:
1508 .section .text.readCMD,"ax",%progbits
1509 .align 1
1510 .global readCMD
1511 .syntax unified
1512 .thumb
1513 .thumb_func
1515 readCMD:
1516 .LFB141:
265:Core/Src/ADBMS_LL_Driver.c ****
266:Core/Src/ADBMS_LL_Driver.c **** uint8 readCMD(uint16 command, uint8 * buffer, uint8 buflen) {
1517 .loc 1 266 61
1518 .cfi_startproc
1519 @ args = 0, pretend = 0, frame = 48
1520 @ frame_needed = 1, uses_anonymous_args = 0
1521 0000 2DE9F04F push {r4, r5, r6, r7, r8, r9, r10, fp, lr}
1522 .cfi_def_cfa_offset 36
1523 .cfi_offset 4, -36
1524 .cfi_offset 5, -32
1525 .cfi_offset 6, -28
1526 .cfi_offset 7, -24
1527 .cfi_offset 8, -20
1528 .cfi_offset 9, -16
1529 .cfi_offset 10, -12
1530 .cfi_offset 11, -8
1531 .cfi_offset 14, -4
1532 0004 8DB0 sub sp, sp, #52
1533 .cfi_def_cfa_offset 88
1534 0006 00AF add r7, sp, #0
1535 .cfi_def_cfa_register 7
1536 0008 0346 mov r3, r0
1537 000a 3961 str r1, [r7, #16]
1538 000c FB82 strh r3, [r7, #22] @ movhi
1539 000e 1346 mov r3, r2
1540 0010 7B75 strb r3, [r7, #21]
1541 .loc 1 266 61
1542 0012 6B46 mov r3, sp
1543 0014 7B60 str r3, [r7, #4]
267:Core/Src/ADBMS_LL_Driver.c **** uint8 txbuffer[6 + buflen];
1544 .loc 1 267 20
1545 0016 7B7D ldrb r3, [r7, #21] @ zero_extendqisi2
1546 0018 991D adds r1, r3, #6
1547 .loc 1 267 9
1548 001a 4B1E subs r3, r1, #1
1549 001c BB62 str r3, [r7, #40]
1550 001e 0A46 mov r2, r1
1551 0020 0023 movs r3, #0
1552 0022 BA60 str r2, [r7, #8]
1553 0024 FB60 str r3, [r7, #12]
1554 0026 4FF00002 mov r2, #0
1555 002a 4FF00003 mov r3, #0
1556 002e F868 ldr r0, [r7, #12]
ARM GAS /tmp/cczsHaNw.s page 33
1557 0030 C300 lsls r3, r0, #3
1558 0032 B868 ldr r0, [r7, #8]
1559 0034 43EA5073 orr r3, r3, r0, lsr #29
1560 0038 B868 ldr r0, [r7, #8]
1561 003a C200 lsls r2, r0, #3
1562 003c 0A46 mov r2, r1
1563 003e 0023 movs r3, #0
1564 0040 9246 mov r10, r2
1565 0042 9B46 mov fp, r3
1566 0044 4FF00002 mov r2, #0
1567 0048 4FF00003 mov r3, #0
1568 004c 4FEACB03 lsl r3, fp, #3
1569 0050 43EA5A73 orr r3, r3, r10, lsr #29
1570 0054 4FEACA02 lsl r2, r10, #3
1571 0058 0B46 mov r3, r1
1572 005a 0733 adds r3, r3, #7
1573 005c DB08 lsrs r3, r3, #3
1574 005e DB00 lsls r3, r3, #3
1575 0060 ADEB030D sub sp, sp, r3
1576 0064 6B46 mov r3, sp
1577 0066 0033 adds r3, r3, #0
1578 0068 7B62 str r3, [r7, #36]
268:Core/Src/ADBMS_LL_Driver.c **** uint8 rxbuffer[6 + buflen];
1579 .loc 1 268 20
1580 006a 7B7D ldrb r3, [r7, #21] @ zero_extendqisi2
1581 006c 9E1D adds r6, r3, #6
1582 .loc 1 268 9
1583 006e 731E subs r3, r6, #1
1584 0070 3B62 str r3, [r7, #32]
1585 0072 3246 mov r2, r6
1586 0074 0023 movs r3, #0
1587 0076 9046 mov r8, r2
1588 0078 9946 mov r9, r3
1589 007a 4FF00002 mov r2, #0
1590 007e 4FF00003 mov r3, #0
1591 0082 4FEAC903 lsl r3, r9, #3
1592 0086 43EA5873 orr r3, r3, r8, lsr #29
1593 008a 4FEAC802 lsl r2, r8, #3
1594 008e 3246 mov r2, r6
1595 0090 0023 movs r3, #0
1596 0092 1446 mov r4, r2
1597 0094 1D46 mov r5, r3
1598 0096 4FF00002 mov r2, #0
1599 009a 4FF00003 mov r3, #0
1600 009e EB00 lsls r3, r5, #3
1601 00a0 43EA5473 orr r3, r3, r4, lsr #29
1602 00a4 E200 lsls r2, r4, #3
1603 00a6 3346 mov r3, r6
1604 00a8 0733 adds r3, r3, #7
1605 00aa DB08 lsrs r3, r3, #3
1606 00ac DB00 lsls r3, r3, #3
1607 00ae ADEB030D sub sp, sp, r3
1608 00b2 6B46 mov r3, sp
1609 00b4 0033 adds r3, r3, #0
1610 00b6 FB61 str r3, [r7, #28]
269:Core/Src/ADBMS_LL_Driver.c ****
270:Core/Src/ADBMS_LL_Driver.c **** txbuffer[0] = (command >> 8) & 0xFF;
ARM GAS /tmp/cczsHaNw.s page 34
1611 .loc 1 270 15
1612 00b8 FB8A ldrh r3, [r7, #22]
1613 00ba 1B0A lsrs r3, r3, #8
1614 00bc 9BB2 uxth r3, r3
1615 00be DAB2 uxtb r2, r3
1616 00c0 7B6A ldr r3, [r7, #36]
1617 00c2 1A70 strb r2, [r3]
271:Core/Src/ADBMS_LL_Driver.c **** txbuffer[1] = (command)&0xFF;
1618 .loc 1 271 15
1619 00c4 FB8A ldrh r3, [r7, #22] @ movhi
1620 00c6 DAB2 uxtb r2, r3
1621 00c8 7B6A ldr r3, [r7, #36]
1622 00ca 5A70 strb r2, [r3, #1]
272:Core/Src/ADBMS_LL_Driver.c **** calculateCommandPEC(txbuffer, 4);
1623 .loc 1 272 3
1624 00cc 0421 movs r1, #4
1625 00ce 786A ldr r0, [r7, #36]
1626 00d0 FFF7FEFF bl calculateCommandPEC
273:Core/Src/ADBMS_LL_Driver.c ****
274:Core/Src/ADBMS_LL_Driver.c **** mcuAdbmsCSLow();
1627 .loc 1 274 3
1628 00d4 FFF7FEFF bl mcuAdbmsCSLow
275:Core/Src/ADBMS_LL_Driver.c **** uint8 status = mcuSPITransmitReceive(rxbuffer, txbuffer, 6 + buflen);
1629 .loc 1 275 18
1630 00d8 7B7D ldrb r3, [r7, #21]
1631 00da 0633 adds r3, r3, #6
1632 00dc DBB2 uxtb r3, r3
1633 00de 1A46 mov r2, r3
1634 00e0 796A ldr r1, [r7, #36]
1635 00e2 F869 ldr r0, [r7, #28]
1636 00e4 FFF7FEFF bl mcuSPITransmitReceive
1637 00e8 0346 mov r3, r0
1638 00ea FB76 strb r3, [r7, #27]
276:Core/Src/ADBMS_LL_Driver.c **** mcuAdbmsCSHigh();
1639 .loc 1 276 3
1640 00ec FFF7FEFF bl mcuAdbmsCSHigh
277:Core/Src/ADBMS_LL_Driver.c ****
278:Core/Src/ADBMS_LL_Driver.c **** if (status != 0) {
1641 .loc 1 278 6
1642 00f0 FB7E ldrb r3, [r7, #27] @ zero_extendqisi2
1643 00f2 002B cmp r3, #0
1644 00f4 01D0 beq .L60
279:Core/Src/ADBMS_LL_Driver.c **** return status;
1645 .loc 1 279 12
1646 00f6 FB7E ldrb r3, [r7, #27] @ zero_extendqisi2
1647 00f8 28E0 b .L61
1648 .L60:
1649 .LBB15:
280:Core/Src/ADBMS_LL_Driver.c **** }
281:Core/Src/ADBMS_LL_Driver.c ****
282:Core/Src/ADBMS_LL_Driver.c **** for (uint8 i = 0; i < buflen; i++) {
1650 .loc 1 282 14
1651 00fa 0023 movs r3, #0
1652 00fc 87F82F30 strb r3, [r7, #47]
1653 .loc 1 282 3
1654 0100 0EE0 b .L62
1655 .L63:
ARM GAS /tmp/cczsHaNw.s page 35
283:Core/Src/ADBMS_LL_Driver.c **** buffer[i] = rxbuffer[i + 4];
1656 .loc 1 283 28
1657 0102 97F82F30 ldrb r3, [r7, #47] @ zero_extendqisi2
1658 0106 1A1D adds r2, r3, #4
1659 .loc 1 283 11
1660 0108 97F82F30 ldrb r3, [r7, #47] @ zero_extendqisi2
1661 010c 3969 ldr r1, [r7, #16]
1662 010e 0B44 add r3, r3, r1
1663 .loc 1 283 25
1664 0110 F969 ldr r1, [r7, #28]
1665 0112 8A5C ldrb r2, [r1, r2] @ zero_extendqisi2
1666 .loc 1 283 15
1667 0114 1A70 strb r2, [r3]
282:Core/Src/ADBMS_LL_Driver.c **** buffer[i] = rxbuffer[i + 4];
1668 .loc 1 282 34 discriminator 3
1669 0116 97F82F30 ldrb r3, [r7, #47] @ zero_extendqisi2
1670 011a 0133 adds r3, r3, #1
1671 011c 87F82F30 strb r3, [r7, #47]
1672 .L62:
282:Core/Src/ADBMS_LL_Driver.c **** buffer[i] = rxbuffer[i + 4];
1673 .loc 1 282 23 discriminator 1
1674 0120 97F82F20 ldrb r2, [r7, #47] @ zero_extendqisi2
1675 0124 7B7D ldrb r3, [r7, #21] @ zero_extendqisi2
1676 0126 9A42 cmp r2, r3
1677 0128 EBD3 bcc .L63
1678 .LBE15:
284:Core/Src/ADBMS_LL_Driver.c **** }
285:Core/Src/ADBMS_LL_Driver.c ****
286:Core/Src/ADBMS_LL_Driver.c **** [[maybe_unused]] uint8 commandCounter = rxbuffer[sizeof(rxbuffer) - 2] & 0xFC; //command counter
1679 .loc 1 286 58
1680 012a 3346 mov r3, r6
1681 .loc 1 286 69
1682 012c 023B subs r3, r3, #2
1683 .loc 1 286 51
1684 012e FA69 ldr r2, [r7, #28]
1685 0130 D35C ldrb r3, [r2, r3] @ zero_extendqisi2
1686 .loc 1 286 26
1687 0132 23F00303 bic r3, r3, #3
1688 0136 BB76 strb r3, [r7, #26]
287:Core/Src/ADBMS_LL_Driver.c **** //TODO: check comm
288:Core/Src/ADBMS_LL_Driver.c ****
289:Core/Src/ADBMS_LL_Driver.c **** return checkDataPEC(&rxbuffer[4], buflen + 2);
1689 .loc 1 289 10
1690 0138 FB69 ldr r3, [r7, #28]
1691 013a 1A1D adds r2, r3, #4
1692 013c 7B7D ldrb r3, [r7, #21]
1693 013e 0233 adds r3, r3, #2
1694 0140 DBB2 uxtb r3, r3
1695 0142 1946 mov r1, r3
1696 0144 1046 mov r0, r2
1697 0146 FFF7FEFF bl checkDataPEC
1698 014a 0346 mov r3, r0
1699 .L61:
1700 014c D7F804D0 ldr sp, [r7, #4]
290:Core/Src/ADBMS_LL_Driver.c **** }
1701 .loc 1 290 1
1702 0150 1846 mov r0, r3
ARM GAS /tmp/cczsHaNw.s page 36
1703 0152 3437 adds r7, r7, #52
1704 .cfi_def_cfa_offset 36
1705 0154 BD46 mov sp, r7
1706 .cfi_def_cfa_register 13
1707 @ sp needed
1708 0156 BDE8F08F pop {r4, r5, r6, r7, r8, r9, r10, fp, pc}
1709 .cfi_endproc
1710 .LFE141:
1712 .section .text.pollCMD,"ax",%progbits
1713 .align 1
1714 .global pollCMD
1715 .syntax unified
1716 .thumb
1717 .thumb_func
1719 pollCMD:
1720 .LFB142:
291:Core/Src/ADBMS_LL_Driver.c ****
292:Core/Src/ADBMS_LL_Driver.c **** //check poll command - no data PEC sent back
293:Core/Src/ADBMS_LL_Driver.c **** uint8 pollCMD(uint16 command) {
1721 .loc 1 293 31
1722 .cfi_startproc
1723 @ args = 0, pretend = 0, frame = 24
1724 @ frame_needed = 1, uses_anonymous_args = 0
1725 0000 80B5 push {r7, lr}
1726 .cfi_def_cfa_offset 8
1727 .cfi_offset 7, -8
1728 .cfi_offset 14, -4
1729 0002 86B0 sub sp, sp, #24
1730 .cfi_def_cfa_offset 32
1731 0004 00AF add r7, sp, #0
1732 .cfi_def_cfa_register 7
1733 0006 0346 mov r3, r0
1734 0008 FB80 strh r3, [r7, #6] @ movhi
294:Core/Src/ADBMS_LL_Driver.c **** uint8 txbuffer[5] = {};
1735 .loc 1 294 9
1736 000a 07F11003 add r3, r7, #16
1737 000e 0022 movs r2, #0
1738 0010 1A60 str r2, [r3]
1739 0012 1A71 strb r2, [r3, #4]
295:Core/Src/ADBMS_LL_Driver.c **** uint8 rxbuffer[5] = {};
1740 .loc 1 295 9
1741 0014 07F10803 add r3, r7, #8
1742 0018 0022 movs r2, #0
1743 001a 1A60 str r2, [r3]
1744 001c 1A71 strb r2, [r3, #4]
296:Core/Src/ADBMS_LL_Driver.c ****
297:Core/Src/ADBMS_LL_Driver.c **** txbuffer[0] = (command >> 8) & 0xFF;
1745 .loc 1 297 15
1746 001e FB88 ldrh r3, [r7, #6]
1747 0020 1B0A lsrs r3, r3, #8
1748 0022 9BB2 uxth r3, r3
1749 0024 DBB2 uxtb r3, r3
1750 0026 3B74 strb r3, [r7, #16]
298:Core/Src/ADBMS_LL_Driver.c **** txbuffer[1] = (command)&0xFF;
1751 .loc 1 298 15
1752 0028 FB88 ldrh r3, [r7, #6] @ movhi
1753 002a DBB2 uxtb r3, r3
ARM GAS /tmp/cczsHaNw.s page 37
1754 002c 7B74 strb r3, [r7, #17]
299:Core/Src/ADBMS_LL_Driver.c **** calculateCommandPEC(txbuffer, 4);
1755 .loc 1 299 3
1756 002e 07F11003 add r3, r7, #16
1757 0032 0421 movs r1, #4
1758 0034 1846 mov r0, r3
1759 0036 FFF7FEFF bl calculateCommandPEC
300:Core/Src/ADBMS_LL_Driver.c ****
301:Core/Src/ADBMS_LL_Driver.c **** mcuAdbmsCSLow();
1760 .loc 1 301 3
1761 003a FFF7FEFF bl mcuAdbmsCSLow
302:Core/Src/ADBMS_LL_Driver.c **** uint8 status = mcuSPITransmitReceive(rxbuffer, txbuffer, 5);
1762 .loc 1 302 18
1763 003e 07F11001 add r1, r7, #16
1764 0042 07F10803 add r3, r7, #8
1765 0046 0522 movs r2, #5
1766 0048 1846 mov r0, r3
1767 004a FFF7FEFF bl mcuSPITransmitReceive
1768 004e 0346 mov r3, r0
1769 0050 FB75 strb r3, [r7, #23]
303:Core/Src/ADBMS_LL_Driver.c **** mcuAdbmsCSHigh();
1770 .loc 1 303 3
1771 0052 FFF7FEFF bl mcuAdbmsCSHigh
304:Core/Src/ADBMS_LL_Driver.c ****
305:Core/Src/ADBMS_LL_Driver.c **** if (status != 0) {
1772 .loc 1 305 6
1773 0056 FB7D ldrb r3, [r7, #23] @ zero_extendqisi2
1774 0058 002B cmp r3, #0
1775 005a 01D0 beq .L66
306:Core/Src/ADBMS_LL_Driver.c **** return status;
1776 .loc 1 306 12
1777 005c FB7D ldrb r3, [r7, #23] @ zero_extendqisi2
1778 005e 00E0 b .L68
1779 .L66:
307:Core/Src/ADBMS_LL_Driver.c **** }
308:Core/Src/ADBMS_LL_Driver.c ****
309:Core/Src/ADBMS_LL_Driver.c **** return rxbuffer[4]; //last byte will be poll response
1780 .loc 1 309 18
1781 0060 3B7B ldrb r3, [r7, #12] @ zero_extendqisi2
1782 .L68:
310:Core/Src/ADBMS_LL_Driver.c **** }
1783 .loc 1 310 1
1784 0062 1846 mov r0, r3
1785 0064 1837 adds r7, r7, #24
1786 .cfi_def_cfa_offset 8
1787 0066 BD46 mov sp, r7
1788 .cfi_def_cfa_register 13
1789 @ sp needed
1790 0068 80BD pop {r7, pc}
1791 .cfi_endproc
1792 .LFE142:
1794 .section .text.mcuAdbmsCSLow,"ax",%progbits
1795 .align 1
1796 .global mcuAdbmsCSLow
1797 .syntax unified
1798 .thumb
1799 .thumb_func
ARM GAS /tmp/cczsHaNw.s page 38
1801 mcuAdbmsCSLow:
1802 .LFB143:
311:Core/Src/ADBMS_LL_Driver.c ****
312:Core/Src/ADBMS_LL_Driver.c **** void mcuAdbmsCSLow() {
1803 .loc 1 312 22
1804 .cfi_startproc
1805 @ args = 0, pretend = 0, frame = 0
1806 @ frame_needed = 1, uses_anonymous_args = 0
1807 0000 80B5 push {r7, lr}
1808 .cfi_def_cfa_offset 8
1809 .cfi_offset 7, -8
1810 .cfi_offset 14, -4
1811 0002 00AF add r7, sp, #0
1812 .cfi_def_cfa_register 7
313:Core/Src/ADBMS_LL_Driver.c **** HAL_GPIO_WritePin(CSB_GPIO_Port, CSB_Pin, GPIO_PIN_RESET);
1813 .loc 1 313 3
1814 0004 0022 movs r2, #0
1815 0006 1021 movs r1, #16
1816 0008 4FF09040 mov r0, #1207959552
1817 000c FFF7FEFF bl HAL_GPIO_WritePin
314:Core/Src/ADBMS_LL_Driver.c **** }
1818 .loc 1 314 1
1819 0010 00BF nop
1820 0012 80BD pop {r7, pc}
1821 .cfi_endproc
1822 .LFE143:
1824 .section .text.mcuAdbmsCSHigh,"ax",%progbits
1825 .align 1
1826 .global mcuAdbmsCSHigh
1827 .syntax unified
1828 .thumb
1829 .thumb_func
1831 mcuAdbmsCSHigh:
1832 .LFB144:
315:Core/Src/ADBMS_LL_Driver.c ****
316:Core/Src/ADBMS_LL_Driver.c **** void mcuAdbmsCSHigh() {
1833 .loc 1 316 23
1834 .cfi_startproc
1835 @ args = 0, pretend = 0, frame = 0
1836 @ frame_needed = 1, uses_anonymous_args = 0
1837 0000 80B5 push {r7, lr}
1838 .cfi_def_cfa_offset 8
1839 .cfi_offset 7, -8
1840 .cfi_offset 14, -4
1841 0002 00AF add r7, sp, #0
1842 .cfi_def_cfa_register 7
317:Core/Src/ADBMS_LL_Driver.c **** HAL_GPIO_WritePin(CSB_GPIO_Port, CSB_Pin, GPIO_PIN_SET);
1843 .loc 1 317 3
1844 0004 0122 movs r2, #1
1845 0006 1021 movs r1, #16
1846 0008 4FF09040 mov r0, #1207959552
1847 000c FFF7FEFF bl HAL_GPIO_WritePin
318:Core/Src/ADBMS_LL_Driver.c **** }
1848 .loc 1 318 1
1849 0010 00BF nop
1850 0012 80BD pop {r7, pc}
1851 .cfi_endproc
ARM GAS /tmp/cczsHaNw.s page 39
1852 .LFE144:
1854 .section .text.mcuSPITransmit,"ax",%progbits
1855 .align 1
1856 .global mcuSPITransmit
1857 .syntax unified
1858 .thumb
1859 .thumb_func
1861 mcuSPITransmit:
1862 .LFB145:
319:Core/Src/ADBMS_LL_Driver.c ****
320:Core/Src/ADBMS_LL_Driver.c **** uint8 mcuSPITransmit(uint8* buffer, uint8 buffersize) {
1863 .loc 1 320 55
1864 .cfi_startproc
1865 @ args = 0, pretend = 0, frame = 24
1866 @ frame_needed = 1, uses_anonymous_args = 0
1867 0000 2DE9F043 push {r4, r5, r6, r7, r8, r9, lr}
1868 .cfi_def_cfa_offset 28
1869 .cfi_offset 4, -28
1870 .cfi_offset 5, -24
1871 .cfi_offset 6, -20
1872 .cfi_offset 7, -16
1873 .cfi_offset 8, -12
1874 .cfi_offset 9, -8
1875 .cfi_offset 14, -4
1876 0004 89B0 sub sp, sp, #36
1877 .cfi_def_cfa_offset 64
1878 0006 02AF add r7, sp, #8
1879 .cfi_def_cfa 7, 56
1880 0008 7860 str r0, [r7, #4]
1881 000a 0B46 mov r3, r1
1882 000c FB70 strb r3, [r7, #3]
1883 .loc 1 320 55
1884 000e 6B46 mov r3, sp
1885 0010 1E46 mov r6, r3
321:Core/Src/ADBMS_LL_Driver.c **** uint8 rxbuf[buffersize];
1886 .loc 1 321 5
1887 0012 F978 ldrb r1, [r7, #3] @ zero_extendqisi2
1888 .loc 1 321 11
1889 0014 0B46 mov r3, r1
1890 0016 013B subs r3, r3, #1
1891 0018 7B61 str r3, [r7, #20]
1892 001a CBB2 uxtb r3, r1
1893 001c 0022 movs r2, #0
1894 001e 9846 mov r8, r3
1895 0020 9146 mov r9, r2
1896 0022 4FF00002 mov r2, #0
1897 0026 4FF00003 mov r3, #0
1898 002a 4FEAC903 lsl r3, r9, #3
1899 002e 43EA5873 orr r3, r3, r8, lsr #29
1900 0032 4FEAC802 lsl r2, r8, #3
1901 0036 CBB2 uxtb r3, r1
1902 0038 0022 movs r2, #0
1903 003a 1C46 mov r4, r3
1904 003c 1546 mov r5, r2
1905 003e 4FF00002 mov r2, #0
1906 0042 4FF00003 mov r3, #0
1907 0046 EB00 lsls r3, r5, #3
ARM GAS /tmp/cczsHaNw.s page 40
1908 0048 43EA5473 orr r3, r3, r4, lsr #29
1909 004c E200 lsls r2, r4, #3
1910 004e 0B46 mov r3, r1
1911 0050 0733 adds r3, r3, #7
1912 0052 DB08 lsrs r3, r3, #3
1913 0054 DB00 lsls r3, r3, #3
1914 0056 ADEB030D sub sp, sp, r3
1915 005a 02AB add r3, sp, #8
1916 005c 0033 adds r3, r3, #0
1917 005e 3B61 str r3, [r7, #16]
322:Core/Src/ADBMS_LL_Driver.c **** const HAL_StatusTypeDef status = HAL_SPI_TransmitReceive(adbmsspi, buffer, rxbuf, buffersize,
1918 .loc 1 322 38
1919 0060 0F4B ldr r3, .L73
1920 0062 1868 ldr r0, [r3]
1921 0064 FB78 ldrb r3, [r7, #3] @ zero_extendqisi2
1922 0066 9BB2 uxth r3, r3
1923 0068 6422 movs r2, #100
1924 006a 0092 str r2, [sp]
1925 006c 3A69 ldr r2, [r7, #16]
1926 006e 7968 ldr r1, [r7, #4]
1927 0070 FFF7FEFF bl HAL_SPI_TransmitReceive
1928 0074 0346 mov r3, r0
1929 0076 FB73 strb r3, [r7, #15]
1930 .LBB16:
323:Core/Src/ADBMS_LL_Driver.c **** ADBMS_SPI_TIMEOUT);
324:Core/Src/ADBMS_LL_Driver.c **** __HAL_SPI_CLEAR_OVRFLAG(adbmsspi);
1931 .loc 1 324 3
1932 0078 0023 movs r3, #0
1933 007a BB60 str r3, [r7, #8]
1934 007c 084B ldr r3, .L73
1935 007e 1B68 ldr r3, [r3]
1936 0080 1B68 ldr r3, [r3]
1937 0082 DB68 ldr r3, [r3, #12]
1938 0084 BB60 str r3, [r7, #8]
1939 0086 064B ldr r3, .L73
1940 0088 1B68 ldr r3, [r3]
1941 008a 1B68 ldr r3, [r3]
1942 008c 9B68 ldr r3, [r3, #8]
1943 008e BB60 str r3, [r7, #8]
1944 0090 BB68 ldr r3, [r7, #8]
1945 .LBE16:
325:Core/Src/ADBMS_LL_Driver.c **** return status;
1946 .loc 1 325 10
1947 0092 FB7B ldrb r3, [r7, #15] @ zero_extendqisi2
1948 0094 B546 mov sp, r6
326:Core/Src/ADBMS_LL_Driver.c **** }
1949 .loc 1 326 1
1950 0096 1846 mov r0, r3
1951 0098 1C37 adds r7, r7, #28
1952 .cfi_def_cfa_offset 28
1953 009a BD46 mov sp, r7
1954 .cfi_def_cfa_register 13
1955 @ sp needed
1956 009c BDE8F083 pop {r4, r5, r6, r7, r8, r9, pc}
1957 .L74:
1958 .align 2
1959 .L73:
ARM GAS /tmp/cczsHaNw.s page 41
1960 00a0 00000000 .word adbmsspi
1961 .cfi_endproc
1962 .LFE145:
1964 .section .text.mcuSPIReceive,"ax",%progbits
1965 .align 1
1966 .global mcuSPIReceive
1967 .syntax unified
1968 .thumb
1969 .thumb_func
1971 mcuSPIReceive:
1972 .LFB146:
327:Core/Src/ADBMS_LL_Driver.c ****
328:Core/Src/ADBMS_LL_Driver.c **** uint8 mcuSPIReceive(uint8* buffer, uint8 buffersize) {
1973 .loc 1 328 54
1974 .cfi_startproc
1975 @ args = 0, pretend = 0, frame = 16
1976 @ frame_needed = 1, uses_anonymous_args = 0
1977 0000 80B5 push {r7, lr}
1978 .cfi_def_cfa_offset 8
1979 .cfi_offset 7, -8
1980 .cfi_offset 14, -4
1981 0002 84B0 sub sp, sp, #16
1982 .cfi_def_cfa_offset 24
1983 0004 00AF add r7, sp, #0
1984 .cfi_def_cfa_register 7
1985 0006 7860 str r0, [r7, #4]
1986 0008 0B46 mov r3, r1
1987 000a FB70 strb r3, [r7, #3]
329:Core/Src/ADBMS_LL_Driver.c **** const HAL_StatusTypeDef status = HAL_SPI_Receive(adbmsspi, buffer, buffersize, ADBMS_SPI_TIMEOU
1988 .loc 1 329 38
1989 000c 074B ldr r3, .L77
1990 000e 1868 ldr r0, [r3]
1991 0010 FB78 ldrb r3, [r7, #3] @ zero_extendqisi2
1992 0012 9AB2 uxth r2, r3
1993 0014 6423 movs r3, #100
1994 0016 7968 ldr r1, [r7, #4]
1995 0018 FFF7FEFF bl HAL_SPI_Receive
1996 001c 0346 mov r3, r0
1997 001e FB73 strb r3, [r7, #15]
330:Core/Src/ADBMS_LL_Driver.c **** return status;
1998 .loc 1 330 10
1999 0020 FB7B ldrb r3, [r7, #15] @ zero_extendqisi2
331:Core/Src/ADBMS_LL_Driver.c **** }
2000 .loc 1 331 1
2001 0022 1846 mov r0, r3
2002 0024 1037 adds r7, r7, #16
2003 .cfi_def_cfa_offset 8
2004 0026 BD46 mov sp, r7
2005 .cfi_def_cfa_register 13
2006 @ sp needed
2007 0028 80BD pop {r7, pc}
2008 .L78:
2009 002a 00BF .align 2
2010 .L77:
2011 002c 00000000 .word adbmsspi
2012 .cfi_endproc
2013 .LFE146:
ARM GAS /tmp/cczsHaNw.s page 42
2015 .section .text.mcuSPITransmitReceive,"ax",%progbits
2016 .align 1
2017 .global mcuSPITransmitReceive
2018 .syntax unified
2019 .thumb
2020 .thumb_func
2022 mcuSPITransmitReceive:
2023 .LFB147:
332:Core/Src/ADBMS_LL_Driver.c ****
333:Core/Src/ADBMS_LL_Driver.c **** uint8 mcuSPITransmitReceive(uint8* rxbuffer, uint8* txbuffer,
334:Core/Src/ADBMS_LL_Driver.c **** uint8 buffersize) {
2024 .loc 1 334 47
2025 .cfi_startproc
2026 @ args = 0, pretend = 0, frame = 24
2027 @ frame_needed = 1, uses_anonymous_args = 0
2028 0000 80B5 push {r7, lr}
2029 .cfi_def_cfa_offset 8
2030 .cfi_offset 7, -8
2031 .cfi_offset 14, -4
2032 0002 88B0 sub sp, sp, #32
2033 .cfi_def_cfa_offset 40
2034 0004 02AF add r7, sp, #8
2035 .cfi_def_cfa 7, 32
2036 0006 F860 str r0, [r7, #12]
2037 0008 B960 str r1, [r7, #8]
2038 000a 1346 mov r3, r2
2039 000c FB71 strb r3, [r7, #7]
335:Core/Src/ADBMS_LL_Driver.c **** const HAL_StatusTypeDef status = HAL_SPI_TransmitReceive(adbmsspi, txbuffer, rxbuffer, buffersi
2040 .loc 1 335 38
2041 000e 084B ldr r3, .L81
2042 0010 1868 ldr r0, [r3]
2043 0012 FB79 ldrb r3, [r7, #7] @ zero_extendqisi2
2044 0014 9BB2 uxth r3, r3
2045 0016 6422 movs r2, #100
2046 0018 0092 str r2, [sp]
2047 001a FA68 ldr r2, [r7, #12]
2048 001c B968 ldr r1, [r7, #8]
2049 001e FFF7FEFF bl HAL_SPI_TransmitReceive
2050 0022 0346 mov r3, r0
2051 0024 FB75 strb r3, [r7, #23]
336:Core/Src/ADBMS_LL_Driver.c **** ADBMS_SPI_TIMEOUT);
337:Core/Src/ADBMS_LL_Driver.c **** return status;
2052 .loc 1 337 10
2053 0026 FB7D ldrb r3, [r7, #23] @ zero_extendqisi2
338:Core/Src/ADBMS_LL_Driver.c **** }
2054 .loc 1 338 1
2055 0028 1846 mov r0, r3
2056 002a 1837 adds r7, r7, #24
2057 .cfi_def_cfa_offset 8
2058 002c BD46 mov sp, r7
2059 .cfi_def_cfa_register 13
2060 @ sp needed
2061 002e 80BD pop {r7, pc}
2062 .L82:
2063 .align 2
2064 .L81:
2065 0030 00000000 .word adbmsspi
ARM GAS /tmp/cczsHaNw.s page 43
2066 .cfi_endproc
2067 .LFE147:
2069 .section .text.mcuDelay,"ax",%progbits
2070 .align 1
2071 .global mcuDelay
2072 .syntax unified
2073 .thumb
2074 .thumb_func
2076 mcuDelay:
2077 .LFB148:
339:Core/Src/ADBMS_LL_Driver.c ****
340:Core/Src/ADBMS_LL_Driver.c **** inline void mcuDelay(uint16 delay) { HAL_Delay(delay); }
2078 .loc 1 340 36
2079 .cfi_startproc
2080 @ args = 0, pretend = 0, frame = 8
2081 @ frame_needed = 1, uses_anonymous_args = 0
2082 0000 80B5 push {r7, lr}
2083 .cfi_def_cfa_offset 8
2084 .cfi_offset 7, -8
2085 .cfi_offset 14, -4
2086 0002 82B0 sub sp, sp, #8
2087 .cfi_def_cfa_offset 16
2088 0004 00AF add r7, sp, #0
2089 .cfi_def_cfa_register 7
2090 0006 0346 mov r3, r0
2091 0008 FB80 strh r3, [r7, #6] @ movhi
2092 .loc 1 340 38
2093 000a FB88 ldrh r3, [r7, #6]
2094 000c 1846 mov r0, r3
2095 000e FFF7FEFF bl HAL_Delay
2096 .loc 1 340 56
2097 0012 00BF nop
2098 0014 0837 adds r7, r7, #8
2099 .cfi_def_cfa_offset 8
2100 0016 BD46 mov sp, r7
2101 .cfi_def_cfa_register 13
2102 @ sp needed
2103 0018 80BD pop {r7, pc}
2104 .cfi_endproc
2105 .LFE148:
2107 .text
2108 .Letext0:
2109 .file 2 "/nix/store/p8vkamc9b2vlibs9aw76vnasdbifhcbm-gcc-arm-embedded-13.2.rel1/arm-none-eabi/incl
2110 .file 3 "/nix/store/p8vkamc9b2vlibs9aw76vnasdbifhcbm-gcc-arm-embedded-13.2.rel1/arm-none-eabi/incl
2111 .file 4 "Drivers/CMSIS/Device/ST/STM32F3xx/Include/stm32f302xc.h"
2112 .file 5 "Drivers/STM32F3xx_HAL_Driver/Inc/stm32f3xx_hal_def.h"
2113 .file 6 "Drivers/STM32F3xx_HAL_Driver/Inc/stm32f3xx_hal_gpio.h"
2114 .file 7 "Drivers/STM32F3xx_HAL_Driver/Inc/stm32f3xx_hal_dma.h"
2115 .file 8 "Drivers/STM32F3xx_HAL_Driver/Inc/stm32f3xx_hal_spi.h"
2116 .file 9 "Core/Inc/ADBMS_LL_Driver.h"
2117 .file 10 "Drivers/STM32F3xx_HAL_Driver/Inc/stm32f3xx_hal.h"
ARM GAS /tmp/cczsHaNw.s page 44
DEFINED SYMBOLS
*ABS*:00000000 ADBMS_LL_Driver.c
/tmp/cczsHaNw.s:25 .bss.adbmsspi:00000000 adbmsspi
/tmp/cczsHaNw.s:22 .bss.adbmsspi:00000000 $d
/tmp/cczsHaNw.s:28 .text.adbmsDriverInit:00000000 $t
/tmp/cczsHaNw.s:34 .text.adbmsDriverInit:00000000 adbmsDriverInit
/tmp/cczsHaNw.s:1801 .text.mcuAdbmsCSLow:00000000 mcuAdbmsCSLow
/tmp/cczsHaNw.s:1831 .text.mcuAdbmsCSHigh:00000000 mcuAdbmsCSHigh
/tmp/cczsHaNw.s:73 .text.adbmsDriverInit:00000028 $d
/tmp/cczsHaNw.s:78 .text.calculateCommandPEC:00000000 $t
/tmp/cczsHaNw.s:84 .text.calculateCommandPEC:00000000 calculateCommandPEC
/tmp/cczsHaNw.s:356 .text.updateCommandPEC:00000000 updateCommandPEC
/tmp/cczsHaNw.s:209 .text.checkCommandPEC:00000000 $t
/tmp/cczsHaNw.s:215 .text.checkCommandPEC:00000000 checkCommandPEC
/tmp/cczsHaNw.s:350 .text.updateCommandPEC:00000000 $t
/tmp/cczsHaNw.s:638 .text.pec10_calc:00000000 $t
/tmp/cczsHaNw.s:644 .text.pec10_calc:00000000 pec10_calc
/tmp/cczsHaNw.s:817 .text.calculateDataPEC:00000000 $t
/tmp/cczsHaNw.s:823 .text.calculateDataPEC:00000000 calculateDataPEC
/tmp/cczsHaNw.s:897 .text.checkDataPEC:00000000 $t
/tmp/cczsHaNw.s:903 .text.checkDataPEC:00000000 checkDataPEC
/tmp/cczsHaNw.s:1048 .text.F_CRC_CalculaCheckSum:00000000 F_CRC_CalculaCheckSum
/tmp/cczsHaNw.s:956 .text.F_CRC_ObtenValorDeTabla:00000000 $t
/tmp/cczsHaNw.s:961 .text.F_CRC_ObtenValorDeTabla:00000000 F_CRC_ObtenValorDeTabla
/tmp/cczsHaNw.s:1042 .text.F_CRC_CalculaCheckSum:00000000 $t
/tmp/cczsHaNw.s:1135 .text.updateDataPEC:00000000 $t
/tmp/cczsHaNw.s:1141 .text.updateDataPEC:00000000 updateDataPEC
/tmp/cczsHaNw.s:1324 .text.writeCMD:00000000 $t
/tmp/cczsHaNw.s:1330 .text.writeCMD:00000000 writeCMD
/tmp/cczsHaNw.s:1861 .text.mcuSPITransmit:00000000 mcuSPITransmit
/tmp/cczsHaNw.s:1509 .text.readCMD:00000000 $t
/tmp/cczsHaNw.s:1515 .text.readCMD:00000000 readCMD
/tmp/cczsHaNw.s:2022 .text.mcuSPITransmitReceive:00000000 mcuSPITransmitReceive
/tmp/cczsHaNw.s:1713 .text.pollCMD:00000000 $t
/tmp/cczsHaNw.s:1719 .text.pollCMD:00000000 pollCMD
/tmp/cczsHaNw.s:1795 .text.mcuAdbmsCSLow:00000000 $t
/tmp/cczsHaNw.s:1825 .text.mcuAdbmsCSHigh:00000000 $t
/tmp/cczsHaNw.s:1855 .text.mcuSPITransmit:00000000 $t
/tmp/cczsHaNw.s:1960 .text.mcuSPITransmit:000000a0 $d
/tmp/cczsHaNw.s:1965 .text.mcuSPIReceive:00000000 $t
/tmp/cczsHaNw.s:1971 .text.mcuSPIReceive:00000000 mcuSPIReceive
/tmp/cczsHaNw.s:2011 .text.mcuSPIReceive:0000002c $d
/tmp/cczsHaNw.s:2016 .text.mcuSPITransmitReceive:00000000 $t
/tmp/cczsHaNw.s:2065 .text.mcuSPITransmitReceive:00000030 $d
/tmp/cczsHaNw.s:2070 .text.mcuDelay:00000000 $t
/tmp/cczsHaNw.s:2076 .text.mcuDelay:00000000 mcuDelay
UNDEFINED SYMBOLS
HAL_Delay
HAL_GPIO_WritePin
HAL_SPI_TransmitReceive
HAL_SPI_Receive