2023-06-04 17:50:49 +02:00

943 lines
41 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/ccxETzRn.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, 1
13 .eabi_attribute 34, 1
14 .eabi_attribute 18, 4
15 .file "AMS_CAN.c"
16 .text
17 .Ltext0:
18 .cfi_sections .debug_frame
19 .file 1 "Core/Src/AMS_CAN.c"
20 .section .text.ams_can_init,"ax",%progbits
21 .align 1
22 .global ams_can_init
23 .syntax unified
24 .thumb
25 .thumb_func
27 ams_can_init:
28 .LVL0:
29 .LFB130:
1:Core/Src/AMS_CAN.c **** /*
2:Core/Src/AMS_CAN.c **** * AMS_CAN.c
3:Core/Src/AMS_CAN.c **** *
4:Core/Src/AMS_CAN.c **** * Created on: Mar 19, 2022
5:Core/Src/AMS_CAN.c **** * Author: jasper
6:Core/Src/AMS_CAN.c **** */
7:Core/Src/AMS_CAN.c ****
8:Core/Src/AMS_CAN.c **** #include "AMS_CAN.h"
9:Core/Src/AMS_CAN.c ****
10:Core/Src/AMS_CAN.c **** #include "ADBMS_Abstraction.h"
11:Core/Src/AMS_CAN.c ****
12:Core/Src/AMS_CAN.c ****
13:Core/Src/AMS_CAN.c **** #include "common_defs.h"
14:Core/Src/AMS_CAN.c **** #include "main.h"
15:Core/Src/AMS_CAN.c **** #include "AMS_HighLevel.h"
16:Core/Src/AMS_CAN.c **** #include "stm32f3xx.h"
17:Core/Src/AMS_CAN.c **** #include "stm32f3xx_hal.h"
18:Core/Src/AMS_CAN.c **** #include "stm32f3xx_hal_can.h"
19:Core/Src/AMS_CAN.c ****
20:Core/Src/AMS_CAN.c **** #include <stdint.h>
21:Core/Src/AMS_CAN.c ****
22:Core/Src/AMS_CAN.c **** int PENDING_MESSAGE_HANDLE = 0;
23:Core/Src/AMS_CAN.c **** uint8_t canTestData[8] = {0,0,0,0,0,0,0,0};
24:Core/Src/AMS_CAN.c ****
25:Core/Src/AMS_CAN.c ****
26:Core/Src/AMS_CAN.c **** CAN_HandleTypeDef* ams_can_handle;
27:Core/Src/AMS_CAN.c ****
28:Core/Src/AMS_CAN.c **** void ams_can_init(CAN_HandleTypeDef* ams_handle,
29:Core/Src/AMS_CAN.c **** CAN_HandleTypeDef* car_handle) {
ARM GAS /tmp/ccxETzRn.s page 2
30 .loc 1 29 50 view -0
31 .cfi_startproc
32 @ args = 0, pretend = 0, frame = 40
33 @ frame_needed = 0, uses_anonymous_args = 0
34 .loc 1 29 50 is_stmt 0 view .LVU1
35 0000 10B5 push {r4, lr}
36 .cfi_def_cfa_offset 8
37 .cfi_offset 4, -8
38 .cfi_offset 14, -4
39 0002 8AB0 sub sp, sp, #40
40 .cfi_def_cfa_offset 48
41 0004 0C46 mov r4, r1
30:Core/Src/AMS_CAN.c **** ams_can_handle = ams_handle;
42 .loc 1 30 3 is_stmt 1 view .LVU2
43 .loc 1 30 18 is_stmt 0 view .LVU3
44 0006 204B ldr r3, .L11
45 0008 1860 str r0, [r3]
31:Core/Src/AMS_CAN.c ****
32:Core/Src/AMS_CAN.c **** // Start peripheral
33:Core/Src/AMS_CAN.c **** if (HAL_CAN_Start(ams_can_handle) != HAL_OK) {
46 .loc 1 33 3 is_stmt 1 view .LVU4
47 .loc 1 33 7 is_stmt 0 view .LVU5
48 000a FFF7FEFF bl HAL_CAN_Start
49 .LVL1:
50 .loc 1 33 6 view .LVU6
51 000e 40BB cbnz r0, .L7
52 .L2:
34:Core/Src/AMS_CAN.c **** ams_can_handle = car_handle;
35:Core/Src/AMS_CAN.c **** if (HAL_CAN_Start(ams_can_handle) != HAL_OK) {
36:Core/Src/AMS_CAN.c **** Error_Handler();
37:Core/Src/AMS_CAN.c **** }
38:Core/Src/AMS_CAN.c **** }
39:Core/Src/AMS_CAN.c ****
40:Core/Src/AMS_CAN.c **** // Config filter
41:Core/Src/AMS_CAN.c **** CAN_FilterTypeDef can_filter;
53 .loc 1 41 3 is_stmt 1 view .LVU7
42:Core/Src/AMS_CAN.c **** can_filter.FilterActivation = CAN_FILTER_ENABLE;
54 .loc 1 42 3 view .LVU8
55 .loc 1 42 31 is_stmt 0 view .LVU9
56 0010 0122 movs r2, #1
57 0012 0892 str r2, [sp, #32]
43:Core/Src/AMS_CAN.c **** can_filter.FilterBank = 0;
58 .loc 1 43 3 is_stmt 1 view .LVU10
59 .loc 1 43 25 is_stmt 0 view .LVU11
60 0014 0023 movs r3, #0
61 0016 0593 str r3, [sp, #20]
44:Core/Src/AMS_CAN.c **** can_filter.FilterFIFOAssignment = CAN_FILTER_FIFO0;
62 .loc 1 44 3 is_stmt 1 view .LVU12
63 .loc 1 44 35 is_stmt 0 view .LVU13
64 0018 0493 str r3, [sp, #16]
45:Core/Src/AMS_CAN.c **** /* Message ID is in the MSBs of the FilterId register */
46:Core/Src/AMS_CAN.c **** can_filter.FilterIdHigh = CAN_ID_CLOCK_SYNC << (16 - 11);
65 .loc 1 46 3 is_stmt 1 view .LVU14
66 .loc 1 46 27 is_stmt 0 view .LVU15
67 001a 4021 movs r1, #64
68 001c 0091 str r1, [sp]
47:Core/Src/AMS_CAN.c **** can_filter.FilterIdLow = 0;
ARM GAS /tmp/ccxETzRn.s page 3
69 .loc 1 47 3 is_stmt 1 view .LVU16
70 .loc 1 47 26 is_stmt 0 view .LVU17
71 001e 0193 str r3, [sp, #4]
48:Core/Src/AMS_CAN.c **** /* Filter the 11 MSBs (i.e. a StdId) */
49:Core/Src/AMS_CAN.c ****
50:Core/Src/AMS_CAN.c **** if(BMS_IN_TEST_MODE == 1){
72 .loc 1 50 3 is_stmt 1 view .LVU18
51:Core/Src/AMS_CAN.c **** can_filter.FilterMaskIdHigh = BMS_TEST_ID; // alleNachrichtenIds werden akzeptiert
73 .loc 1 51 4 view .LVU19
74 .loc 1 51 32 is_stmt 0 view .LVU20
75 0020 0293 str r3, [sp, #8]
52:Core/Src/AMS_CAN.c **** }else{
53:Core/Src/AMS_CAN.c **** can_filter.FilterMaskIdHigh = 0xFFE0;
54:Core/Src/AMS_CAN.c **** }
55:Core/Src/AMS_CAN.c ****
56:Core/Src/AMS_CAN.c **** can_filter.FilterMaskIdLow = 0;
76 .loc 1 56 3 is_stmt 1 view .LVU21
77 .loc 1 56 30 is_stmt 0 view .LVU22
78 0022 0393 str r3, [sp, #12]
57:Core/Src/AMS_CAN.c **** can_filter.FilterMode = CAN_FILTERMODE_IDMASK;
79 .loc 1 57 3 is_stmt 1 view .LVU23
80 .loc 1 57 25 is_stmt 0 view .LVU24
81 0024 0693 str r3, [sp, #24]
58:Core/Src/AMS_CAN.c **** can_filter.FilterScale = CAN_FILTERSCALE_32BIT;
82 .loc 1 58 3 is_stmt 1 view .LVU25
83 .loc 1 58 26 is_stmt 0 view .LVU26
84 0026 0792 str r2, [sp, #28]
59:Core/Src/AMS_CAN.c **** can_filter.SlaveStartFilterBank = 0;
85 .loc 1 59 3 is_stmt 1 view .LVU27
86 .loc 1 59 35 is_stmt 0 view .LVU28
87 0028 0993 str r3, [sp, #36]
60:Core/Src/AMS_CAN.c **** if (HAL_CAN_ConfigFilter(ams_can_handle, &can_filter) != HAL_OK) {
88 .loc 1 60 3 is_stmt 1 view .LVU29
89 .loc 1 60 7 is_stmt 0 view .LVU30
90 002a 6946 mov r1, sp
91 002c 164B ldr r3, .L11
92 002e 1868 ldr r0, [r3]
93 0030 FFF7FEFF bl HAL_CAN_ConfigFilter
94 .LVL2:
95 .loc 1 60 6 view .LVU31
96 0034 F8B9 cbnz r0, .L8
97 .L3:
61:Core/Src/AMS_CAN.c **** Error_Handler();
62:Core/Src/AMS_CAN.c **** }
63:Core/Src/AMS_CAN.c **** can_filter.FilterBank++;
98 .loc 1 63 3 is_stmt 1 view .LVU32
99 .loc 1 63 13 is_stmt 0 view .LVU33
100 0036 059B ldr r3, [sp, #20]
101 .loc 1 63 24 view .LVU34
102 0038 0133 adds r3, r3, #1
103 003a 0593 str r3, [sp, #20]
64:Core/Src/AMS_CAN.c **** can_filter.FilterIdHigh = CAN_ID_MASTER_HEARTBEAT << (16 - 11);
104 .loc 1 64 3 is_stmt 1 view .LVU35
105 .loc 1 64 27 is_stmt 0 view .LVU36
106 003c 4FF40073 mov r3, #512
107 0040 0093 str r3, [sp]
65:Core/Src/AMS_CAN.c **** can_filter.FilterIdLow = 0;
ARM GAS /tmp/ccxETzRn.s page 4
108 .loc 1 65 3 is_stmt 1 view .LVU37
109 .loc 1 65 26 is_stmt 0 view .LVU38
110 0042 0023 movs r3, #0
111 0044 0193 str r3, [sp, #4]
66:Core/Src/AMS_CAN.c **** if (HAL_CAN_ConfigFilter(ams_can_handle, &can_filter) != HAL_OK) {
112 .loc 1 66 3 is_stmt 1 view .LVU39
113 .loc 1 66 7 is_stmt 0 view .LVU40
114 0046 6946 mov r1, sp
115 0048 0F4B ldr r3, .L11
116 004a 1868 ldr r0, [r3]
117 004c FFF7FEFF bl HAL_CAN_ConfigFilter
118 .LVL3:
119 .loc 1 66 6 view .LVU41
120 0050 A0B9 cbnz r0, .L9
121 .L4:
67:Core/Src/AMS_CAN.c **** Error_Handler();
68:Core/Src/AMS_CAN.c **** }
69:Core/Src/AMS_CAN.c ****
70:Core/Src/AMS_CAN.c **** // Activate RX notifications
71:Core/Src/AMS_CAN.c **** if (HAL_CAN_ActivateNotification(ams_can_handle,
122 .loc 1 71 3 is_stmt 1 view .LVU42
123 .loc 1 71 7 is_stmt 0 view .LVU43
124 0052 0221 movs r1, #2
125 0054 0C4B ldr r3, .L11
126 0056 1868 ldr r0, [r3]
127 0058 FFF7FEFF bl HAL_CAN_ActivateNotification
128 .LVL4:
129 .loc 1 71 6 view .LVU44
130 005c 88B9 cbnz r0, .L10
131 .L1:
72:Core/Src/AMS_CAN.c **** CAN_IT_RX_FIFO0_MSG_PENDING) != HAL_OK) {
73:Core/Src/AMS_CAN.c **** Error_Handler();
74:Core/Src/AMS_CAN.c **** }
75:Core/Src/AMS_CAN.c **** }
132 .loc 1 75 1 view .LVU45
133 005e 0AB0 add sp, sp, #40
134 .cfi_remember_state
135 .cfi_def_cfa_offset 8
136 @ sp needed
137 0060 10BD pop {r4, pc}
138 .LVL5:
139 .L7:
140 .cfi_restore_state
34:Core/Src/AMS_CAN.c **** if (HAL_CAN_Start(ams_can_handle) != HAL_OK) {
141 .loc 1 34 5 is_stmt 1 view .LVU46
34:Core/Src/AMS_CAN.c **** if (HAL_CAN_Start(ams_can_handle) != HAL_OK) {
142 .loc 1 34 20 is_stmt 0 view .LVU47
143 0062 094B ldr r3, .L11
144 0064 1C60 str r4, [r3]
35:Core/Src/AMS_CAN.c **** Error_Handler();
145 .loc 1 35 5 is_stmt 1 view .LVU48
35:Core/Src/AMS_CAN.c **** Error_Handler();
146 .loc 1 35 9 is_stmt 0 view .LVU49
147 0066 2046 mov r0, r4
148 0068 FFF7FEFF bl HAL_CAN_Start
149 .LVL6:
35:Core/Src/AMS_CAN.c **** Error_Handler();
ARM GAS /tmp/ccxETzRn.s page 5
150 .loc 1 35 8 view .LVU50
151 006c 0028 cmp r0, #0
152 006e CFD0 beq .L2
36:Core/Src/AMS_CAN.c **** }
153 .loc 1 36 7 is_stmt 1 view .LVU51
154 0070 FFF7FEFF bl Error_Handler
155 .LVL7:
156 0074 CCE7 b .L2
157 .L8:
61:Core/Src/AMS_CAN.c **** }
158 .loc 1 61 5 view .LVU52
159 0076 FFF7FEFF bl Error_Handler
160 .LVL8:
161 007a DCE7 b .L3
162 .L9:
67:Core/Src/AMS_CAN.c **** }
163 .loc 1 67 5 view .LVU53
164 007c FFF7FEFF bl Error_Handler
165 .LVL9:
166 0080 E7E7 b .L4
167 .L10:
73:Core/Src/AMS_CAN.c **** }
168 .loc 1 73 5 view .LVU54
169 0082 FFF7FEFF bl Error_Handler
170 .LVL10:
171 .loc 1 75 1 is_stmt 0 view .LVU55
172 0086 EAE7 b .L1
173 .L12:
174 .align 2
175 .L11:
176 0088 00000000 .word ams_can_handle
177 .cfi_endproc
178 .LFE130:
180 .section .text.ams_can_handle_ams_msg,"ax",%progbits
181 .align 1
182 .global ams_can_handle_ams_msg
183 .syntax unified
184 .thumb
185 .thumb_func
187 ams_can_handle_ams_msg:
188 .LVL11:
189 .LFB132:
76:Core/Src/AMS_CAN.c ****
77:Core/Src/AMS_CAN.c **** static int cb_triggered = 0;
78:Core/Src/AMS_CAN.c ****
79:Core/Src/AMS_CAN.c **** void HAL_CAN_RxFifo0MsgPendingCallback(CAN_HandleTypeDef* handle) {
80:Core/Src/AMS_CAN.c **** static CAN_RxHeaderTypeDef header;
81:Core/Src/AMS_CAN.c **** static uint8_t data[8];
82:Core/Src/AMS_CAN.c **** cb_triggered = 1;
83:Core/Src/AMS_CAN.c ****
84:Core/Src/AMS_CAN.c **** if (HAL_CAN_GetRxMessage(handle, CAN_RX_FIFO0, &header, data) != HAL_OK) {
85:Core/Src/AMS_CAN.c **** Error_Handler();
86:Core/Src/AMS_CAN.c **** }
87:Core/Src/AMS_CAN.c ****
88:Core/Src/AMS_CAN.c **** if (handle == ams_can_handle) {
89:Core/Src/AMS_CAN.c **** ams_can_handle_ams_msg(&header, data);
90:Core/Src/AMS_CAN.c **** } else {
ARM GAS /tmp/ccxETzRn.s page 6
91:Core/Src/AMS_CAN.c **** Error_Handler();
92:Core/Src/AMS_CAN.c **** }
93:Core/Src/AMS_CAN.c **** }
94:Core/Src/AMS_CAN.c ****
95:Core/Src/AMS_CAN.c **** void ams_can_handle_ams_msg(CAN_RxHeaderTypeDef* header, uint8_t* data) {
190 .loc 1 95 73 is_stmt 1 view -0
191 .cfi_startproc
192 @ args = 0, pretend = 0, frame = 0
193 @ frame_needed = 0, uses_anonymous_args = 0
194 @ link register save eliminated.
96:Core/Src/AMS_CAN.c ****
97:Core/Src/AMS_CAN.c **** if(BMS_IN_TEST_MODE == 1){
195 .loc 1 97 3 view .LVU57
98:Core/Src/AMS_CAN.c **** PENDING_MESSAGE_HANDLE = 1;
196 .loc 1 98 5 view .LVU58
197 .loc 1 98 28 is_stmt 0 view .LVU59
198 0000 054B ldr r3, .L16
199 0002 0122 movs r2, #1
200 0004 1A60 str r2, [r3]
99:Core/Src/AMS_CAN.c **** for(int i = 0; i < 8; i++){
201 .loc 1 99 5 is_stmt 1 view .LVU60
202 .LBB2:
203 .loc 1 99 9 view .LVU61
204 .LVL12:
205 .loc 1 99 13 is_stmt 0 view .LVU62
206 0006 0023 movs r3, #0
207 .loc 1 99 5 view .LVU63
208 0008 03E0 b .L14
209 .LVL13:
210 .L15:
100:Core/Src/AMS_CAN.c **** canTestData[i] = data[i];
211 .loc 1 100 6 is_stmt 1 discriminator 3 view .LVU64
212 .loc 1 100 27 is_stmt 0 discriminator 3 view .LVU65
213 000a C85C ldrb r0, [r1, r3] @ zero_extendqisi2
214 .loc 1 100 21 discriminator 3 view .LVU66
215 000c 034A ldr r2, .L16+4
216 000e D054 strb r0, [r2, r3]
99:Core/Src/AMS_CAN.c **** for(int i = 0; i < 8; i++){
217 .loc 1 99 28 is_stmt 1 discriminator 3 view .LVU67
218 0010 0133 adds r3, r3, #1
219 .LVL14:
220 .L14:
99:Core/Src/AMS_CAN.c **** for(int i = 0; i < 8; i++){
221 .loc 1 99 22 discriminator 1 view .LVU68
222 0012 072B cmp r3, #7
223 0014 F9DD ble .L15
224 .LBE2:
101:Core/Src/AMS_CAN.c **** }
102:Core/Src/AMS_CAN.c **** return;
103:Core/Src/AMS_CAN.c **** }
104:Core/Src/AMS_CAN.c ****
105:Core/Src/AMS_CAN.c ****
106:Core/Src/AMS_CAN.c **** if (header->IDE != CAN_ID_STD) {
107:Core/Src/AMS_CAN.c **** return;
108:Core/Src/AMS_CAN.c **** }
109:Core/Src/AMS_CAN.c ****
110:Core/Src/AMS_CAN.c **** switch (header->StdId) {
ARM GAS /tmp/ccxETzRn.s page 7
111:Core/Src/AMS_CAN.c **** case CAN_ID_CLOCK_SYNC:
112:Core/Src/AMS_CAN.c **** // clock_sync_handle_clock_sync_frame(data[0]);
113:Core/Src/AMS_CAN.c **** break;
114:Core/Src/AMS_CAN.c **** case CAN_ID_MASTER_HEARTBEAT:
115:Core/Src/AMS_CAN.c **** // clock_sync_handle_master_heartbeat();
116:Core/Src/AMS_CAN.c **** break;
117:Core/Src/AMS_CAN.c **** }
118:Core/Src/AMS_CAN.c **** }
225 .loc 1 118 1 is_stmt 0 view .LVU69
226 0016 7047 bx lr
227 .L17:
228 .align 2
229 .L16:
230 0018 00000000 .word PENDING_MESSAGE_HANDLE
231 001c 00000000 .word canTestData
232 .cfi_endproc
233 .LFE132:
235 .section .text.HAL_CAN_RxFifo0MsgPendingCallback,"ax",%progbits
236 .align 1
237 .global HAL_CAN_RxFifo0MsgPendingCallback
238 .syntax unified
239 .thumb
240 .thumb_func
242 HAL_CAN_RxFifo0MsgPendingCallback:
243 .LVL15:
244 .LFB131:
79:Core/Src/AMS_CAN.c **** static CAN_RxHeaderTypeDef header;
245 .loc 1 79 67 is_stmt 1 view -0
246 .cfi_startproc
247 @ args = 0, pretend = 0, frame = 0
248 @ frame_needed = 0, uses_anonymous_args = 0
79:Core/Src/AMS_CAN.c **** static CAN_RxHeaderTypeDef header;
249 .loc 1 79 67 is_stmt 0 view .LVU71
250 0000 10B5 push {r4, lr}
251 .cfi_def_cfa_offset 8
252 .cfi_offset 4, -8
253 .cfi_offset 14, -4
254 0002 0446 mov r4, r0
80:Core/Src/AMS_CAN.c **** static uint8_t data[8];
255 .loc 1 80 3 is_stmt 1 view .LVU72
81:Core/Src/AMS_CAN.c **** cb_triggered = 1;
256 .loc 1 81 3 view .LVU73
82:Core/Src/AMS_CAN.c ****
257 .loc 1 82 3 view .LVU74
82:Core/Src/AMS_CAN.c ****
258 .loc 1 82 16 is_stmt 0 view .LVU75
259 0004 0B4B ldr r3, .L25
260 0006 0122 movs r2, #1
261 0008 1A60 str r2, [r3]
84:Core/Src/AMS_CAN.c **** Error_Handler();
262 .loc 1 84 3 is_stmt 1 view .LVU76
84:Core/Src/AMS_CAN.c **** Error_Handler();
263 .loc 1 84 7 is_stmt 0 view .LVU77
264 000a 0B4B ldr r3, .L25+4
265 000c 0B4A ldr r2, .L25+8
266 000e 0021 movs r1, #0
267 0010 FFF7FEFF bl HAL_CAN_GetRxMessage
ARM GAS /tmp/ccxETzRn.s page 8
268 .LVL16:
84:Core/Src/AMS_CAN.c **** Error_Handler();
269 .loc 1 84 6 view .LVU78
270 0014 30B9 cbnz r0, .L23
271 .L19:
88:Core/Src/AMS_CAN.c **** ams_can_handle_ams_msg(&header, data);
272 .loc 1 88 3 is_stmt 1 view .LVU79
88:Core/Src/AMS_CAN.c **** ams_can_handle_ams_msg(&header, data);
273 .loc 1 88 14 is_stmt 0 view .LVU80
274 0016 0A4B ldr r3, .L25+12
275 0018 1B68 ldr r3, [r3]
88:Core/Src/AMS_CAN.c **** ams_can_handle_ams_msg(&header, data);
276 .loc 1 88 6 view .LVU81
277 001a A342 cmp r3, r4
278 001c 05D0 beq .L24
91:Core/Src/AMS_CAN.c **** }
279 .loc 1 91 5 is_stmt 1 view .LVU82
280 001e FFF7FEFF bl Error_Handler
281 .LVL17:
282 .L18:
93:Core/Src/AMS_CAN.c ****
283 .loc 1 93 1 is_stmt 0 view .LVU83
284 0022 10BD pop {r4, pc}
285 .LVL18:
286 .L23:
85:Core/Src/AMS_CAN.c **** }
287 .loc 1 85 5 is_stmt 1 view .LVU84
288 0024 FFF7FEFF bl Error_Handler
289 .LVL19:
290 0028 F5E7 b .L19
291 .L24:
89:Core/Src/AMS_CAN.c **** } else {
292 .loc 1 89 5 view .LVU85
293 002a 0349 ldr r1, .L25+4
294 002c 0348 ldr r0, .L25+8
295 002e FFF7FEFF bl ams_can_handle_ams_msg
296 .LVL20:
297 0032 F6E7 b .L18
298 .L26:
299 .align 2
300 .L25:
301 0034 00000000 .word cb_triggered
302 0038 00000000 .word data.2
303 003c 00000000 .word header.3
304 0040 00000000 .word ams_can_handle
305 .cfi_endproc
306 .LFE131:
308 .section .text.ams_can_wait_for_free_mailboxes,"ax",%progbits
309 .align 1
310 .global ams_can_wait_for_free_mailboxes
311 .syntax unified
312 .thumb
313 .thumb_func
315 ams_can_wait_for_free_mailboxes:
316 .LVL21:
317 .LFB134:
119:Core/Src/AMS_CAN.c ****
ARM GAS /tmp/ccxETzRn.s page 9
120:Core/Src/AMS_CAN.c **** void ams_can_send_heartbeat() {
121:Core/Src/AMS_CAN.c **** static CAN_TxHeaderTypeDef header;
122:Core/Src/AMS_CAN.c **** static uint8_t data[8];
123:Core/Src/AMS_CAN.c ****
124:Core/Src/AMS_CAN.c **** header.IDE = CAN_ID_STD;
125:Core/Src/AMS_CAN.c **** header.DLC = 8;
126:Core/Src/AMS_CAN.c **** header.RTR = CAN_RTR_DATA;
127:Core/Src/AMS_CAN.c **** header.TransmitGlobalTime = DISABLE;
128:Core/Src/AMS_CAN.c ****
129:Core/Src/AMS_CAN.c **** // Send voltages
130:Core/Src/AMS_CAN.c **** for (int msg_id = 0; msg_id < 5; msg_id++) {
131:Core/Src/AMS_CAN.c **** header.StdId = CAN_ID_AMS_SLAVE_HEARTBEAT_BASE | (0 << 4) | msg_id; //TODO: Use slave_id/new fo
132:Core/Src/AMS_CAN.c **** for (int i = 0; i < 4; i++) {
133:Core/Src/AMS_CAN.c **** int cell = msg_id * 4 + i;
134:Core/Src/AMS_CAN.c **** uint16_t v = (cell < N_CELLS) ? module.cellVoltages[cell] : 0;
135:Core/Src/AMS_CAN.c **** data[2 * i + 0] = v & 0xFF;
136:Core/Src/AMS_CAN.c **** data[2 * i + 1] = v >> 8;
137:Core/Src/AMS_CAN.c **** }
138:Core/Src/AMS_CAN.c **** if (ams_can_wait_for_free_mailboxes(ams_can_handle, 1,
139:Core/Src/AMS_CAN.c **** CAN_HEARTBEAT_TX_TIMEOUT) == HAL_OK) {
140:Core/Src/AMS_CAN.c **** uint32_t mailbox;
141:Core/Src/AMS_CAN.c **** HAL_CAN_AddTxMessage(ams_can_handle, &header, data, &mailbox);
142:Core/Src/AMS_CAN.c **** }
143:Core/Src/AMS_CAN.c **** }
144:Core/Src/AMS_CAN.c ****
145:Core/Src/AMS_CAN.c **** // Send temperatures
146:Core/Src/AMS_CAN.c **** /*for (int temp_msg_id = 0; temp_msg_id < 8; temp_msg_id++) {
147:Core/Src/AMS_CAN.c **** int msg_id = temp_msg_id + 3;
148:Core/Src/AMS_CAN.c **** header.StdId = CAN_ID_AMS_SLAVE_HEARTBEAT_BASE | (slave_id << 4) | msg_id;
149:Core/Src/AMS_CAN.c **** for (int i = 0; i < 4; i++) {
150:Core/Src/AMS_CAN.c **** int sensor = temp_msg_id * 4 + i;
151:Core/Src/AMS_CAN.c **** uint16_t temp = temperatures[sensor];
152:Core/Src/AMS_CAN.c **** data[2 * i + 0] = temp & 0xFF;
153:Core/Src/AMS_CAN.c **** data[2 * i + 1] = temp >> 8;
154:Core/Src/AMS_CAN.c **** }
155:Core/Src/AMS_CAN.c **** if (ams_can_wait_for_free_mailboxes(ams_can_handle, 1,
156:Core/Src/AMS_CAN.c **** CAN_HEARTBEAT_TX_TIMEOUT) == HAL_OK) {
157:Core/Src/AMS_CAN.c **** uint32_t mailbox;
158:Core/Src/AMS_CAN.c **** HAL_CAN_AddTxMessage(ams_can_handle, &header, data, &mailbox);
159:Core/Src/AMS_CAN.c **** }
160:Core/Src/AMS_CAN.c **** }*/
161:Core/Src/AMS_CAN.c **** }
162:Core/Src/AMS_CAN.c ****
163:Core/Src/AMS_CAN.c **** /*void ams_can_send_error(AMS_ErrorCode error_code,
164:Core/Src/AMS_CAN.c **** uint32_t transmission_timeout) {
165:Core/Src/AMS_CAN.c **** static CAN_TxHeaderTypeDef header;
166:Core/Src/AMS_CAN.c **** header.IDE = CAN_ID_STD;
167:Core/Src/AMS_CAN.c **** header.DLC = 8;
168:Core/Src/AMS_CAN.c **** header.RTR = CAN_RTR_DATA;
169:Core/Src/AMS_CAN.c **** header.TransmitGlobalTime = DISABLE;
170:Core/Src/AMS_CAN.c **** header.StdId = CAN_ID_SLAVE_ERROR;
171:Core/Src/AMS_CAN.c ****
172:Core/Src/AMS_CAN.c **** static uint8_t data[8];
173:Core/Src/AMS_CAN.c **** data[0] = slave_id;
174:Core/Src/AMS_CAN.c **** data[1] = error_code;
175:Core/Src/AMS_CAN.c ****
176:Core/Src/AMS_CAN.c **** HAL_CAN_AbortTxRequest(ams_can_handle,
ARM GAS /tmp/ccxETzRn.s page 10
177:Core/Src/AMS_CAN.c **** CAN_TX_MAILBOX0 | CAN_TX_MAILBOX1 | CAN_TX_MAILBOX2);
178:Core/Src/AMS_CAN.c **** uint32_t mailbox;
179:Core/Src/AMS_CAN.c **** HAL_CAN_AddTxMessage(ams_can_handle, &header, data, &mailbox);
180:Core/Src/AMS_CAN.c **** ams_can_wait_for_free_mailboxes(ams_can_handle, 3, transmission_timeout);
181:Core/Src/AMS_CAN.c **** }*/
182:Core/Src/AMS_CAN.c ****
183:Core/Src/AMS_CAN.c **** HAL_StatusTypeDef ams_can_wait_for_free_mailboxes(CAN_HandleTypeDef* handle,
184:Core/Src/AMS_CAN.c **** int num_mailboxes,
185:Core/Src/AMS_CAN.c **** uint32_t timeout) {
318 .loc 1 185 69 view -0
319 .cfi_startproc
320 @ args = 0, pretend = 0, frame = 0
321 @ frame_needed = 0, uses_anonymous_args = 0
322 .loc 1 185 69 is_stmt 0 view .LVU87
323 0000 70B5 push {r4, r5, r6, lr}
324 .cfi_def_cfa_offset 16
325 .cfi_offset 4, -16
326 .cfi_offset 5, -12
327 .cfi_offset 6, -8
328 .cfi_offset 14, -4
329 0002 0646 mov r6, r0
330 0004 0D46 mov r5, r1
331 0006 1446 mov r4, r2
186:Core/Src/AMS_CAN.c **** uint32_t end = HAL_GetTick() + timeout;
332 .loc 1 186 3 is_stmt 1 view .LVU88
333 .loc 1 186 18 is_stmt 0 view .LVU89
334 0008 FFF7FEFF bl HAL_GetTick
335 .LVL22:
336 .loc 1 186 12 view .LVU90
337 000c 0444 add r4, r4, r0
338 .LVL23:
187:Core/Src/AMS_CAN.c **** while (HAL_GetTick() < end) {
339 .loc 1 187 3 is_stmt 1 view .LVU91
340 .L28:
341 .loc 1 187 24 view .LVU92
342 .loc 1 187 10 is_stmt 0 view .LVU93
343 000e FFF7FEFF bl HAL_GetTick
344 .LVL24:
345 .loc 1 187 24 view .LVU94
346 0012 A042 cmp r0, r4
347 0014 06D2 bcs .L33
188:Core/Src/AMS_CAN.c **** if (HAL_CAN_GetTxMailboxesFreeLevel(handle) >= num_mailboxes) {
348 .loc 1 188 5 is_stmt 1 view .LVU95
349 .loc 1 188 9 is_stmt 0 view .LVU96
350 0016 3046 mov r0, r6
351 0018 FFF7FEFF bl HAL_CAN_GetTxMailboxesFreeLevel
352 .LVL25:
353 .loc 1 188 8 view .LVU97
354 001c A842 cmp r0, r5
355 001e F6D3 bcc .L28
189:Core/Src/AMS_CAN.c **** return HAL_OK;
356 .loc 1 189 14 view .LVU98
357 0020 0020 movs r0, #0
358 0022 00E0 b .L29
359 .L33:
190:Core/Src/AMS_CAN.c **** }
191:Core/Src/AMS_CAN.c **** }
ARM GAS /tmp/ccxETzRn.s page 11
192:Core/Src/AMS_CAN.c **** return HAL_TIMEOUT;
360 .loc 1 192 10 view .LVU99
361 0024 0320 movs r0, #3
362 .L29:
193:Core/Src/AMS_CAN.c **** }
363 .loc 1 193 1 view .LVU100
364 0026 70BD pop {r4, r5, r6, pc}
365 .loc 1 193 1 view .LVU101
366 .cfi_endproc
367 .LFE134:
369 .section .text.ams_can_send_heartbeat,"ax",%progbits
370 .align 1
371 .global ams_can_send_heartbeat
372 .syntax unified
373 .thumb
374 .thumb_func
376 ams_can_send_heartbeat:
377 .LFB133:
120:Core/Src/AMS_CAN.c **** static CAN_TxHeaderTypeDef header;
378 .loc 1 120 31 is_stmt 1 view -0
379 .cfi_startproc
380 @ args = 0, pretend = 0, frame = 8
381 @ frame_needed = 0, uses_anonymous_args = 0
382 0000 10B5 push {r4, lr}
383 .cfi_def_cfa_offset 8
384 .cfi_offset 4, -8
385 .cfi_offset 14, -4
386 0002 82B0 sub sp, sp, #8
387 .cfi_def_cfa_offset 16
121:Core/Src/AMS_CAN.c **** static uint8_t data[8];
388 .loc 1 121 3 view .LVU103
122:Core/Src/AMS_CAN.c ****
389 .loc 1 122 3 view .LVU104
124:Core/Src/AMS_CAN.c **** header.DLC = 8;
390 .loc 1 124 3 view .LVU105
124:Core/Src/AMS_CAN.c **** header.DLC = 8;
391 .loc 1 124 14 is_stmt 0 view .LVU106
392 0004 1A4B ldr r3, .L46
393 0006 0024 movs r4, #0
394 0008 9C60 str r4, [r3, #8]
125:Core/Src/AMS_CAN.c **** header.RTR = CAN_RTR_DATA;
395 .loc 1 125 3 is_stmt 1 view .LVU107
125:Core/Src/AMS_CAN.c **** header.RTR = CAN_RTR_DATA;
396 .loc 1 125 14 is_stmt 0 view .LVU108
397 000a 0822 movs r2, #8
398 000c 1A61 str r2, [r3, #16]
126:Core/Src/AMS_CAN.c **** header.TransmitGlobalTime = DISABLE;
399 .loc 1 126 3 is_stmt 1 view .LVU109
126:Core/Src/AMS_CAN.c **** header.TransmitGlobalTime = DISABLE;
400 .loc 1 126 14 is_stmt 0 view .LVU110
401 000e DC60 str r4, [r3, #12]
127:Core/Src/AMS_CAN.c ****
402 .loc 1 127 3 is_stmt 1 view .LVU111
127:Core/Src/AMS_CAN.c ****
403 .loc 1 127 29 is_stmt 0 view .LVU112
404 0010 1C75 strb r4, [r3, #20]
130:Core/Src/AMS_CAN.c **** header.StdId = CAN_ID_AMS_SLAVE_HEARTBEAT_BASE | (0 << 4) | msg_id; //TODO: Use slave_id/new fo
ARM GAS /tmp/ccxETzRn.s page 12
405 .loc 1 130 3 is_stmt 1 view .LVU113
406 .LBB3:
130:Core/Src/AMS_CAN.c **** header.StdId = CAN_ID_AMS_SLAVE_HEARTBEAT_BASE | (0 << 4) | msg_id; //TODO: Use slave_id/new fo
407 .loc 1 130 8 view .LVU114
408 .LVL26:
130:Core/Src/AMS_CAN.c **** header.StdId = CAN_ID_AMS_SLAVE_HEARTBEAT_BASE | (0 << 4) | msg_id; //TODO: Use slave_id/new fo
409 .loc 1 130 3 is_stmt 0 view .LVU115
410 0012 1AE0 b .L35
411 .LVL27:
412 .L41:
413 .LBB4:
414 .LBB5:
134:Core/Src/AMS_CAN.c **** data[2 * i + 0] = v & 0xFF;
415 .loc 1 134 16 view .LVU116
416 0014 0022 movs r2, #0
417 .LVL28:
418 .L37:
135:Core/Src/AMS_CAN.c **** data[2 * i + 1] = v >> 8;
419 .loc 1 135 7 is_stmt 1 discriminator 4 view .LVU117
135:Core/Src/AMS_CAN.c **** data[2 * i + 1] = v >> 8;
420 .loc 1 135 18 is_stmt 0 discriminator 4 view .LVU118
421 0016 5900 lsls r1, r3, #1
135:Core/Src/AMS_CAN.c **** data[2 * i + 1] = v >> 8;
422 .loc 1 135 23 discriminator 4 view .LVU119
423 0018 1648 ldr r0, .L46+4
424 001a 00F81320 strb r2, [r0, r3, lsl #1]
136:Core/Src/AMS_CAN.c **** }
425 .loc 1 136 7 is_stmt 1 discriminator 4 view .LVU120
136:Core/Src/AMS_CAN.c **** }
426 .loc 1 136 18 is_stmt 0 discriminator 4 view .LVU121
427 001e 0131 adds r1, r1, #1
136:Core/Src/AMS_CAN.c **** }
428 .loc 1 136 23 discriminator 4 view .LVU122
429 0020 120A lsrs r2, r2, #8
430 .LVL29:
136:Core/Src/AMS_CAN.c **** }
431 .loc 1 136 23 discriminator 4 view .LVU123
432 0022 4254 strb r2, [r0, r1]
433 .LBE5:
132:Core/Src/AMS_CAN.c **** int cell = msg_id * 4 + i;
434 .loc 1 132 29 is_stmt 1 discriminator 4 view .LVU124
435 0024 0133 adds r3, r3, #1
436 .LVL30:
437 .L36:
132:Core/Src/AMS_CAN.c **** int cell = msg_id * 4 + i;
438 .loc 1 132 23 discriminator 2 view .LVU125
439 0026 032B cmp r3, #3
440 0028 07DC bgt .L43
441 .LBB6:
133:Core/Src/AMS_CAN.c **** uint16_t v = (cell < N_CELLS) ? module.cellVoltages[cell] : 0;
442 .loc 1 133 7 view .LVU126
133:Core/Src/AMS_CAN.c **** uint16_t v = (cell < N_CELLS) ? module.cellVoltages[cell] : 0;
443 .loc 1 133 11 is_stmt 0 view .LVU127
444 002a 03EB8402 add r2, r3, r4, lsl #2
445 .LVL31:
134:Core/Src/AMS_CAN.c **** data[2 * i + 0] = v & 0xFF;
446 .loc 1 134 7 is_stmt 1 view .LVU128
ARM GAS /tmp/ccxETzRn.s page 13
134:Core/Src/AMS_CAN.c **** data[2 * i + 0] = v & 0xFF;
447 .loc 1 134 16 is_stmt 0 view .LVU129
448 002e 102A cmp r2, #16
449 0030 F0DC bgt .L41
134:Core/Src/AMS_CAN.c **** data[2 * i + 0] = v & 0xFF;
450 .loc 1 134 16 discriminator 1 view .LVU130
451 0032 1149 ldr r1, .L46+8
452 0034 31F81220 ldrh r2, [r1, r2, lsl #1]
453 .LVL32:
134:Core/Src/AMS_CAN.c **** data[2 * i + 0] = v & 0xFF;
454 .loc 1 134 16 discriminator 1 view .LVU131
455 0038 EDE7 b .L37
456 .LVL33:
457 .L43:
134:Core/Src/AMS_CAN.c **** data[2 * i + 0] = v & 0xFF;
458 .loc 1 134 16 discriminator 1 view .LVU132
459 .LBE6:
460 .LBE4:
138:Core/Src/AMS_CAN.c **** CAN_HEARTBEAT_TX_TIMEOUT) == HAL_OK) {
461 .loc 1 138 5 is_stmt 1 view .LVU133
138:Core/Src/AMS_CAN.c **** CAN_HEARTBEAT_TX_TIMEOUT) == HAL_OK) {
462 .loc 1 138 9 is_stmt 0 view .LVU134
463 003a 0A22 movs r2, #10
464 003c 0121 movs r1, #1
465 003e 0F4B ldr r3, .L46+12
466 .LVL34:
138:Core/Src/AMS_CAN.c **** CAN_HEARTBEAT_TX_TIMEOUT) == HAL_OK) {
467 .loc 1 138 9 view .LVU135
468 0040 1868 ldr r0, [r3]
469 0042 FFF7FEFF bl ams_can_wait_for_free_mailboxes
470 .LVL35:
138:Core/Src/AMS_CAN.c **** CAN_HEARTBEAT_TX_TIMEOUT) == HAL_OK) {
471 .loc 1 138 8 view .LVU136
472 0046 40B1 cbz r0, .L44
473 .L39:
130:Core/Src/AMS_CAN.c **** header.StdId = CAN_ID_AMS_SLAVE_HEARTBEAT_BASE | (0 << 4) | msg_id; //TODO: Use slave_id/new fo
474 .loc 1 130 42 is_stmt 1 discriminator 2 view .LVU137
475 0048 0134 adds r4, r4, #1
476 .LVL36:
477 .L35:
130:Core/Src/AMS_CAN.c **** header.StdId = CAN_ID_AMS_SLAVE_HEARTBEAT_BASE | (0 << 4) | msg_id; //TODO: Use slave_id/new fo
478 .loc 1 130 31 discriminator 1 view .LVU138
479 004a 042C cmp r4, #4
480 004c 0DDC bgt .L45
131:Core/Src/AMS_CAN.c **** for (int i = 0; i < 4; i++) {
481 .loc 1 131 5 view .LVU139
131:Core/Src/AMS_CAN.c **** for (int i = 0; i < 4; i++) {
482 .loc 1 131 63 is_stmt 0 view .LVU140
483 004e 44F4C063 orr r3, r4, #1536
131:Core/Src/AMS_CAN.c **** for (int i = 0; i < 4; i++) {
484 .loc 1 131 18 view .LVU141
485 0052 074A ldr r2, .L46
486 0054 1360 str r3, [r2]
132:Core/Src/AMS_CAN.c **** int cell = msg_id * 4 + i;
487 .loc 1 132 5 is_stmt 1 view .LVU142
488 .LBB7:
132:Core/Src/AMS_CAN.c **** int cell = msg_id * 4 + i;
ARM GAS /tmp/ccxETzRn.s page 14
489 .loc 1 132 10 view .LVU143
490 .LVL37:
132:Core/Src/AMS_CAN.c **** int cell = msg_id * 4 + i;
491 .loc 1 132 14 is_stmt 0 view .LVU144
492 0056 0023 movs r3, #0
132:Core/Src/AMS_CAN.c **** int cell = msg_id * 4 + i;
493 .loc 1 132 5 view .LVU145
494 0058 E5E7 b .L36
495 .LVL38:
496 .L44:
132:Core/Src/AMS_CAN.c **** int cell = msg_id * 4 + i;
497 .loc 1 132 5 view .LVU146
498 .LBE7:
499 .LBB8:
140:Core/Src/AMS_CAN.c **** HAL_CAN_AddTxMessage(ams_can_handle, &header, data, &mailbox);
500 .loc 1 140 7 is_stmt 1 view .LVU147
141:Core/Src/AMS_CAN.c **** }
501 .loc 1 141 7 view .LVU148
502 005a 01AB add r3, sp, #4
503 005c 054A ldr r2, .L46+4
504 005e 0449 ldr r1, .L46
505 0060 0648 ldr r0, .L46+12
506 0062 0068 ldr r0, [r0]
507 0064 FFF7FEFF bl HAL_CAN_AddTxMessage
508 .LVL39:
509 0068 EEE7 b .L39
510 .LVL40:
511 .L45:
141:Core/Src/AMS_CAN.c **** }
512 .loc 1 141 7 is_stmt 0 view .LVU149
513 .LBE8:
514 .LBE3:
161:Core/Src/AMS_CAN.c ****
515 .loc 1 161 1 view .LVU150
516 006a 02B0 add sp, sp, #8
517 .cfi_def_cfa_offset 8
518 @ sp needed
519 006c 10BD pop {r4, pc}
520 .LVL41:
521 .L47:
161:Core/Src/AMS_CAN.c ****
522 .loc 1 161 1 view .LVU151
523 006e 00BF .align 2
524 .L46:
525 0070 00000000 .word header.1
526 0074 00000000 .word data.0
527 0078 00000000 .word module
528 007c 00000000 .word ams_can_handle
529 .cfi_endproc
530 .LFE133:
532 .section .bss.data.0,"aw",%nobits
533 .align 2
536 data.0:
537 0000 00000000 .space 8
537 00000000
538 .section .bss.header.1,"aw",%nobits
539 .align 2
ARM GAS /tmp/ccxETzRn.s page 15
542 header.1:
543 0000 00000000 .space 24
543 00000000
543 00000000
543 00000000
543 00000000
544 .section .bss.data.2,"aw",%nobits
545 .align 2
548 data.2:
549 0000 00000000 .space 8
549 00000000
550 .section .bss.header.3,"aw",%nobits
551 .align 2
554 header.3:
555 0000 00000000 .space 28
555 00000000
555 00000000
555 00000000
555 00000000
556 .section .bss.cb_triggered,"aw",%nobits
557 .align 2
560 cb_triggered:
561 0000 00000000 .space 4
562 .global ams_can_handle
563 .section .bss.ams_can_handle,"aw",%nobits
564 .align 2
567 ams_can_handle:
568 0000 00000000 .space 4
569 .global canTestData
570 .section .bss.canTestData,"aw",%nobits
571 .align 2
574 canTestData:
575 0000 00000000 .space 8
575 00000000
576 .global PENDING_MESSAGE_HANDLE
577 .section .bss.PENDING_MESSAGE_HANDLE,"aw",%nobits
578 .align 2
581 PENDING_MESSAGE_HANDLE:
582 0000 00000000 .space 4
583 .text
584 .Letext0:
585 .file 2 "/home/david/.config/Code/User/globalStorage/bmd.stm32-for-vscode/@xpack-dev-tools/arm-non
586 .file 3 "/home/david/.config/Code/User/globalStorage/bmd.stm32-for-vscode/@xpack-dev-tools/arm-non
587 .file 4 "Drivers/CMSIS/Device/ST/STM32F3xx/Include/stm32f302xc.h"
588 .file 5 "Drivers/CMSIS/Device/ST/STM32F3xx/Include/stm32f3xx.h"
589 .file 6 "Drivers/STM32F3xx_HAL_Driver/Inc/stm32f3xx_hal_def.h"
590 .file 7 "Drivers/STM32F3xx_HAL_Driver/Inc/stm32f3xx_hal_can.h"
591 .file 8 "Core/Inc/ADBMS_LL_Driver.h"
592 .file 9 "Core/Inc/ADBMS_Abstraction.h"
593 .file 10 "Core/Inc/AMS_CAN.h"
594 .file 11 "Core/Inc/AMS_HighLevel.h"
595 .file 12 "Drivers/STM32F3xx_HAL_Driver/Inc/stm32f3xx_hal.h"
596 .file 13 "Core/Inc/main.h"
ARM GAS /tmp/ccxETzRn.s page 16
DEFINED SYMBOLS
*ABS*:0000000000000000 AMS_CAN.c
/tmp/ccxETzRn.s:21 .text.ams_can_init:0000000000000000 $t
/tmp/ccxETzRn.s:27 .text.ams_can_init:0000000000000000 ams_can_init
/tmp/ccxETzRn.s:176 .text.ams_can_init:0000000000000088 $d
/tmp/ccxETzRn.s:567 .bss.ams_can_handle:0000000000000000 ams_can_handle
/tmp/ccxETzRn.s:181 .text.ams_can_handle_ams_msg:0000000000000000 $t
/tmp/ccxETzRn.s:187 .text.ams_can_handle_ams_msg:0000000000000000 ams_can_handle_ams_msg
/tmp/ccxETzRn.s:230 .text.ams_can_handle_ams_msg:0000000000000018 $d
/tmp/ccxETzRn.s:581 .bss.PENDING_MESSAGE_HANDLE:0000000000000000 PENDING_MESSAGE_HANDLE
/tmp/ccxETzRn.s:574 .bss.canTestData:0000000000000000 canTestData
/tmp/ccxETzRn.s:236 .text.HAL_CAN_RxFifo0MsgPendingCallback:0000000000000000 $t
/tmp/ccxETzRn.s:242 .text.HAL_CAN_RxFifo0MsgPendingCallback:0000000000000000 HAL_CAN_RxFifo0MsgPendingCallback
/tmp/ccxETzRn.s:301 .text.HAL_CAN_RxFifo0MsgPendingCallback:0000000000000034 $d
/tmp/ccxETzRn.s:560 .bss.cb_triggered:0000000000000000 cb_triggered
/tmp/ccxETzRn.s:548 .bss.data.2:0000000000000000 data.2
/tmp/ccxETzRn.s:554 .bss.header.3:0000000000000000 header.3
/tmp/ccxETzRn.s:309 .text.ams_can_wait_for_free_mailboxes:0000000000000000 $t
/tmp/ccxETzRn.s:315 .text.ams_can_wait_for_free_mailboxes:0000000000000000 ams_can_wait_for_free_mailboxes
/tmp/ccxETzRn.s:370 .text.ams_can_send_heartbeat:0000000000000000 $t
/tmp/ccxETzRn.s:376 .text.ams_can_send_heartbeat:0000000000000000 ams_can_send_heartbeat
/tmp/ccxETzRn.s:525 .text.ams_can_send_heartbeat:0000000000000070 $d
/tmp/ccxETzRn.s:542 .bss.header.1:0000000000000000 header.1
/tmp/ccxETzRn.s:536 .bss.data.0:0000000000000000 data.0
/tmp/ccxETzRn.s:533 .bss.data.0:0000000000000000 $d
/tmp/ccxETzRn.s:539 .bss.header.1:0000000000000000 $d
/tmp/ccxETzRn.s:545 .bss.data.2:0000000000000000 $d
/tmp/ccxETzRn.s:551 .bss.header.3:0000000000000000 $d
/tmp/ccxETzRn.s:557 .bss.cb_triggered:0000000000000000 $d
/tmp/ccxETzRn.s:564 .bss.ams_can_handle:0000000000000000 $d
/tmp/ccxETzRn.s:571 .bss.canTestData:0000000000000000 $d
/tmp/ccxETzRn.s:578 .bss.PENDING_MESSAGE_HANDLE:0000000000000000 $d
UNDEFINED SYMBOLS
HAL_CAN_Start
HAL_CAN_ConfigFilter
HAL_CAN_ActivateNotification
Error_Handler
HAL_CAN_GetRxMessage
HAL_GetTick
HAL_CAN_GetTxMailboxesFreeLevel
HAL_CAN_AddTxMessage
module