mv-bms/Software/build/TMP1075.lst

804 lines
31 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/cc1QLhHg.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 "TMP1075.c"
16 .text
17 .Ltext0:
18 .cfi_sections .debug_frame
19 .file 1 "Core/Src/TMP1075.c"
20 .global tmp1075_temps
21 .section .bss.tmp1075_temps,"aw",%nobits
22 .align 2
25 tmp1075_temps:
26 0000 00000000 .space 26
26 00000000
26 00000000
26 00000000
26 00000000
27 .global tmp1075_failed_sensors
28 .section .bss.tmp1075_failed_sensors,"aw",%nobits
29 .align 2
32 tmp1075_failed_sensors:
33 0000 00000000 .space 4
34 .global nfailed_temp_sensors
35 .section .bss.nfailed_temp_sensors,"aw",%nobits
38 nfailed_temp_sensors:
39 0000 00 .space 1
40 .global hi2c
41 .section .bss.hi2c,"aw",%nobits
42 .align 2
45 hi2c:
46 0000 00000000 .space 4
47 .section .text.tmp1075_init,"ax",%progbits
48 .align 1
49 .global tmp1075_init
50 .syntax unified
51 .thumb
52 .thumb_func
54 tmp1075_init:
55 .LFB130:
1:Core/Src/TMP1075.c **** #include "TMP1075.h"
2:Core/Src/TMP1075.c **** #include "state_machine.h"
3:Core/Src/TMP1075.c ****
4:Core/Src/TMP1075.c **** #define MAX_TEMP_DISCHARGING ((int16_t)(59 / 0.0625f))
5:Core/Src/TMP1075.c **** #define MIN_TEMP_DISCHARGING ((int16_t)(-20 / 0.0625f))
6:Core/Src/TMP1075.c **** #define MAX_TEMP_CHARGING ((int16_t)(45 / 0.0625f))
7:Core/Src/TMP1075.c **** #define MIN_TEMP_CHARGING ((int16_t)(0 / 0.0625f))
ARM GAS /tmp/cc1QLhHg.s page 2
8:Core/Src/TMP1075.c ****
9:Core/Src/TMP1075.c **** #define MAX_FAILED_TEMP 2 //TODO: change value for compliance with the actual number of sensors
10:Core/Src/TMP1075.c **** // TODO: "change value for compliance with the actual number of sensors", change temps to float
11:Core/Src/TMP1075.c ****
12:Core/Src/TMP1075.c **** int16_t tmp1075_temps[N_TEMP_SENSORS] = {0};
13:Core/Src/TMP1075.c **** uint32_t tmp1075_failed_sensors = 0;
14:Core/Src/TMP1075.c **** uint8_t nfailed_temp_sensors = 0;
15:Core/Src/TMP1075.c ****
16:Core/Src/TMP1075.c **** I2C_HandleTypeDef* hi2c;
17:Core/Src/TMP1075.c ****
18:Core/Src/TMP1075.c **** HAL_StatusTypeDef tmp1075_init(I2C_HandleTypeDef* handle) {
56 .loc 1 18 59
57 .cfi_startproc
58 @ args = 0, pretend = 0, frame = 16
59 @ frame_needed = 1, uses_anonymous_args = 0
60 0000 80B5 push {r7, lr}
61 .cfi_def_cfa_offset 8
62 .cfi_offset 7, -8
63 .cfi_offset 14, -4
64 0002 84B0 sub sp, sp, #16
65 .cfi_def_cfa_offset 24
66 0004 00AF add r7, sp, #0
67 .cfi_def_cfa_register 7
68 0006 7860 str r0, [r7, #4]
19:Core/Src/TMP1075.c **** hi2c = handle;
69 .loc 1 19 8
70 0008 0D4A ldr r2, .L6
71 000a 7B68 ldr r3, [r7, #4]
72 000c 1360 str r3, [r2]
73 .LBB2:
20:Core/Src/TMP1075.c **** for (int i = 0; i < N_TEMP_SENSORS; i++) {
74 .loc 1 20 12
75 000e 0023 movs r3, #0
76 0010 FB60 str r3, [r7, #12]
77 .loc 1 20 3
78 0012 0CE0 b .L2
79 .L5:
80 .LBB3:
21:Core/Src/TMP1075.c **** HAL_StatusTypeDef status = tmp1075_sensor_init(i);
81 .loc 1 21 32
82 0014 F868 ldr r0, [r7, #12]
83 0016 FFF7FEFF bl tmp1075_sensor_init
84 001a 0346 mov r3, r0
85 001c FB72 strb r3, [r7, #11]
22:Core/Src/TMP1075.c **** if (status != HAL_OK) {
86 .loc 1 22 8
87 001e FB7A ldrb r3, [r7, #11] @ zero_extendqisi2
88 0020 002B cmp r3, #0
89 0022 01D0 beq .L3
23:Core/Src/TMP1075.c **** return status;
90 .loc 1 23 14
91 0024 FB7A ldrb r3, [r7, #11] @ zero_extendqisi2
92 0026 06E0 b .L4
93 .L3:
94 .LBE3:
20:Core/Src/TMP1075.c **** HAL_StatusTypeDef status = tmp1075_sensor_init(i);
95 .loc 1 20 40 discriminator 2
ARM GAS /tmp/cc1QLhHg.s page 3
96 0028 FB68 ldr r3, [r7, #12]
97 002a 0133 adds r3, r3, #1
98 002c FB60 str r3, [r7, #12]
99 .L2:
20:Core/Src/TMP1075.c **** HAL_StatusTypeDef status = tmp1075_sensor_init(i);
100 .loc 1 20 21 discriminator 1
101 002e FB68 ldr r3, [r7, #12]
102 0030 0C2B cmp r3, #12
103 0032 EFDD ble .L5
104 .LBE2:
24:Core/Src/TMP1075.c **** }
25:Core/Src/TMP1075.c **** }
26:Core/Src/TMP1075.c **** return HAL_OK;
105 .loc 1 26 10
106 0034 0023 movs r3, #0
107 .L4:
27:Core/Src/TMP1075.c **** }
108 .loc 1 27 1
109 0036 1846 mov r0, r3
110 0038 1037 adds r7, r7, #16
111 .cfi_def_cfa_offset 8
112 003a BD46 mov sp, r7
113 .cfi_def_cfa_register 13
114 @ sp needed
115 003c 80BD pop {r7, pc}
116 .L7:
117 003e 00BF .align 2
118 .L6:
119 0040 00000000 .word hi2c
120 .cfi_endproc
121 .LFE130:
123 .section .text.handle_over_maxtemp,"ax",%progbits
124 .align 1
125 .global handle_over_maxtemp
126 .syntax unified
127 .thumb
128 .thumb_func
130 handle_over_maxtemp:
131 .LFB131:
28:Core/Src/TMP1075.c ****
29:Core/Src/TMP1075.c **** void handle_over_maxtemp(uint8_t index, uint16_t value) {
132 .loc 1 29 57
133 .cfi_startproc
134 @ args = 0, pretend = 0, frame = 16
135 @ frame_needed = 1, uses_anonymous_args = 0
136 0000 B0B5 push {r4, r5, r7, lr}
137 .cfi_def_cfa_offset 16
138 .cfi_offset 4, -16
139 .cfi_offset 5, -12
140 .cfi_offset 7, -8
141 .cfi_offset 14, -4
142 0002 86B0 sub sp, sp, #24
143 .cfi_def_cfa_offset 40
144 0004 02AF add r7, sp, #8
145 .cfi_def_cfa 7, 32
146 0006 0346 mov r3, r0
147 0008 0A46 mov r2, r1
ARM GAS /tmp/cc1QLhHg.s page 4
148 000a FB71 strb r3, [r7, #7]
149 000c 1346 mov r3, r2 @ movhi
150 000e BB80 strh r3, [r7, #4] @ movhi
30:Core/Src/TMP1075.c **** set_error_source(ERROR_SOURCE_TEMPERATURES);
151 .loc 1 30 3
152 0010 0220 movs r0, #2
153 0012 FFF7FEFF bl set_error_source
31:Core/Src/TMP1075.c **** error_data.data_kind = SEK_OVERTEMP;
154 .loc 1 31 24
155 0016 0C4B ldr r3, .L9
156 0018 0022 movs r2, #0
157 001a 5A80 strh r2, [r3, #2] @ movhi
32:Core/Src/TMP1075.c **** error_data.data[0] = index;
158 .loc 1 32 22
159 001c 0A4A ldr r2, .L9
160 001e FB79 ldrb r3, [r7, #7]
161 0020 1371 strb r3, [r2, #4]
33:Core/Src/TMP1075.c **** uint8_t* ptr = &error_data.data[1];
162 .loc 1 33 12
163 0022 0A4B ldr r3, .L9+4
164 0024 FB60 str r3, [r7, #12]
34:Core/Src/TMP1075.c **** ptr = ftcan_marshal_unsigned(ptr, value, 2);
165 .loc 1 34 9
166 0026 BB88 ldrh r3, [r7, #4]
167 0028 0022 movs r2, #0
168 002a 1C46 mov r4, r3
169 002c 1546 mov r5, r2
170 002e 0223 movs r3, #2
171 0030 0093 str r3, [sp]
172 0032 2246 mov r2, r4
173 0034 2B46 mov r3, r5
174 0036 F868 ldr r0, [r7, #12]
175 0038 FFF7FEFF bl ftcan_marshal_unsigned
176 003c F860 str r0, [r7, #12]
35:Core/Src/TMP1075.c **** }
177 .loc 1 35 1
178 003e 00BF nop
179 0040 1037 adds r7, r7, #16
180 .cfi_def_cfa_offset 16
181 0042 BD46 mov sp, r7
182 .cfi_def_cfa_register 13
183 @ sp needed
184 0044 B0BD pop {r4, r5, r7, pc}
185 .L10:
186 0046 00BF .align 2
187 .L9:
188 0048 00000000 .word error_data
189 004c 05000000 .word error_data+5
190 .cfi_endproc
191 .LFE131:
193 .section .text.tmp1075_measure,"ax",%progbits
194 .align 1
195 .global tmp1075_measure
196 .syntax unified
197 .thumb
198 .thumb_func
200 tmp1075_measure:
ARM GAS /tmp/cc1QLhHg.s page 5
201 .LFB132:
36:Core/Src/TMP1075.c ****
37:Core/Src/TMP1075.c **** HAL_StatusTypeDef tmp1075_measure() {
202 .loc 1 37 37
203 .cfi_startproc
204 @ args = 0, pretend = 0, frame = 16
205 @ frame_needed = 1, uses_anonymous_args = 0
206 0000 80B5 push {r7, lr}
207 .cfi_def_cfa_offset 8
208 .cfi_offset 7, -8
209 .cfi_offset 14, -4
210 0002 84B0 sub sp, sp, #16
211 .cfi_def_cfa_offset 24
212 0004 00AF add r7, sp, #0
213 .cfi_def_cfa_register 7
38:Core/Src/TMP1075.c **** int err = 0;
214 .loc 1 38 7
215 0006 0023 movs r3, #0
216 0008 FB60 str r3, [r7, #12]
39:Core/Src/TMP1075.c **** int temp_error = 0;
217 .loc 1 39 7
218 000a 0023 movs r3, #0
219 000c BB60 str r3, [r7, #8]
220 .LBB4:
40:Core/Src/TMP1075.c **** for (int i = 0; i < N_TEMP_SENSORS; i++) {
221 .loc 1 40 12
222 000e 0023 movs r3, #0
223 0010 7B60 str r3, [r7, #4]
224 .loc 1 40 3
225 0012 9FE0 b .L12
226 .L23:
41:Core/Src/TMP1075.c **** if (tmp1075_sensor_read(i, &tmp1075_temps[i]) != HAL_OK || (tmp1075_temps[i] & 0x000F) != 0) {
227 .loc 1 41 9
228 0014 7B68 ldr r3, [r7, #4]
229 0016 5B00 lsls r3, r3, #1
230 0018 5F4A ldr r2, .L27
231 001a 1344 add r3, r3, r2
232 001c 1946 mov r1, r3
233 001e 7868 ldr r0, [r7, #4]
234 0020 FFF7FEFF bl tmp1075_sensor_read
235 0024 0346 mov r3, r0
236 .loc 1 41 8 discriminator 1
237 0026 002B cmp r3, #0
238 0028 08D1 bne .L13
239 .loc 1 41 78 discriminator 1
240 002a 5B4A ldr r2, .L27
241 002c 7B68 ldr r3, [r7, #4]
242 002e 32F91330 ldrsh r3, [r2, r3, lsl #1]
243 .loc 1 41 82 discriminator 1
244 0032 9BB2 uxth r3, r3
245 0034 03F00F03 and r3, r3, #15
246 .loc 1 41 61 discriminator 1
247 0038 002B cmp r3, #0
248 003a 12D0 beq .L14
249 .L13:
42:Core/Src/TMP1075.c **** tmp1075_failed_sensors |= 1 << i;
250 .loc 1 42 35
ARM GAS /tmp/cc1QLhHg.s page 6
251 003c 0122 movs r2, #1
252 003e 7B68 ldr r3, [r7, #4]
253 0040 02FA03F3 lsl r3, r2, r3
254 0044 1A46 mov r2, r3
255 .loc 1 42 30
256 0046 554B ldr r3, .L27+4
257 0048 1B68 ldr r3, [r3]
258 004a 1343 orrs r3, r3, r2
259 004c 534A ldr r2, .L27+4
260 004e 1360 str r3, [r2]
43:Core/Src/TMP1075.c **** nfailed_temp_sensors++;
261 .loc 1 43 27
262 0050 534B ldr r3, .L27+8
263 0052 1B78 ldrb r3, [r3] @ zero_extendqisi2
264 0054 0133 adds r3, r3, #1
265 0056 DAB2 uxtb r2, r3
266 0058 514B ldr r3, .L27+8
267 005a 1A70 strb r2, [r3]
44:Core/Src/TMP1075.c **** err = 1;
268 .loc 1 44 11
269 005c 0123 movs r3, #1
270 005e FB60 str r3, [r7, #12]
271 0060 75E0 b .L15
272 .L14:
45:Core/Src/TMP1075.c **** } else {
46:Core/Src/TMP1075.c **** tmp1075_temps[i] >>= 4;
273 .loc 1 46 20
274 0062 4D4A ldr r2, .L27
275 0064 7B68 ldr r3, [r7, #4]
276 0066 32F91330 ldrsh r3, [r2, r3, lsl #1]
277 .loc 1 46 24
278 006a 1B11 asrs r3, r3, #4
279 006c 19B2 sxth r1, r3
280 006e 4A4A ldr r2, .L27
281 0070 7B68 ldr r3, [r7, #4]
282 0072 22F81310 strh r1, [r2, r3, lsl #1] @ movhi
47:Core/Src/TMP1075.c **** tmp1075_failed_sensors &= ~(1 << i);
283 .loc 1 47 37
284 0076 0122 movs r2, #1
285 0078 7B68 ldr r3, [r7, #4]
286 007a 02FA03F3 lsl r3, r2, r3
287 .loc 1 47 33
288 007e DB43 mvns r3, r3
289 0080 1A46 mov r2, r3
290 .loc 1 47 30
291 0082 464B ldr r3, .L27+4
292 0084 1B68 ldr r3, [r3]
293 0086 1340 ands r3, r3, r2
294 0088 444A ldr r2, .L27+4
295 008a 1360 str r3, [r2]
48:Core/Src/TMP1075.c **** if (state.current_state == STATE_CHARGING || state.current_state == STATE_CHARGING_PRECHARGE)
296 .loc 1 48 16
297 008c 454B ldr r3, .L27+12
298 008e 1B78 ldrb r3, [r3] @ zero_extendqisi2
299 .loc 1 48 10
300 0090 062B cmp r3, #6
301 0092 03D0 beq .L16
ARM GAS /tmp/cc1QLhHg.s page 7
302 .loc 1 48 57 discriminator 1
303 0094 434B ldr r3, .L27+12
304 0096 1B78 ldrb r3, [r3] @ zero_extendqisi2
305 .loc 1 48 49 discriminator 1
306 0098 052B cmp r3, #5
307 009a 14D1 bne .L17
308 .L16:
49:Core/Src/TMP1075.c **** if (tmp1075_temps[i] >= MAX_TEMP_CHARGING) {
309 .loc 1 49 26
310 009c 3E4A ldr r2, .L27
311 009e 7B68 ldr r3, [r7, #4]
312 00a0 32F91330 ldrsh r3, [r2, r3, lsl #1]
313 .loc 1 49 12
314 00a4 B3F5347F cmp r3, #720
315 00a8 21DB blt .L19
50:Core/Src/TMP1075.c **** temp_error = 1;
316 .loc 1 50 22
317 00aa 0123 movs r3, #1
318 00ac BB60 str r3, [r7, #8]
51:Core/Src/TMP1075.c **** handle_over_maxtemp(i, tmp1075_temps[i]);
319 .loc 1 51 11
320 00ae 7B68 ldr r3, [r7, #4]
321 00b0 DAB2 uxtb r2, r3
322 .loc 1 51 47
323 00b2 3949 ldr r1, .L27
324 00b4 7B68 ldr r3, [r7, #4]
325 00b6 31F91330 ldrsh r3, [r1, r3, lsl #1]
326 .loc 1 51 11
327 00ba 9BB2 uxth r3, r3
328 00bc 1946 mov r1, r3
329 00be 1046 mov r0, r2
330 00c0 FFF7FEFF bl handle_over_maxtemp
49:Core/Src/TMP1075.c **** if (tmp1075_temps[i] >= MAX_TEMP_CHARGING) {
331 .loc 1 49 12
332 00c4 13E0 b .L19
333 .L17:
52:Core/Src/TMP1075.c **** }
53:Core/Src/TMP1075.c **** } else {
54:Core/Src/TMP1075.c **** if (tmp1075_temps[i] >= MAX_TEMP_DISCHARGING) {
334 .loc 1 54 26
335 00c6 344A ldr r2, .L27
336 00c8 7B68 ldr r3, [r7, #4]
337 00ca 32F91330 ldrsh r3, [r2, r3, lsl #1]
338 .loc 1 54 12
339 00ce B3F56C7F cmp r3, #944
340 00d2 0CDB blt .L19
55:Core/Src/TMP1075.c **** temp_error = 1;
341 .loc 1 55 22
342 00d4 0123 movs r3, #1
343 00d6 BB60 str r3, [r7, #8]
56:Core/Src/TMP1075.c **** handle_over_maxtemp(i, tmp1075_temps[i]);
344 .loc 1 56 11
345 00d8 7B68 ldr r3, [r7, #4]
346 00da DAB2 uxtb r2, r3
347 .loc 1 56 47
348 00dc 2E49 ldr r1, .L27
349 00de 7B68 ldr r3, [r7, #4]
ARM GAS /tmp/cc1QLhHg.s page 8
350 00e0 31F91330 ldrsh r3, [r1, r3, lsl #1]
351 .loc 1 56 11
352 00e4 9BB2 uxth r3, r3
353 00e6 1946 mov r1, r3
354 00e8 1046 mov r0, r2
355 00ea FFF7FEFF bl handle_over_maxtemp
356 .L19:
57:Core/Src/TMP1075.c **** }
58:Core/Src/TMP1075.c **** }
59:Core/Src/TMP1075.c ****
60:Core/Src/TMP1075.c **** if (state.current_state == STATE_CHARGING || state.current_state == STATE_CHARGING_PRECHARGE)
357 .loc 1 60 16
358 00ee 2D4B ldr r3, .L27+12
359 00f0 1B78 ldrb r3, [r3] @ zero_extendqisi2
360 .loc 1 60 10
361 00f2 062B cmp r3, #6
362 00f4 03D0 beq .L20
363 .loc 1 60 57 discriminator 1
364 00f6 2B4B ldr r3, .L27+12
365 00f8 1B78 ldrb r3, [r3] @ zero_extendqisi2
366 .loc 1 60 49 discriminator 1
367 00fa 052B cmp r3, #5
368 00fc 13D1 bne .L21
369 .L20:
61:Core/Src/TMP1075.c **** if (tmp1075_temps[i] <= MIN_TEMP_CHARGING) {
370 .loc 1 61 26
371 00fe 264A ldr r2, .L27
372 0100 7B68 ldr r3, [r7, #4]
373 0102 32F91330 ldrsh r3, [r2, r3, lsl #1]
374 .loc 1 61 12
375 0106 002B cmp r3, #0
376 0108 21DC bgt .L15
62:Core/Src/TMP1075.c **** temp_error = 1;
377 .loc 1 62 22
378 010a 0123 movs r3, #1
379 010c BB60 str r3, [r7, #8]
63:Core/Src/TMP1075.c **** handle_over_maxtemp(i, tmp1075_temps[i]);
380 .loc 1 63 11
381 010e 7B68 ldr r3, [r7, #4]
382 0110 DAB2 uxtb r2, r3
383 .loc 1 63 47
384 0112 2149 ldr r1, .L27
385 0114 7B68 ldr r3, [r7, #4]
386 0116 31F91330 ldrsh r3, [r1, r3, lsl #1]
387 .loc 1 63 11
388 011a 9BB2 uxth r3, r3
389 011c 1946 mov r1, r3
390 011e 1046 mov r0, r2
391 0120 FFF7FEFF bl handle_over_maxtemp
61:Core/Src/TMP1075.c **** if (tmp1075_temps[i] <= MIN_TEMP_CHARGING) {
392 .loc 1 61 12
393 0124 13E0 b .L15
394 .L21:
64:Core/Src/TMP1075.c **** }
65:Core/Src/TMP1075.c **** } else {
66:Core/Src/TMP1075.c **** if (tmp1075_temps[i] <= MIN_TEMP_DISCHARGING) {
395 .loc 1 66 26
ARM GAS /tmp/cc1QLhHg.s page 9
396 0126 1C4A ldr r2, .L27
397 0128 7B68 ldr r3, [r7, #4]
398 012a 32F91330 ldrsh r3, [r2, r3, lsl #1]
399 .loc 1 66 12
400 012e 13F5A07F cmn r3, #320
401 0132 0CDC bgt .L15
67:Core/Src/TMP1075.c **** temp_error = 1;
402 .loc 1 67 22
403 0134 0123 movs r3, #1
404 0136 BB60 str r3, [r7, #8]
68:Core/Src/TMP1075.c **** handle_over_maxtemp(i, tmp1075_temps[i]);
405 .loc 1 68 11
406 0138 7B68 ldr r3, [r7, #4]
407 013a DAB2 uxtb r2, r3
408 .loc 1 68 47
409 013c 1649 ldr r1, .L27
410 013e 7B68 ldr r3, [r7, #4]
411 0140 31F91330 ldrsh r3, [r1, r3, lsl #1]
412 .loc 1 68 11
413 0144 9BB2 uxth r3, r3
414 0146 1946 mov r1, r3
415 0148 1046 mov r0, r2
416 014a FFF7FEFF bl handle_over_maxtemp
417 .L15:
40:Core/Src/TMP1075.c **** if (tmp1075_sensor_read(i, &tmp1075_temps[i]) != HAL_OK || (tmp1075_temps[i] & 0x000F) != 0) {
418 .loc 1 40 40 discriminator 2
419 014e 7B68 ldr r3, [r7, #4]
420 0150 0133 adds r3, r3, #1
421 0152 7B60 str r3, [r7, #4]
422 .L12:
40:Core/Src/TMP1075.c **** if (tmp1075_sensor_read(i, &tmp1075_temps[i]) != HAL_OK || (tmp1075_temps[i] & 0x000F) != 0) {
423 .loc 1 40 21 discriminator 1
424 0154 7B68 ldr r3, [r7, #4]
425 0156 0C2B cmp r3, #12
426 0158 7FF75CAF ble .L23
427 .LBE4:
69:Core/Src/TMP1075.c **** }
70:Core/Src/TMP1075.c **** }
71:Core/Src/TMP1075.c **** }
72:Core/Src/TMP1075.c **** }
73:Core/Src/TMP1075.c **** if (nfailed_temp_sensors > MAX_FAILED_TEMP) {
428 .loc 1 73 28
429 015c 104B ldr r3, .L27+8
430 015e 1B78 ldrb r3, [r3] @ zero_extendqisi2
431 .loc 1 73 6
432 0160 022B cmp r3, #2
433 0162 06D9 bls .L24
74:Core/Src/TMP1075.c **** error_data.data_kind = SEK_TOO_FEW_TEMPS;
434 .loc 1 74 26
435 0164 104B ldr r3, .L27+16
436 0166 0422 movs r2, #4
437 0168 5A80 strh r2, [r3, #2] @ movhi
75:Core/Src/TMP1075.c **** set_error_source(ERROR_SOURCE_TEMPERATURES);
438 .loc 1 75 5
439 016a 0220 movs r0, #2
440 016c FFF7FEFF bl set_error_source
441 0170 05E0 b .L25
ARM GAS /tmp/cc1QLhHg.s page 10
442 .L24:
76:Core/Src/TMP1075.c **** } else if (!temp_error) {
443 .loc 1 76 13
444 0172 BB68 ldr r3, [r7, #8]
445 0174 002B cmp r3, #0
446 0176 02D1 bne .L25
77:Core/Src/TMP1075.c **** clear_error_source(ERROR_SOURCE_TEMPERATURES);
447 .loc 1 77 5
448 0178 0220 movs r0, #2
449 017a FFF7FEFF bl clear_error_source
450 .L25:
78:Core/Src/TMP1075.c **** }
79:Core/Src/TMP1075.c **** nfailed_temp_sensors = 0;
451 .loc 1 79 24
452 017e 084B ldr r3, .L27+8
453 0180 0022 movs r2, #0
454 0182 1A70 strb r2, [r3]
80:Core/Src/TMP1075.c **** return err ? HAL_ERROR : HAL_OK;
455 .loc 1 80 26
456 0184 FB68 ldr r3, [r7, #12]
457 0186 002B cmp r3, #0
458 0188 14BF ite ne
459 018a 0123 movne r3, #1
460 018c 0023 moveq r3, #0
461 018e DBB2 uxtb r3, r3
81:Core/Src/TMP1075.c **** }
462 .loc 1 81 1
463 0190 1846 mov r0, r3
464 0192 1037 adds r7, r7, #16
465 .cfi_def_cfa_offset 8
466 0194 BD46 mov sp, r7
467 .cfi_def_cfa_register 13
468 @ sp needed
469 0196 80BD pop {r7, pc}
470 .L28:
471 .align 2
472 .L27:
473 0198 00000000 .word tmp1075_temps
474 019c 00000000 .word tmp1075_failed_sensors
475 01a0 00000000 .word nfailed_temp_sensors
476 01a4 00000000 .word state
477 01a8 00000000 .word error_data
478 .cfi_endproc
479 .LFE132:
481 .section .text.tmp1075_sensor_init,"ax",%progbits
482 .align 1
483 .global tmp1075_sensor_init
484 .syntax unified
485 .thumb
486 .thumb_func
488 tmp1075_sensor_init:
489 .LFB133:
82:Core/Src/TMP1075.c ****
83:Core/Src/TMP1075.c **** HAL_StatusTypeDef tmp1075_sensor_init(int n) {
490 .loc 1 83 46
491 .cfi_startproc
492 @ args = 0, pretend = 0, frame = 16
ARM GAS /tmp/cc1QLhHg.s page 11
493 @ frame_needed = 1, uses_anonymous_args = 0
494 0000 80B5 push {r7, lr}
495 .cfi_def_cfa_offset 8
496 .cfi_offset 7, -8
497 .cfi_offset 14, -4
498 0002 86B0 sub sp, sp, #24
499 .cfi_def_cfa_offset 32
500 0004 02AF add r7, sp, #8
501 .cfi_def_cfa 7, 24
502 0006 7860 str r0, [r7, #4]
84:Core/Src/TMP1075.c **** uint16_t addr = (0b1000000 | n) << 1;
503 .loc 1 84 35
504 0008 7B68 ldr r3, [r7, #4]
505 000a 1BB2 sxth r3, r3
506 000c 5B00 lsls r3, r3, #1
507 000e 1BB2 sxth r3, r3
508 0010 43F08003 orr r3, r3, #128
509 0014 1BB2 sxth r3, r3
510 .loc 1 84 12
511 0016 FB81 strh r3, [r7, #14] @ movhi
85:Core/Src/TMP1075.c **** uint8_t data[] = {0};
512 .loc 1 85 11
513 0018 0023 movs r3, #0
514 001a 3B73 strb r3, [r7, #12]
86:Core/Src/TMP1075.c **** return HAL_I2C_Master_Transmit(hi2c, addr, data, sizeof(data), 100);
515 .loc 1 86 10
516 001c 074B ldr r3, .L31
517 001e 1868 ldr r0, [r3]
518 0020 07F10C02 add r2, r7, #12
519 0024 F989 ldrh r1, [r7, #14]
520 0026 6423 movs r3, #100
521 0028 0093 str r3, [sp]
522 002a 0123 movs r3, #1
523 002c FFF7FEFF bl HAL_I2C_Master_Transmit
524 0030 0346 mov r3, r0
87:Core/Src/TMP1075.c **** }
525 .loc 1 87 1
526 0032 1846 mov r0, r3
527 0034 1037 adds r7, r7, #16
528 .cfi_def_cfa_offset 8
529 0036 BD46 mov sp, r7
530 .cfi_def_cfa_register 13
531 @ sp needed
532 0038 80BD pop {r7, pc}
533 .L32:
534 003a 00BF .align 2
535 .L31:
536 003c 00000000 .word hi2c
537 .cfi_endproc
538 .LFE133:
540 .section .text.tmp1075_sensor_read,"ax",%progbits
541 .align 1
542 .global tmp1075_sensor_read
543 .syntax unified
544 .thumb
545 .thumb_func
547 tmp1075_sensor_read:
ARM GAS /tmp/cc1QLhHg.s page 12
548 .LFB134:
88:Core/Src/TMP1075.c ****
89:Core/Src/TMP1075.c **** HAL_StatusTypeDef tmp1075_sensor_read(int n, int16_t* res) {
549 .loc 1 89 60
550 .cfi_startproc
551 @ args = 0, pretend = 0, frame = 16
552 @ frame_needed = 1, uses_anonymous_args = 0
553 0000 80B5 push {r7, lr}
554 .cfi_def_cfa_offset 8
555 .cfi_offset 7, -8
556 .cfi_offset 14, -4
557 0002 86B0 sub sp, sp, #24
558 .cfi_def_cfa_offset 32
559 0004 02AF add r7, sp, #8
560 .cfi_def_cfa 7, 24
561 0006 7860 str r0, [r7, #4]
562 0008 3960 str r1, [r7]
90:Core/Src/TMP1075.c **** uint16_t addr = (0b1000000 | n) << 1;
563 .loc 1 90 35
564 000a 7B68 ldr r3, [r7, #4]
565 000c 1BB2 sxth r3, r3
566 000e 5B00 lsls r3, r3, #1
567 0010 1BB2 sxth r3, r3
568 0012 43F08003 orr r3, r3, #128
569 0016 1BB2 sxth r3, r3
570 .loc 1 90 12
571 0018 FB81 strh r3, [r7, #14] @ movhi
91:Core/Src/TMP1075.c **** addr |= 1; // Read
572 .loc 1 91 8
573 001a FB89 ldrh r3, [r7, #14] @ movhi
574 001c 43F00103 orr r3, r3, #1
575 0020 FB81 strh r3, [r7, #14] @ movhi
92:Core/Src/TMP1075.c **** uint8_t result[2];
93:Core/Src/TMP1075.c **** HAL_StatusTypeDef status =
94:Core/Src/TMP1075.c **** HAL_I2C_Master_Receive(hi2c, addr, result, sizeof(result), 5); //5ms timeout for failure (cas
576 .loc 1 94 7
577 0022 0F4B ldr r3, .L36
578 0024 1868 ldr r0, [r3]
579 0026 07F10802 add r2, r7, #8
580 002a F989 ldrh r1, [r7, #14]
581 002c 0523 movs r3, #5
582 002e 0093 str r3, [sp]
583 0030 0223 movs r3, #2
584 0032 FFF7FEFF bl HAL_I2C_Master_Receive
585 0036 0346 mov r3, r0
586 0038 7B73 strb r3, [r7, #13]
95:Core/Src/TMP1075.c **** if (status == HAL_OK) {
587 .loc 1 95 6
588 003a 7B7B ldrb r3, [r7, #13] @ zero_extendqisi2
589 003c 002B cmp r3, #0
590 003e 09D1 bne .L34
96:Core/Src/TMP1075.c **** *res = (result[0] << 8) | result[1];
591 .loc 1 96 19
592 0040 3B7A ldrb r3, [r7, #8] @ zero_extendqisi2
593 .loc 1 96 29
594 0042 1BB2 sxth r3, r3
595 0044 1B02 lsls r3, r3, #8
ARM GAS /tmp/cc1QLhHg.s page 13
596 0046 1AB2 sxth r2, r3
597 .loc 1 96 37
598 0048 7B7A ldrb r3, [r7, #9] @ zero_extendqisi2
599 004a 1BB2 sxth r3, r3
600 .loc 1 96 29
601 004c 1343 orrs r3, r3, r2
602 004e 1AB2 sxth r2, r3
603 .loc 1 96 10
604 0050 3B68 ldr r3, [r7]
605 0052 1A80 strh r2, [r3] @ movhi
606 .L34:
97:Core/Src/TMP1075.c **** }
98:Core/Src/TMP1075.c **** return status;
607 .loc 1 98 10
608 0054 7B7B ldrb r3, [r7, #13] @ zero_extendqisi2
99:Core/Src/TMP1075.c **** }
609 .loc 1 99 1
610 0056 1846 mov r0, r3
611 0058 1037 adds r7, r7, #16
612 .cfi_def_cfa_offset 8
613 005a BD46 mov sp, r7
614 .cfi_def_cfa_register 13
615 @ sp needed
616 005c 80BD pop {r7, pc}
617 .L37:
618 005e 00BF .align 2
619 .L36:
620 0060 00000000 .word hi2c
621 .cfi_endproc
622 .LFE134:
624 .text
625 .Letext0:
626 .file 2 "/nix/store/p8vkamc9b2vlibs9aw76vnasdbifhcbm-gcc-arm-embedded-13.2.rel1/arm-none-eabi/incl
627 .file 3 "/nix/store/p8vkamc9b2vlibs9aw76vnasdbifhcbm-gcc-arm-embedded-13.2.rel1/arm-none-eabi/incl
628 .file 4 "Drivers/CMSIS/Device/ST/STM32F3xx/Include/stm32f302xc.h"
629 .file 5 "/nix/store/p8vkamc9b2vlibs9aw76vnasdbifhcbm-gcc-arm-embedded-13.2.rel1/lib/gcc/arm-none-e
630 .file 6 "Drivers/STM32F3xx_HAL_Driver/Inc/stm32f3xx_hal_def.h"
631 .file 7 "Drivers/STM32F3xx_HAL_Driver/Inc/stm32f3xx_hal_dma.h"
632 .file 8 "Drivers/STM32F3xx_HAL_Driver/Inc/stm32f3xx_hal_i2c.h"
633 .file 9 "Core/Inc/errors.h"
634 .file 10 "Core/Inc/TMP1075.h"
635 .file 11 "Core/Inc/state_machine.h"
636 .file 12 "Core/Lib/can-halal/can-halal.h"
ARM GAS /tmp/cc1QLhHg.s page 14
DEFINED SYMBOLS
*ABS*:00000000 TMP1075.c
/tmp/cc1QLhHg.s:25 .bss.tmp1075_temps:00000000 tmp1075_temps
/tmp/cc1QLhHg.s:22 .bss.tmp1075_temps:00000000 $d
/tmp/cc1QLhHg.s:32 .bss.tmp1075_failed_sensors:00000000 tmp1075_failed_sensors
/tmp/cc1QLhHg.s:29 .bss.tmp1075_failed_sensors:00000000 $d
/tmp/cc1QLhHg.s:38 .bss.nfailed_temp_sensors:00000000 nfailed_temp_sensors
/tmp/cc1QLhHg.s:39 .bss.nfailed_temp_sensors:00000000 $d
/tmp/cc1QLhHg.s:45 .bss.hi2c:00000000 hi2c
/tmp/cc1QLhHg.s:42 .bss.hi2c:00000000 $d
/tmp/cc1QLhHg.s:48 .text.tmp1075_init:00000000 $t
/tmp/cc1QLhHg.s:54 .text.tmp1075_init:00000000 tmp1075_init
/tmp/cc1QLhHg.s:488 .text.tmp1075_sensor_init:00000000 tmp1075_sensor_init
/tmp/cc1QLhHg.s:119 .text.tmp1075_init:00000040 $d
/tmp/cc1QLhHg.s:124 .text.handle_over_maxtemp:00000000 $t
/tmp/cc1QLhHg.s:130 .text.handle_over_maxtemp:00000000 handle_over_maxtemp
/tmp/cc1QLhHg.s:188 .text.handle_over_maxtemp:00000048 $d
/tmp/cc1QLhHg.s:194 .text.tmp1075_measure:00000000 $t
/tmp/cc1QLhHg.s:200 .text.tmp1075_measure:00000000 tmp1075_measure
/tmp/cc1QLhHg.s:547 .text.tmp1075_sensor_read:00000000 tmp1075_sensor_read
/tmp/cc1QLhHg.s:473 .text.tmp1075_measure:00000198 $d
/tmp/cc1QLhHg.s:482 .text.tmp1075_sensor_init:00000000 $t
/tmp/cc1QLhHg.s:536 .text.tmp1075_sensor_init:0000003c $d
/tmp/cc1QLhHg.s:541 .text.tmp1075_sensor_read:00000000 $t
/tmp/cc1QLhHg.s:620 .text.tmp1075_sensor_read:00000060 $d
UNDEFINED SYMBOLS
set_error_source
ftcan_marshal_unsigned
error_data
clear_error_source
state
HAL_I2C_Master_Transmit
HAL_I2C_Master_Receive